你指的是在Repast simphony的agent设计吧,! L9 E9 l* Z: [' M" e. \
我没有用到一个agent拥有多个Behavior的做法,: Q# C2 l! N+ k: ~; E* d
一般来说可以在每个agent的类实现中顺利定义一个Behavior,
1 b0 _5 u! O5 d2 z& X从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
6 A G9 R- }" k6 y1 c' k @ScheduledMethod(start = 2, interval = 1, priority = 2) ' M$ l( U5 h9 }7 F+ L! @ Y
public void step()
4 z' \- e, n, i+ P, [ ……8 ^1 S. v: i2 f' Z0 J: Y- d
我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior, |3 w2 G2 b3 [0 W2 B; r
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
- \6 ]2 D5 y0 \ a
4 o! J+ I; D. x# Z! M1 y" `! ?3 D如果多个Behavior无法通过agent的单一调度方式定义,0 Z* v! b/ G! s. }
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |