你指的是在Repast simphony的agent设计吧," Z# H+ D- |: p7 Q
我没有用到一个agent拥有多个Behavior的做法,
3 {9 `& U) H Q9 f5 ^9 @: D2 G s( X一般来说可以在每个agent的类实现中顺利定义一个Behavior,1 @% Y& b2 M8 _9 d
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码
! G9 ?. U$ T0 g' e' |, R4 K9 E1 t @ScheduledMethod(start = 2, interval = 1, priority = 2)
- B$ g& ~$ Z7 l, A4 p; }3 o2 m% G public void step()
) K% Z; g0 J1 w4 R6 s2 x% s" q% l ……
* B- y: `: ]1 b9 e. E ` d我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior,& P+ Q, P! G# K1 q
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.
; p/ w# [9 h% W1 p# A" Q
+ E8 H/ q1 L$ j3 l9 c8 k! j如果多个Behavior无法通过agent的单一调度方式定义,# }6 L! x+ Z9 p# T# C" U7 ]$ t9 N
那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |