你指的是在Repast simphony的agent设计吧,
; {) G3 Q/ C1 y- n6 s1 J我没有用到一个agent拥有多个Behavior的做法,
# M; x$ U9 K* y9 m一般来说可以在每个agent的类实现中顺利定义一个Behavior, f+ E9 y% b5 E
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
3 B3 {% l8 e% c/ h @ScheduledMethod(start = 2, interval = 1, priority = 2) # q% M! o( @9 s, \" E$ a& ^6 N) E
public void step()$ o; J ~8 r/ {. T% K! p% `
……4 o8 ?; c6 f* u O' q
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
5 u3 s+ @+ F8 V: m* R) L5 [此后每经过1 tick,只要这个agent还在就执行step,优先级为2.% U. C. }! X6 e: @' w- K& W
. a# [6 C0 G2 k, I3 C/ d6 _* Q1 u
如果多个Behavior无法通过agent的单一调度方式定义,
& j; h$ J+ {1 f, R0 I那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |