Step1:将流程图转化为状态图离散事件建模例子
题目:
1.”source”组件——event组件
MyAgent状态图1 ma = add_myAgent状态图();
ma.setLocation(nodesource);
2.delay组件——变迁、到时
个人理解:因为是在agent里写的代码,就可以直接setLocation
3.selectOutput组件—— “分支”组件
4.moveto——moveto
逻辑:先进入行动,变迁的条件满足,再离开行动
5.sink——最终状态
step1.remove_myAgent状态图(this);
运行后发现问题修改:
原因:时间顺序
修改方案: 删掉event里的设定坐标语句,增加状态、变迁
Step2:增加queue功能 (集合的使用)
操作步骤:
增加内变迁: 保证能多次刷新,达到题目的条件。
注意点:保证当前智能体是所要操作的智能体,增加条件判断
运行后发现问题:
若再finalstatesink中写:step2.remove_myAgent状态图(this);(实现的效果是当智能体运行到moveto的节点框内会消失),但是会发现delay的智能体编号会一直是0。一开始以为是每次都是0的那个智能体出现了,后面发现其实是因为生成智能体编号的代码是getIndex(),使得每一次text都为0了
因此,利用编号观察智能体要注意是否有删除操作。
Step3:复合状态
题目: