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