状态图定义了两个“并行”进程

时间:2016-05-16 21:55:01

标签: anylogic

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

  1. 只有当代理人已经通过内部过渡开始其犯罪生涯时,才会犯下罪行。脱离(远离犯罪)是一种最终状态,可能在代理人被监禁时发生(这就是为什么我将这个问题定义为两个独立的过程)。
  2. 当犯罪发生时(内部转换commitCrime),变量committedCrime设置为truecommitCrime过渡具有后卫this.ImprisonmentStateChart.isStateActive(Free),因此如果他被监禁,代理人不能犯罪。
  3. 每次犯罪时,都会根据州免费评估条件转换:this.committedCrime == true。一旦入狱,代理人将最终获释。
  4. 我的问题是,在返回Free状态后,commitCrime转换未重新启动。我的想法是在触发commitCrime后重新启动releaseFromPrison转换,但我还没有找到如何使用Anylogic 7进行转换。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

if ( ImprisonmentStateChart.isStateActive(Free) )
     committedCrime == true;