1

我试图定义两个独立但相关的过程,犯罪生涯和犯罪执法(监禁)。这是一个图表:

  1. 只有当特工已经通过内部过渡开始了他的犯罪生涯时,才会犯罪。停止(远离犯罪)是在代理人被监禁时可能发生的最终状态(这就是为什么我将这个问题定义为两个独立的过程)。
  2. 当犯罪发生(内部转变commitCrime)时,变量committedCrime设置为truecommitCrime过渡具有看守,因此this.ImprisonmentStateChart.isStateActive(Free)如果被监禁,代理人就不能犯罪。
  3. 每次犯罪时,都会从状态 Free: 评估条件转换this.committedCrime == true。一旦入狱,特工最终将被释放。

我的问题是commitCrime回到 Free 状态后没有重新启动转换。这个想法是在触发commitCrime后重新启动转换releaseFromPrison,但我还没有找到如何使用 Anylogic 7 来完成。

有任何想法吗?

4

1 回答 1

1

我认为最简单的方法是删除保护并将操作包装在 if 语句中:

if ( ImprisonmentStateChart.isStateActive(Free) )
     committedCrime == true;
于 2016-05-17T10:31:12.183 回答