В этом примере показано, как управлять скоростью генерации сущности и действиями события записи, чтобы изменить атрибуты сущности в простой системе массового обслуживания. В дискретно-событийной симуляции event является наблюдением за мгновенным инцидентом, который может заменить переменную состояния, выход или вхождение других событий. SimEvents® позволяет вам создавать пользовательские действия, когда событие имеет место. Эти действия называются event actions. События могут иметь соответствующие действия. Можно записать действия события, чтобы изменить атрибуты сущности при помощи MATLAB® код или Simulink® функции.
Это - простая система массового обслуживания с Генератором Сущности, Очередью Сущности, Сервером Сущности и блоками Терминатора Сущности. В этом примере сущность представляет бак грузовика, который прибывает в автозаправочную станцию. Атрибут сущности представляет текущий газовый уровень в баке. Действия события представляют изменения газового уровня в баке. Баки случайным образом сгенерированы, поставлены в очередь, и они обслуживаются с насосом, который переводит постоянную сумму газа в течение одной секунды. Баки вылетают от станции со своей новой общей газовой суммой.
Выберите целую модель или пути сущности, происходящие из Entity Generator, Entity Queue и блоков Entity Server, и щелкните правой кнопкой, чтобы выбрать Log Selected Signals. Инспектор Данных моделирования используется, чтобы визуализировать поток баков и их газового уровня в модели. Для получения дополнительной информации смотрите, Смотрят Данные моделирования.
Переименуйте блок Entity Generator как Генератор Бака, блок Entity Queue как Ожидающая Очередь, блок Entity Server как Насос и блок Entity Terminator как Выход.
Переименуйте путь, происходящий из блока Tank Generator как Бак Очереди, блок Waiting Queue как Бак, чтобы Накачать, и блок Pump как Бак, чтобы Выйти.
Дважды кликните Генератор Бака и выберите вкладку Entity type. Измените Entity type name в Tank
, и Attribute Name к CurrentGasLevel
.
Атрибут сущности CurrentGasLevel
представляет существующее количество газа в каждом баке.
Симулируйте модель. Откройте Simulation Data Inspector. Заметьте, что баки приближаются к Ожидающей Очереди, Насосу и Выходу с тем же уровнем.
Баки оставляют станцию со своей начальной газовой суммой 1
который является Attribute Initial Value.
Откройте диалоговое окно параметров блоков Генератора Бака. Во вкладке Entity generation, набор Time source к Matlab action
. Наблюдайте код MATLAB по умолчанию.
dt = rand(1,1);
Код рандомизирует параметр времени межгенерации сущности dt
представлять случайное прибытие бака.
Симулируйте обновленную модель. В Simulation Data Inspector заметьте, что баки прибывают случайным образом с той же начальной газовой суммой 1
.
Заметьте, что баки сгенерированы случайным образом, но они приближаются к насосу с отрегулированной фиксированной процентной ставкой, потому что временем обслуживания для Насоса является 1
.
Откройте диалоговое окно блока Генератора Бака. Во вкладке Event actions, в поле Generate action, вводят код.
entity.CurrentGasLevel = randi([1,4]);
Баки прибывают в станцию со случайной газовой суммой, которая лежит в диапазоне от 1
к 4
.
Симулируйте обновленную модель. В Simulation Data Inspector заметьте, что баки прибывают со случайными количествами газа.
Для блока Pump, установленного эти параметры:
Во вкладке Event actions выберите Service complete.
Для поля Service complete action введите код.
entity.CurrentGasLevel = entity.CurrentGasLevel + 3;
Каждый бак заполнен 3 модулями газа для 1
s длительность, и затем это отбывает из насоса.
Заметьте, что Генератор Бака и Насос блокируют обновление со значком действия события {...} Указание, что блоки задают действие события.
Симулируйте обновленную модель. В Simulation Data Inspector заметьте, что каждый бак оставляет станцию с 3 дополнительными модулями газа.
Это - модифицированная модель после конфигурирования простой системы массового обслуживания.
Entity Generator | Entity Queue | Entity Server | Entity Terminator