主要内容

使用simevents观察实体。SimulationObserver类

这个例子展示了如何使用simevents。SimulationObserver对象来计数实体出发并获取出发时间戳。

使用simevents。SimulationObserver对象来观察或可视化实体,并实现动画器来调试模型模拟。有关更多信息,请参见使用SimulationObserver类监视SimEvents模型

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

创建观察者

打开一个新脚本并启动simevents。SimulationObserver对象。

classdefmyObserverPreexit < simevents。SimulationObserver添加观察者属性。属性模型初始化属性计数。结束
属性(常量,访问=私有)增量= 1;结束
方法
通过将模型名称合并到MyObserverPreexit来观察任何模型。。输入模型名到模拟观察者。this@simevents.SimulationObserver(模型);这一点。模型= Model; end
在模拟开始时初始化计数。函数simStarted(this)计数= 0;结束
指定要通知实体进入和退出事件的块列表。Block = this. getallblockwithstorage ();结束
function preExit(this,evSrc,Data) %获取实体离开的所有存储块的名称。返回块及其路径。Block = Data.Block.BlockPath;删除路径,只显示块名。Block = regexprep(Block,'ObserverPreexitModel/', ");初始化要观察的块。BlockName = '实体服务器';如果实体退出的块包含块名,则获取退出时间和块名的数据。if contains(Block, BlockName) %获取实体从事件日历中预退出的时间。evCal = this. geteventcalendar; Time = evCal(1).TimeNow; % Increase the count for departing entities. this.count = this.count + this.increment;
myInfo = [' At time ',num2str(time),…'一个实体离开',Block, ',实体总数为',…num2str (this.count)];disp (myInfo);结束结束结束

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

监控模型

启用观察者对象进行监视ObserverPreexitModel模型。

obj = myObserverPreexit(“ObserverPreexitModel”);

观察器监视实体服务器块,该块由BlockName参数myObserverPreexit.m

  • 模拟模型。点击视图诊断在模型窗口上,观察离开实体服务器块的实体数量和离开时间戳。

  • 属性的Scope块进行验证离开的实体数量d实体服务器块的统计信息。

监控模型中的多个块

使用相同的观察器来监视实体偏离模型中的所有实体生成器块。

  • 改变BlockName参数中的preExit方法“实体发生器”.模型中的实体生成器块被标记为Entity Generator1和Entity Generator2。

函数preExit (evSrc,数据)获取实体离开的所有存储块的名称。%返回块及其路径。Block = Data.Block.BlockPath;删除路径,只显示块名Block = regexprep(Block,“ObserverPreexitModel /”);初始化公共实体生成器短语BlockName =“实体发生器”%如果实体退出的块包含该块名%获取退出时间和块名。如果包含(块,BlockName)从事件日历中获取实体预退出的时间。evCal = this. geteventcalendar;时间= evCal(1).TimeNow;增加离开实体的数量。这一点。计数=这个。数+ this.increment;
myInfo = [' At time ',num2str(time),…'一个实体离开',Block, ',实体总数为',…num2str (this.count)];disp (myInfo);结束结束
  • 启用观察者对象进行监视ObserverPreexitModel模型。

obj = myObserverPreexit(“ObserverPreexitModel”);
  • 模拟模型。观察显示的信息的诊断查看器15实体从两个实体生成器块分离。

  • 为验证,观察Scope1和Scope2块显示离开的实体数量dEntity Generator1和Entity Generator2。

观察到4实体分离实体生成器1。

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

另请参阅

||||

相关的话题