你指的是在Repast simphony的agent设计吧,# q+ b& {3 w' M
我没有用到一个agent拥有多个Behavior的做法,
# p, |3 L. L7 z一般来说可以在每个agent的类实现中顺利定义一个Behavior,5 s- z, v* t0 W+ l1 {
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
2 O& |7 M& \- j- w: B9 T) a0 G+ v% b @ScheduledMethod(start = 2, interval = 1, priority = 2) ) w" m7 \0 }: a T: l- V
public void step(): e0 X2 O. B& h3 v
……3 F) m- F. @: [
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,( l7 g% v. @: J ^5 @
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
+ ~, [1 U1 t+ D6 p7 G2 Z' h; L5 k4 @: P
如果多个Behavior无法通过agent的单一调度方式定义,# Q8 G' ?6 @: X) s B
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |