你指的是在Repast simphony的agent设计吧,
$ y; Q+ J8 K# m5 C9 o& o# k我没有用到一个agent拥有多个Behavior的做法,* [( l# |: h2 k/ g' a9 r
一般来说可以在每个agent的类实现中顺利定义一个Behavior,4 ^9 q/ l. H4 g; d% H5 @0 @
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
- U7 ]7 H* M, _7 e' r+ w; a( N @ScheduledMethod(start = 2, interval = 1, priority = 2)
2 O; n0 ?4 |& c3 c public void step(); c; R& ], ]+ v0 L! V$ Q' @
……2 s( f" E) n* _ j8 l
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,4 j- `1 ^; ?( a/ c5 |$ R! d3 E, [! J4 e
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
+ }+ f1 l& t; O! H G
2 ]0 |: h5 R, n6 b1 M2 t4 b. @- i如果多个Behavior无法通过agent的单一调度方式定义,
5 R: m7 p' M2 C) X那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |