我试图定义两个独立但相关的过程,犯罪生涯和犯罪执法(监禁)。这是一个图表:
- 只有当特工已经通过内部过渡开始了他的犯罪生涯时,才会犯罪。停止(远离犯罪)是在代理人被监禁时可能发生的最终状态(这就是为什么我将这个问题定义为两个独立的过程)。
- 当犯罪发生(内部转变
commitCrime
)时,变量committedCrime
设置为true
。commitCrime
过渡具有看守,因此this.ImprisonmentStateChart.isStateActive(Free)
如果被监禁,代理人就不能犯罪。 - 每次犯罪时,都会从状态 Free: 评估条件转换
this.committedCrime == true
。一旦入狱,特工最终将被释放。
我的问题是commitCrime
回到 Free 状态后没有重新启动转换。这个想法是在触发commitCrime
后重新启动转换releaseFromPrison
,但我还没有找到如何使用 Anylogic 7 来完成。
有任何想法吗?