你指的是在Repast simphony的agent设计吧,
0 w- J4 p+ W( } I; @+ \( X我没有用到一个agent拥有多个Behavior的做法,
; _% A5 Y, d9 Y) J6 b# i+ u一般来说可以在每个agent的类实现中顺利定义一个Behavior,0 k9 L# c9 q. m, o( H5 Y( W1 R9 c
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
4 m7 {' `$ I8 A4 j% ` @ScheduledMethod(start = 2, interval = 1, priority = 2) 7 q5 L. n9 \) `" n7 _9 K1 e4 f
public void step()$ u. S4 Q4 U" Y' A m
……
$ f1 `0 U: j3 V+ J2 X8 L9 z我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
r5 x, L6 d) G/ S. M此后每经过1 tick,只要这个agent还在就执行step,优先级为2./ ]& h8 q4 k% h9 ]3 ~4 @) P8 {9 z
: h' p9 K+ h2 k- V5 N2 i" x
如果多个Behavior无法通过agent的单一调度方式定义,
2 n8 p2 q+ W, O9 x4 ~: ]那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |