AnyLogic
Развернуть
Размер шрифта

Протоколы перемещения агентов в диаграмме процесса

AnyLogic поддерживает два протокола для перемещения агентов в диаграммах процессов Библиотеки Моделирования Процессов.

  • Протокол "Pull" для вытеснения агентов. Принцип работы протокола заключается в следующем: отправляющий блок сообщает принимающему блоку, что существует агент, готовый перейти из одного блока в другой. Если принимающий блок может принять агента, он запросит его у отправляющего блока и, если агент все еще доступен, этого агента отправят в принимающий блок. Протокол "Pull" используется в блоках, которые могут ждать, пока принимающий блок не будет готов принять агента. Блоки диаграммы процесса остановят работу и будут ждать, пока следующие блоки не будут готовы.
  • Протокол "Push" для вытеснения агентов. Блок просто вытолкнет агента, не дожидаясь, пока принимающие блоки будут готовы его принять. Если агент не может покинуть блок через порт "push" за 0 единиц модельного времени, возникнет ошибка выполнения. Таким образом AnyLogic не позволяет осуществлять скрытую буферизацию или блокирование, и вы всегда будете знать о произошедшем в модели переполнении и с легкостью найдете "узкое место" вашей модели. Порт, где выполняется протокол "push" может содержать несколько агентов одновременно, но лишь в течение 0 единиц времени — такая буферизация необходима, чтобы обеспечить по-настоящему асинхронное выполнение одновременных событий в промежутке между созданием агента и его уничтожением.

Следующие блоки поддерживают протокол "Pull" и в качестве альтернативного варианта обеспечивают поддержку протокола "Push": Source, Enter, Delay, Pickup, Dropoff, Seize, Batch, Unbatch, Combine. Вы можете активировать в блоке протокол "Push", выбрав в секции Специфические опцию Выталкивать агентов:

Как мы можем улучшить эту статью?