Шаг 2. Задание простого поведения агента

Исходя из постановки задачи, мы зададим поведение потребителя как последовательность трех состояний: PotentialUser, WantA, UsesA. Мы полагаем, что продукт будет всегда в наличии, поэтому переход из состояния WantA в состояние UsesAбудет мгновенным и не будет требовать выполнения каких-либо условий для срабатывания. Эффект от рекламы будет моделироваться как связанная с переходом из состояния PotentialUser в состояние WantA стохастическая задержка. На данном этапе мы не будем учитывать ни повторные покупки продукта, ни общение людей друг с другом.

  1. Нарисуйте в редакторе класса Consumer три состояния (расположите их снизу вверх в следующем порядке): PotentialUser, WantA, UsesA. Добавьте элемент Начало диаграммы состояний, чтобы он указывал на состояние PotentialUser.

Состояния диаграммы альтернативны друг другу: в каждый отдельный момент времени агент (в нашем случае – потребитель) может находиться только в одном состоянии. Начало диаграммы состояний указывает на начальное состояние диаграммы, которым, очевидно, является PotentialUser (то есть, потенциальный пользователь). Имя начала диаграммы состояний играет роль имени диаграммы в целом. В одном активном объекте может быть задано сразу несколько диаграмм состояний, но в данной модели нам достаточно одной. 

  1. Добавьте переход, ведущий из состояния PotentialUser в состояние WantA и назовите его AdA. Добавьте переход из состояния WantA в состояние UsesA и назовите его BuyA. Установите у обоих переходов флажок Отображать имя и измените расположение меток с именами переходов на диаграмме.
Переходы определяют то, как объект изменяет свое состояние. Переход может сработать, например, по приходу агента в точку назначения, по выполнению условия, истечению таймаута и т.д. Переход AdA будет моделировать произведенный рекламой эффект - принятие решения о необходимости приобретения продукта, а BuyA – событие приобретения продукта A.

 

  1. Задайте следующие свойства для перехода AdAПроисходитС заданной интенсивностьюИнтенсивность: 0.011

Срабатывающий с заданной интенсивностью переход в AnyLogic представляет собой по сути переход, срабатывающий по экспоненциально распределенному таймауту. Когда управление диаграммы состояний переходит в состояние PotentialUser, происходит генерация значения согласно экспоненциальному распределению, которое и присваивается таймауту этого перехода. Поэтому у потребителей будут различные времена принятия решения о покупке продукта под влиянием рекламы, но при этом в одну единицу модельного времени (день) в среднем решение о покупке будет принимать 1.1% потенциальных пользователей продукта.

  1. Задайте следующие свойства для перехода BuyAПроисходитПо таймаутуТаймаут: 0.

Поскольку мы подразумеваем, что продукт всегда доступен (есть в наличии), то все, кто хочет приобрести продукт, могут это сделать сразу же – поэтому, как только управление диаграммы состояний перейдет в состояние WantA, оно тут же, с нулевой задержкой, перейдет дальше, в состояние UsesA.

  1. В поле Действие при входе состояния WantA введите: person.setFillColor( pink );
    В поле Действие при входе состояния UsesA введите: person.setFillColor( red );

Таким способом мы изменяем цвет фигуры анимации потребителя, чтобы визуально отобразить смену его состояния. Как Вы можете видеть, все элементы модели и презентации класса активного объекта доступны один из другого. person здесь - это имя кривой, автоматически нарисованной для задания агента Мастером создания модели. Обратите внимание, что если Вы зададите другую фигуру в качестве презентации объекта класса Consumer, то Вам нужно будет здесь ссылаться уже на ее имя.

  1. Запустите модель. По прошествии некоторого времени можете нажать кнопку панели инструментов Реальное/виртуальное время, чтобы ускорить выполнение модели.

Вы сможете увидеть, как фигурки потребителей постепенно закрашиваются красным цветом – таким образом виден производимый рекламой эффект. Хотя каждый потребитель проходит через состояние WantA, которому соответствует розовый цвет, фигурок розового цвета не видно, поскольку потребители мгновенно покидают это состояние, чтобы перейти в состояние UsesA

  1. Откройте свойства эксперимента Simulation:Main. На странице свойств Основные выберите опцию Случайное начальное число (уникальные "прогоны"). На странице Модельное время выберите из выпадающего списка ОстановитьНикогда.

Поскольку наша модель стохастична (как Вы помните, источниками случайности в ней являются срабатывающие с заданной интенсивностью переходы AdA в диаграммах состояний потребителей), то результаты моделирования будут зависеть от генератора случайных чисел. Выбрав опцию Случайное начальное число, Вы говорите Anylogic, что для каждого "прогона" модели должны использоваться различные последовательности случайных чисел.

  1. Запустите модель еще раз.

Вы увидите, что в конечном счете все потребители приобретут продукт.

Контрольная модель: AB Market and SD Supply Chain - Phase 2


          Шаг 1. Создание 1000 агентов

          Шаг 3. Добавление ритейлера