Шаг 6. Создание динамических переменных

Нам нужно создать две динамические переменные, которые будут соответствовать двум составляющим потока приобретения продукта:

  1. Приобретениям, совершенным под влиянием рекламы.
  2. Приобретениям, совершенным под влиянием общения потребителей продукта с потенциальными потребителями.
 Создайте динамическую переменную AdoptionFromAd
  1. Перетащите элемент Динамическая переменная  из палитры Системная динамика на диаграмму типа агентов.
  2. В панели Свойства введите новое Имя переменной: AdoptionFromAd.

Теперь мы хотим задать формулу для этой динамической переменной. Влияние рекламы моделируется следующим образом: некий постоянный процент потенциальных клиентов AdEffectiveness всё время становятся клиентами. Их доля в AdoptionRate равна, соответственно, PotentialAdopters*AdEffectiveness.

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

 Добавьте связи от двух переменных к зависимой от них AdoptionFromAd

  1. Добавьте связи, ведущие от AdEffectiveness и PotentialAdopters к AdoptionFromAd

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

Вы могли заметить, что эта связь выглядит немного иначе, чем та, что ведет от TotalPopulation к PotentialAdopters. Связи с переменными, упоминающимися в начальных значениях накопителей, рисуются пунктирными линиями, в то время, как все остальные - сплошными. 

  1. Добавьте еще одну связь, ведущую от AdEffectiveness к AdoptionFromAd.

  1. Задайте формулу, согласно которой будет вычисляться значение переменной. В свойствах переменной AdoptionFromAd, в поле AdoptionFromAd = введите:  AdEffectiveness*PotentialAdopters (вы можете воспользоваться Мастером подстановки кода).


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

Мы делаем предположение, что в нашей модели человек может общаться с любым другим человеком.

Количество контактов человека в единицу времени (а под единицей времени в нашей модели подразумевается год) задается параметром ContactRate. Запишем ContactRate в качестве первого сомножителя нашей формулы.

Количество людей, которые владеют продуктом, и могут убеждать остальных приобрести его, в нашей модели в каждый момент времени будет определяться значением накопителя Adopters, и поскольку каждый потребитель будет общаться в единицу времени с ContactRate людей, то количество контактов в единицу времени у всех потребителей продукта будет равно Adopters*ContactRate

Теперь нужно учесть тот факт, что в результате общения не все те, кто еще не купил этот продукт, сразу побегут его покупать - если кого-то доводы своего знакомого, успешно пользующегося изучаемым нами продуктом, могут убедить, то кто-то может остаться к ним равнодушным, и своего решения не покупать продукт не изменить. Поэтому мы добавим в нашу формулу еще один сомножитель AdoptionFraction, задающий силу убеждения владельцев продукта, определяющую ту долю контактов, которая приводит к продажам продукта. Таким образом, наша формула приобретает вид Adopters*ContactRate*AdoptionFraction.

И наконец, нам нужно учесть, что на данный момент наша формула не учитывает того, что владельцы продукта будут общаться как с потенциальными потребителями, так и с теми, кто уже владеет продуктом. И общение с последними ни к каким новым продажам продукта не приведет. Поэтому нам нужно учесть в нашей формуле и вероятность того, что тот, с кем общался потребитель, ещё не владеет интересующим нас продуктом. Эта вероятность задается так: PotentialAdopters/TotalPopulation.

В итоге наша формула будет выглядеть следующим образом:  Adopters*ContactRate*AdoptionFraction*PotentialAdopters/TotalPopulation 

Именно столько потенциальных потребителей будут приобретать продукт в единицу модельного времени под воздействием общения с владельцами этого продукта.

 Создайте динамическую переменную AdoptionFromWOM
  1. Аналогично создайте еще одну динамическую переменную.
  2. Назовите ее AdoptionFromWOM.
  3. Задайте для этой переменной следующую формулу:
    ContactRate * AdoptionFraction * PotentialAdopters * Adopters / TotalPopulation
  4. Вам может показаться утомительным рисовать связи для задействованных в формулах переменных и параметров. Чтобы облегчить этот процесс, AnyLogic предлагает пользователям механизм быстрого исправления ошибок, связанных с отсутствующими или избыточными связями. Когда вы зададите указанную формулу, то щелкнув в этом поле вы увидите индикатор ошибки:

  1. Щелкните мышью по индикатору. Вы увидите контекстное меню, состоящее из пунктов Добавить отсутствующую связь для: ... .  Поочередно щелкнув по всем этим пунктам вы добавите на диаграмму все недостающие связи.

В итоге у вас должна будет получиться диаграмма следующего вида:

Теперь мы можем задать формулу для потока приобретения продукта. Значение потока определяется суммой двух его независимых составляющих – продаж в результате рекламного влияния и продаж под влиянием общения с потребителями продукта.

 Задайте формулу потока

  1. Выделите поток AdoptionRate щелчком мыши.
  2. Перейдите в панель Свойства.
  3. Введите правую часть формулы, по которой будет вычисляться значение потока, в поле AdoptionRate= :
    AdoptionFromAd + AdoptionFromWOM
  4. Добавьте соответствующие связи от этих переменных к потоку AdoptionRate.


Теперь мы закончили создание нашей модели. Диаграмма накопителей и потоков должна выглядеть как на приведенном ниже рисунке:


Связи имеют полярность, положительную или отрицательную:

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

 Проставьте полярности у связей

  1. Чтобы отобразить у связи значок полярности, выделите связь и выберите нужный символ (+ или -) из группы кнопок Полярность в панели свойств связи:
  2. Здесь же при желании можно изменить и цвет линии связи, а также ее толщину.

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

Можно увидеть, что наша модель содержит два цикла с обратной связью: один компенсирующий и один усиливающий.

 Добавьте идентификатор цикла, вызывающего насыщение рынка

  1. Перетащите элемент Цикл  из палитры Системная динамика на графическую диаграмму, как показано на рисунке ниже:

  1. Перейдите в панель Свойства, чтобы изменить свойства цикла. 
  2. Задайте Направление цикла - этот цикл направлен Против часовой стрелки
  3. В поле Текст введите краткое описание этого цикла, объясняющее его смысл: Market Saturation (или Насыщение рынка). Этот текст будет показан на презентации.
  4. Из группы кнопок Тип выберите символ, который будет отображаться для данного цикла. Выберите символ B (обозначающий Balancing, то есть компенсирующий цикл).

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

Цикл является:

 Добавьте идентификатор для цикла, задающего общение людей друг с другом

  1. Добавьте еще один идентификатор цикла, как показано на рисунке ниже:

  1. Этот цикл соответствует общению людей друг с другом. Он является усиливающим, поэтому выберите для него символ R (обозначающий усиливающий, Reinforcing цикл) 
  2. Задайте Word of Mouth (или Устное общение) в качестве текста.
  3. Задайте Направление цикла - этот цикл направлен По часовой стрелке
В итоге ваша диаграмма должна выглядеть следующим образом:


          Шаг 5. Задание начальных значений накопителей

          Шаг 7. Настройка запуска модели