你指的是在Repast simphony的agent设计吧,' g4 i; N8 L3 M5 n
我没有用到一个agent拥有多个Behavior的做法,
4 N" p3 n2 S0 \5 w' I6 }& x一般来说可以在每个agent的类实现中顺利定义一个Behavior,# _* z1 P' i7 X& f& i8 `5 p
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
U+ U$ m1 `, \8 F: \# C @ScheduledMethod(start = 2, interval = 1, priority = 2) / C8 A; D z% Z$ U# p% v8 j& @
public void step()) x* \ @2 I. a. l& j" Z q
……* \ }, H3 `. [7 }9 d# j
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,# [: O( C; L, b# F3 z8 S0 [
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
z& T V: o& H$ D6 l* \# d( ~/ I) w9 c" O. r8 G
如果多个Behavior无法通过agent的单一调度方式定义,% ], u! `% @ M) u
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |