你指的是在Repast simphony的agent设计吧,
% U8 \ `' ?1 _% }4 n, F我没有用到一个agent拥有多个Behavior的做法,
0 k/ R+ V. v4 b0 G一般来说可以在每个agent的类实现中顺利定义一个Behavior,
, ^9 d% G/ v/ M" \. c从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码) V6 l9 F, @! Y3 O/ o) k
@ScheduledMethod(start = 2, interval = 1, priority = 2)
3 r+ [. H% Q. g3 ~. a7 ]1 C, [ public void step(); y* h$ R+ p5 K! F. O$ C
……! ]' A* q7 @( `# Z
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
5 M! u4 E1 P- t! _- |) D此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
# s" {/ O% {4 K& ]" D% O
8 z2 q7 S5 h; W% G4 u: s如果多个Behavior无法通过agent的单一调度方式定义,: v, l3 y2 c1 P7 @) w
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |