|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 [" T0 O) A( x$ n8 F" [: d
private boolean findPotentialPartner(){" I6 Z8 p8 m4 x, Y/ g3 C1 F; j
boolean value = false;- }1 A- A' `* S" h
k( ^4 o. [" {" x: O( h" Y OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
- \, X! q/ ?' ^+ L c4 t Iterator iterator = grid.getIteratorAt(x, y); Y2 X* H8 u5 X% f
SexAgent ag1 = null;
: A5 ?! V5 k. K' L2 ?8 j+ a$ O* w SexAgent [] potenAgent = new SexAgent[20];
5 r) H* o" D7 U3 ]" Q int goodNumber = 0;
8 w; c; Z$ f5 M; {$ A while(iterator.hasNext()){4 m& r5 f* U ~9 a8 @3 ]" Z6 f
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' `9 ]- `; V8 F" ?6 G* g4 \( M ag1 = (SexAgent)iterator.next();- d$ E/ ?' c. I4 l6 q9 R
if((ag1.sex == FEMALE) $ L9 a* _, T3 P4 \( K9 P3 }
&&(!ag1.isCoupled())){
6 A' V; d* l: Z, g e! ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");
. W/ T$ b! H: C3 L6 S potenAgent[goodNumber] = ag1;
0 I; X/ ~, }7 s v* \7 J goodNumber ++;
/ u% c9 f6 i0 X1 z; J }& S0 V7 }) R1 F |6 Q
}
' M3 v$ h2 V5 j" N6 c" ]. I I( U# H
. N2 ^9 x9 e9 ?( s if(goodNumber >0){
4 D* H0 k( M9 Y. I. W2 w& D s0 ? System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 V! B3 U' K: y6 k! v% j
Random rd1 = new Random();4 s0 K4 U/ G( z+ q- R
int select = rd1.nextInt(goodNumber);5 I& S4 ^* L1 E. |
potentialParterner = potenAgent[select];
% Z2 m+ c2 p4 b- _. g( u( i4 g value = true;3 h) x+ G& D& J& V
}9 V% d+ t- {7 C/ x2 c
return value;
# M1 j8 N" i3 C% I& T/ q }
5 `& E) A* n, X9 s+ H E始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|