Создание потоковой диаграммы в AnyLogic
В AnyLogic потоковая диаграмма создается с помощью структурной диаграммы. На диаграмме графически задаются накопители, потоки и вспомогательные переменные.
1. Создайте новый проект для будущей модели и сохраните его в своей папке. Откройте структурную диаграмму двойным щелчком мыши по элементу дерева Main в окне Проект.
2. Создайте два накопителя для того, чтобы смоделировать численности потребителей и потенциальных потребителей продукта. Для этого перетащите элемент Накопитель из палитры Системная динамика на диаграмму класса активного объекта. На диаграмме появится маленький голубой прямоугольник, обозначающий переменную-накопитель (что соответствует классической нотации системной динамики).
Измените имя накопителя - окно Свойства, вкладка Основные, введите PotentialAdopters в поле редактирования Имя.
Таким же образом создайте еще один накопитель, назовите его Adopters (рис. 2).
Рис. 2. Накопители
3. Создайте поток приобретения продукта, увеличивающий число потребителей продукта и уменьшающий численность потенциальных потребителей.
В AnyLogic поток создается с помощью специального инструмента задания потоков. Инструмент задания потоков создает переменную-поток и автоматически конфигурирует накопители, в которые входит или из которых исходит данный поток, таким образом, что их значения изменяются в соответствии со значением этого потока.
Чтобы создать поток, сделайте двойной щелчок мыши по накопителю PotentialAdopters, а потом щелкните по накопителю Adopters. AnyLogic создаст новую переменную-поток и сделает ее исходящим потоком для накопителя PotentialAdopters и входящим - для Adopters. На диаграмме появятся стрелки, которые будут обозначать образовавшиеся зависимости между потоком и этими накопителями (рис. 3). Выделите созданную переменную в графическом редакторе и измените имя этого потока на AdoptionRate.
Рис. 3. Потоки
4. Посмотрите свойства накопителей. Формулы накопителей должны выглядеть следующим образом (рис. 4).
Рис. 4. Свойства накопителей
Эти формулы были автоматически заданы инструментом задания потоков.
5. Создайте константы модели. Перетащите элемент Параметр из палитры Системная динамика на диаграмму класса активного объекта (рис. 5).
Рис. 5. Диаграмма накопителей и потоков
1) Создайте константу, задающую общую численность населения. Для этого создайте новый параметр и измените его свойства. В поле Имя введите TotalPopulation. В поле По умолчанию введите 100000. Можно задать также краткое описание константы в поле Описание;
2) в нашей модели интенсивность рекламы и вероятность того, что продукт будет приобретен под ее влиянием, полагаются постоянными. Создайте константу, задающую эффективность рекламы. Назовите ее AdEffectiveness. Задайте значение по умолчанию 0.011;
3) частота, с которой потенциальные потребители общаются с потребителями, принимается как постоянная величина. Поэтому задайте частоту контактов константой. Назовите константу ContactRate. Предположим, что каждый потенциальный потребитель в среднем встречается со 100 постоянными потребителями в год. Задайте значение по умолчанию 100;
4) задайте константой силу убеждения владельцев продукта, определяющую ту долю контактов, которая приводит к продажам продукта. Назовите константу AdoptionFraction. Задайте значение 0.015.
6. Задайте начальные значения накопителей.
Начальное число потребителей нашего продукта равно нулю, поэтому в окне свойств накопителя Adopters введите 0 в поле редактирования Начальное значение.
Начальное количество потенциальных потребителей будет равно общей численности населения. В окне свойств накопителя PotentialAdopters введите TotalPopulation в поле редактирования Начальное значение. Вы можете сделать это с помощью Мастера (Ctrl + пробел).
7. Создайте две вспомогательные переменные, которые будут соответствовать двум составляющим потока приобретения продукта - приобретениям, совершенным под влиянием рекламы и под влиянием потребителей продукта соответственно (рис.5).
1) Перетащите элемент Вспомогательная переменная из палитры Системная динамика на диаграмму класса активного объекта и назовите ее AdoptionFromAd. В поле AdoptionFromAd = введите AdEffectiveness * PotentialAdopters.
Влияние рекламы моделируется следующим образом: некий постоянный процент потенциальных клиентов AdEffectiveness всё время переходит в разряд клиентов. Их доля в AdoptionRate равна PotentialAdopters * AdEffectiveness;
2) создайте еще одну переменную и назовите ее AdoptionFromWOM. Задайте формулу интенсивности продаж продукта под влиянием устного общения потребителей продукта с теми, кто данный продукт еще не приобрел: ContactRate * AdoptionFraction * PotentialAdopters * Adopters / TotalPopulation.
Проанализируйте данную формулу.
8. Задайте формулу для потока приобретения продукта. Значение потока определяется суммой двух его независимых составляющих - продаж в результате рекламного влияния и продаж под влиянием общения с потребителями продукта. В окне свойств переменной AdoptionRate на вкладке Основные введите формулу, по которой будет вычисляться значение потока, в поле AdoptionRate= : AdoptionFromAd + AdoptionFromWOM
Создайте связи между элементами. Диаграмма накопителей и потоков должна выглядеть, как показано на рис. 5. Создание модели завершено.
9. Просмотрите причинно-следственные зависимости между накопителями, потоками и вспомогательными переменными в модели.
Зависимости будут показаны стрелками, как в общепринятой системно-динамической нотации. Стрелка, направленная от потока к накопителю, означает, что этот поток является входящим потоком для данного накопителя. Стрелка, направленная от накопителя к потоку, означает, что поток является исходящим. Тонкая стрелка, направленная от переменной A к переменной B, означает, что изменение значения переменной A вызовет изменение значения переменной B.
Можно увидеть, что модель содержит два цикла с обратной связью: компенсирующий и усиливающий. Компенсирующий цикл с обратной связью воздействует на поток приобретения продукта, вызванный рекламой. Поток приобретения продукта сокращает число потенциальных потребителей, что приводит к снижению интенсивности приобретения продукта. Усиливающий цикл с обратной связью воздействует на поток приобретения продукта, вызванный общением с потребителями продукта. Поток приобретения продукта увеличивает численность потребителей продукта, что приводит к росту интенсивности приобретения продукта под влиянием общения с потребителями продукта и, следовательно, к росту интенсивности приобретения продукта.
10. Просмотрите код модели. Для этого постройте модель (клавиша F7), а потом на панели Проект выберите Модель, нажмите правую кнопку мыши и из ниспадающего меню выберите Открыть в... и затем - в Java редакторе.
11. Сконфигурируйте выполнение модели, для этого необходимо настроить текущий эксперимент модели.
Если сейчас запустить модель, то она будет работать бесконечно. Поскольку мы хотим наблюдать поведение модели только тогда, когда происходит процесс распространения продукта, поэтому нам нужно остановить модель, когда система придет в точку равновесия. Процесс распространения продукта в этой модели длится примерно 8 лет. Поэтому задайте остановку модели после 8 единиц модельного времени.
Для этого в окне свойств эксперимента Simulation:Main перейдите на вкладку Модельное время, выберите В заданное время из выпадающего списка Остановить. В расположенном ниже поле введите 8. Модель остановится после того, как истекут 8 единиц модельного времени (рис. 6.).
Задайте выполнение модели в режиме реального времени. Задайте скорость выполнения - 2.
Рис. 6. Модельное время
Вы можете изменить метод, используемый для решения системы дифференциальных уравнений. Если вы не укажете никакого конкретного метода, т. е. оставите выбранный по умолчанию метод Automatic, то во время работы модели AnyLogic будет автоматически выбирать численный метод в соответствии с поведением системы. На вкладке Модельв спискеЧисленные методы выберите метод RK4 из выпадающего списка Дифференциальные уравнения(рис. 7).
Рис. 7. Численные методы
12. Проверьте ошибки и запустите модель. Для проверки ошибок постройте проект с помощью кнопки панели инструментов Построить (или клавиша F7). В окне Ошибки появится список всех ошибок, обнаруженных в проекте, если таковые имеются. Двойным щелчком мыши по ошибке в этом списке вы можете перейти к предполагаемому месту ошибки, чтобы исправить ее. После построения проекта запустите модель.
13. Просмотрите значения переменных в окне работающей модели.
14. Исследуйте динамику обеих составляющих потока продаж. Для этого откройте окно инспекта для переменной AdoptionFromAd в окне презентации. Вы можете переключить окно инспекта в режим графика - оно будет отображать временной график изменений значения переменной в модельном времени. Текущее значение переменной будет отображаться рядом с началом координат графика. Окно инспекта автоматически масштабируется таким образом, чтобы полностью вместить кривые графиков от начала до конца периода моделирования.
Откройте окно инспекта переменной AdoptionFromWOM и переключите его в режим графика (рис. 8).
Рис. 8. Динамика обеих составляющих потока продаж
Можно увидеть, что при внедрении нового продукта на рынок, когда число потребителей равно нулю, реклама будет являться единственным источником продаж. Наибольший рекламный эффект отмечается в начале процесса распространения продукта; он неуклонно падает по мере уменьшения численности потенциальных потребителей.
15. Изучите динамику изменения численностей потребителей и потенциальных потребителей продукта с помощью диаграмм. Для этого создайте диаграмму для отображения переменных Adopters и PotentialAdopters.
Перетащите элемент Временной график IS из палитры Статистика на диаграмму класса Main и измените размер графика, как показано на рис. 9.
Рис. 9. Временной график IS
Перейдите на вкладку Масштаб панели Свойства. В поле Временной диапазон задайте диапазон временной оси диаграммы - 8. Диаграмма будет отображать график только для заданного временного интервала (рис. 9).
Добавьте элементы данных, историю изменения значений которых вы хотите отображать на временном графике: щелкните мышью по кнопке Добавить элемент данных. Введите в поле Значение имя соответствующего накопителя - PotentialAdopters. В поле Заголовок введите Potential adopters. Данная строка будет отображаться в легенде диаграммы для этого элемента данных. Выберите первую опцию из выпадающего списка Стиль маркера, чтобы наносимые на кривую графика точки не отображались дополнительными точками – маркерами (рис. 10).
Добавьте на график еще один элемент данных, который будет отображать значение накопителя Adopters.
Рис. 10. Динамика изменения численностей потребителей и потенциальных потребителей продукта
16. Добавьте график, отображающий изменение интенсивности продаж. Для этого добавьте на диаграмму еще один временной график, поместите его под добавленным ранее графиком. Измените свойства графика. В качестве Выражения должно быть задано имя потока AdoptionRate.
17. Запустите модель. Первая диаграмма показывает, как изменяются переменные PotentialAdopters и Adopters во время «прогона» модели. Они представляют собой классические S-образные кривые (рис. 11).
Рис. 11. Графики изменений
На втором графике (рис. 11) вы увидите классическую колоколообразную кривую.
Индивидуальное задание
18. Проанализируйте характеристики модели для своего варианта. Сделайте выводы.
Вариант | Эффективность рекламы | Сила убеждения | Длительность процесса |
0,010 | 0,01 | ||
0,010 | 0,02 | ||
0,010 | 0,03 | ||
0,005 | 0,04 | ||
0,005 | 0,05 | ||
0,005 | 0,01 | ||
0,015 | 0,02 | ||
0,015 | 0,03 | ||
0,015 | 0,04 | ||
0,010 | 0,05 | ||
0,010 | 0,01 | ||
0,010 | 0,02 | ||
0,005 | 0,03 | ||
0,005 | 0,04 | ||
0,005 | 0,05 | ||
0,015 | 0,01 | ||
0,015 | 0,02 | ||
0,015 | 0,03 | ||
0,020 | 0,04 | ||
0,020 | 0,05 |
Выводы: выполнение практической работы способствует формированию практических навыков построения системно-динамических моделей в экономики и умению проводить анализ данных полученных в результате эксперимента.
Вопросы для самоконтроля:
1. Системно-динамические модели в экономике.
2. Процесс распространения среди населения инноваций и новых продуктов.
3. Особенности моделирования динамических моделей: потоковая диаграмма модели, накопители, потоки, вспомогательные переменные.
Список литературы и ссылки на Интернет-ресурсы, содержащие информацию по теме:
а) основная литература:
1. Имитационное моделирование систем в среде AnyLogic: учебно-методическое пособие / М. В. Киселёва. - Екатеринбург: УГТУ-УПИ, 2009. - 88 с.
б) дополнительная литература:
2. Абрашин Е.А. Экономико-математические методы и модели [Электронный ресурс]: учебное пособие/ — Волгоград: Волгоградский институт бизнеса, Вузовское образование, 2009.— 207 c.— Режим доступа: http://www.iprbookshop.ru/11367.— ЭБС «IPRbooks»
3. Клевец, Н.И. Математические модели в менеджменте и маркетинге: Курс лекций: курс лекций/ Н. И. Клевец, К. А. Черногорова; Крымский институт бизнеса. - Симферополь: КИБ, 2006. - 152 с.
в) ссылки на Интернет-ресурсы:
4. Многоподходное имитационное моделирование в AnyLogic - http://www.anylogic.ru/