你指的是在Repast simphony的agent设计吧,( Y' y" K9 e" P8 M( Y6 ~9 n0 i5 S
我没有用到一个agent拥有多个Behavior的做法,+ I O/ v$ x: ^, G2 `1 M
一般来说可以在每个agent的类实现中顺利定义一个Behavior,6 Z* }8 W1 ? L+ l9 f' {
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
% K9 o+ H+ `" R4 z @ScheduledMethod(start = 2, interval = 1, priority = 2)
$ x1 B; _6 _2 m) V; p5 F# u public void step()
$ T e1 ~0 M9 z$ ^8 E ……, I- _+ G! g. T* R, m( p& s1 U
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,$ \# \9 P9 a: r% I9 p
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
# m6 k- n: a, y8 J8 ^3 C# l
' e! w2 w l, k* z9 A如果多个Behavior无法通过agent的单一调度方式定义,
0 ]- H+ E) c5 o9 b' n, P' c那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |