主要内容

使用sievents观察实体。SimulationObserver类

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

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

在这个模型中simevents。SimulationObserver对象用于获取离开模型中一个块或一组块的实体数,并在其离开时加上时间戳。模型有两个实体生成器和实体终止器块以及一个实体服务器块。范围块显示离开的实体数,d实体生成器和实体服务器块的统计信息。

创建观察者

打开一个新脚本并初始化simevents。SimulationObserver对象。

classdefmyObserverPreexit < simevents。SimulationObserver%添加观察者属性。性质模型%初始化属性计数。结束
property (Constant, Access=private) = 1;结束
方法
%通过将其名称合并到MyObserverPreexit来观察任何模型。将模型名输入到模拟观察者。this@simevents.SimulationObserver(模型);这一点。模型= Model; end
%初始化模拟开始中的计数。函数simStarted(this)this.count=0;结束
%指定实体进入和退出事件通知的块列表。function Block = getBlocksToNotify(this) Block = this. getallblockwithstored ();结束
函数preExit(this、evSrc、Data)%获取实体离开的所有存储块的名称这将返回块及其路径。Block=Data.Block.BlockPath;%删除路径以仅显示%block名称。Block=regexprep(Block,'ObserverPreexitModel/','');%初始化要观察的块。BlockName='实体服务器';%如果实体退出的块包含块名称%,则获取退出时间和块名称的数据。如果包含(Block,BlockName)%从事件日历中获取实体预退出的时间。evCal=this.getEventCalendars;时间=evCal(1).TimeNow;%增加离开实体的计数。this.count=this.count+this.increment;
myInfo = [' At time ',num2str(time),…' an entity departs ', Block, ', Total entity count is ',…num2str (this.count)];disp (myInfo);端端端端

将文件保存为myObserverPreexit.m文件

监控模型

使观察者对象监视ObserverPreexitModel模型。

obj=myObserverPreexit(“ObserverPreexitModel”);

观察者监视实体服务器块,该块由区块名观察者文件中的参数myObserverPreexit.m

  • 模拟模型。点击视图诊断,并观察离开Entity Server块的实体数量和离开的时间戳。

  • 要进行验证,请观察Scope块,其中显示离开的实体数,d实体服务器块的统计信息。

监视模型中的多个块

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

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

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

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

  • 要进行验证,请观察Scope1和Scope2块显示的离开的实体数,d实体生成器1和实体生成器2的统计信息。

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

同时,11实体离开实体生成器2。总计15实体脱离了模型中的实体生成器块。

另请参阅

||||

相关话题