События и действия события

В дискретно-событийной симуляции событие является мгновенным инцидентом, который может изменить переменную состояния, вывод или вхождение других событий. При помощи SimEvents®можно создать пользовательские действия, которые происходят, когда событие происходит для сущности, например, когда сущность входит или выходит из блока.

Обзор событий

В SimEvents можно задать действия события на основе статуса сущности. Типичная последовательность событий в модели SimEvents:

  1. Создаётся сущность.

  2. Переход сущности от блока Entity Generator к блоку Entity Server.

  3. Блок Entity Server завершает обслуживание сущности.

  4. Сущность выходит из блока Entity Server и входит в блок Entity Terminator.

  5. Сущность уничтожена.

Когда сущность создаётся, входит или выходит из блока, или обслуживается или уничтожается, сущность изменяет статус. Можно использовать определенные библиотечные блоки SimEvents для создания событий, которые запускаются при изменении статуса. Можно записать действия события при помощи:

  • MATLAB® код, который выполняет вычисления.

  • Simulink® вызовы функций, которые вызывают функцию, которая выполняет расчеты.

Дополнительные сведения о языках действий события см. в разделах Языки действий события и Генерация случайных чисел.

Запись пользовательского кода для действий события

Чтобы создать код действия и язык события, в блоке SimEvents выберите вкладку Event actions и выберите событие, которое вызывает действие. Для примера в блоке Entity Generator предусмотрены два события для вызова действий события, Generate и Exit. Действия события инициируются, когда сущность генерируется или выходит из блока.

Entity Generator block window showing the Generate action field.

Если вы нажимаете на событие Generate, можно записать код в поле Generate action.

Когда вы используете действия события:

  • Объекты доступны как структуры MATLAB и включают поля структуры, которые представляют значения атрибутов сущности.

  • Зарезервированные поля, такие как идентификатор сущности и приоритет сущности, также доступны в отдельной структуре MATLAB entitySys.

Пример использования действий события см. в разделе Управление сущностями с помощью действий события.

Блоки SimEvents, которые включают действия события

Можно увидеть, какие действия события доступны на вкладке Event actions блока. Это возможные события, для которых можно создать действия.

Блок генератора сущностейБлок очереди сущностейБлок сервера сущностейБлок терминатора сущностиБлок Resource AcquirerБлок создателя пакета сущностей

Генерация сущностей

Вход сущности в блок очереди

Ввод сущности в блок сервера

Вход сущности в блок terminator

Запись сущности в блок acquirer

Ввод сущности в пакетный блок

Выход сущности из блока

Выход сущности из блока

Завершение обслуживания сущности

Н/Д

Выход сущности из блока acquirer

Генерация пакета сущности

Н/Д

Сущность заблокирована

Выход сущности из блока

Н/Д

Сущность заблокирована

Выход сущности из блока

Н/Д

Н/Д

Сущность заблокирована

Н/Д

Н/Д

Сущность заблокирована

Н/Д

Н/Д

Сущность опережает

Н/Д

Н/Д

Н/Д

Этот рисунок показывает поток действий, когда сущности перемещаетесь через дискретную системную симуляцию события.

Entity flow and events occurring in a storage. Entity is forwarded to the storage or generated inside the storage. Entity is serviced or terminated inside the storage. Entity exits the storage if the forwarding process is not blocked.

Примечания:

  • Действия входа, выхода и блокировки сущности выполняются как часть события переадресации сущности.

  • Действие завершения обслуживания выполняется после события таймера.

  • Событие завершения сущности выполняет действие уничтожения.

Можно также изменить атрибуты сущности (entityName. attributeName), приоритеты сущности (sys.entity.priority) и идентификаторы сущностей (sys.entity.id). Однако вы не можете изменить атрибуты сущности или системные свойства (entitySys) для выходных действий. Попытка изменить эти значения вызывает ошибку при симуляции.

Использование помощника по действиям к событиям

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

  1. Откройте блок и выберите вкладку Event actions и выберите Generate действие события.

  2. В поле Generate action нажмите кнопку Insert pattern.

Entity Generator block window

Предположим, что вы хотите сгенерировать сущности и присвоить им случайные значения атрибутов. Значения генерируются из равномерного распределения между 0 и 1.

Для достижения такого поведения:

  1. Выберите Random number.

  2. Чтобы выбрать равномерное распределение, установите параметр Distribution равным Uniform.

  3. По умолчанию Minimum и Maximum параметры заданы как 0 и 1, соответственно.

  4. Чтобы прикрепить значения к атрибуту сущности Attribute1, установите параметр Assign output to равным entity.Attribute1.

Ассистент создает код.

MATLAB code created by the assistant in the Generate action field

Код создает постоянную переменную для seed. Затем случайное значение присоединяется к entity.Attribute1. После того, как вы задаете действие, на вкладке Event actions появляется звездочка (*), указывающая, что для этого события вызывается код. В этом случае звездочка отображается после действия Generate события.

Дополнительные сведения о помощнике действий события см. в разделах Языки действий события и Генерация случайных чисел.

Отслеживать события с календарем событий

SimEvents не представляет события графически. Вместо этого программное обеспечение SimEvents поддерживает календарь событий, который планирует события. Календарь событий можно использовать для наблюдения событий при отладке модели SimEvents. Дополнительные сведения см. в разделе Отладка моделей SimEvents.

Вы также можете взаимодействовать с календарем событий, используя simevents.SimulationObserver методы. Можно создать пользовательский наблюдатель событий с помощью этого класса и его методов. Для получения дополнительной информации смотрите Использовать класс SimulationObserver для мониторинга модели SimEvents.

Визуализация действий события

Когда вы создаете действие события, {...} значок появляется на блоке, чтобы указать, что действие создано. Значки, которые появляются в зависимости от того, какие действия события имеют связанный код.

Например, этот рисунок показывает блок Entity Queue с действиями события, которые вызываются входом сущности и выходом из блока.

Entity Queue block with event action badges

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

Badge showing the event action

Двойной щелчок по значку непосредственно открывает вкладку Действия события блока.

Предотвращение животноводства для больших конечных чисел одновременных событий

Simultaneous events события, которые происходят в то же время времени симуляции. События, намеченные на календарь событий время от времени T и T + Δt, считают одновременными если 0 ≤ Δt ≤ <reservedrangesplaceholder0>T, где eps - относительная точность с плавающей точностью в программном обеспечении MATLAB, и T является временем симуляции. Если ваша симуляция создает большое количество одновременных событий, это число может быть показателем нежелательной ситуации с животноводством. Во время ситуации с животноводством блок возвращается в одно и то же состояние бесконечно часто в одно и то же время. Программное обеспечение SimEvents препятствует животному с этими пределами:

  • SimEvents ограничивает максимальное количество одновременных событий на блок 5000.

  • SimEvents ограничивает максимальное количество одновременных событий на модель 100 000.

См. также

| | | | | |

Похожие примеры

Подробнее о