你指的是在Repast simphony的agent设计吧,
* f t: L& v$ F- c9 I我没有用到一个agent拥有多个Behavior的做法,
" L% A7 L% b' Z, S一般来说可以在每个agent的类实现中顺利定义一个Behavior,* d" T$ s4 z. h$ L
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码8 l/ S* @! T! ]2 g5 R) y
@ScheduledMethod(start = 2, interval = 1, priority = 2)
( x1 J# E% E( K0 m8 V public void step()
" w: B1 s' d2 g" E* } ……' R: o) b0 d, w. F# b4 l
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
& n% ]9 X1 a9 r" {: T/ ?7 [此后每经过1 tick,只要这个agent还在就执行step,优先级为2.2 `- C3 S* m9 R+ g: V, G
8 Q& f7 g Q8 r. P% ~. _, f如果多个Behavior无法通过agent的单一调度方式定义,5 @* @$ Z/ J8 O& s! \+ x& S
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |