最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 5 j0 j6 k3 c: t. E4 a7 f private boolean findPotentialPartner(){) ]5 b3 k* `' T; ^: N, [. n
boolean value = false; + b7 k2 D$ i1 s6 _ 5 d$ {" C/ U7 Y Z3 m7 R
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! X6 P# l( d$ h3 n. U
Iterator iterator = grid.getIteratorAt(x, y); 6 z/ M$ B6 c& Y+ p5 V' N SexAgent ag1 = null; * z' H- J* j; A! T' {/ j" ?
SexAgent [] potenAgent = new SexAgent[20]; 0 Y/ W: p$ I, h9 G0 ~& | int goodNumber = 0;0 c) R6 [0 V, H3 W" d
while(iterator.hasNext()){ g: E' A/ {2 ?: X9 J* W
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); ) `( u: _: l# @, a: G ag1 = (SexAgent)iterator.next();/ p8 h- P# M/ W1 r& v/ L; T
if((ag1.sex == FEMALE) 1 p/ W0 Q! I/ d& |
&&(!ag1.isCoupled())){ . Z2 b: r! _- B' b2 R. @5 w System.out.println("YYYYYYYYYYYYYYYYYYYY");8 d! F! u$ \3 h _& f
potenAgent[goodNumber] = ag1;' P. V' T3 h+ e' n; [. z
goodNumber ++;5 w) \* j) o; }1 Q, U2 H+ K, B/ {
}3 u7 v: M2 I& O) O i2 J1 Z/ b
}- }" \1 h' Q8 u
: i }6 x* S% z if(goodNumber >0){: W+ l. R2 s. \- e$ O
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( B; X4 H! f7 s) S
Random rd1 = new Random();9 s4 F1 Y" C7 Y2 {, u0 F8 }
int select = rd1.nextInt(goodNumber); * ~! ]: o$ ^8 b0 l( c6 n potentialParterner = potenAgent[select]; 6 `( f. M! k9 j8 _" g; E0 T value = true;. L1 M, h3 }5 }) w, c. B
}3 h. y- j6 c0 c1 d6 U" i- p
return value; 9 g5 O- N& }1 w7 w+ l }. H" e) H4 h/ o' U, U6 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。