设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2069|回复: 1

【DAILYBITS-0008】模型实体无处遁形(遍历)

[复制链接]
发表于 2017-3-23 22:14:11 | 显示全部楼层 |阅读模式
本帖最后由 S$MULATE 于 2017-3-23 22:17 编辑

我们推出SIMIO系统仿真软件使用小贴士(DAILY BITS项目),每天或每两天提供和SIMIO使用相关功能函数,小技巧和诀窍,敬请关注!  今天我为大家讲解“模型实体无处遁形”。





【DAILYBITS-0008】模型实体无处遁形(遍历)









“希望是隐藏在群山后的星星,探索是人生道路上倔执的旅人”——布拉赫。





在SIMIO系统模型中,为了模型纠错的需要,有时候需搜到模型实体所在的位置(实体追踪),确保模型实体没有被异常的销毁或者堵塞在某些地方,我们必须使用一些技巧来搜索及可视化模型实体的位置,除了常用方法,如将ModelEntity的颜色改成比较显著的颜色、将Connector换成Path、将Allow Passing改成False、将输入节点的Initial Traveller Capacity设成1、检查所有的连线是否连接好、为模型实体添加动态标签Dynamic Label Text,在Trace里面按ModelEntity名字来过滤追踪记录等等,今天我给大家讲述使用Process过程来判断所有ModelEntity分别在哪个位置的简单方法。请跟着我进行一步一步操作。




一、在Animation菜单下,点击Button,创建一个按钮对象。

二、在Definitions视图的Events标签页,点击Event创建一个自定义事件Event1

三、回到模型,选中Button,设定其触发事件名为Event1

四、在Processes视图,点击Create Process创建一个新过程,

五、在新过程的右侧属性窗口定义TriggeringEvent Name为Event1

六、在Definitions的Elements窗口,在UserDefined下拉菜单下选择File,创建文件元素File1。

七、保存模型,在这个模型保存的目录下建一个Csv格式的Excel空文件,名为EntityLocations.csv

八、回到刚才创建的文件元素File1那边,定义File1的文件属性FilePath为EntityLocations.csv

九、在Definitions的States窗口,创建一个状态变量,选择上面的Object Reference下拉菜单,选择Entity类型,创建一个实体对象引用变量,取名为EntRef1,Dimension Type为Vector,Rows=2

十、回到Processes窗口,创建如图的过程。








十一、第一个Decide判断条件为DefaultEntity.Population.NumberInSystem>0,即系统中的实体对象个数大于0。

十二、Search的CollectionType设定为EntityPopulation,Entity Type为您模型里面的模型实体名(如DefaultEntity),Search Type:Forward(向前搜索);Limit属性设为Infinity。

十三、Search的Found分支连接Assign步骤。Assign步骤的属性定义为:State Variable Name:EntRef1;Row=1,New Value=ModelEntity。

十四、五个Decide中依次判断它当前所有可能存在的位置不为空,分别是

ModelEntity.CurrentTransporter!=Nothing;(在运输器上)

ModelEntity.IsBatchMember==True  (在合并队列中)

ModelEntity.CurrentStation!=Nothing(在站点中)

ModelEntity.CurrentLink!=Nothing(在连接/路径上)

ModelEntity.CurrentNode!=Nothing(在节点上)

十五、紧跟Decide后面,创建Write步骤(在左侧Process Step面板的User Defined中有)

十六、这五个Write步骤分别对应于刚才第十四步中的每个判断语句。

十七、在Write步骤的属性窗口中,File属性则引用上文创建的自定义File1元素;在Item属性项目中,点击|...|进入重复属性编辑器,定义需要写入到刚才那个csv文件中的信息。

十八、第一个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z;ModelEntity.CurrentTransporter.Name

十九、第二个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,Entity.BatchParent.Name

二十、第三个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentStation.Name

二十一、第四个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentLink.Name

二十二、 第五个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentNode.Name

二十三、第六个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,String.ToUpper("In Free Space")

二十四、在每个Write后面加个EndRun步骤。

二十五、运行模型时,在需要的时刻点击Button按钮,过程逻辑会将这些输出写入到CSV表格中,然后您用EXCEL软件打开csv文件(如下图)。至此,我们已经可以获取每个实体所在的位置信息了,每个实体无所遁形(Bingo!)。









希望对您有所帮助!如有问题或索取模型请咨询我们的工程师,或在此留言。 “每日进步一点点,DAILY BITS您的SIMIO小助手!”

[img][/img]


[无锡迅合信息科技有限公司,美国SIMIO LLC中国区独家授权代理]  原创内容未经许可请勿转载和复制使用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2024-4-20 21:40 , Processed in 0.012436 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表