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

В дискретно-событийной симуляции событие является мгновенным инцидентом, который может заменить переменную состояния, вывести, или вхождение других событий. При помощи 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. Действия события инициированы, когда сущность сгенерирована или выходит из блока.

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

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

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

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

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

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

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

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

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

Запись сущности в блок очереди

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

Запись сущности в блок терминатора строки

Запись сущности в блок получателя

Запись сущности, чтобы обработать блок в пакетном режиме

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

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

Сервисное завершение сущности

Нет данных

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

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

Нет данных

Сущность блокируется

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

Нет данных

Сущность блокируется

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

Нет данных

Нет данных

Сущность блокируется

Нет данных

Нет данных

Сущность блокируется

Нет данных

Нет данных

Сущность вытесняется

Нет данных

Нет данных

Нет данных

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

Примечания:

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

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

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

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

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

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

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

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

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

Достигнуть этого поведения:

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

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

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

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

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

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

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

Беговые соревнования с календарем событий

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

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

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

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

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

Когда вы наводите на значок, вы видите действие события. Например, этот рисунок изображает выходное действие сущности.

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

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

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

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

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

Смотрите также

| | | | | |

Связанные примеры

Больше о