你指的是在Repast simphony的agent设计吧,
* t, I5 R2 E* D$ Y0 Y3 z1 {+ e$ _我没有用到一个agent拥有多个Behavior的做法,9 h( `7 {1 W1 H3 O* a* F
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
" t2 a# r. _4 o! H从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码 y3 E9 M& k+ C3 B2 a2 F7 E% s5 L5 i
@ScheduledMethod(start = 2, interval = 1, priority = 2)
" M" D/ f7 {0 ?, e- `4 F public void step()9 `- |/ D; S6 V/ n
……
' s( u8 M/ G3 p* J我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,+ S: C$ |! n' z& a$ g" o* V
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
! l& p# h/ s' V' ?
2 l/ l* S5 @, ~4 \- r如果多个Behavior无法通过agent的单一调度方式定义,
) p2 `/ i z0 f/ b7 [ `% @那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |