AnyLogic
Развернуть
Размер шрифта

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

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

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

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

Задание кривой спроса с помощью табличной функции

  1. Перетащите элемент Табличная функция из палитры Системная динамика на диаграмму класса Main.
  2. Назовите функцию demand.
  3. Задайте данные табличной функции в секции Табличные данные панели свойств функции. Каждая пара "аргумент-значение" задается в отдельной строке таблицы. Чтобы задать новую пару значений, щелкните мышью в пустой ячейке Аргумент и введите новый аргумент функции. Затем щелкните в соседней ячейке Значение справа и введите значение функции, соответствующее этому аргументу. Задайте следующие данные:

  4. Задайте тип интерполяции. Выберите Линейный из выпадающего списка Интерполяция. Интерполяция будет производиться соединением табличных точек прямыми линиями.
  5. Задайте тип реакции на аргументы, лежащие за пределами области допустимых значений функции. Выберите Ближайший из выпадающего списка Если аргумент выходит за пределы. В случае вызова функции с аргументом, лежащим за пределами интервала заданных значений, будет использоваться ближайший заданный аргумент функции.

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

Моделирование влияния меняющегося спроса на интенсивность приобретения продукта

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

Задайте функцию

  1. Перетащите элемент Функция из палитры Агент на диаграмму типа Main.
  2. Назовите функцию adoptFraction.
  3. Функция будет возвращать вещественное значение, поэтому выберите double из выпадающего списка Тип возвращаемого значения.
  4. В секции свойств Тело функции замените существующую строку на следующую:
    return demand( getMonth() )/200.0;

Функция getMonth() вычисляет номер текущего месяца. Этот номер передается табличной функции demand. Табличная функция возвращает значение спроса на продукт для данного месяца. В заключение, для получения значения доли людей, покупающих продукт под влиянием общения, значение спроса делится на коэффициент преобразования.

Ну и наконец нужно будет заменить константу динамической переменной, значение которой определяется нашей функцией.

Замените параметр AdoptionFraction динамической переменной

  1. Удалите параметр AdoptionFraction.
  2. Добавьте динамическую переменную AdoptionFraction. Задайте в качестве формулы переменной adoptFraction(). Таким образом, значение переменной будет вычисляться согласно нашей функции.

Задайте остановку модели по прошествии 20 единиц модельного времени (как это сделать, подробно описано на шаге 7) и запустите модель. Вы увидите, что теперь поведение модели колеблется около точки равновесия в силу того, что теперь колеблются значения и потока приобретения, и потока прекращения использования продукта.

Демо-модель: Bass Diffusion — Phase 4 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Как мы можем улучшить эту статью?