|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ `( }" W; g3 C0 z0 M9 f( } private boolean findPotentialPartner(){* |6 B" v: U; D L6 A. _8 r5 r: l
boolean value = false;4 h m4 _8 A! P$ ^% }/ o {
) C. Y$ U8 z" G8 D# n2 V& N/ ]
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 N- M: t, ^3 }9 x$ `9 [ Iterator iterator = grid.getIteratorAt(x, y);
2 T; d0 S1 j! f, L" _3 p SexAgent ag1 = null; ' A4 l+ c* i1 e* r$ Y9 v) Y
SexAgent [] potenAgent = new SexAgent[20];/ n: l) z) |) A$ N/ X( t
int goodNumber = 0;6 z# g. Z+ a, I# l6 P9 Y
while(iterator.hasNext()){& e/ m( @# |2 k# k# |
System.out.println("XXXXXXXXXXXXXXXXXXXXX");. q% s) J3 _# J$ @
ag1 = (SexAgent)iterator.next();
) E7 ?6 z. r4 S& Q% H o4 G if((ag1.sex == FEMALE) 1 L; G) A1 z1 [' j
&&(!ag1.isCoupled())){' J. _3 w/ X% M) o/ H
System.out.println("YYYYYYYYYYYYYYYYYYYY");) `# z! I" w7 B. c0 Q |
potenAgent[goodNumber] = ag1;' Q3 P4 o9 e3 \( F1 x! j* B
goodNumber ++;- V# r6 V: }/ y3 c! V
}
. A: K0 d- ^3 e# O% ^3 A }+ c0 E, a' |6 S! O: j0 p7 X
0 B, V$ W7 J! a8 z
if(goodNumber >0){
( D# }' k) p& y% A9 {" A System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); $ A. J! D/ d# ]+ ]! K
Random rd1 = new Random();4 K/ W) p3 G4 B& M( Z# J/ Z! Q
int select = rd1.nextInt(goodNumber);
; s7 l* K! z. w potentialParterner = potenAgent[select];
3 ?; n; `& Z% R" H. C& ^ e! x' ^! [ value = true;8 q7 G1 r; q' h- U; J
}
, W s8 [2 G7 T, `. E. x return value; l8 f4 T, v# {5 D9 k# B! ^1 m0 y
}. b. c8 w8 w4 c) j: k
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|