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

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

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

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

Создайте оптимизационный эксперимент
  1. В панели Проекты щелкните правой кнопкой мыши по элементу модели и выберите Создать > Эксперимент из контекстного меню. Откроется диалоговое окно Новый эксперимент.
  2. Выберите Оптимизация из списка Тип эксперимента и нажмите Готово.

Вы увидите, что в модели будет создан еще один эксперимент, а в графическом редакторе будет открыта его диаграмма.

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

Задайте оптимизационные параметры
  1. Выделите оптимизационный эксперимент в панели Проекты и перейдите в панель Свойства.
  2. Все параметры агента верхнего уровня эксперимента перечислены в таблице Параметры, расположенной в соответствующей секции свойств эксперимента. По умолчанию все они сделаны фиксированными, т.e. они не участвуют в оптимизационном процессе (их значения не меняются). Чтобы включить параметр в процесс оптимизации (то есть, разрешить варьирование его значения для поиска наилучшего значения функционала), вам нужно выбрать в ячейке Тип соответствующих нужным параметрам строках таблицы другую опцию вместо фиксированный.
  3. Давайте вначале сконфигурируем параметр MonthlyExpenditures. Выберите непрерывный в ячейке Тип строки MonthlyExpenditures. Задайте максимально возможное значение параметра в ячейке Макс. равным 10000, а Начальное значение равным 1000. Таким образом мы говорим оптимизатору, что параметр может принимать любые вещественные значения в интервале от 0 до 10000, а начнет оптимизатор процесс оптимизации со значения 1000.
  4. Теперь сделаем то же для параметра SwitchTime. Выберите дискретный в ячейке Тип, поскольку мы хотим, чтобы этот параметр принимал только значения, соответствующие определенным временным промежуткам: один месяц, два месяца и т.д. Задайте 0.0833 в ячейке Шаг. Это значение соответствует одному месяцу в нашей модели, так как 1 соответствует одному году, то один месяц равен 1.0/12.0 = 0.0833. В ячейке Макс. выберите 1.5, а в ячейке Начальное 1.

Создайте интерфейс эксперимента

  1. Щелкните по кнопке Создать интерфейс в панели свойств эксперимента.

  1. Тем самым мы создадим заданный по умолчанию интерфейс для эксперимента (см. рисунок ниже) - набор элементов управления для отображения результатов процесса оптимизации по ходу его выполнения.

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

Задайте функционал оптимизации
  1. Мы хотим минимизировать деньги, затраченные на рекламу продукта. В панели свойств эксперимента введите root.TotalExpenditures в поле Целевая функция. Здесь мы обращаемся к агенту верхнего уровня эксперимента как к переменной root.
  2. Оставьте выбранной опцию минимизировать.
Сконфигурируйте оптимизацию
  1. В панели свойств эксперимента задайте максимальное количество "прогонов" модели, которое будет произведено оптимизатором. Введите 500 в поле Количество итераций.
  2. Чтобы процесс оптимизации успешно выполнялся, нужно убедиться в том, что он будет заканчиваться. По умолчанию моделирование не заканчивается, поэтому оптимизатор не получит результат, который должен бы был получить по окончании выполнения каждого отдельного "прогона" модели. Поэтому нужно явно задать условие останова "прогона". Перейдите в секцию свойств эксперимента Модельное время и выберите опцию В заданное время из выпадающего списка Остановить. В поле Конечное время введите 1.5. Теперь "прогоны" модели будут завершаться по прошествии полутора единиц модельного времени (то есть, лет).

Задание дополнительного требования (проверка насыщения рынка)

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

Задайте требование к оптимизационному эксперименту
  1. Выделите оптимизационный эксперимент в панели Проекты и перейдите в секцию свойств Требования. Задайте требование к результатам оптимизации в верхней строке таблицы Требования (проверяются после "прогона" для определения того, допустимо ли найденное решение).
  2. Введите root.Adopters в ячейке Выражение. Корневой агент эксперимента доступен здесь по имени root.
  3. Выберите >= в ячейке Тип.
  4. Введите 80000 в ячейке Граница.
  5. Наконец, установите флажок в самом левом столбце таблицы, чтобы активировать это ограничение.

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

Запуск оптимизации

Теперь модель готова к проведению оптимизации.

Запустите оптимизацию

  1. Щелкните правой кнопкой мыши по оптимизационному эксперименту в панели Проекты и выберите Запустить из контекстного меню. Вы увидите окно модели, отображающее презентацию запущенного эксперимента.
  2. Запустите процесс оптимизации, щелкнув по кнопке Запустить .
  1. AnyLogic запустит модель 500 раз, изменяя значения параметров MonthlyExpenditures и SwitchTime. Итоговая информация о результатах будет отображаться в специальных элементах управления на диаграмме эксперимента в окне презентации.

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

Теперь можно обновить модель этими значениями параметров SwitchTime и MonthlyExpenditures. Сохраните полученные значения параметров в эксперименте Simulation, чтобы использовать в нашей модели найденную оптимальную стратегию.

Примените результаты оптимизации

  1. После завершения оптимизации, щелкните по кнопке copy на холсте диаграммы эксперимента в окне презентации. Таким образом вы скопируете найденные (оптимальные) значения параметров в Буфер обмена.
  2. Закройте окно презентации и выделите эксперимент Simulation в панели Проекты.
  3. Вставьте скопированные значения параметров из Буфера обмена, щелкнув по кнопке Вставить из буфера в панели свойств эксперимента.

Запустите эксперимент Simulation. Теперь модель будет запущена с оптимальными значениями параметров, при которых в процессе оптимизации было получено наилучшее значение функционала. Можете проверить, что к заданному времени (1,5 года) достигается требуемое количество пользователей продукта.

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

Контрольная модель: Bass Diffusion - Phase 6


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