Найдите и извлеките сущности в моделях 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 и пометьте его Триггерным Генератором Сущности. Соедините его с входным портом блока 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. Измените предыдущий пример путем удаления Триггерного Генератора Сущности и путем добавления 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.

    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. В компоненте Брандмауэра электронные письма классифицируются как вредные в течение момента, отбрасывая, подозрительный для контроля или безопасный на основе их источника. Вредные электронные письма помечены с 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. Добавьте блок 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 пометил Tag Emails for Monitoring. В блоке выберите MonitorTag как Selected Resources.

  6. Добавьте, что другой блок Resource Acquirer пометил Tag 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]);

    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 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 пометил 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 от всех блоков Entity Terminator и соедините их с блоками Scope для визуализации.

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

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

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

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

| |

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

Больше о