你指的是在Repast simphony的agent设计吧,
0 S I: _6 w% r1 P$ a我没有用到一个agent拥有多个Behavior的做法,
1 n! A* t2 J, ]3 @0 J) I7 `# H一般来说可以在每个agent的类实现中顺利定义一个Behavior,9 I7 W4 |6 x) i: M0 L( b9 w- X0 X
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码: D9 L/ X2 c( F9 a3 D, M$ u
@ScheduledMethod(start = 2, interval = 1, priority = 2)
1 l) [% a& {/ Q public void step()
3 n* c0 q$ n: [0 h8 J$ ^ ……
9 T' n. a, J, ^4 @) K3 u) N, T我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
; \4 z* T( b: s+ U* D" O此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
- b& @6 {" }: W [) \7 E
/ h3 H: ^; p( a2 ~* U/ }5 J如果多个Behavior无法通过agent的单一调度方式定义,* q7 I0 S$ i5 q. X( }
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |