Можно найти сущности в SimEvents® модель при помощи блока Entity Find. Поиски блока и находят сущности, которые используют конкретный ресурс от блока Resource Pool и получают его через блок Resource Acquirer.
Можно использовать блок Entity Find для этих приложений.
Смоделируйте систему поставок, чтобы контролировать скоропортящиеся элементы и обновить записи материально-технических ресурсов. Например, можно изменить цену на элемент, когда это ближе к своей дате истечения срока.
Таймеры модели и выполняют действия с продуктами на основе таймеров.
Отзыв модели продуктов от системы поставок. Можно перенаправить вспомненные продукты назад к системе поставок после восстановления.
Блок Entity Find помогает вам найти и исследовать сущности в их местоположении. В этом примере блок находит сущности, которые помечены с Resource1
ресурс от блока Resource Pool. Затем дополнительное условие фильтрации помогает далее отфильтровать найденные сущности.
Добавьте блок Entity Generator, блок Resource Pool, блок Resource Acquirer, блок Entity Server и блок Entity Terminator.
Топ-модель представляет поток сущностей, который получает Resource1
ресурс.
В блоке Entity Terminator, выход статистическая величина Number of entities arrived, a и подключение к осциллографу.
Добавьте блок Entity Find. Выведите статистическую величину Number of entities found, f и соедините ее с осциллографом.
По умолчанию блок находит сущности с Resource1
тег.
Добавьте другой блок Entity Generator и пометьте его Триггерным Генератором Сущности. Соедините его с входным портом блока Entity Find. В блоке измените Entity type name в Trigger
и Entity priority к 100
.
Каждый раз, когда Триггерный Генератор Сущности генерирует триггерную сущность, блок Entity Find инициирован, чтобы найти сущности.
Примечание
Сущности в модели имеют приоритет 300
и приоритет триггерной сущности установлен в 100
сделать триггерные сущности более высоким приоритетом в конечном счете календарь. Это предотвращает завершение сущностей, прежде чем они будут найдены блоком Entity Find.
Симулируйте модель и заметьте, что количеством отключенных сущностей является 10
, который равен количеству найденных сущностей блоком Entity Find. Каждая сгенерированная сущность получает Resource1
пометьте и нет никакого блокирования сущностей в модели.
Блок Entity Find находит сущности с Resource1
ресурс для каждой сгенерированной триггерной сущности.
В диалоговом окне Entity Generator Block Parameters, в поле Generate action, добавляет этот код.
entity.Attribute1 = randi([1,2]);
Сущности сгенерированы со случайным Attribute1
значение 1
или 2
.
В диалоговом окне Entity Find Block Parameters установите флажок Additional filtering condition. Добавьте этот код, чтобы заменить любой существующий код и установить условие фильтрации.
match = isequal(trigger.Attribute1, entity.Attribute1);
Блок находит сущности, которые получают Resource1
пометьте когда match
true
. Таким образом, Attribute1
значение сущности равно триггерной сущности Attribute1
значение.
В Триггерном Генераторе Сущности заметьте что Attribute1
значением является 1
.
Симулируйте модель, заметьте что количество найденных сущностей, уменьшенных к 3
потому что сущности с Attribute1
значение 2
отфильтрованы дополнительным условием соответствия.
Триггерная сущность Attribute1
значением является 1
. Блок находит сущности, которые получают Resource1
пометьте и имейте Attribute1
значение 1
.
Можно использовать блок Entity Find, чтобы найти сущности и извлечь их из их местоположения, чтобы перенаправить. В этом примере, 3
сущности, найденные в предыдущем примере, извлечены из системы, которая будет отключена.
Чтобы открыть модель, смотрите Extract Found Entities Example
.
В диалоговом окне Entity Find Block Parameters установите флажок Extract found entities.
Заметьте, что новый выходной порт появляется в блоке Entity Find для извлеченных сущностей.
Соедините выход блока Entity Find с новым блоком Entity Terminator1.
Выведите статистическую величину Number of entities extracted, ex от блока Entity Server и соедините его с осциллографом.
Визуализируйте количество извлеченных сущностей с сервера.
Выведите статистическую величину Number of entities arrived, a от блока Entity Terminator1 и соедините его с осциллографом.
Статистическая величина используется, чтобы наблюдать количество найденных и извлеченных сущностей от системы.
Симулируйте модель. Заметьте, что Number of entities extracted, ex является 3
.
Наблюдайте тот 3
найденные сущности извлечены из блока Entity Server и отключены в блоке Entity Terminator1.
В результате 7
сущности прибывают в блок Entity Terminator в модели.
Можно изменить атрибуты найденных сущностей в их местоположении или с экстракцией.
Измените атрибуты найденных сущностей в их местоположении путем ввода MATLAB® код в OnFound action
поле действия события OnFound. Для получения дополнительной информации о событиях и действиях события, смотрите Действия События и События.
Измените атрибуты найденных и извлеченных сущностей, когда они войдут, выйдут или будут блокированы блоком Entity Find. Введите код MATLAB в Entry action
, Exit action
, и Blocked action
, поле вкладки Event actions.
Можно инициировать блок Entity Find с действиями события. В этом примере инициирован блок Entity Find, когда сущность вводит блок Entity Server. Измените предыдущий пример путем удаления Триггерного Генератора Сущности и путем добавления Entity Output Switch, Entity Server1, Entity Terminator2 и блоков Scope к модели и соедините их как показано.
Чтобы открыть модель, смотрите Trigger Entity Find Example
.
В блоке Entity Output Switch, набор Switching criterion к Equiprobable
.
Сущности текут через Entity Server и блоки Entity Server1 с равной вероятностью.
Замените блок Trigger Entity Generator блоком Simulink Function, чтобы инициировать блок Entity Find. На блоке Simulink Function дважды кликните функциональную подпись и введите Trigger(u)
.
В блоке Simulink Function добавьте блок Message Send и соедините его с блоком Out1.
Trigger(u)
вызов функции генерирует сообщение, чтобы инициировать блок Entity Find каждый раз, когда сущность вводит блок Entity Server1.
В блоке Entity Server, в поле Entry action, вводят этот код.
Trigger(double(1));
Каждая запись сущности вызывает Trigger(u)
функция в блоке Simulink Function, который инициировал блок Entity Find.
В блоке Entity Find установите флажок Additional filtering condition. Введите этот код.
match = isequal(2, entity.Attribute1);
Найденные сущности имеют Attribute1
значение 2
.
Симулируйте модель. Наблюдайте осциллограф, который отображает извлеченные и отключенные сущности, когда блок Entity Find инициирован записью сущности в блок Entity Server.
Можно использовать блок Entity Find, чтобы контролировать несколько блоков в модели, чтобы исследовать или извлечь сущности и изменить атрибуты сущности.
Этот пример представляет почтовый сервер брандмауэром, чтобы отследить, контролировать, и отбросить вредные электронные письма, прежде чем они достигнут пользователя. В модели электронные письма прибывают от Интернета до блока Entity Generator. В компоненте Брандмауэра электронные письма классифицируются как вредные в течение момента, отбрасывая, подозрительный для контроля или безопасный на основе их источника. Вредные электронные письма помечены с DiscardTag
ресурс от блока Resource Pool и немедленно отброшенный от системы. Подозрительные электронные письма помечены с MonitorTag
и прослеженный в системе для подозрительного действия. Если подозрительное действие обнаруживается, электронная почта отбрасывается, прежде чем это достигнет пользователя. Безопасные электронные письма не проверены или отброшены.
Чтобы открыть модель, смотрите Email Monitoring Example
.
Добавьте блок Entity Generator. В блоке, набор Entity type name к Email
и присоедините два атрибута как Source
и Suspicious
с начальным значением 0
.
Добавьте блок Entity Server. В блоке выберите вкладку Event actions, и в Entry action поле вводит этот код.
entity.Source = randi([1,3]);
Source
значение атрибута случайным образом сгенерировано, и это - 1
для подозрительного, 2
для сейфа, и 3
для вредного почтового источника.
Добавьте блок Entity Output Switch. В блоке, набор Number of output ports к 3
, Switching criterion к From attribute
, и Switch attribute name к Source
.
Добавьте два блока Resource Pool и установите их параметры Resource name на MonitorTag
и DiscardTag
.
Добавьте, что блок Resource Acquirer пометил Tag Emails for Monitoring. В блоке выберите MonitorTag
как Selected Resources.
Добавьте, что другой блок Resource Acquirer пометил Tag Emails for Instant Discard. В блоке выберите DiscardTag
как Selected Resources
Добавьте блок Entity Input Switch. В блоке, набор Number of input ports к 3
.
Добавьте блок Entity Store. В блоке выберите вкладку Event actions, и в Entry action поле вводит этот код.
InstantDiscard(1); entity.Suspicious = randi([1,2]);
Добавьте блок Entity Queue. В блоке выберите вкладку Event actions, и в Entry action поле вводит этот код.
entity.Suspicious = randi([1,2]);
Suspicious
атрибут электронного письма изменяется в записи. Если Suspicious
значением атрибута является 2
, электронная почта извлечена и отключена. Это представляет случайным образом наблюдаемое подозрительное действие в системе.
Добавьте другой блок Entity Server. В блоке, набор Service time value к 3
, выберите вкладку Event actions, в поле Entry action, введите этот код.
entity.Suspicious = randi([1,2]);
Добавьте, что блок Entity Terminator пометил Emails Read by User, и соедините все блоки как показано в модели.
Добавьте блок Simulink Function.
Дважды кликните функциональную подпись на блоке Simulink Function и введите InstantDiscard(u)
.
Дважды кликните блок Simulink Function. Добавьте блок Message Send и блок Out1.
В родительской модели добавьте блок Entity Find. В блоке, набор Resource к DiscardTag
и установите флажок Extract found entities.
Любая почтовая запись вызывает InstantDiscard()
функция и триггеры блок Entity Find, чтобы найти и отбросить вредные электронные письма.
Добавьте, что другой блок Entity Terminator пометил Instantly Discarded Emails.
Добавьте другой блок Entity Find. В блоке, набор Resource к MonitorTag
и выберите Extract found entities и флажки Additional filtering condition. В поле Matching condition введите этот код.
match = isequal(trigger.Attribute1, entity.Suspicious);
Добавьте, что другой блок Entity Generator пометил Entity Generator1. В блоке, набор Period к 5
, Entity priority к 100
, Entity type name к Trigger
, и Attribute Initial Value к 2
.
Добавьте, что другой блок Entity Terminator пометил Monitored и Discarded Emails. Соедините все блоки как показано в модели.
Выведите статистическую величину Number of entities arrived, a от всех блоков Entity Terminator и соедините их с блоками Scope для визуализации.
Увеличьте время симуляции до 50
и симулируйте модель. Наблюдайте электронные письма, которые немедленно отбрасываются или отбрасываются после контроля.
Наблюдайте электронные письма, которые достигают пользователя после фильтрации.
Опционально, визуализируйте количество извлеченных электронных писем от любого блока в модели. Например, в почтовой Очереди, выберите статистическую величину Number of entities extracted, ex и подключение к осциллографу. Заметьте, что шесть электронных писем извлечены из очереди.
Resource Acquirer | Resource Pool | Resource Releaser