simevents.SimulationObserver class

Пакет: simevents
Суперклассы: handle

Интерфейс для создания пользовательского наблюдателя для моделей с блоками SimEvents

Описание

Этот класс является интерфейсом для создания пользовательских наблюдателей для моделей с SimEvents® блоки. Подкласс этого класса, чтобы создать собственного наблюдателя, с помощью методов ниже. Некоторые служебные функции также предусмотрены для взаимодействия с календарями событий, блоками и сущностями. Не перезаписывайте эти служебные функции.

Атрибуты класса

Abstract
false
HandleCompatible
true
StrictDefaults
false

Для получения информации об атрибутах класса см. раздел «Атрибуты класса».

Создание

obj = SimulationObserver(modelName) возвращает объект SimulationObserver класс, используемый для создания наблюдателя модели для модели SimEvents.

Входные параметры

расширить все

Имя модели, которую нужно наблюдать.

Методы

расширить все

Примеры

свернуть все

В этом примере показано, как создать аниматор.

function this = seExampleRestaurantAnimator
            % Constructor
            modelname = 'seExampleCustomVisualization';
            this@simevents.SimulationObserver(modelname);
            this.mModel = modelname;
        end

В этом примере показано, как создать объект-наблюдатель симуляции и использовать его для наблюдения сущностей в модели. Для получения дополнительной информации см. «Наблюдение за сущностями с использованием симвентов». Класс SimulationObserver.

Создайте наблюдателя.

classdef myObserverPreexit < simevents.SimulationObserver
    % Add the observer properties.
    properties
    Model
    % Initialize the property count.
    count
    end
properties (Constant, Access=private)
    increment = 1;
end
methods
     % Observe any model by incorporating its name to MyObserverPreexit.
     function this = myObserverPreexit(Model)
         % Input model name to the simulation observer.
         this@simevents.SimulationObserver(Model);
         this.Model = Model;
     end
     % Initialize the count in the simulation start.
     function simStarted(this)
         this.count = 0;
     end
     % Specify list of blocks to be notified of entity entry and exit
     % events.
     function Block = getBlocksToNotify(this)
         Block = this.getAllBlockWithStorages();
     end
     function preExit(this,evSrc,Data)
         % Get the names of all storage blocks that the entities depart.
         % This returns the block with its path.
         Block = Data.Block.BlockPath;
         % Remove the path to display only the
         % block name.
         Block = regexprep(Block,'ObserverPreexitModel/' ,'');
         % Initialize the blocks to observe.
         BlockName = 'Entity Server';
         % If the block that entity exits contains the block name
         % acquire data for exit time and block name.
         if contains(Block, BlockName)
             % Get time for entity preexit from event calendar.
             evCal = this.getEventCalendars;
             Time = evCal(1).TimeNow;
             % Increase the count for departing entities.
             this.count = this.count + this.increment;
             myInfo = [' At time ',num2str(Time), ...
             ' an entity departs ', Block, ', Total entity count is ', ...
             num2str(this.count)];
             disp(myInfo);
             end
         end
     end

Сохраните файл следующим myObserverPreexit.m.

Включите объект ObserverPreexitModel модель.

obj  = myObserverPreexit('ObserverPreexitModel');
Введенный в R2016a
Для просмотра документации необходимо авторизоваться на сайте