В этой фазе мы добавим первый (и фактически
последний) элемент
цепочки поставок для продукта A: накопитель ритейлера. У накопителя
(элемента Системной динамики) будет определенное начальное значение
(моделирующее начальное количество продукта), поэтому некоторые
потребители смогут приобрести продукт. Мы изменим поведение потребителя
так, что переход из состояния WantA
в состояние UsesA
будет возможен только если в накопителе будет хотя бы одна единица
продукта. В результате перехода потребителя по данному
переходу будет уменьшаться количество доступного товара. Это
будет
первым местом взаимодействия агентного и системно-динамического
компонентов модели.
Это первый элемент Системной динамики в нашей модели. Мы создаем его в классе Main – на том же уровне иерархии, где мы создали вложенный объект, задающий популяцию агентов-потребителей.

Таким образом мы реализуем механизм взаимодействия агентной части модели и системно-динамической: будучи в состоянии WantA потребитель постоянно отслеживает значение накопителя RetailerStockA; если накопитель содержит хотя бы один продукт, то переход происходит, и как результат, из накопителя "извлекается" одна единица товара. Обратите внимание, что поскольку накопитель находится на один уровень выше относительно того места, где задано поведение потребителя (в объекте Main, который содержит объекты потребителей), то вначале мы получаем доступ к объекту класса Main, и только затем – к самому накопителю, поэтому мы и используем префикс get_Main(), который "переносит" нас в контекст контейнера объекта типа Consumer - объект класса Main.

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

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