|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。4 \, V7 y3 } F1 ^: h3 j
private boolean findPotentialPartner(){
2 n# c' T T9 u& S7 U$ w1 w boolean value = false; o/ M9 f+ u! n2 z
0 ?1 w0 y; v" I) `. ]: a ?8 M2 y9 P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 Z6 x7 u9 H, @ Iterator iterator = grid.getIteratorAt(x, y);4 x1 W9 p5 P9 l9 ^8 q
SexAgent ag1 = null;
7 R$ a8 b. p% ^3 \- b \ SexAgent [] potenAgent = new SexAgent[20];* w7 M6 f* o+ w" ]; Y
int goodNumber = 0;
5 n. i' G8 T0 Z: I# R' B while(iterator.hasNext()){
0 L& b% Z7 X( O, n* C, V System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ N, e/ r4 k3 T& s+ Z, d
ag1 = (SexAgent)iterator.next();
) u1 \/ C7 @- x/ x `" f if((ag1.sex == FEMALE) * s. e8 V r: j6 e! e$ }1 T
&&(!ag1.isCoupled())){4 h* X/ U/ c+ u5 s9 R) X
System.out.println("YYYYYYYYYYYYYYYYYYYY");) u4 `1 v a2 M3 V
potenAgent[goodNumber] = ag1;5 ]/ m7 L- G; n" o& ^
goodNumber ++;0 W4 g1 K3 F% s& N; K8 _
}
9 N) p- L1 d3 B }
1 A% _4 H+ _. X6 V5 {
# y# Q! i0 f; B* l" A" L if(goodNumber >0){9 \* E: {/ i3 @( h& X1 t
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) S+ D! C2 R8 L. U e5 q8 S, D
Random rd1 = new Random(); g$ p6 q" |- ]& O
int select = rd1.nextInt(goodNumber);# _, O2 X9 w% U
potentialParterner = potenAgent[select];5 Z/ N* Q0 M7 C/ j' O) A$ |! p' ]
value = true;
! L( R. O+ E: Q+ d: R+ V# Y }
, y( a" L& R# W. W+ P; X return value;0 k6 r. l# x# Q$ b, F+ K+ h3 E
}
3 w5 G9 t: e, e- |始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|