Поиск и извлечение сущностей в моделях SimEvents

Вы можете найти сущности в SimEvents® моделировать при помощи блока Entity Find. Блок ищет и находит сущности, которые используют конкретный ресурс из блока Resource Pool и получают его через блок Resource Acquirer.

Можно использовать блок Entity Find для этих приложений.

  • Моделируйте цепь поставок для мониторинга скоропортящихся элементов и обновления записей запасов. Для образца можно изменить цену элемента, когда она ближе к дате истечения срока ее действия.

  • Моделируйте таймеры и выполняйте действия над продуктами на основе таймеров.

  • Моделируйте отзыв продуктов из цепи поставок. После ремонта можно перенаправить отозванные продукты обратно в цепь поставок.

Поиск и изучение сущностей

Блок Entity Find помогает вам найти и изучить сущности в их местоположении. В этом примере блок находит сущности, которые помечены Resource1 ресурс из блока Resource Pool. Затем дополнительное условие фильтрации помогает дополнительно фильтровать найденные сущности.

  1. Добавьте Entity Generator блок, Resource Pool блок, Resource Acquirer блок, Entity Server блок и Entity Terminator блок.

    Верхняя часть представляет поток сущностей, которые приобретают Resource1 ресурс.

  2. В блоке Entity Terminator выведите Number of entities arrived, a статистику и соединитесь с возможностями.

  3. Добавьте блок Entity Find. Выведите Number of entities found, f статистику и соедините ее с возможностями.

    По умолчанию блок находит сущности с Resource1 тег.

  4. Добавьте другой блок Entity Generator и пометьте его как Trigger Entity Generator. Соедините его с входом портом блока Entity Find. В блоке смените Entity type name на Trigger и Entity priority к 100.

    Каждый раз, когда Trigger Entity Generator генерирует сущность триггера, Entity Find блок запускается, чтобы найти сущности.

    Примечание

    Сущности в модели имеют приоритет 300 и приоритет сущности триггера установлен в 100 чтобы сделать сущности триггера более приоритетными в календаре событий. Это препятствует завершению сущностей до того, как они будут найдены блоком Entity Find.

  5. Симулируйте модель и наблюдайте, что количество завершённых сущностей 10, что равно количеству найденных сущностей блоком Entity Find. Каждая сгенерированная сущность получает Resource1 тег и нет блокировки сущностей в модели.

    Блок Entity Find находит сущности с Resource1 ресурс для каждого сгенерированной сущности триггера.

  6. В диалоговом окне Entity Generator Параметров блоков, в поле Generate action, добавьте этот код.

    entity.Attribute1 = randi([1,2]);

    Сущности генерируются случайным Attribute1 значение 1 или 2.

  7. В диалоговом окне Entity Find Параметров блоков установите флажок Additional filtering condition. Добавьте этот код, чтобы заменить любой существующий код и задать условие фильтрации.

    match = isequal(trigger.Attribute1, entity.Attribute1);

    Блок находит сущности, которые приобретают Resource1 тег, когда match является true. То есть, Attribute1 значение сущности равно сущности триггера Attribute1 значение.

  8. В генераторе сущности триггера обратите внимание, что Attribute1 значение 1.

  9. Симулируйте модель, наблюдайте, что количество найденных сущностей уменьшилось до 3 потому что сущности с Attribute1 значение 2 отфильтрованы дополнительным условием соответствия.

    Триггер сущности Attribute1 значение 1. Блок находит сущности, которые приобретают Resource1 тег и иметь Attribute1 значение 1.

Извлечение найденных сущностей

Можно использовать блок Entity Find для поиска сущностей и извлечения их из расположения для перенаправления. В этом примере 3 сущности, найденные в предыдущем примере, извлекаются из системы, которая будет завершена.

Чтобы открыть модель, смотрите Extract Found Entities Example.

  1. В диалоговом окне Entity Find Параметров блоков установите флажок Extract found entities.

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

  2. Соедините выход блока Entity Find с новым блоком Entity Terminator1.

  3. Выведите статистику Number of entities extracted, ex из блока Entity Server и соедините ее с возможностями.

    Визуализация количества извлеченных сущностей с сервера.

  4. Выведите статистику Number of entities arrived, a из блока Entity Terminator1 и соедините ее с возможностями.

    Статистическая величина используется для наблюдения количества найденных и извлеченных сущностей из системы.

  5. Симулируйте модель. Заметьте, что Number of entities extracted, ex 3.

  6. Наблюдайте за этим 3 найденные сущности извлекаются из блока Entity Server и завершаются в блоке Entity Terminator1.

    В результате 7 сущности поступают к блоку Entity Terminator в модели.

Изменение атрибутов найденной сущности

Можно изменить атрибуты найденных сущностей в их расположении или с помощью извлечения.

  1. Измените атрибуты найденных сущностей в их местоположении путем ввода MATLAB® код в OnFound action поле действия OnFound события. Для получения дополнительной информации о событиях и действиях события см. События и Действия события.

  2. Изменяйте атрибуты найденных и извлеченных сущностей, когда они заходят, выходят или блокируются блоком Entity Find. Введите код MATLAB в Entry action, Exit action, и Blocked action, поле вкладки Event actions.

Запуск блока поиска сущности с действиями события

Можно инициировать блок Entity Find с помощью действий события. В этом примере Entity Find блок запускается, когда сущность входит в Entity Server блок. Измените предыдущий пример, удалив Trigger Entity Generator и добавив к модели блоки Entity Output Switch, Entity Server1, Entity Terminator2 и Scope и соедините их как показано.

Чтобы открыть модель, смотрите Trigger Entity Find Example.

  1. В блоке Entity Output Switch установите Switching criterion равным Equiprobable.

    Сущности протекают через Entity Server и Entity Server1 блоки с равной вероятностью.

  2. Замените Trigger Entity Generator блок на Simulink Function блок, чтобы запустить Entity Find блок. На блоке Simulink Function дважды кликните сигнатуру функции и введите Trigger(u).

  3. В блоке Simulink Function добавьте блок Message Send и соедините его с блоком Out1.

    The Trigger(u) вызов функции генерирует сообщение для запуска блока Entity Find каждый раз, когда сущность входит в блок Entity Server1.

  4. В блоке Entity Server, в поле Entry action, введите этот код.

    Trigger(double(1));

    Каждая запись сущности вызывает Trigger(u) функция в блоке Simulink Function, который запускает блок Entity Find.

  5. В блоке Entity Find установите флажок Additional filtering condition. Введите этот код.

    match = isequal(2, entity.Attribute1);

    Найденные сущности имеют Attribute1 значение 2.

  6. Симулируйте модель. Наблюдайте возможности, которая отображает извлечённые и оконечные сущности, когда блок Entity Find запускается входом сущности в блок Entity Server.

Создание брандмауэра и сервера электронной почты

Можно использовать блок Entity Find для мониторинга нескольких блоков в модели, чтобы исследовать или извлечь объекты и изменить атрибуты сущности.

Этот пример представляет сервер электронной почты с брандмауэром для отслеживания, мониторинга и удаления вредоносных писем до того, как они достигнут пользователя. В модели электронные письма поступают из Интернета через блок Entity Generator. В компоненте Firewall электронные письма классифицируются как вредные для мгновенного сброса, подозрительные для мониторинга или безопасные на основе их источника. Вредные электронные письма помечены DiscardTag ресурс от блока Resource Pool и мгновенно отбрасывается из системы. Подозрительные электронные письма помечены MonitorTag и отслеживается по всей системе для подозрительной активности. Если обнаруживается подозрительное действие, электронное письмо отбрасывается до того, как оно достигает пользователя. Безопасные электронные письма не отслеживаются и не отбрасываются.

Чтобы открыть модель, смотрите Email Monitoring Example.

Создание компонентов брандмауэра и сервера электронной почты

  1. Добавьте блок Entity Generator. В блоке установите Entity type name значение Email и прикрепить два атрибута как Source и Suspicious с начальным значением 0.

  2. Добавьте блок Entity Server. В блоке выберите вкладку Event actions и в Entry action поле введите этот код.

    entity.Source = randi([1,3]);

    The Source значение атрибута генерируется случайным образом и это 1 для подозрительного, 2 для сейфа и 3 для вредного источника электронной почты.

  3. Добавьте блок Entity Output Switch. В блоке установите Number of output ports значение 3, Switching criterion для From attributeи Switch attribute name для Source.

  4. Добавьте два блока Resource Pool и установите их параметры Resource name равными MonitorTag и DiscardTag.

  5. Добавьте Resource Acquirer блок с меткой Теги электронной почты для мониторинга. В блоке выберите MonitorTag как Selected Resources.

  6. Добавьте еще один Resource Acquirer блок, помеченный тегами Emails for Instant Discard. В блоке выберите DiscardTag как Selected Resources

  7. Добавьте блок Entity Input Switch. В блоке установите Number of input ports значение 3.

  8. Добавьте блок Entity Store. В блоке выберите вкладку Event actions и в Entry action поле введите этот код.

    InstantDiscard(1);
    entity.Suspicious = randi([1,2]);

  9. Добавьте блок Entity Queue. В блоке выберите вкладку Event actions и в Entry action поле введите этот код.

    entity.Suspicious = randi([1,2]);

    The Suspicious атрибут сообщения электронной почты изменяется в записи. Если на Suspicious значение атрибута 2, электронное письмо извлекается и прекращается. Это представляет собой случайным образом наблюдаемую подозрительную активность в системе.

  10. Добавьте еще один блок Entity Server. В блоке установите Service time value значение 3, выберите вкладку Event actions, в поле Entry action введите этот код.

    entity.Suspicious = randi([1,2]);
  11. Добавьте Entity Terminator блок с меткой Emails Read by User и соедините все блоки как показано на модели.

Отслеживайте и отменяйте электронные письма с блоком Entity Find

  1. Добавьте блок Simulink Function.

    1. Дважды кликните сигнатуру функции на блоке Simulink Function и введите InstantDiscard(u).

    2. Дважды кликните Simulink Function блок. Добавьте Message Send блок и Out1 блок.

  2. В родительской модели добавьте блок Entity Find. В блоке установите Resource равным DiscardTag и установите Extract found entities флажок.

    Любая запись электронной почты вызывает InstantDiscard() функция и запускает блок Entity Find, чтобы найти и отбросить вредные электронные письма.

  3. Добавьте еще один Entity Terminator блок, помеченный как Мгновенно Сброшенные Электронные Письма.

  4. Добавьте еще один блок Entity Find. В блоке установите Resource значение MonitorTag и установите флажки Extract found entities и Additional filtering condition. В поле Matching condition введите этот код.

    match = isequal(trigger.Attribute1, entity.Suspicious);
  5. Добавьте еще один Entity Generator блок, помеченный Сущностью Generator1. В блоке установите Period значение 5, Entity priority для 100, Entity type name для Triggerи Attribute Initial Value для 2.

  6. Добавьте еще один Entity Terminator блок, помеченный как Контролируемые и Отброшенные электронные письма. Соедините все блоки как показано на модели.

  7. Выведите статистику Number of entities arrived, a из всех блоков Entity Terminator и соедините их с блоками Scope для визуализации.

  8. Увеличьте время симуляции, чтобы 50 и моделируйте модель. Наблюдайте за электронными письмами, которые мгновенно отбрасываются или отбрасываются после мониторинга.

    Наблюдайте электронные письма, которые доходят до пользователя после фильтрации.

  9. Опционально визуализируйте количество извлеченных электронных писем из любого блока модели. Например, в очереди электронной почты выберите Number of entities extracted, ex статистику и подключитесь к возможностям. Обратите внимание, что из очереди извлекаются шесть электронных писем.

См. также

| |

Похожие примеры

Подробнее о