|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 B; ?! F; ` d: \& g9 n V/ Q
private boolean findPotentialPartner(){% b8 d- ]+ X( \" v6 f
boolean value = false;& t( z! k% K4 B. ]7 m& S
* g$ d. ?3 T1 v OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* J% h9 l/ P. w8 \. E- N
Iterator iterator = grid.getIteratorAt(x, y);
! ^& [9 v* j6 H& m SexAgent ag1 = null; 4 K' W1 i* H: h4 Q7 j* y+ N9 D( |
SexAgent [] potenAgent = new SexAgent[20];* k; z) T0 n/ Z- C6 M
int goodNumber = 0;" Z; `) `1 x! T% ^5 t
while(iterator.hasNext()){, ~7 ?$ C6 D( D- l* @+ V
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( y4 U8 l# n0 G! @8 |7 N ag1 = (SexAgent)iterator.next();* [) b* Q" W4 b& E% Q3 ?. v3 i- z7 l
if((ag1.sex == FEMALE) : G- F4 C. [! O2 k
&&(!ag1.isCoupled())){
) Q9 L0 M, f* d$ ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");
" X0 C+ o( X I/ ?( f potenAgent[goodNumber] = ag1;5 ?1 j$ ]4 N. W: u7 u0 p9 F( h
goodNumber ++;6 j" o* a% i q7 M# B/ e
}% R4 i: w) J4 C6 R0 `" b- B: A" ~
}
! I, V; K' A, p C $ F1 M8 j7 d3 e. @. k" X
if(goodNumber >0){+ i X( T+ M% T# A1 V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 V2 S1 t! |8 p& | Random rd1 = new Random();
( u& f3 A' {) c J n int select = rd1.nextInt(goodNumber);
. o r. f. r( T* b) X/ V/ q potentialParterner = potenAgent[select];
0 G+ f, i1 V5 ]$ T) k' x6 X$ m* Q value = true;8 L* c) Z# d/ q; T
}3 p* ?# a0 Z- \; E0 L
return value;
5 M1 v* `# P6 p+ v* B% ] }
4 ?6 c% l$ K5 k8 \始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|