你指的是在Repast simphony的agent设计吧,* F, i- P! ~9 o" ^1 a- C- U
我没有用到一个agent拥有多个Behavior的做法,( N1 N' N% k) w) H8 O( F: e/ U
一般来说可以在每个agent的类实现中顺利定义一个Behavior,5 g8 y) ~ T3 f1 C+ K
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码' J# Z7 w" p3 W' }3 A/ d; E
@ScheduledMethod(start = 2, interval = 1, priority = 2) 6 Y4 m4 @1 q; V6 \# {2 f }) ]0 z
public void step()
: w% t" l w }( C ……' ?! A$ b: i+ }
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,6 [( y: \1 K4 a7 c
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
2 r7 x f2 F( k7 e7 W" I
, z8 J* G, s. F w0 y如果多个Behavior无法通过agent的单一调度方式定义,& u: t' T4 ^; h" g5 t
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |