Событие
является самым простым способом планирования действий в
модели. События часто используются для моделирования задержек
и
таймаутов. Вы можете сделать это и с помощью срабатывающих
по таймауту переходов
диаграмм состояний, но использование событий является более
рациональным. В некоторых случаях поведение может быть смоделировано
только с помощью событий.
Есть три типа событий:
AnyLogic поддерживает еще один тип события, задаваемый уже другим модельным элементом -
динамическое событие. Динамические
события используются для планирования сразу нескольких одновременных и
независимых событий. Например, канал связи, параллельно
передающий произвольное количество сообщений, может быть
смоделирован с помощью динамических таймеров, создаваемых для каждого
сообщения.
В этой статье дана общая информация о событии и его свойствах. Более подробная информация дается в статьях, описывающих конкретные типы событий.
Чтобы задать событие
из
палитры Модель на
диаграмму класса активного объекта.Имя – Имя события. Имя используется для идентификации события и доступа к нему из кода.
Отображать имя – Если опция выбрана, то имя события будет отображаться в графическом редакторе.
Исключить – Если опция выбрана, то событие будет исключено из модели.
На верхнем уровне – Если опция выбрана, то событие будет видно на презентации класса, в который будет вложен данный активный объект. Поскольку события не могут отображаться на диаграмме класса верхнего уровня, этот флажок всегда сброшен и недоступен.
На презентации – Если опция выбрана, то событие будет отображаться на презентации во время выполнения модели.
Действие – Java код, выполняемый при происхождении данного события.
Тип события – Тип события:
По таймауту – Событие происходит по истечению таймаута. Событие будет происходить согласно выбранному Режиму.
С заданной интенсивностью – Событие происходит с заданной интенсивностью (которая задается в поле Интенсивность)
При выполнении условия – Событие происходит при выполнении заданного условия (которое задается в поле Условие).
Режим – [Свойство отображается, только если Тип события - По таймауту] Выберите здесь режим события, срабатывающего по таймауту:Циклический
– Событие будет происходить периодически. Вы задаете Время первого срабатывания
(абсолютное)
и Период. Время первого срабатывания может быть задано
как календарная дата (модельного времени!) или как число единиц
модельного времени, которое должно пройти от момента запуска модели.
Обратите внимание, что здесь Вы оперируете абсолютным временем. Если Вы хотите использовать относительные
времена
(т.e. отсчитывать время первого срабатывания от момента создания события), то используйте функцию time()
в поле Время первого срабатывания
(абсолютное). Функция time() возвращает текущее значение модельного времени (в данном контексте она будет возвращать время создания события).
Срабатывает
один раз
– Событие произойдет только один раз, в момент времени, заданный в поле Время срабатывания (абсолютное).
Время срабатывания может быть задано
как календарная дата (модельного времени!) или как число единиц
модельного времени, которое должно пройти от момента запуска модели.
Обратите внимание, что здесь Вы задаете абсолютное время,
и если это значение будет меньше текущего значения
модельного времени, когда Вы создадите это событие, то такое
событие никогда не произойдет.
Если таймаут будет иметь фиксированное (одно и то же) значение, то можно просто ввести это значение в поле Таймаут и вызывать метод myEvent.restart(), без задания значения таймаута с помощью параметра метода. Интенсивность – [Свойство отображается, только если Тип события - С заданной интенсивностью] Интенсивность, с которой будет происходить данное событие. С математической точки зрения, событие будет происходить с таймаутом, вычисляемым согласно экспоненциальному закону распределения с параметром, равным заданному в этом поле значению. Т.e., если интенсивность равна 5, то событие будет происходить в среднем 5 раз в единицу модельного времени.
Условие – [Свойство отображается, только если Тип события - При выполнении условия] Условие, при выполнении которого произойдет данное событие.Таймаут – [Свойство отображается, только если Тип события - По таймауту и выбран Режим "Ручной"]Выражение, вычисляющее значение времени, которое должно пройти от момента планирования события пользователем (путем вызова метода restart() этого события) до происхождения этого события.
Время срабатывания (абсолютное) – [Свойство отображается, только если Тип события - По таймауту и выбран Режим Срабатывает один раз] Абсолютное время срабатывания события, заданное как календарная дата (модельного времени!) или как число единиц модельного времени, которое должно пройти от момента запуска модели.
Время первого срабатывания (абсолютное) – [Свойство отображается, только если Тип события - По таймауту и выбран Циклический Режим] Абсолютное время первого срабатывания циклического события, заданное как календарная дата (модельного времени!) или как число единиц модельного времени, которое должно пройти от момента запуска модели.
Период – [Свойство отображается, только если Тип события - По таймауту и выбран Циклический Режим] Период срабатывания циклического события.
Событие, происходящее с заданной интенсивностью
Событие, происходящее по таймауту