В текущей модели доля контактов потребителей продукта с потенциальными потребителями, которая приводит к продажам продукта, полагается постоянной. На самом деле она изменяется, поскольку спрос на наш продукт зависит от текущего времени года. Продукт пользуется наибольшим спросом летом, в то время как зимой спрос на товар резко падает, за исключением небольшого предпраздничного периода в декабре. Давайте и промоделируем теперь сезонную цикличность спроса.
Предположим, что у нас есть экспериментальные данные того, как изменяется средний спрос на продукт в течение года. Мы добавим эти данные в нашу модель с помощью табличной функции. Табличная функция – это функция, заданная в табличной форме, которая может быть сделана непрерывной с помощью интерполяции и экстраполяции.
Задание кривой спроса с помощью табличной функции
- Перетащите элемент Табличная функция из палитры Системная динамика на диаграмму класса Main.
- Назовите функцию demand.
- Задайте данные табличной функции в секции Табличные данные панели свойств функции. Каждая пара "аргумент-значение" задается в отдельной строке таблицы. Чтобы задать новую пару значений, щелкните мышью в пустой ячейке Аргумент и введите новый аргумент функции. Затем щелкните в соседней ячейке Значение справа и введите значение функции, соответствующее этому аргументу. Задайте следующие данные:
- Задайте тип интерполяции. Выберите Линейный из выпадающего списка Интерполяция. Интерполяция будет производиться соединением табличных точек прямыми линиями.
- Задайте тип реакции на аргументы, лежащие за пределами области допустимых значений функции. Выберите Ближайший из выпадающего списка Если аргумент выходит за пределы. В случае вызова функции с аргументом, лежащим за пределами интервала заданных значений, будет использоваться ближайший заданный аргумент функции.
Закончив задание функции, вы можете посмотреть, как она выглядит, с помощью графика в секции предварительного просмотра функции:
Теперь мы хотим промоделировать то, как спрос на продукт влияет на количество людей, приобретающих продукт под влиянием общения с владельцами продукта. Для этого мы создадим специальную функцию и заменим параметр AdoptionFraction динамической переменной, значение которой будет вычисляться согласно этой функции.
Задайте функцию
- Перетащите элемент Функция из палитры Агент на диаграмму типа Main.
- Назовите функцию adoptFraction.
- Функция будет возвращать вещественное значение, поэтому выберите double из выпадающего списка Тип возвращаемого значения.
-
В секции свойств Тело функции замените существующую строку на следующую:
return demand( getMonth() )/200.0;
Функция getMonth() вычисляет номер текущего месяца. Этот номер передается табличной функции demand. Табличная функция возвращает значение спроса на продукт для данного месяца. В заключение, для получения значения доли людей, покупающих продукт под влиянием общения, значение спроса делится на коэффициент преобразования.
Ну и наконец нужно будет заменить константу динамической переменной, значение которой определяется нашей функцией.
Замените параметр AdoptionFraction динамической переменной
- Удалите параметр AdoptionFraction.
- Добавьте динамическую переменную AdoptionFraction. Задайте в качестве формулы переменной adoptFraction(). Таким образом, значение переменной будет вычисляться согласно нашей функции.
Задайте остановку модели по прошествии 20 единиц модельного времени (как это сделать, подробно описано на шаге 7) и запустите модель. Вы увидите, что теперь поведение модели колеблется около точки равновесия в силу того, что теперь колеблются значения и потока приобретения, и потока прекращения использования продукта.
Демо-модель: Bass Diffusion — Phase 4 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.-
Как мы можем улучшить эту статью?
-