你指的是在Repast simphony的agent设计吧,
6 ^6 x. I6 E a$ b: M我没有用到一个agent拥有多个Behavior的做法,/ Q: j7 k9 {, L- t) b
一般来说可以在每个agent的类实现中顺利定义一个Behavior,* }- i" H9 S( f2 A5 J) M
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
' j- ~( F2 Y; r" m @ScheduledMethod(start = 2, interval = 1, priority = 2) 8 _7 {; T/ W4 _# h7 j, A
public void step()3 d: O( p9 q9 b1 S( z
……! e- A; a( \( S; k( l3 J% p: u! z* G
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,- K v' ]8 u" C$ G2 B2 g
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
6 j7 \! z4 [- ?% [
. m# y* H1 A, s9 l2 }, R# e, n; S如果多个Behavior无法通过agent的单一调度方式定义,5 o4 K8 d7 H7 W/ `
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |