Материал: 1лаб

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

  1. Анализ модели.

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

  1. Создание новой модели.

Вначале создаётся новая модель. После чего мы изучаем пользовательский интерфейс AnyLogic (рисунок 1).

Рисунок 1 - Создание новой модели

  1. Создание накопителей.

Начинаем создание диаграммы накопителей. Накопитель в AnyLogic задается с помощью одноименной переменной. Название накопителя изменяется в его свойствах. Создаем накопитель имя которого задаем: PotentialAdopters.

Аналогично создаем еще один накопитель и называем его: Adopters (рисунок 2).

Рисунок 2 - Создание накопителей

  1. Добавление потока продаж продукта

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

Рисунок 3 – Добавление потока

  1. Задание констант

Теперь зададим константы для нашей модели с помощью параметров. Задаем константу, задающую общую численность населения. В параметрах изменяем имя константы на: TotalPopulation. После чего создаем константу ContactRate. Аналогично создаем следующую константу AdEffectiveness, которая будет задавать эффективность рекламы. Следующая константа будет называться AdoptionFraction.

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

Теперь мы можем задать начальные значения накопителей. Мы хотим задать общую численность людей в нашей модели (заданную параметром TotalPopulation) в качестве начального значения накопителя PotentialAdopters. Теперь, когда мы создали связь, можно задать начальное значение накопителя, сославшись в нем на параметр TotalPopulation. Начальное значение накопителя Adopters, моделирующего потребителей продукта, задавать не нужно, поскольку изначально число потребителей равно нулю, а накопитель по умолчанию и так инициализируется нулем. Теперь мы закончили задание накопителей. Нам осталось добавить на диаграмму потоков и накопителей динамические переменные - и модель будет готова.

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

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

  1. Приобретениям, совершенным под влиянием рекламы.

  2. Приобретениям, совершенным под влиянием общения потребителей продукта с потенциальными потребителями.

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

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

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

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

Для этого вводим в правую часть формулы, по которой будет вычисляться значение потока, в поке AdoptionRate= : AdoptionFromAd + AdoptionFromWOM

Рисунок 4 - Задание формулы потока

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

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

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

Мы задаем модель в режиме реального времени.

  1. Запуск модели

При запуске модели ошибок не возникло, поэтому на панели инструментов нажимаем кнопку Запустить. Запуск можно увидеть на рисунке 5.

Рисунок 5 - Запуск модели

  1. Добавление диаграмм

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

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

Рисунок 6 - График, отображающий динамику изменения численностей потребителей и потенциальных потребителей продукта

Добавим график, отображающий изменение интенсивности продаж (рисунок 7).

Рисунок 7 - График, отображающий изменение интенсивности продаж

Теперь мы можем запустить модель и изучить динамику изменения численностей потребителей и потенциальных потребителей продукта (рисунок 8).

Рисунок 8 - Запуск модели

  1. Моделирование повторных покупок

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

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

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

Создаем поток прекращения использования продукта, ведущий из Adopters в PotentialAdopters.

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

Теперь мы закончили моделирование повторных покупок продукта. Можно запустить модель и исследовать график переменных AdoptionRate и DiscardRate (рисунок 9).

Рисунок 9 - Запуск модели

  1. Моделирование цикличности спроса

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

Добавим экспериментальные данные.

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

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

Далее запускаем модель (рисунок 10).

Рисунок 10 - Запуск модели

  1. Моделирование стратегии рекламной кампании

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

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

Теперь, когда диаграмма состояний находится в начальном состоянии with_advertising, рекламные расходы кампании определяются переменной MonthlyExpenditures. Как только диаграмма состояний покидает это состояние в момент времени SwitchTime, компания перестает рекламировать продукт.

  1. Оптимизация рекламной стратегии.

Рыночная стратегия в данной модели предельно проста: в определенный момент времени компания прекращает рекламировать продукт.

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

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

Эксперимент можно увидеть на рисунке 11.

Рисунок 11 – Эксперимент

Мы будем оптимизировать значения параметров MonthlyExpenditures и SwitchTime. Во время оптимизации, значения параметров модели будут систематически изменяться, чтобы найти наименьшее значение переменной TotalExpenditures, выбранной в качестве целевого функционала, при котором достигается насыщение рынка к заданному моменту времени.

Теперь можем запустить оптимизацию (рисунок 12).

Рисунок 12 - Запуск оптимизации

Когда процесс оптимизации модели завершится, можно увидеть, что лучшее значение функционала равно семи с лишним тысячам. Эксперимент в итоге выдаст оптимальные значения параметров SwitchTime и MonthlyExpenditures, при которых было достигнуто это значение функционала.

Вывод: в ходе выполнения лабораторной работы мы построили модель распространения продукта по Бассу.

Источник: https://studfile.net/preview/16378565/