你指的是在Repast simphony的agent设计吧,
$ K) |/ R( F, t我没有用到一个agent拥有多个Behavior的做法,
8 O! k1 ?3 ^8 e% m5 Y. @一般来说可以在每个agent的类实现中顺利定义一个Behavior,! L9 N8 ?0 g- \$ t" i
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
; C5 z9 M, G! M @ScheduledMethod(start = 2, interval = 1, priority = 2)
/ c% |: m0 A, L# x, L4 d public void step()8 _& d+ q* A! H& g8 v8 @
……) W" J. N; W) b% H) N
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
, j8 a1 f# B7 z2 D, {2 L$ c此后每经过1 tick,只要这个agent还在就执行step,优先级为2.' ?( O1 `7 o8 \$ [$ W# Y1 l
j; i: X+ D# g+ D1 D
如果多个Behavior无法通过agent的单一调度方式定义,
% P2 W- Z' ~2 @* n- l, F. b& P那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |