你指的是在Repast simphony的agent设计吧,
$ }1 F/ P5 q `1 D, R我没有用到一个agent拥有多个Behavior的做法,4 D+ \) E- p0 n" `
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
4 s4 n6 B' b* U2 S从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码. K4 S, b) I9 J1 e/ K
@ScheduledMethod(start = 2, interval = 1, priority = 2)
( P, K6 u1 |' f* l5 F2 } public void step()1 _, @# u( g- u" X* R8 ~# k# o
……
0 N# ~4 S- I3 O4 j0 p$ L) Y0 }我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,6 @9 A% W( f: J( l& P; h
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.! ]9 H- R L& T. S5 W8 O( z$ \7 O4 W
8 w, L) S( r4 d& ~如果多个Behavior无法通过agent的单一调度方式定义,
; n- ]/ ~6 m5 A% [ p% c6 p那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |