你指的是在Repast simphony的agent设计吧,
% ]) _& s+ B# X! o- C: H, K我没有用到一个agent拥有多个Behavior的做法,
' K& N- l1 D7 l5 |: l6 i% N6 R一般来说可以在每个agent的类实现中顺利定义一个Behavior,! m' m* b! n. [: ~
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
7 h) x6 z5 r1 y$ g' H O @ScheduledMethod(start = 2, interval = 1, priority = 2) 5 g3 S s8 K9 J2 i" d; a
public void step()9 b7 a' y2 p* M3 B' K: ~' H' ]) j* H
……
8 n% P0 a8 [* l7 R9 {1 |8 I/ P我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,, j3 G2 j+ w5 C" J. b9 P
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
: q2 R( z# Q% h+ Z7 d# d+ @) @- \) {5 i0 N. e
如果多个Behavior无法通过agent的单一调度方式定义,
0 n, ?. D- u) F1 X% `+ B! |4 d那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |