Обработка событий исполняющего модуля AnyLogic

Моделирование в AnyLogic представляет собой выполнение последовательности событийных и временных шагов. 

Во время временного шага:

Во время событийного шага:

События исполняющего модуля AnyLogic

События исполняющего модуля AnyLogic – это события, происходящие во время работы модели. Пожалуйста, не путайте их со статическими/динамическими событиями, которые являются частью языка моделирования AnyLogic. 

Есть несколько типов событий моделирующей машины:

События исполняющего модуля AnyLogic хранятся в очереди сообщений. Любое событие, находящееся в очереди событий, может быть связано с:

Новые текущие события могут возникнуть в результате выполнения действия только что произошедшего события, например:

Временной шаг

Если текущих событий нет, то AnyLogic выполнит временной шаг до ближайшего события (или событий) в очереди, т.е., увеличит значение модельного времени. Во время выполнения временного шага может произойти событие, вызванное тем, что выполнилось какое-то заданное условие. Дискретная часть исполняющего модуля AnyLogic не знает о том, когда выполнится условие срабатывания перехода: это зависит от системы уравнений, решаемой непрерывной частью исполняющего модуля. Как только это произойдет, значение времени будет увеличено до времени, выданного решателем уравнений, и будет выполнен событийный шаг.

Событийный шаг

На один момент времени могут быть запланированы сразу несколько событий. В этом случае AnyLogic выберет одно из этих событий и выполнит его. Это будет повторяться до тех пор, пока не будут выполнены все текущие события. Поэтому сразу несколько событийных шагов могут быть выполнены последовательно, в то время как после временного шага обязательно должен выполняться событийный шаг. Одновременные события могут как зависеть друг от друга, так и быть истинно параллельными.

Выполнение события по сути является выполнением кода, заданого в Действии этого события. Выполнение события перехода является выполнением действия, связанного с этим переходом. В результате выполнения события может измениться дискретное состояние модели: могут начать ожидание другие переходы, запланироваться другие события, измениться текущие состояния диаграмм состояний. Поэтому некоторые события могут быть удалены из очереди событий, а другие события могут быть добавлены в нее.

Пример обработки очереди событий AnyLogic показан на приведенном ниже рисунке.


Очередь событий AnyLogic (ожидающие события не отображены)