|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' X) x/ R* }$ z7 U8 j- N$ V private boolean findPotentialPartner(){
6 n7 U# L; F- K8 O _ boolean value = false;! N+ Z6 e; P! D, @$ T0 |
8 F" }3 p/ {0 o% j: Q2 W% ^ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( W- P' h8 G o x
Iterator iterator = grid.getIteratorAt(x, y);
. s+ {/ E: f, b; }4 f! k1 o+ G SexAgent ag1 = null;
& F3 ~! [+ K7 V+ g/ U {4 m, n+ u SexAgent [] potenAgent = new SexAgent[20];
# e! M; K! I+ y N5 N int goodNumber = 0;
* Q( L( i) Y4 _" [+ _ while(iterator.hasNext()){4 e( y) b/ J- ^9 @- f1 D8 X- `
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ r |0 x# L+ @0 |1 F% G
ag1 = (SexAgent)iterator.next();4 B& F& F" h% t. g* U* k
if((ag1.sex == FEMALE) 1 w& g; G3 Q9 B/ L' X
&&(!ag1.isCoupled())){4 {; ?) C6 f$ @. r3 H
System.out.println("YYYYYYYYYYYYYYYYYYYY");7 p: g# d& m, U
potenAgent[goodNumber] = ag1;
' i7 N9 w5 k& o- E) i' m" Z goodNumber ++;
' e6 m1 X; f* T0 `- a( q& n }
+ H" c! X* k S0 Q5 b$ z3 X; U }
* q* e( u! r* l: {
. l7 S: H/ g0 Y if(goodNumber >0){
8 f$ M: r7 y1 [) D1 Y3 M7 h System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: ^( ?0 `' t. b- B, O) f! } Random rd1 = new Random();
' D7 z2 O$ ?/ s( N int select = rd1.nextInt(goodNumber);7 }# r9 K7 T: d( x
potentialParterner = potenAgent[select];" D) Q) B# K( [% h- b1 k' X# s
value = true;3 [* \) v6 ]" Z f* {
}5 g' K; V2 j9 q, {4 q
return value;
8 o) Z; v* i4 A: o% p, n8 t! s; F }9 a5 |/ T9 m, f
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|