你指的是在Repast simphony的agent设计吧,4 v* {: ]5 N! c: z. f) g
我没有用到一个agent拥有多个Behavior的做法,+ [* [8 S' K* R( J' D( @: S
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
1 {) U# W @7 x& M* @3 W& I从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
$ O" I" C% |7 q$ k6 q @ScheduledMethod(start = 2, interval = 1, priority = 2)
$ w; B+ a, ?. _4 q8 r) V O public void step()5 \7 z9 O( j! J0 w; \
……; ^, O* T; A# P( s* X, I5 g9 t4 H' ^
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
% a* S3 y1 N; \, k) ]# |此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
1 O: x4 Q0 y" m( M' n: a& l* M; j
( _4 h/ I, j$ |* ]& J0 J/ }0 h" o I如果多个Behavior无法通过agent的单一调度方式定义,
0 ^1 ^, U/ X2 s) v/ f那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |