|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 B% o% F& b( C! x6 t6 H6 |
private boolean findPotentialPartner(){
, ?4 n4 J2 a+ n# L- L* s, B boolean value = false;
( S/ i7 E8 K( D4 L8 P3 i 1 i- E: R2 B- O, J
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); b4 z7 Q( E+ S _/ N* }$ a
Iterator iterator = grid.getIteratorAt(x, y);) [& X7 m. Q: `/ _ i! c
SexAgent ag1 = null; $ E& B. ?. M# S3 j$ v
SexAgent [] potenAgent = new SexAgent[20];
; v P# v( d' _. L; G( D4 R int goodNumber = 0;- ~* k; f' S( W w" f* W) `+ `
while(iterator.hasNext()){+ y& v! X) g0 [8 H/ ^$ }9 G( x% @
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 g5 q7 Q6 }: q+ f% g: r ag1 = (SexAgent)iterator.next();
4 j9 Y; R# s: s' }1 i% k if((ag1.sex == FEMALE)
4 V% D# q+ b; I+ X &&(!ag1.isCoupled())){6 Z* O) n8 o$ [4 ]
System.out.println("YYYYYYYYYYYYYYYYYYYY");( H* X6 W& t1 A L& t1 g
potenAgent[goodNumber] = ag1;
( z+ C3 ?1 x) i# t7 s% K goodNumber ++;5 ]9 S( d, d) x" [
}
3 V8 o! X& R5 U# x1 U+ j }6 |, d/ H& v$ H; f% g. e' u% E- Z
% W6 m5 l! ~5 D& V( H
if(goodNumber >0){7 i7 N) k- l4 D" V9 b D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); / n i' Z4 t- e$ `7 C+ F) g6 ?) `* c
Random rd1 = new Random();5 I+ W8 F: g7 @0 q; N
int select = rd1.nextInt(goodNumber);
, j: H6 n- d, c; x. U/ @ potentialParterner = potenAgent[select];
. l5 k' M: i5 g: n7 z% w value = true;8 \9 Q3 @: i+ U0 v# r* Y
}' Q/ Z0 d9 e2 ^" y- | c2 Q
return value;* E0 k9 u# C. c8 M$ Y
}( L( f8 z8 y" n ^9 n; }$ g
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|