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

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

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

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

  • Образцовые таймеры и выполняют действия с продуктами на основе таймеров.

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

Нахождение и исследование сущностей

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

Чтобы открыть модель, смотрите Find and Examine Entities Example.

  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 и маркируйте его Триггерным Генератором Сущности. Соедините его с входным портом блока Entity Find. В блоке измените Entity type name на Trigger и Entity priority к 100.

    Каждый раз, когда Триггерный Генератор Сущности генерирует триггерную сущность, блок Entity Find инициирован, чтобы найти сущности.

    Примечание

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

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

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

  6. В диалоговом окне Entity Generator Block Parameters, в поле Generate action, добавляет этот код.

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

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

  7. В диалоговом окне Entity Find Block Parameters установите флажок 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 Block Parameters установите флажок 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. Измените предыдущий пример путем удаления Триггерного Генератора Сущности и путем добавления Переключателя Сущности Вывод, Сущности Server1, блоков Terminator2 и Scope Entity к модели и соедините их как показано.

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

  1. В блоке switch Сущности Вывод, набор Switching criterion к Equiprobable.

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

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

  3. В Функциональном блоке Simulink добавьте блок Send сообщения и соедините его с блоком Out1.

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

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

    Trigger(double(1));

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

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

    match = isequal(2, entity.Attribute1);

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

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

Создание брандмауэра и почтового сервера

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

Этот пример представляет почтовый сервер с брандмауэром, чтобы отследить, контролировать, и отбросить вредные электронные письма, прежде чем они достигнут пользователя. В модели электронные письма прибывают от Интернета до блока Entity Generator. В компоненте Брандмауэра электронные письма классифицируются как вредные в течение момента, отбрасывая, подозрительный для контроля или безопасный на основе их источника. Вредные электронные письма помечены с ресурсом 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]);

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

  3. Добавьте блок switch Сущности Вывод. В блоке, набор Number of output ports к 3, Switching criterion к From attribute и Switch attribute name к Source.

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

  5. Добавьте, что блок Resource Acquirer маркировал Tag Emails for Monitoring. В блоке выберите MonitorTag как Selected Resources.

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

  7. Добавьте Входной блок 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]);

    Атрибут 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, и соедините все блоки как показано в модели.

Контролируйте и отбросьте электронные письма с сущностью, находят блок

  1. Добавьте Функциональный блок Simulink.

    1. Дважды кликните функциональную подпись на Функциональном блоке Simulink и введите InstantDiscard(u).

    2. Дважды кликните Функциональный блок Simulink. Добавьте блок Send сообщения и блок Out1.

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

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

  3. Добавьте, что другой блок Entity Terminator маркировал Instantly Discarded Emails.

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

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

  6. Добавьте, что другой блок Entity Terminator маркировал Monitored и Discarded Emails. Соедините все блоки как показано в модели.

  7. Выведите статистическую величину Number of entities arrived, a от всех блоков Терминатора Сущности и соедините их с блоками Scope для визуализации.

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

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

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

Смотрите также

| |

Связанные примеры

Больше о