|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 P+ l" [; \% X
private boolean findPotentialPartner(){
: K" `) k: C- R- Y. }! f$ F9 m boolean value = false;
) D( X( X2 b+ i! A# o1 F- t 3 E5 R" W! Z) h6 N- t0 k
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 E; n: ]+ B1 ? G. q. }; d: u Iterator iterator = grid.getIteratorAt(x, y);
, h, Y/ D2 N9 N SexAgent ag1 = null;
% y1 u) C0 @) x! m SexAgent [] potenAgent = new SexAgent[20];
5 ]% o9 B. A. G5 m int goodNumber = 0;
, E! z/ ~! `1 N: a2 D while(iterator.hasNext()){% o" d9 I( v# V& c. H1 H y2 l
System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 D: u; t0 y+ m, n' |; M/ D
ag1 = (SexAgent)iterator.next();
5 A0 n( Y6 K5 e h if((ag1.sex == FEMALE) ! r4 C* T2 V4 e' R1 u- J; J
&&(!ag1.isCoupled())){0 U0 k3 r# B T7 a: m
System.out.println("YYYYYYYYYYYYYYYYYYYY");8 I' |5 O2 W/ o- K' X* }
potenAgent[goodNumber] = ag1;
; R7 `, G6 N* u6 C U/ _' i goodNumber ++;' ~( Y; J' o: f# r) p. f3 D* U) b
}
0 n: @; F) u' x$ ^: w. |' B }& r0 G& t, [ ^+ o
, E9 g( U. D& L' `, a
if(goodNumber >0){, H, Z( _* m( e' S+ D- _! g0 n$ O' N
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: U5 ]; b% |" F+ t; ?! r9 {3 P9 f Random rd1 = new Random();
& d2 ]6 u% L( R" H; B int select = rd1.nextInt(goodNumber);
& X3 H( K& W' F" `. ] potentialParterner = potenAgent[select];
/ N* w* Q8 d& V value = true;
* j. `; c3 R9 Q }& u. ?2 K4 v2 n' Y: ?& j, u$ h
return value;
1 N/ T$ b. C6 f }
5 o3 D2 Q* V6 R/ O, Q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|