|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 @3 K1 j K$ b6 F private boolean findPotentialPartner(){( I Q; [$ _+ Z1 ]* j
boolean value = false;
, R/ [ I2 |/ k% H3 d
+ k- E2 Y) q. a4 R OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
& B" z4 w- g) U2 f5 l: \, H# B Iterator iterator = grid.getIteratorAt(x, y);- R( _! f% t5 E- N) r
SexAgent ag1 = null;
/ P0 ~) i7 @7 C: w' U SexAgent [] potenAgent = new SexAgent[20];
4 `4 i7 r$ r3 ~1 M% u% @ int goodNumber = 0;* L" R/ H+ ]) R' N( U; n5 n! |( j
while(iterator.hasNext()){( @2 n- |! ?6 c/ I) G& L
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 J& p8 r. E' E$ e) _; c& U5 B ag1 = (SexAgent)iterator.next();
9 S C+ F9 \, _1 E9 a1 D if((ag1.sex == FEMALE)
: }' ^# ^! ]* G* I) O &&(!ag1.isCoupled())){5 \/ r9 |. @: y# l' r. E% h: ?7 h
System.out.println("YYYYYYYYYYYYYYYYYYYY");
" `% c5 c& t6 n potenAgent[goodNumber] = ag1;
% Z2 d* h) f% w: `, [" [" |9 y goodNumber ++;
R( w3 |4 D3 y3 z2 I: K }
2 G( Z, N5 ]0 Y3 m( O9 s6 d5 K }
6 r( ]" F$ S' U - j* _; z: n4 B2 f r) d3 f
if(goodNumber >0){
7 x. b& u4 }" Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 v, Y ~% g0 ]0 L5 r' `7 |5 l# T
Random rd1 = new Random();/ C/ H, w* @( V% s0 O7 u# [
int select = rd1.nextInt(goodNumber);
9 q: w1 U; i8 q6 P6 {' r; ?, Z potentialParterner = potenAgent[select];
6 T: H+ V6 x* x3 o5 a value = true;5 D* p. b9 k9 ~ M8 [
}
/ U; M9 ]8 V# H0 }1 B. Z return value;
8 d- d5 s/ \2 N- y) ] }3 k. x+ C0 |; _" |3 F2 v* P( p, `
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|