你指的是在Repast simphony的agent设计吧,
% a6 c p, {- _- x' o% l' V. Z0 j M我没有用到一个agent拥有多个Behavior的做法,0 Z; s3 C9 g% T; |! q8 q) ^# j5 t
一般来说可以在每个agent的类实现中顺利定义一个Behavior,) [3 G7 E2 Z' K8 y4 B
从官方demo的范例来看,一般是step函数,注意前面的仿真调度参数(Schedule)设置,例如如下源码: D# C9 t1 v- w0 R( \. m
@ScheduledMethod(start = 2, interval = 1, priority = 2) 7 d! b W9 t$ Q2 d* t3 t, p# P9 y
public void step(). W" H ]6 X$ f7 B, c4 w
……
% Z5 G# p4 `5 ]* K我理解的意思就是此类agent对象创建后经过2 ticks执行step函数定义的Behavior, X2 r1 E! \) g8 L8 `
此后每经过1 tick,只要这个agent还在就执行step,优先级为2.# l: ^: ?( b) b3 ^" C0 j
4 e) j# f$ t( T7 e. _& x3 w8 f+ F
如果多个Behavior无法通过agent的单一调度方式定义,
7 q y( \8 D6 k$ [" Z那么值得考虑从这个agent类派生出对应每一种Behavior的多个agent. |