Моделирование месячных расходов
Создайте константу, задающую месячные расходы компании
1. Создайте параметр MonthlyExpenditures.
2. Задайте Значение по умолчанию: 1100.
Замените параметр AdEffectiveness вспомогательной переменной
1. Удалите параметр AdEffectiveness.
2. Создайте вспомогательную переменную AdEffectiveness с формулой: MonthlyExpenditures/10000.0. Мы полагаем, что именно так эффективность рекламы зависит от текущих рекламных расходов компании.
3. Добавьте еще одну связь зависимости, ведущую от параметра MonthlyExpenditures к динамической переменной AdEffectiveness.

Мы хотим вести статистику всех расходов компании. Это может быть сделано созданием специальной переменной для хранения информации о том, сколько денег было потрачено на рекламу продукта. Каждый месяц мы будем обновлять это значение с помощью специального события, добавляя значение запланированных на предстоящий месяц расходов на рекламную кампанию продукта.
Добавьте переменную для хранения общих расходов компании
1. Перетащите элемент Переменная
из палитры Агент на диаграмму типа агента Main.
2. Назовите переменную TotalExpenditures.
Создайте событие, которое будет обновлять значение TotalExpenditures
1. Перетащите элемент Событие
из палитры Агент на диаграмму типа агента Main.
2. Назовите событие monthlyEvent.
3. Сделайте так, чтобы таймер срабатывал каждый месяц. Выберите Циклический из выпадающего списка Режим. Поскольку одна единица модельного времени в нашей модели соответствует одному году, то одному месяцу будет соответствовать выражение 1.0/12.0. Введите 1.0/12 в поле Таймаут.
4. Задайте Действие события: TotalExpenditures += MonthlyExpenditures;
Этот код будет выполняться каждый раз по истечении таймаута события. Он выполняет сбор статистики, а именно добавляет значение запланированных рекламных расходов на предстоящий месяц к значению переменной TotalExpenditures.

Моделирование плана рекламной кампании
Поскольку реклама играет значительную роль только в начальной стадии процесса завоевания рынка, мы хотим в какой-то момент времени, скажем, через 3 года остановить рекламную кампанию. Этим мы сэкономим деньги, бесцельно тратящиеся на рекламу тогда, когда насыщение рынка будет определяться практически исключительно покупками продукта, вызванными общением потребителей с потенциальными потребителями.
Добавьте константу, задающую время переключения
1. Добавьте параметр SwitchTime.
2. Задайте Значение по умолчанию: 3.
Теперь мы визуально зададим поведение системы с помощью диаграммы состояний.
Создайте диаграмму состояний для моделирования рекламной стратегии
1. Начните задание диаграммы состояний с добавления элемента Начало диаграммы состояний
(перетащите этот элемент на диаграмму из палитры Диаграмма состояний).

2. Добавьте состояние. Перетащите элемент Состояние
из палитры Диаграмма состояний так, чтобы состояние присоединилось к добавленному ранее элементу (см. рисунок ниже). Измените имя состояния на with_advertising.

3. Добавьте еще одно состояние под только что созданным. Назовите его without_advertising.

4. Нам нужно остановить рекламную кампанию в тот момент, когда диаграмма состояний войдет в это состояние. Поэтому напишите в поле свойства Действие при входе этого состояния MonthlyExpenditures=0.0;

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

6. Укажите, что этот переход произойдет по истечении времени SwitchTime. Для этого выберите По таймауту из выпадающего списка Происходит и введите SwitchTime в поле Таймаут.

Теперь, когда диаграмма состояний находится в начальном состоянии with_advertising, рекламные расходы кампании определяются переменной MonthlyExpenditures. Как только диаграмма состояний покидает это состояние в момент времени SwitchTime, компания перестает рекламировать продукт.
Запустите модель и убедитесь, что рекламная кампания длится теперь только три года.
Задание 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. Щелкните по кнопке Создать интерфейс в панели свойств эксперимента.

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

Обратите внимание, что создание интерфейса удаляет все содержимое диаграммы оптимизационного эксперимента, поэтому мы рекомендуем вначале создать предлагаемый по умолчанию интерфейс, а уже потом изменять его.
Задайте функционал оптимизации
1. Мы хотим минимизировать деньги, затраченные на рекламу продукта. В панели свойств эксперимента введите root.TotalExpenditures в поле Целевая функция. Здесь мы обращаемся к агенту верхнего уровня эксперимента как к переменной root.
2. Оставьте выбранной опцию минимизировать.
Сконфигурируйте оптимизацию
1. В панели свойств эксперимента задайте максимальное количество «прогонов» модели, которое будет произведено оптимизатором. Введите 500 в поле Количество итераций.
2. Чтобы процесс оптимизации успешно выполнялся, нужно убедиться в том, что он будет заканчиваться. По умолчанию моделирование не заканчивается, поэтому оптимизатор не получит результат, который должен бы был получить по окончании выполнения каждого отдельного «прогона» модели. Поэтому нужно явно задать условие останова «прогона». Перейдите в секцию свойств эксперимента Модельное время и выберите опцию В заданное время из выпадающего списка Остановить. В поле Конечное время введите 1.5. Теперь «прогоны» модели будут завершаться по прошествии полутора единиц модельного времени (то есть, лет).
Дата добавления: 2020-04-25; просмотров: 225; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
