|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" ~: x, h3 s, S) X
private boolean findPotentialPartner(){
1 z1 i+ i% s8 s3 E& B/ a boolean value = false;% \9 w1 r' v/ L# v9 M, z. C
$ m- c8 N. x' ]- T OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% x2 d j0 k6 k! ]. h) w4 W
Iterator iterator = grid.getIteratorAt(x, y);; `% d0 @) E- P% t3 X. D
SexAgent ag1 = null;
9 c$ O1 U# r6 t. C5 ?+ h SexAgent [] potenAgent = new SexAgent[20];6 K8 j$ ?" U% c+ i! N0 e
int goodNumber = 0;
4 I7 u1 Z; k, U/ v7 Y s while(iterator.hasNext()){/ S) x! O1 X K0 l6 W/ T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");% G) a+ q6 k0 ?) [7 G( v2 h
ag1 = (SexAgent)iterator.next();
+ ^3 ~& ?3 n$ O0 ~5 G3 C if((ag1.sex == FEMALE)
' e- u( Q! W" Z: w, g &&(!ag1.isCoupled())){
5 N' d! t& D, v3 S+ k g! i7 j System.out.println("YYYYYYYYYYYYYYYYYYYY");9 R: Z6 J0 ?0 m. B, p% t0 [) V
potenAgent[goodNumber] = ag1;: w) G! ^0 U: L3 w1 r
goodNumber ++;
+ }7 m; w' O# l' ]7 H0 C }
f$ u! q; E* r" S/ L! u, C: A }- J0 O* m& X$ i+ Y, ?2 D1 C
8 ^: X* ^+ o' p. E
if(goodNumber >0){+ N" F/ J: y' {# d
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 a8 V( j$ @ e) Z
Random rd1 = new Random();
, p4 S0 ^4 t. |+ O int select = rd1.nextInt(goodNumber);
* Q4 K l$ R4 J% h- a' e/ g9 g" S: r9 a potentialParterner = potenAgent[select];
( \6 k5 k$ d& S9 @+ W( E value = true;
% o8 }. L) U ?) ` }9 B5 S& a* H/ Y7 ^; h
return value; N: r" D2 I, r( R: e% j: j8 t! z
}4 I" N0 b( F1 O. C
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|