你指的是在Repast simphony的agent设计吧,
; @' Y5 D' |& I2 a6 } r我没有用到一个agent拥有多个Behavior的做法,: M0 S4 Q- j& k, [- I% Q7 s
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
7 x6 b" U+ P6 z. N8 [8 p从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码 T; l# ^' m6 r8 S& l: V
@ScheduledMethod(start = 2, interval = 1, priority = 2)
% \4 c5 B, M4 Y4 Y/ X3 ^9 j public void step()
( [& R7 U0 ~: e$ a2 e* M' m ……5 O# K! k0 ^" {; a/ Z
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
+ H' L9 C9 T) r) w8 F3 a" ~, | {此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
( k) D8 l, H8 v1 c2 F* \3 I
0 }: d7 N+ Q5 e X5 W0 z如果多个Behavior无法通过agent的单一调度方式定义,
" t9 T* `* A, [3 _' s% d# `5 c2 `* o那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |