Мы добавим оставшуюся часть цепочки поставок для продукта A,
отвечающую за производство и доставку. Цепочка поставок будет задана
диаграммой потоков и накопителей Системной динамики: начнется она с
потока производства Production , ведущего в накопитель производителя
FactoryStock, а затем, через поток доставки
Delivery - в накопитель ритейлера RetailerStock. Вначале мы сделаем
интенсивность
производства постоянной, а потом - переменной, подстраивающейся под
спрос на
продукт. Это будет вторым местом взаимодействия системно-динамической и
агентной частей модели друг с другом. Чтобы обеспечивать спрос в
системно-динамической части, мы добавим в популяцию потребителей
функцию сбора статистики: она будет подсчитывать число потребителей,
находящихся в состоянии WantA. Каждый день значение интенсивности производства будет пересчитываться заново в соответствии с этим числом.
Таким образом мы промоделируем двухдневную задержку, вызванную доставкой товара с завода ритейлеру.


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

Поскольку потребительский рынок в данной модели полностью дезагрегирован, нам нужно пройти в цикле по всем агентам, чтобы сосчитать, сколько из них хотят приобрести продукт, т.e. находятся в состоянии WantA. Функция сбора статистики с типом кол-во делает именно это: проходит в цикле по популяции агентов и подсчитывает, для скольких из них выполняется заданное условие. В выражении условия item является рассматриваемым в текущий момент времени агентом; statechart - имя диаграммы состояний потребителя, isStateActive - стандартный метод диаграммы состояний, а WantA - имя состояния, заданного внутри агента, поэтому перед его именем и используется префикс item.

Задав такое событие, мы добавим еще одну связь между системно-динамической и агентной частями модели: теперь в начале каждого дня интенсивность производства будет изменяться в соответствии с количеством потребителей, которые желают приобрести продукт. Можно использовать и более сложные формулы, чем просто “интенсивность = спрос”, но нас устраивает и этот простейший случай. NWantA() - это имя функции сбора статистики, которую мы задали на предыдущем шаге.

Вы сможете увидеть, как колеблется интенсивность производства, что типично для цепочек поставок с их неизбежными задержками.

Контрольная модель: AB Market and SD Supply Chain - Phase 4