你指的是在Repast simphony的agent设计吧,; y8 |1 |; l0 U
我没有用到一个agent拥有多个Behavior的做法,3 R9 b8 w7 d3 l% C) }# J
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
4 C. ]+ j3 I0 W9 a& P x, h从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
9 K$ y# F/ w0 E0 H; Y3 P+ p @ScheduledMethod(start = 2, interval = 1, priority = 2)
" b8 T7 W( W& g6 K9 I m4 q5 y c3 ^! B public void step()1 `6 Y5 d0 X; ~+ I9 J
……
+ N& c7 J: M) |" Y5 B我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,3 t# G2 X" N2 H8 R4 V% w5 k% ?: r
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
# ^ z; E. }2 x* Z R, C6 m5 y
1 l- ~8 K8 I$ [* @6 r3 _- f如果多个Behavior无法通过agent的单一调度方式定义,
* W& O, g1 X) W3 _; d$ H' N) k那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |