|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ r g s' Q: H4 E$ p
private boolean findPotentialPartner(){
- m! L; P' O# t: X boolean value = false;
8 v8 h- J; m3 }' I$ ` : @* {; J* f4 g# P9 B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% L, r0 A2 ^+ O Iterator iterator = grid.getIteratorAt(x, y);
E7 j! l# V+ H5 K SexAgent ag1 = null; + B" S" p% @$ h
SexAgent [] potenAgent = new SexAgent[20];
/ h, K/ K) \) ?4 d int goodNumber = 0;1 D" e: b3 \; t4 ?/ {4 d3 O4 M
while(iterator.hasNext()){& p) m! U" y3 Q. Z/ E
System.out.println("XXXXXXXXXXXXXXXXXXXXX");. v7 P4 p' w) l4 y0 W' ^( z1 Y# p$ s
ag1 = (SexAgent)iterator.next();
m5 s% L5 ~- P9 H9 z if((ag1.sex == FEMALE) 1 n. u3 J \* p' N2 z% u
&&(!ag1.isCoupled())){
6 y5 f. l8 b0 x4 g* D System.out.println("YYYYYYYYYYYYYYYYYYYY");
- s1 x% i' D" A- l! w) D$ W& |- x potenAgent[goodNumber] = ag1;
' T# D n: y: S* N; G% r* |5 S goodNumber ++;' F; Q! C; |9 V r% S8 i
}
) v. D- Z5 P2 p, `3 x3 P4 M2 w3 D }
# L" P* ^& c |& m" _
1 b# K/ x1 v6 Q, u9 z if(goodNumber >0){1 z7 w; t0 j6 T: y# U- b
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 z/ z# L" M3 ?' L. P- A5 r
Random rd1 = new Random();% Q. O2 l. C1 m7 l7 k
int select = rd1.nextInt(goodNumber);* x7 w5 F( B9 c' N$ s
potentialParterner = potenAgent[select];
$ r% `, ^: B7 A6 n7 Z value = true;) e2 C, u1 y& ?, B( X5 W
}2 h* {0 x. j8 x. S4 R
return value;
5 b u5 D, q$ q' T5 J" w1 f$ k( d) L2 F }& X. F; D" n$ E1 @9 t5 v/ t! m! x4 B
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|