|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
! I, a' d4 j; I+ `- I private boolean findPotentialPartner(){
+ ]$ E* L6 a/ E" M7 M3 n boolean value = false;+ I9 ^ l/ T! M$ J# o
6 {- j9 n* x% L
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 a3 h' x1 W& ]6 u9 x7 S) B Iterator iterator = grid.getIteratorAt(x, y);$ _8 ~8 q& D z" f' n
SexAgent ag1 = null; % U# f I7 [. e( l! u+ _/ v; K( Z
SexAgent [] potenAgent = new SexAgent[20];
" q" N$ ~! x' i. o/ x- v int goodNumber = 0;
) y2 W5 h9 E& V8 U+ f" O while(iterator.hasNext()){& E6 w* \* j8 n- Y0 X, U( l$ T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");% A0 h: m( e8 ~/ J! `% `4 i |' L1 f
ag1 = (SexAgent)iterator.next();1 g& y0 R0 N# w* e& D: _
if((ag1.sex == FEMALE) / }' U9 s& i& f2 I+ C5 U
&&(!ag1.isCoupled())){
# N( C9 N0 y+ l, {% c; @& Y System.out.println("YYYYYYYYYYYYYYYYYYYY");
! e1 i: m+ ^# \1 E+ N potenAgent[goodNumber] = ag1;
9 X% Q, Y* w! B, R4 i7 e6 K) w% C goodNumber ++;
% ]% A' r& y7 Q/ Z }
; k$ ~6 C' _0 g- V3 D }; t0 [* ~* ]) G8 N4 a$ Z; i
! O& T: b) b! F& g9 I4 X/ x2 v3 `& q if(goodNumber >0){
- d& L7 p0 L$ e. h, K5 M! _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 N, i1 B X+ o# C Random rd1 = new Random();
6 p6 [2 Q4 P& y1 ? int select = rd1.nextInt(goodNumber);) a, X8 L0 a n/ O+ t- i
potentialParterner = potenAgent[select];
/ P. v# B }6 ^! \- R value = true;. F1 V7 r3 t) \- I: [8 z
}/ V% X; C! t0 W* O1 p
return value;
" P" x$ r4 c0 S( I- g+ w }2 ^# b+ T, c4 ~% t: l! N/ y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|