Имитационное моделирование на базе AnyLogic

Системно динамическое моделирование в AnyLogic. Модель Басса

В лекции изложен подход системной динамики к имитационному моделированию, который описывает поведение систем через усредненные показатели и причинно-следственные связи. Объясняется логика построения моделей на основе потоковых диаграмм с накопителями и потоками, учитывающих задержки и обратные связи. Теоретическая часть завершается практическим созданием модели распространения нового продукта по модели Басса, демонстрирующей два канала привлечения клиентов: прямую рекламу и «сарафанное радио».

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснить фундаментальные принципы и допущения подхода системной динамики.
2. Идентифицировать ключевые элементы системно-динамической модели: накопители, потоки, переменные и связи.
3. Описать роль и механизм работы циклов обратной связи и временных задержек в моделируемой системе.
4. Применить потоковые диаграммы для графического представления структуры системы.
5. Создать базовую имитационную модель распространения продукта, используя два маркетинговых канала.
6. Настроить начальные значения накопителей и параметры модели в среде разработки.
7. Записать и интерпретировать математические уравнения, лежащие в основе потоков модели.
8. Провести симуляцию и проанализировать динамику изменения уровней накопителей с течением времени.
Показывать лекцию целиком
Краткое изложение

Переход к системной динамике

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

Основные концепции системной динамики

Системная динамика — это подход для усредненной оценки поведения системы. В отличие от агентного моделирования, здесь нет разницы между отдельными элементами (например, конкретными людьми: Иваном, Димой или Катей). Все они считаются идентичными, и модель оперирует средними характеристиками, например, средним количеством клиентов, привлекаемых за единицу времени.

Базовая структура модели:
У нас есть пул (накопитель) всех потенциальных клиентов на рынке. Из него с определенной скоростью клиенты перетекают в другой накопитель — тех, кто уже заключил контракт. Этот переход описывается потоком.

Каналы продаж:
Перемещение клиентов происходит за счет двух каналов:
1. Прямой маркетинг (реклама): Воздействует на потенциальных клиентов с некоторой эффективностью.
2. Устная реклама («сарафанное радио»): Для ее моделирования необходимо знать частоту контактов между людьми и эффект от этих контактов.

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

Ключевые элементы и возможности

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

Задержки: Важно учитывать, что эффект от воздействия проявляется не мгновенно. Например, пик рекламной кампании и пик привлечения клиентов разделены во времени. Эти задержки легко задаются в моделях.

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

Графическое представление и математический аппарат

Основой графического моделирования являются потоковые диаграммы (Stock and Flow Diagrams). Их главные элементы — накопители (Stocks) и потоки (Flows).
• Накопители (например, «Население», «Запасы на складе», «Долг») содержат значение показателя.
• Входящие потоки (рождаемость, производство, заимствование) увеличивают содержимое накопителя.
• Исходящие потоки (смертность, отгрузка, погашение) уменьшают его.

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

В распоряжении разработчика — полный набор математических функций (тригонометрические, логарифмические, округления и т.д.), а также специальные функции, например, для расчета финансовых показателей (NPV, IRR).

Функции задержки (Delay Functions): Позволяют задать временной лаг влияния. Например, можно указать, что параметр должен воздействовать на систему не текущим значением, а тем, что было несколько периодов назад. Это достигается сдвигом графика функции по временной оси.

Табличные функции: Удобный инструмент для работы с произвольными эмпирическими распределениями. Вместо стандартных (нормальное, треугольное) можно задать распределение по точкам из реальной статистики, а модель восстановит всю кривую методом линейной аппроксимации или с помощью кубического сплайна (Cubic Spline).

Массивы и размерности: Позволяют избежать дублирования однотипных элементов. Если нужно посчитать население не в целом по стране, а в разрезе 89 регионов, достаточно создать один накопитель и потоки, указав у них размерность (Dimension) «Регион». Модель автоматически рассчитает показатели для каждого региона независимо. Количество размерностей не ограничено (можно добавить «Пол», «Возрастную группу»). Поддерживаются поэлементные операции над массивами.

Иерархии и управление поведением

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

Управлять поведением можно с помощью событий (Events):
• Моментные: Срабатывают в заданный момент времени.
• По условию: Активируются при достижении переменной определенного значения.
• Циклические: Выполняют действие регулярно (например, каждые 15 тактов времени увеличивать переменную на 2).

Еще один инструмент — диаграммы состояний (Statecharts). Они позволяют дискретно менять поведение системы. Простой пример — светофор: система циклически переключается между состояниями «красный», «желтый», «зеленый», и в каждом из них значение выходной переменной (или поведение) строго определено.

Перенос моделей и облачная платформа

Для совместимости с Legacy-разработками существует модуль портирования (Porting) моделей из популярной среды Vensim в AnyLogic.

Для демонстрации и совместной работы используется облачная платформа AnyLogic Cloud.

• Публичное облако (Public Cloud): Доступно бесплатно, позволяет загружать модели для просмотра и обсуждения.
• Частное облако (Private Cloud): Предоставляется по коммерческой лицензии. Обеспечивает безопасное пространство для моделей компании с функциями совместного редактирования и контроля версий (Version Control).

Пользователи облака могут взаимодействовать с моделью: запускать симуляцию, переключаться между 2D- и 3D-видами, управлять параметрами (например, количеством персонала в модели травмпункта для уменьшения очереди) и просматривать статистику.

Практическая работа: Модель распространения продукта по Бассу

Теперь мы создадим системно-динамическую модель выхода нового продукта на рынок.

Исходные условия:
• Общая популяция (Total Population): 10 000 человек.
• Начальное число клиентов: 0.
• Модельное время: Годы.
• Эффективность прямой рекламы (Ad Effectivness): 0.011 (1.1%).
• Эффективность устной рекламы (Adoption Fraction): 0.015.
• Частота контактов (Contact Rate): 100 раз в год.

Создание структуры модели:
1. Создаем новую модель с единицами времени «годы».
2. Переходим в палитру «Системная динамика».
3. Добавляем два накопителя (Stock):
o PotentialAdopters (Потенциальные клиенты).
o Adopters (Клиенты).
4. Создаем поток (Flow) от PotentialAdopters к Adopters. Называем его AdoptionRate (Скорость привлечения). Модель автоматически вычитает и прибавляет значение этого потока в соответствующих накопителях.
5. Создаем параметры (Parameters):
o TotalPopulation (тип double, значение 10000).
o AdEffectiveness (тип double, значение 0.011).
o ContactRate (значение 100).
o AdoptionFraction (значение 0.015).
6. Устанавливаем начальное значение для PotentialAdopters, связав его с TotalPopulation.
7. Создаем динамическую переменную (Dynamic Variable) AdoptionFromAd. Ее формула:
PotentialAdopters * AdEffectiveness
Эта переменная отвечает за привлечение клиентов за счет прямой рекламы.
8. Связываем поток AdoptionRate с переменной AdoptionFromAd. Теперь в формуле потока указано AdoptionFromAd. Первый канал продаж готов.
9. Создаем динамическую переменную AdoptionFromWOM (привлечение за счет устной рекламы, Word of Mouth). Ее формула:
Adopters * ContactRate * AdoptionFraction * (PotentialAdopters / TotalPopulation)
o (PotentialAdopters / TotalPopulation) — доля потенциальных клиентов на рынке, то есть вероятность того, что при контакте наш клиент встретит именно потенциального.
o Adopters — количество наших клиентов, являющихся источником рекламы.
10. Дополняем формулу потока AdoptionRate, суммируя оба фактора:
AdoptionFromAd + AdoptionFromWOM
Модель готова к запуску. При симуляции мы увидим, как клиенты перетекают из одного накопителя в другой, причем скорость привлечения из-за рекламы постепенно замедляется по мере уменьшения числа потенциальных клиентов.

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

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

Практическая реализация модели распространения нового продукта демонстрирует, как эти абстрактные принципы превращаются в действующий инструмент. Сопоставление двух каналов привлечения — линейного (реклама) и нелинейного (социальное заражение через «сарафанное радио») — показывает, как комбинация простых правил может порождать сложную, но предсказуемую S-образную динамику насыщения рынка. Ключевой аналитический вывод из построения модели заключается в понимании того, что экспоненциальный рост на начальном этапе возможен только за счет активизации механизма социального распространения, который, в свою очередь, неизбежно замедляется по мере исчерпания пула потенциальных клиентов. Возможность иерархической декомпозиции системы и внедрения событийного управления расширяет метод с уровня «быстрого прототипа» до полноценного инструмента для моделирования операционной деятельности, где непрерывные процессы сочетаются с дискретными управленческими решениями.
Введение в системную динамику

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

Базовая структура модели включает:
Накопители (Stocks): Содержат ресурсы (например, «Потенциальные клиенты» и «Клиенты»).
Потоки (Flows): Определяют скорость перетекания ресурса между накопителями.
В основе подхода лежат причинно-следственные связи, формализующие влияние факторов друг на друга. Эти связи и их коэффициенты определяются на основе статистики.

Ключевые концепции

Задержки: Реакция системы на воздействие (например, на рекламу) наступает не мгновенно, а с временным лагом. Это задается с помощью специальных функций задержки (Delay Functions), которые сдвигают график значения переменной по временной оси.
Циклы обратной связи: Замкнутая цепочка влияний, где эффект возвращается к источнику, усиливая его. Пример — гонка вооружений, приводящая к экспоненциальному росту. Такие циклы — причина нелинейного поведения систем.
Табличные функции: Позволяют использовать произвольные эмпирические распределения данных вместо стандартных. Кривая восстанавливается по точкам методами аппроксимации, например, кубическим сплайном.
Массивы (Размерности): Позволяют моделировать систему для множества однотипных объектов (регионов, товаров), не дублируя графические элементы. Достаточно создать один накопитель и присвоить ему размерность «Регион».

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

Для демонстрации и совместной работы используется облачная платформа AnyLogic Cloud. Публичное облако бесплатно и позволяет просматривать модели, частное — обеспечивает конфиденциальность и командное редактирование с контролем версий.

Практика: Модель распространения продукта (модель Басса)

Задача: Создать модель выхода нового продукта на рынок с двумя каналами продаж. Исходные данные: 10 000 потенциальных клиентов, 0 начальных клиентов, модельное время — годы.

Процесс создания модели:
1. Создаются два накопителя: PotentialAdopters и Adopters. Начальное значение PotentialAdopters связывается с параметром TotalPopulation (10000).
2. Создается поток AdoptionRate от PotentialAdopters к Adopters.
3. Задаются параметры: эффективность рекламы AdEffectiveness (0.011), частота контактов ContactRate (100), сила убеждения AdoptionFraction (0.015).
4. Создается динамическая переменная AdoptionFromAd с формулой: PotentialAdopters * AdEffectiveness. Она описывает привлечение за счет прямой рекламы.
5. Создается переменная AdoptionFromWOM (устная реклама) с формулой: Adopters * ContactRate * AdoptionFraction * (PotentialAdopters / TotalPopulation).
o Эта формула учитывает, что эффективность устной рекламы тем выше, чем больше клиентов-источников и чем больше доля неохваченного рынка.
6. В формулу потока AdoptionRate записывается сумма: AdoptionFromAd + AdoptionFromWOM.

При запуске модель демонстрирует S-образный рост числа клиентов. Сначала рост ускоряется за счет «сарафанного радио», но затем замедляется по мере истощения пула потенциальных клиентов.

Выводы

1. Системная динамика оперирует усредненными показателями и игнорирует индивидуальные различия между элементами системы.
2. Структура модели представляется в виде накопителей и потоков, описывающих накопление и движение ресурсов.
3. Причинно-следственные связи являются фундаментом модели, позволяя формализовать влияние одних факторов на другие.
4. Учет временных задержек критически важен, так как эффект от управляющих воздействий никогда не бывает мгновенным.
5. Циклы обратной связи способны порождать экспоненциальный рост или, наоборот, стабилизировать систему.
6. Для работы с эмпирическими данными можно использовать табличные функции, восстанавливающие распределение по точкам.
7. Механизм размерностей (массивов) позволяет создавать масштабируемые модели без дублирования элементов для каждой подсистемы.
8. Иерархические модели дают возможность структурировать сложные системы по уровням, избегая создания единой «плоской» диаграммы.
9. События и диаграммы состояний позволяют включать в непрерывную модель дискретную логику и управлять поведением системы.
10. Модель распространения продукта по Бассу демонстрирует эффект насыщения: скорость привлечения клиентов падает по мере уменьшения числа оставшихся потенциальных клиентов.
11. Устная реклама создает нелинейный эффект, зависящий как от числа существующих клиентов, так и от доли не охваченных потенциальных клиентов на рынке.
12. Облачная платформа является средой для демонстрации, валидации и совместной работы с имитационными моделями в веб-браузере.

Вопросы для самопроверки

1. В чем главное отличие системной динамики от дискретно-событийного или агентного моделирования при описании популяций?
2. Опишите, какую роль в потоковой диаграмме выполняет накопитель и чем он отличается от потока.
3. Приведите пример цикла обратной связи (отличный от гонки вооружений), который приводит к деградации или коллапсу системы.
4. Для чего в моделях используются функции задержки? К каким последствиям может привести их игнорирование?
5. Почему в модели Басса привлечение клиентов за счет только прямой рекламы является линейно-затухающим процессом?
6. Каким образом механизм размерностей (dimensions) упрощает создание моделей для множества однотипных объектов (например, регионов)?
7. В чем заключается преимущество использования диаграммы состояний по сравнению с простыми циклическими событиями для управления поведением объекта?
8. Объясните математический смысл формулы для расчета привлечения клиентов за счет устной рекламы (AdoptionFromWOM).
9. Какие технические и организационные преимущества предоставляет использование частного облака (Private Cloud) при работе над моделью в команде?
10. Опишите процесс преобразования статистических данных о поведении клиентов в инструмент, пригодный для системно-динамической модели.
Вернуться к учебному плану