Файл: Построение имитационное модели распространения нового продукта на рынке.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.11.2023
Просмотров: 112
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рисунок 3 – добавление потока продаж продукта
Шаг 4. Задание констант
Теперь мы зададим константы нашей модели с помощью параметров.
Создаем константу, задающую общую численность населения:
1. Перетащим элемент Параметр из палитры Системная динамика на диаграмму типа агентов.
2. В панели Свойства задаем свойства этого параметра.
3. Изменим имя параметра. Введем TotalPopulation в поле Имя.
4. В поле Значение по умолчанию введем 100000. Пусть общая численность населения в нашей модели будет именно такой.
Рисунок 4 – константа TotalPopulation
Создаем константу ContactRate:
1. Аналогично создаем еще одну константу. Задаем Имя ContactRate.
2. Предположим, что каждый человек в среднем встречается со 100 людьми в год. Введем в поле Значение по умолчанию 100.
Рисунок 5 – константа ContactRate
В этой модели интенсивность рекламы и вероятность того, что продукт будет приобретен под ее влиянием, полагаются постоянными. Поэтому мы зададим эффективность рекламы константой. Эффективность рекламы определяет, какая доля людей купит продукт вследствие ее влияния.
Создаем константу AdEffectiveness, задающую эффективность рекламы:
1. Создаем еще одну константу и назовем ее AdEffectiveness.
2. Задаем значение по умолчанию 0.011.
Рисунок 6 – константа AdEffectiveness
Создаем константу AdoptionFraction:
1. Создаем еще одну константу и назовем ее AdoptionFraction.
2. Задаем значение по умолчанию 0.015.
Рисунок 7 – константа AdoptionFraction
Шаг 5. Задание начальных значений накопителей
Теперь мы можем задать начальные значения накопителей.
Мы хотим задать общую численность людей в нашей модели (заданную параметром TotalPopulation) в качестве начального значения накопителя PotentialAdopters.
Чтобы задать связь:
1. Сделаем двойной щелчок по элементу Связь палитры Системная динамика. Значок элемента при этом должен измениться на следующий: .
2. Сразу после этого, щелкнем в графическом редакторе по элементу, который упоминается в выражении начального значения (TotalPopulation).
3. Затем щелкаем по накопителю PotentialAdopters, к которому должна следовать создаваемая связь зависимости.
Рисунок 8 – создание связей
Задаем начальное количество потенциальных потребителей продукта:
1. В графическом редакторе или в панели Проекты выделяем накопитель PotentialAdopters щелчком мыши.
2. В панели Свойства вводим TotalPopulation в поле Начальное значение.
3. Появится окно Мастера подстановки кода, перечисляющего переменные модели и функции, доступные в текущем контексте. Прокрутим список к имени, которое мы хотим вставить, или вводим первые буквы имени, пока оно не будет выделено в списке. Двойным щелчком мыши по имени добавим его в поле формулы.
4. В результате в поле Начальное значение должно быть добавлено имя параметра TotalPopulation, значение которого и будет определять начальное значение этого накопителя (начальную численность потенциальных покупателей продукта).
Рисунок 9 – задание свойств накопителя PotentialAdopters
Начальное значение накопителя Adopters, моделирующего потребителей продукта, задавать не нужно, поскольку изначально число потребителей равно нулю, а накопитель по умолчанию и так инициализируется нулем.
Шаг 6. Создание динамических переменных
Нам нужно создать две динамические переменные, которые будут соответствовать двум составляющим потока приобретения продукта:
1. Приобретениям, совершенным под влиянием рекламы.
2. Приобретениям, совершенным под влиянием общения потребителей продукта с потенциальными потребителями.
Создаем динамическую переменную AdoptionFromAd:
1. Перетащитм элемент Динамическая переменная из палитры Системная динамика на диаграмму типа агентов.
2. В панели Свойства вводим новое Имя переменной: AdoptionFromAd.
Теперь мы хотим задать формулу для этой динамической переменной. Влияние рекламы моделируется следующим образом: некий постоянный процент потенциальных клиентов AdEffectiveness всё время становятся клиентами. Их доля в AdoptionRate равна, соответственно, PotentialAdopters*AdEffectiveness.
Добавим связи от двух переменных к зависимой от них AdoptionFromAd:
1. Добавим связи, ведущие от AdEffectiveness и PotentialAdopters к AdoptionFromAd.
2. Добавим еще одну связь, ведущую от AdEffectiveness к AdoptionFromAd.
3. Задаем формулу, согласно которой будет вычисляться значение переменной. В свойствах переменной AdoptionFromAd, в поле AdoptionFromAd = вводим: AdEffectiveness*PotentialAdopters.
Рисунок 10 – задание свойств динамической переменной AdoptionFromAd
Создаем динамическую переменную AdoptionFromWOM:
1. Аналогично создаем еще одну динамическую переменную.
2. Назовем ее AdoptionFromWOM.
3. Задаем для этой переменной следующую формулу: ContactRate * AdoptionFraction * PotentialAdopters * Adopters / TotalPopulation.
Рисунок 11 – задание свойств динамической переменной AdoptionFromWOM
Задаем формулу потока:
1. Выделим поток AdoptionRate щелчком мыши.
2. Перейдем в панель Свойства.
3. Введем правую часть формулы, по которой будет вычисляться значение потока, в поле AdoptionRate= : AdoptionFromAd AdoptionFromWOM
4. Добавим соответствующие связи от этих переменных к потоку AdoptionRate.
Рисунок 12 – задание потока AdoptionRate
Шаг 7. Настройка запуска модели
В панели Проекты эксперименты отображаются в нижней части дерева модели. Один эксперимент, названный Simulation, создается по умолчанию. Это простой эксперимент, позволяющий запускать модель с заданными значениями параметров, поддерживающий режимы виртуального и реального времени, анимацию и отладку модели.
Задаем остановку модели по прошествии 8 единиц модельного времени
1. В панели Проекты, выделим эксперимент Simulation:Main щелчком мыши.
2. В секции Модельное время панели Свойства, выберим В заданное время из выпадающего списка Остановить. В расположенном ниже поле введите 8. Модель остановится после того, как истекут 8 единиц модельного времени.
Перед тем, как запустить модель, выберем режим ее выполнения. Модель AnyLogic может выполняться либо в режиме виртуального, либо в режиме реального времени.
В режиме виртуального времени модель выполняется без привязки к физическому времени – она просто выполняется настолько быстро, насколько это возможно. Этот режим лучше всего подходит в том случае, когда требуется моделировать работу системы в течение достаточно длительного периода времени.
В режиме реального времени задается связь модельного времени с физическим, то есть задается количество единиц модельного времени, выполняемых в одну секунду. Это часто требуется, когда вы хотите, чтобы анимация модели отображалась с той же скоростью, что и в реальной жизни.
Задаем выполнение модели в режиме реального времени.
1. В панели Проекты, выделим эксперимент Simulation:Main щелчком мыши.
2. Перейдем в секцию Модельное время и выберем опцию Реальное время со скоростью.
3. Зададим скорость выполнения модели, т.e., сколько единиц модельного времени будет соответствовать одной секунде реального времени. Выберем в выпадающем списке справа, скажем, 1.
Рисунок 13 – настройка простого экспериманта
Шаг 8. Моделирование повторных покупок
Созданная модель не учитывает того, что со временем продукт может быть израсходован или прийти в негодность, что вызовет необходимость его повторного приобретения. Мы смоделируем повторные покупки, полагая, что потребители продукта снова становятся потенциальными потребителями, когда продукт, который они приобрели, становится непригоден.
Вначале мы определим константу, задающую среднее время жизни продукта.
Создадим константу ProductLifeTime:
1. Пусть средняя продолжительность использования нашего продукта равна двум годам. Введите Значение по умолчанию 2.
Потребители продукта снова становятся потенциальными потребителями тогда, когда продукт, который они приобрели, расходуется и перестает использоваться. Поэтому поток прекращения использования продукта является ничем иным, как потоком приобретения, задержанным на среднее время пригодности продукта.
Создаем поток прекращения использования продукта, ведущий из Adopters в PotentialAdopters
1. Если нарисовать новый поток прямой стрелкой, ведущей от Adopters к PotentialAdopters, то этот поток будет нарисован поверх стрелки существующего потока AdoptionRate. Поэтому давайте нарисуем поток более сложной формы (см. рисунок ниже). Для
этого используем другой, более подходящий для данного случая, способ рисования потоков.
2. Сделаем двойной щелчок по элементу Поток в палитре Системная динамика. Значок элемента при этом должен смениться на следующий: .
3. Сразу после этого щёлкнем мышью по накопителю Adopters, потом щёлкнем в промежуточных точках изгиба стрелки потока, и завершим рисование потока, сделав двойной щелчок по накопителю PotentialAdopters, в который этот поток втекает.
4. Назовием поток DiscardRate.
5. Зададим следующую формулу для потока DiscardRate: delay(AdoptionRate, ProductLifeTime).
Функция delay() реализует временную задержку; она имеет следующую нотацию: delay(, , ) В нашем случае функция представляет собой AdoptionRate с временной задержкой ProductLifeTime. Пока не истекло время использования первого приобретенного продукта, поток равен нулю.
Рисунок 14 – создание потока DiscardRate
Шаг 9. Запуск модели
1. Щелкним мышью по кнопке панели инструментов Запустить и выберем из открывшегося списка эксперимент, который мы хотите запустить. Эксперимент этой модели будет называться Revyakia_A_I/Simulation.
В дальнейшем по нажатию на кнопку Запустить (или по нажатию F5) будет запускаться тот эксперимент, который запускался вами в последний раз. Чтобы выбрать какой-то другой эксперимент, удет нужно щелкнуть мышью по стрелке, находящейся в правой части кнопки Запустить и выбрать нужный эксперимент из открывшегося списка (или щелкнуть правой кнопкой мыши по этому эксперименту в панели Проекты и выбрать Запустить из контекстного меню).
Запустив модель, мы увидим окно модели. Щелкнем по кнопке Запустить . Мы увидим диаграмму потоков и накопителей. Рядом с каждым элементом будет отображаться его текущее значение.
Рисунок 15 – запуск модели
Шаг 10. Моделирование стратегии рекламной кампании