Шаг 4. Добавление СД цепочки поставок для продукта A

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

  1. В редакторе класса Main добавьте накопитель FactoryStockA слева от накопителя RetailerStockA. Нарисуйте поток из FactoryStockA в RetailerStockA, сделав двойной щелчок по первому элементу и затем одиночный по второму. Назовите созданный поток DeliveryA. Задайте формулу DeliveryA = FactoryStockA / 2

Таким образом мы промоделируем двухдневную задержку, вызванную доставкой товара с завода ритейлеру.


  1. Добавьте поток ProductionA слева от FactoryStockA и сделайте его входящим в накопитель FactoryStockA. Пусть ProductionA = 15. Установите для этого потока флажок Константа, чтобы сделать значение этого потока постоянным.
На данный момент мы будем полагать интенсивность производства постоянной.


  1. Запустите модель.

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


  1. В редакторе класса Main щелкните по объекту consumers и перейдите на страницу свойств Статистика этого объекта. Добавьте функцию сбора статистики с именем NWantA. Оставьте выбранным Тип функции: кол-во. В качестве условия задайте: item.statechart.isStateActive(Consumer.WantA)

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


  1. В редакторе класса Main добавьте событие рядом с потоком ProductionA. Назовите его updateProductionA. В свойствах этого события задайте Тип событияПо таймаутуРежимЦиклическийВремя первого срабатывания (абсолютное): 1, Действие: ProductionA = consumers.NWantA();

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


  1. В формуле потока ProductionA удалите 15 и напишите 0.
Теперь интенсивность производства полностью управляется событием, поэтому формулу можно удалить.
  1. Запустите модель. Щелкните мышью по значку потока ProductionA, чтобы показать окно инспекта для этого элемента. Затем переключите это окно в режим отображения графика, щелкнув по маленькой кнопке с изображением графика в верхнем правом углу окна инспекта.

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


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


          Шаг 3. Добавление ритейлера

          Шаг 5. Визуализация динамики спроса и пользовательской базы