你指的是在Repast simphony的agent设计吧,/ w2 K9 D3 @( r* J6 }6 j8 \
我没有用到一个agent拥有多个Behavior的做法,
, I, @' |7 P3 N3 c+ r! X一般来说可以在每个agent的类实现中顺利定义一个Behavior,' k1 ~0 [, L8 a7 U* H( @4 ^7 L
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码+ X/ x$ o$ J8 p$ t0 I7 p( N
@ScheduledMethod(start = 2, interval = 1, priority = 2)
( a" h; |- H; H8 r; f& v; W public void step()' p" S) ?8 w4 o! y" v( u
……
5 ~3 c* k, C" W, z' I8 l' D我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,& R7 ]( | X! A" |" E, m
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
\/ m' ^. G/ P
) W- ?2 Z: _4 V4 j如果多个Behavior无法通过agent的单一调度方式定义,$ }+ ]; R$ ^( I
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |