你指的是在Repast simphony的agent设计吧,
$ ?6 d' V+ m9 o8 x: `0 s我没有用到一个agent拥有多个Behavior的做法,# H1 |4 M$ U, c
一般来说可以在每个agent的类实现中顺利定义一个Behavior,. Q( X, l" d+ ~# U5 w0 c' v
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
1 v/ {/ Q' c! Q4 t @ScheduledMethod(start = 2, interval = 1, priority = 2)
; F! l" l. j+ x# i; a/ D public void step(). [3 g+ Y& ]( i/ ~3 w4 O
……# r s% P, u6 M7 W4 M
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
2 u3 r3 a; _( h* Q8 U) v0 x此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
2 y% I) w6 }, p; S& @4 e) u1 ~5 ?; o) r" Z3 x4 x" v- [
如果多个Behavior无法通过agent的单一调度方式定义,
8 i/ S5 X7 S# K9 Q3 C3 h/ \那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |