你指的是在Repast simphony的agent设计吧,
* T5 b6 l" ]0 c+ `- r. x我没有用到一个agent拥有多个Behavior的做法,3 y7 h* [0 `" c+ g/ Z+ P
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
) r$ v6 t" u; a# k7 y6 e从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
- B4 T! x4 k; u& v$ h. O. ?8 ]9 w @ScheduledMethod(start = 2, interval = 1, priority = 2) 7 n3 e+ S2 e( ^% P+ B+ y
public void step(); X/ y& p* j9 Z" ^
……/ x/ M. G; i6 m* p6 J
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
# P. N6 }' \3 J- Z, n" i此后每经过1 tick,只要这个agent还在就执行step,优先级为2.5 x1 Y( m2 |6 i, A' K5 ^
3 f! ^ K% `' t* g- t
如果多个Behavior无法通过agent的单一调度方式定义,
, x" H( K; R6 n! I) b6 E那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |