你指的是在Repast simphony的agent设计吧,& n( C9 h9 j& _% u3 \
我没有用到一个agent拥有多个Behavior的做法,3 m" }( Z9 H0 H) c
一般来说可以在每个agent的类实现中顺利定义一个Behavior,& M# l0 I) r( m4 @. v ?" @
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
0 b- |2 [3 ]$ ]' I @ScheduledMethod(start = 2, interval = 1, priority = 2) 1 O& [6 I2 ~& h+ A' ?
public void step()6 Z" i/ c: l( f2 o5 P# ?4 ?% c
……
! _( o$ f1 y0 C6 ~) l+ @. m( u我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,
; F5 T- `) e2 @3 ?此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
+ n& c- ?& l' T r, _; D5 q- ` V" y# G/ x/ p6 n. k, ^* B" a
如果多个Behavior无法通过agent的单一调度方式定义,
% H/ H7 ^& P7 \+ A" w. \, q/ T' P7 R那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |