Можно найти сущности в модели SimEvents® при помощи блока Entity Find. Поиски блока и находят сущности, которые используют конкретный ресурс от блока Resource Pool и получают его через блок Resource Acquirer.
Можно использовать блок Entity Find для этих приложений.
Смоделируйте систему поставок, чтобы контролировать скоропортящиеся элементы и обновить записи материально-технических ресурсов. Например, можно изменить цену на элемент, когда это ближе к своей дате истечения срока.
Образцовые таймеры и выполняют действия с продуктами на основе таймеров.
Отзыв модели продуктов от системы поставок. Можно перенаправить вспомненные продукты назад к системе поставок после восстановления.
Блок Entity Find помогает вам найти и исследовать сущности в их местоположении. В этом примере блок находит сущности, которые помечены с ресурсом Resource1
от блока Resource Pool. Затем дополнительное условие фильтрации помогает далее отфильтровать найденные сущности.
Чтобы открыть модель, смотрите Find and Examine Entities Example
.
Добавьте блок 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. Измените предыдущий пример путем удаления Триггерного Генератора Сущности и путем добавления Переключателя Сущности Вывод, Сущности Server1, блоков Terminator2 и Scope Entity к модели и соедините их как показано.
Чтобы открыть модель, смотрите Trigger Entity Find Example
.
В блоке switch Сущности Вывод, набор Switching criterion к Equiprobable
.
Сущности текут через блоки Сервера и Сущности Сущности Server1 с равной вероятностью.
Замените блок Trigger Entity Generator Функциональным блоком Simulink, чтобы инициировать блок Entity Find. На Функциональном блоке Simulink дважды кликните функциональную подпись и введите Trigger(u)
.
В Функциональном блоке Simulink добавьте блок Send сообщения и соедините его с блоком Out1.
Вызов функции Trigger(u)
генерирует сообщение, чтобы инициировать блок Entity Find каждый раз, когда сущность вводит блок Entity Server1.
В блоке Entity Server, в поле Entry action, вводят этот код.
Trigger(double(1));
Каждая запись сущности вызывает функцию Trigger(u)
в Функциональном блоке Simulink, который инициировал блок 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
для вредного почтового источника.
Добавьте блок switch Сущности Вывод. В блоке, набор Number of output ports к 3
, Switching criterion к From attribute
и Switch attribute name к Source
.
Добавьте два блока Пула ресурсов и установите их параметры Resource name на MonitorTag
и DiscardTag
.
Добавьте, что блок Resource Acquirer маркировал Tag Emails for Monitoring. В блоке выберите MonitorTag
как Selected Resources.
Добавьте, что другой блок Resource Acquirer маркировал Tag Emails for Instant Discard. В блоке выберите DiscardTag
как Selected Resources
Добавьте Входной блок 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.
Дважды кликните функциональную подпись на Функциональном блоке Simulink и введите InstantDiscard(u)
.
Дважды кликните Функциональный блок Simulink. Добавьте блок 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 от всех блоков Терминатора Сущности и соедините их с блоками Scope для визуализации.
Увеличьте время симуляции до 50
и моделируйте модель. Наблюдайте электронные письма, которые немедленно отбрасываются или отбрасываются после контроля.
Наблюдайте электронные письма, которые достигают пользователя после фильтрации.
Опционально, визуализируйте количество извлеченных электронных писем от любого блока в модели. Например, в почтовой Очереди, выберите статистическую величину Number of entities extracted, ex и подключение к осциллографу. Заметьте, что шесть электронных писем извлечены от очереди.
Получатель ресурса | Пул ресурсов | Ресурс Releaser