|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
\( N3 J! U: ~; P private boolean findPotentialPartner(){4 x+ ~# E3 C2 l8 G7 a& P. u6 k
boolean value = false;
! B# J- x* L# @ * A- y% V. j8 h
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. R- ^" w8 h$ C: ~) ` Iterator iterator = grid.getIteratorAt(x, y);
- ^' E3 j0 {3 s SexAgent ag1 = null;
0 s p' \3 u$ |+ d* K8 a4 _' W SexAgent [] potenAgent = new SexAgent[20];
2 O, z. l/ e; ?: p int goodNumber = 0;4 Q- }9 d- `" l& q- \/ A u% V
while(iterator.hasNext()){
, y9 {3 r& }- N1 H9 f4 } System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 E: M/ R; e, @6 U8 f ag1 = (SexAgent)iterator.next();
$ u9 T4 ] L7 a; g4 D if((ag1.sex == FEMALE) 1 j* E9 a) r U7 z( j
&&(!ag1.isCoupled())){
1 u E+ r2 ~- \* b System.out.println("YYYYYYYYYYYYYYYYYYYY");4 D( f, o f" [, D9 z: z( w' N
potenAgent[goodNumber] = ag1;) B0 W! o$ I2 w3 O
goodNumber ++;8 C1 I% a5 n$ o/ H
}
Q* Q$ W5 E2 p \+ | }
8 s$ u. s) R9 B4 O; w1 A* B 0 U! G' J1 M2 _$ I. p
if(goodNumber >0){! j4 R" O# T9 |& J) x
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 }" w1 _0 x- Y. I6 q$ w
Random rd1 = new Random();
8 z& ?6 O( g4 y. i) a; @' o int select = rd1.nextInt(goodNumber);
1 k/ h" Q0 Y$ E) W; K3 ^ potentialParterner = potenAgent[select];6 t6 Y+ ^% [/ s+ F2 n1 k
value = true;% r! f1 u+ b& v1 f: y% e9 M+ @+ L
}
) y/ G/ m, h) v! v return value;0 _: U/ d4 l# m1 z1 Y; J5 g% J2 i
}. T* q9 t5 D+ }) M' x
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|