你指的是在Repast simphony的agent设计吧,
) }$ n, x; }6 K2 n, P9 l我没有用到一个agent拥有多个Behavior的做法,+ U O2 s- ?1 y/ e! @5 T) T1 K
一般来说可以在每个agent的类实现中顺利定义一个Behavior,5 j" ~6 U6 ~; G! q& Y) v" _
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
1 ?9 l% n u$ c* C( F" { @ScheduledMethod(start = 2, interval = 1, priority = 2)
2 m- A; n' R, j public void step(); C. b9 |7 g# E% i" N
……+ T( I; Y' a( s8 o. g! X
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,5 X3 x+ I& }/ E6 o9 p- y, x
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
' N" E6 `& y3 N/ N X1 p% P; ~' m) {3 i/ l z0 m x
如果多个Behavior无法通过agent的单一调度方式定义,& Z: X+ o1 }! I2 m
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |