В дискретно-событийной симуляции событие является мгновенным инцидентом, который может изменить переменную состояния, вывод или вхождение других событий. При помощи SimEvents®можно создать пользовательские действия, которые происходят, когда событие происходит для сущности, например, когда сущность входит или выходит из блока.
В SimEvents можно задать действия события на основе статуса сущности. Типичная последовательность событий в модели SimEvents:
Создаётся сущность.
Переход сущности от блока Entity Generator к блоку Entity Server.
Блок Entity Server завершает обслуживание сущности.
Сущность выходит из блока Entity Server и входит в блок Entity Terminator.
Сущность уничтожена.
Когда сущность создаётся, входит или выходит из блока, или обслуживается или уничтожается, сущность изменяет статус. Можно использовать определенные библиотечные блоки SimEvents для создания событий, которые запускаются при изменении статуса. Можно записать действия события при помощи:
MATLAB® код, который выполняет вычисления.
Simulink® вызовы функций, которые вызывают функцию, которая выполняет расчеты.
Дополнительные сведения о языках действий события см. в разделах Языки действий события и Генерация случайных чисел.
Чтобы создать код действия и язык события, в блоке SimEvents выберите вкладку Event actions и выберите событие, которое вызывает действие. Для примера в блоке Entity Generator предусмотрены два события для вызова действий события, Generate и Exit. Действия события инициируются, когда сущность генерируется или выходит из блока.
Если вы нажимаете на событие Generate, можно записать код в поле Generate action.
Когда вы используете действия события:
Объекты доступны как структуры MATLAB и включают поля структуры, которые представляют значения атрибутов сущности.
Зарезервированные поля, такие как идентификатор сущности и приоритет сущности, также доступны в отдельной структуре MATLAB entitySys
.
Пример использования действий события см. в разделе Управление сущностями с помощью действий события.
Можно увидеть, какие действия события доступны на вкладке Event actions блока. Это возможные события, для которых можно создать действия.
Блок генератора сущностей | Блок очереди сущностей | Блок сервера сущностей | Блок терминатора сущности | Блок Resource Acquirer | Блок создателя пакета сущностей |
---|---|---|---|---|---|
Генерация сущностей | Вход сущности в блок очереди | Ввод сущности в блок сервера | Вход сущности в блок terminator | Запись сущности в блок acquirer | Ввод сущности в пакетный блок |
Выход сущности из блока | Выход сущности из блока | Завершение обслуживания сущности | Н/Д | Выход сущности из блока acquirer | Генерация пакета сущности |
Н/Д | Сущность заблокирована | Выход сущности из блока | Н/Д | Сущность заблокирована | Выход сущности из блока |
Н/Д | Н/Д | Сущность заблокирована | Н/Д | Н/Д | Сущность заблокирована |
Н/Д | Н/Д | Сущность опережает | Н/Д | Н/Д | Н/Д |
Этот рисунок показывает поток действий, когда сущности перемещаетесь через дискретную системную симуляцию события.
Примечания:
Действия входа, выхода и блокировки сущности выполняются как часть события переадресации сущности.
Действие завершения обслуживания выполняется после события таймера.
Событие завершения сущности выполняет действие уничтожения.
Можно также изменить атрибуты сущности (entityName. attributeName), приоритеты сущности (sys.entity.priority
) и идентификаторы сущностей (sys.entity.id
). Однако вы не можете изменить атрибуты сущности или системные свойства (entitySys
) для выходных действий. Попытка изменить эти значения вызывает ошибку при симуляции.
Помощник по действиям событий помогает вам создать код для повторяющейся последовательности действий события или действий случайного события в соответствии со статистическим распределением. Например, для доступа к помощнику в блоке Entity Generator:
Откройте блок и выберите вкладку Event actions и выберите Generate действие события.
В поле Generate action нажмите кнопку Insert pattern.
Предположим, что вы хотите сгенерировать сущности и присвоить им случайные значения атрибутов. Значения генерируются из равномерного распределения между 0
и 1
.
Для достижения такого поведения:
Выберите Random number.
Чтобы выбрать равномерное распределение, установите параметр Distribution равным Uniform
.
По умолчанию Minimum и Maximum параметры заданы как 0
и 1
, соответственно.
Чтобы прикрепить значения к атрибуту сущности Attribute1
, установите параметр Assign output to равным entity.Attribute1
.
Ассистент создает код.
Код создает постоянную переменную для seed. Затем случайное значение присоединяется к entity.Attribute1
. После того, как вы задаете действие, на вкладке Event actions появляется звездочка (*), указывающая, что для этого события вызывается код. В этом случае звездочка отображается после действия Generate события.
Дополнительные сведения о помощнике действий события см. в разделах Языки действий события и Генерация случайных чисел.
SimEvents не представляет события графически. Вместо этого программное обеспечение SimEvents поддерживает календарь событий, который планирует события. Календарь событий можно использовать для наблюдения событий при отладке модели SimEvents. Дополнительные сведения см. в разделе Отладка моделей SimEvents.
Вы также можете взаимодействовать с календарем событий, используя simevents.SimulationObserver
методы. Можно создать пользовательский наблюдатель событий с помощью этого класса и его методов. Для получения дополнительной информации смотрите Использовать класс SimulationObserver для мониторинга модели SimEvents.
Когда вы создаете действие события, {...}
значок появляется на блоке, чтобы указать, что действие создано. Значки, которые появляются в зависимости от того, какие действия события имеют связанный код.
Например, этот рисунок показывает блок Entity Queue с действиями события, которые вызываются входом сущности и выходом из блока.
При наведении указателя мыши на значок можно увидеть действие события. Для примера этот рисунок изображает действие выхода сущности.
Двойной щелчок по значку непосредственно открывает вкладку Действия события блока.
Simultaneous events события, которые происходят в то же время времени симуляции. События, намеченные на календарь событий время от времени T и T + Δt, считают одновременными если 0 ≤ Δt ≤ <reservedrangesplaceholder0>
T, где eps
- относительная точность с плавающей точностью в программном обеспечении MATLAB, и T является временем симуляции. Если ваша симуляция создает большое количество одновременных событий, это число может быть показателем нежелательной ситуации с животноводством. Во время ситуации с животноводством блок возвращается в одно и то же состояние бесконечно часто в одно и то же время. Программное обеспечение SimEvents препятствует животному с этими пределами:
SimEvents ограничивает максимальное количество одновременных событий на блок 5000.
SimEvents ограничивает максимальное количество одновременных событий на модель 100 000.
Composite Entity Creator | Composite Entity Splitter | Discrete Event Chart | Entity Generator | Entity Queue | Entity Server | Entity Terminator