Расширение модели жизненного цикла продукта



Моделирование рекламных кампаний

1) Откройте диаграмму класса Main.

2) Создайте новые переменные: adX, adY, тип double; adTime, тип double, начальное значение -1; adRange, тип double, начальное значение 50.

3) Создайте новое событие. Назовите таймер adTimer. Событие должно быть циклическим. Задайте Таймаут – uniform(0.5,1). Задайте Действие при срабатывании:

adX=uniform(adRange,300-adRange);

adY=uniform(adRange,300-adRange);

adTime=time();

for (AgentContinuous2D people: environment.getAgentCollection() )

if (people.distanceTo(adX,adY) < adRange)

    people.send("buy!", people);

Данный код производит циклический перебор всех агентов модели. У агентов, попавших в область проведения кампании (в круг с радиусом adRange), генерируется событие стейтчарта, в результате чего срабатывает переход стейтчарта, моделирующий покупку продукта.

В связи с тем, что теперь покупки моделируются с помощью таймера, то нужно удалить переход стейтчарта, который моделирует покупку продукта под влиянием рекламы.

4) Откройте диаграмму стейтчарта. Удалите переход из состояния PotentialAdopter в состояние Adopter (переход с таймаутом AdEffectiveness).

Необходимо также внести изменения в анимацию: будем подсвечивать области проведения рекламных кампаний на анимации сиреневыми кругами.

5) Откройте анимационную диаграмму. Нарисуйте круг (кнопка панели инструментов Овал) со свойствами, показанными на рис. 23-24.

Рисунок 23

Рисунок 24

Местоположение круга на диаграмме определяется переменными adX и adY, хранящими координаты центра области проведения текущей кампании. Круг будет виден в течение 0.2 единиц модельного времени после момента проведения кампании.

6) Запустите модель и изучите ее поведение.

Изучение распространения нескольких продуктов

Созданная модель изучает динамику распространения только одного продукта. Расширим модель, чтобы иметь возможность изучать распространение сразу нескольких различных продуктов.

1) Создайте вспомогательную переменную, которая будет определять тип рекламируемого продукта. Откройте структурную диаграмму класса Main и создайте переменную adColor класса Color.

Будем различать продукты по цвету: владельцев одного продукта отобразим на анимации синим цветом, а владельцев другого – красным. Области проведения рекламных кампаний также будут отображаться различными цветами в зависимости от рекламируемого продукта.

2) Измените анимацию – измените, свойства сиреневого круга: выберите переменную adColor в качестве Цвета заливки фигуры.

Пусть потенциальные покупатели продукта будут отображаться серым цветом, владельцы – красным или синим в зависимости от того, какой продукт они приобрели.

3) Измените код, который выполняется при срабатывании события adTimer, моделирующего проведение рекламных кампаний.

Откройте свойства события и измените Действие при срабатывании. Добавьте выделенные строки:

adX=uniform(adRange,400-adRange);

adY=uniform(adRange,400-adRange);

adTime=time();

adColor = uniform() > 0.5 ? Color.blue : Color.red;

for( Agent people: environment.getAgentCollection()

    if (people.distanceTo(adX,adY) < adRange)

    people.send(adColor,people);

Теперь с равной вероятностью будут рекламироваться разные продукты.

4) Откройте диаграмму стейтчарта adoption и измените стейтчарт следующим образом (рис. 25).

Рисунок 25

Добавьте сложное состояние, включающее в себя оба состояния стейтчарта. Сделайте это состояние начальным: добавьте указатель начального состояния, направленный в него.

Удалите переход из состояния PotentialAdopter в состояние Adopter.

Измените Действие внутреннего перехода состояния Adopter. Замените на строку send(color,RANDOM_CONNECTED);.

Добавьте переход из сложного состояния в состояние Adopter. В окне Свойства задайте свойства перехода: переход должен срабатывать По сигналу Color и выполнять Действие color=msg;. Для этого тип сигнала ставим другой и пишем Color, а в поле Действие пишем Main.adColor=msg;.

Выделите щелчком мыши состояние PotentialAdopter. Добавьте в Действия при входе строки:

Main.adColor = Color.lightGray;

person.setFillColor(Main.adColor);

Выделите щелчком мыши состояние Adopter. Добавьте в Действия при входе строку person.setFillColor(Main.adColor); .

5) Запустите модель. Изучите распространение сразу двух продуктов (рис. 26).

Рисунок 26


Дата добавления: 2020-04-25; просмотров: 173; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!