观察实体使用simevents.SimulationObserver类

这个例子说明如何使用simevents.SimulationObserver反对计算实体离开和获取离开时间戳。

使用simevents.SimulationObserver对象观察或可视化实体,并实现动画调试模型模拟。欲了解更多信息,请参阅使用SimulationObserver类来监视SimEvents模型

在这个模型中,simevents.SimulationObserver对象用于获取离开模型中的一个块或一组块的实体的数量,并对它们的离开进行时间戳。该模型有两个实体生成器和实体终止符块,以及一个实体服务器块。作用域块显示实体的数量,d统计数据实体生成和实体服务器模块。

创建观察者

打开一个新的脚本,并启动simevents.SimulationObserver通过该代码对象。

classdefmyObserverPreexit %添加观察者性能。属性模型%初始化属性计数。计数结束
特性(恒定,ACCESS =私人)增量= 1;结束
方法
%通过将其更名为MyObserverPreexit观察任何模型。功能此= myObserverPreexit(型号)%输入模型名称到模拟观察者。this@simevents.SimulationObserver(型号);this.Model =模型;结束
在模拟启动时初始化计数。函数simStarted(这个)。数= 0;结束
%块指定列表通知实体出入境%的事件。功能块= getBlocksToNotify(本)个块= this.getAllBlockWithStorages();结束
函数preExit(this,evSrc,Data) %获取实体离开的所有存储块的名称。这将返回带有路径的块。块= Data.Block.BlockPath;删除仅显示%块名称的路径。Block = regexprep(Block,'ObserverPreexitModel/', ");初始化要观察的块。BlockName = '实体服务器';如果实体退出的块包含块名称,则%获取退出时间和块名称的数据。如果包含(块,块名)%从事件日历中获取实体预退出的时间。evCal = this.getEventCalendars; Time = evCal(1).TimeNow; % Increase the count for departing entities. this.count = this.count + this.increment;
MyInfo的= [ '在时间',num2str(时间),...... '的实体的出发',座 '总实体计数为',... num2str(this.count)];DISP(MyInfo的);结束结束结束结束

将文件另存为myObserverPreexit.m文件。

监控模型

启用观察者要监视的对象ObserverPreexitModel模型。

obj = myObserverPreexit ('ObserverPreexitModel');

观察者监视实体服务器块,这是由所确定的BlockName观察者文件中的参数myObserverPreexit.m

  • 模拟模型。请点击查看诊断模型窗口和观察出发实体服务器块实体和出发时间戳的数量。

  • 进行验证,观察范围块显示实体的数量,d实体服务器块的统计信息。

监测模型多个块

使用相同的观察者来监视所有实体Generator模块的实体离职模型中的。

  • 改变BlockName参数在preExit方法“实体发生器”。在模型实体发生器块被标记的实体发生器1和实体Generator2。

函数preExit(此,evSrc,数据)获取实体离开的所有存储块的名称。返回带有路径的块。块= Data.Block.BlockPath;%删除路径仅显示块名块= regexprep(座'ObserverPreexitModel /'“”);%初始化公共实体发生器短语块名称=“实体发生器”;%如果块的实体退出包含块名称%获得退出时间和块的名字。如果包含(块,块名称)从事件日历中获取实体预退出的时间。evCal = this.getEventCalendars;时间= evCal(1).TimeNow;%的增幅离开实体的计数。this.count = this.count + this.increment;
MyInfo的= [ '在时间',num2str(时间),...... '的实体的出发',座 '总实体计数为',... num2str(this.count)];DISP(MyInfo的);年底结束
  • 启用观察者要监视的对象ObserverPreexitModel模型。

obj = myObserverPreexit ('ObserverPreexitModel');
  • 模拟模型。观察诊断查看器显示的信息15实体从两个实体发生器块的情况。

  • 对于验证,请将Scope1和Scope2块显示实体的数量,d实体生成器1和实体生成器2的统计信息。

观察4实体离开实体发生器1。

也,11实体分离实体生成器2。总的来说,15实体与模型中的实体生成器块分离。

也可以看看

||||

相关的话题