Шаг 8. Добавление в модель продукта B

Теперь давайте добавим в модель продукт B, конкурирующий с продуктом A. Мы сделаем это простым копированием цепочки поставок для продукта A и переименованием ее элементов. Зависящая от типа продукта часть диаграммы состояний потребителя также будет скопирована, так, что при выходе из состояния PotentialUser будет две альтернативы: переход в состояние WantA или состояние WantB. На данном этапе мы не будем учитывать максимально возможное время ожидания продукта. Для того, чтобы отобразить динамику изменившегося рынка, нам также придется добавить на нашу диаграмму два новых элемента данных.

  1. В редакторе класса Consumer выделите два состояния WantA и UsesA и все переходы (другими словами, выделите все элементы диаграммы состояний за исключением состояния PotentialUser и начала диаграммы состояний). Сделайте копию выделенных элементов и расположите переходы так, как показано на рисунке ниже.
    Переименуйте “A1” в окончаниях имен скопированных элементов на “B”.
    В переходах WomB и ContactB поменяйте “Buy A!” на “Buy B!”.
    В свойствах перехода BuyB поменяйте RetailerStockA на RetailerStockB.
    В полях Действие при входе состояний WantB и UsesB измените цвета на lightBlue и blue.

Только что мы создали альтернативный путь в поведении потребителя. Мы предполагаем для продукта B такую же эффективность рекламы (0.011), такую же интенсивность общения и силу убеждения (хотя мы, конечно, могли бы изменить значение любого из этих параметров). Обратите внимание, что структура новой диграммы состояний позволяет потенциальному пользователю делать выбор продукта только в самом начале; после того, как выбор был сделан, поменять его нельзя.

  1. В редакторе класса Main щелкните по объекту consumers и перейдите на страницу свойств Статистика этого объекта. Добавьте еще два элемента для сбора статистики: NWantB and NUseB с условиями
    item.statechart.isStateActive(Consumer.WantB)
    и
    item.statechart.isStateActive(Consumer.UsesB)
    соответственно.

Эти элементы сбора статистики будут подсчитывать спрос на продукт B и количество пользователей продукта B.

  1. В редакторе класса Main выделите всю цепочку поставок для продукта A (все элементы системной динамики), а также событие updateProductionA, скопируйте все эти элементы и вставьте их справа. Переименуйте:
    событие updateProductionA1 на updateProductionB, накопитель ProductionA1 на ProductionB и т.д.
    Измените действие updateProductionB на ProductionB = consumers.NWantB();
    Поменяйте A на B во всех формулах элементов цепочки поставок для продукта B.

Излишне говорить, что такое копирование и переименование нельзя назвать элегантным способом расширения модели. И естественно, AnyLogic предлагает куда более правильный способ реплицирования отдельных частей модели: Вы можете поместить цепочку поставок и соответствующее событие в новый класс активного объекта, вынести в параметры класса, например, спрос, и создать два экземпляра этого класса в классе Main: один для продукта A и один для B. Но мы не будем делать этого в целях сохранения простоты этого учебного пособия.


  1. В редакторе класса Main добавьте на диаграмму два новых элемента данных. Задайте у этих элементов Значения consumers.NWantB() и consumers.NUseB() и ЗаголовкиDemand for B” и “Users B”.

 

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

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


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


          Шаг 7. Добавление повторных покупок продукта

         Шаг 9. Учет смены предпочитаемого продукта при долгом ожидании