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

Этот пример показывает, как управлять скоростью генерации сущности и действиями события записи, чтобы изменить атрибуты сущности в простой системе массового обслуживания. В дискретно-событийной симуляции event является наблюдением за мгновенным инцидентом, который может заменить переменную состояния, вывод или вхождение других событий. SimEvents® позволяет вам создавать пользовательские действия, когда событие имеет место. Эти действия называются event actions. События могут иметь соответствующие действия. Можно записать действия события, чтобы изменить атрибуты сущности при помощи кода MATLAB® или функций Simulink®.

Это - простая система массового обслуживания с Генератором Сущности, Очередью Сущности, Сервером Сущности и блоками Терминатора Сущности. Для получения дополнительной информации о выполнении основных задач построения моделей создать эту модель, смотрите, Создают Дискретную Модель событий.

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

Чтобы открыть модель в качестве примера, не выполняя шаги настройки, смотрите, Управляют Сущностями в Системе массового обслуживания.

Создайте модель

  1. Выберите целую модель или пути сущности, происходящие из Генератора Сущности, Очереди Сущности и блоков Сервера Сущности, и щелкните правой кнопкой, чтобы выбрать Log Selected Signals. Инспектор Данных моделирования используется, чтобы визуализировать поток корпусов и их газового уровня в модели. Для получения дополнительной информации смотрите, Осматривают Данные моделирования (Simulink).

  2. Переименуйте блок Entity Generator как Генератор Корпуса, блок Entity Queue как Ожидающая Очередь, блок Entity Server как Насос и блок Entity Terminator как Выход.

  3. Переименуйте путь, происходящий из блока Tank Generator как Корпус Очереди, блок Waiting Queue как Корпус, чтобы Накачать, и блок Pump как Корпус, чтобы Выйти.

Сконфигурируйте и моделируйте модель

  1. Дважды кликните Генератор Корпуса и выберите вкладку Entity type. Измените Entity type name на Tank и Attribute Name к CurrentGasLevel.

    Атрибут сущности CurrentGasLevel представляет существующее количество газа в каждом корпусе.

  2. Моделируйте модель. Откройте Simulation Data Inspector. Заметьте, что корпуса приближаются к Ожидающей Очереди, Насосу и Выходу с тем же уровнем.

    Корпуса оставляют станцию со своей начальной газовой суммой 1, который является Attribute Initial Value.

  3. Откройте диалоговое окно параметров блоков Генератора Корпуса. Во вкладке Entity generation, набор Time source к Matlab action. Наблюдайте код MATLAB по умолчанию.

    dt = rand(1,1);

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

  4. Моделируйте обновленную модель. В Simulation Data Inspector заметьте, что корпуса прибывают случайным образом с той же начальной газовой суммой 1.

    Заметьте, что корпуса сгенерированы случайным образом, но они приближаются к насосу с отрегулированной фиксированной процентной ставкой, потому что временем обслуживания для Насоса является 1.

  5. Откройте диалоговое окно блока Tank Generator. Во вкладке Event actions, в поле Generate action, вводят код.

    entity.CurrentGasLevel = randi([1,4]);

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

  6. Моделируйте обновленную модель. В Simulation Data Inspector заметьте, что корпуса прибывают со случайными количествами газа.

  7. Для блока Pump, установленного эти параметры:

    1. Во вкладке Event actions выберите Service complete.

    2. Для поля Service complete action введите код.

      entity.CurrentGasLevel = entity.CurrentGasLevel + 3;

      Каждый корпус заполнен 3 модулями газа для 1 s длительность, и затем это отбывает из насоса.

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

  8. Моделируйте обновленную модель. В Simulation Data Inspector заметьте, что каждый корпус оставляет станцию с 3 дополнительными модулями газа.

Управляйте сущностями в системе массового обслуживания

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

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

| | |

Похожие темы