你指的是在Repast simphony的agent设计吧,
# V4 L3 x0 d A. ]- _5 X我没有用到一个agent拥有多个Behavior的做法,
/ W: ~, n- x) s5 P; f( d% t一般来说可以在每个agent的类实现中顺利定义一个Behavior,( D3 s- e" x: i8 L* v4 U0 `& o
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
i; l) \! ]( y2 T, \ @ScheduledMethod(start = 2, interval = 1, priority = 2) - A: H$ b$ S% Z3 m, b5 k% E
public void step()
( r6 ~# u, ]6 g, T4 a6 l) E) ? ……
, C: z. ~2 k0 b o9 T我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,0 K, t* |6 T8 h) r! ~, j @5 C+ P# ]
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.1 J! ~- D( d1 S8 g6 E8 D& ^
/ l5 X: q9 `( N
如果多个Behavior无法通过agent的单一调度方式定义,; f- B% a: C, t+ e, `
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |