你指的是在Repast simphony的agent设计吧,
& d6 B0 [8 |! \0 J. t9 N( l我没有用到一个agent拥有多个Behavior的做法,
- m2 s8 o4 M6 {2 k1 S" P一般来说可以在每个agent的类实现中顺利定义一个Behavior,* R" _6 n2 R0 g2 _
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
4 P) I" i7 O. p8 g( j; o @ScheduledMethod(start = 2, interval = 1, priority = 2)
7 p, W, ?% {% p+ J3 F- S+ I" l5 X public void step()
+ x( E; l, E3 i3 ?5 i' t2 ~1 ] ……" u* z/ C4 D. L; P1 D
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,& Z. @) W) y) \- J1 M* [4 ~/ g
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.) P8 N* W+ R3 R
4 w% P+ u3 n+ M2 n3 x- o
如果多个Behavior无法通过agent的单一调度方式定义,
7 `: B, d7 Z2 Y, C2 O+ @那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |