|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 ?# g) K$ I( U2 H
private boolean findPotentialPartner(){& _9 y1 z1 K1 C9 K2 M& F% |
boolean value = false;
$ A2 t0 |5 f n5 p + w# Q' A" C. u. |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 F& F! i8 G, \$ u% F5 h F Iterator iterator = grid.getIteratorAt(x, y);4 _. n, ]: ^9 m! L+ f1 X
SexAgent ag1 = null;
# ~' J" S# A7 Z1 X SexAgent [] potenAgent = new SexAgent[20];* U3 ?9 }$ g, e+ O
int goodNumber = 0;
/ M) f2 a9 W5 k; i2 h; s1 g4 s while(iterator.hasNext()){1 f2 _5 S2 A5 l- m2 C
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) }$ z2 l, T7 P
ag1 = (SexAgent)iterator.next();
7 N& g) U% V) P3 Y2 b if((ag1.sex == FEMALE) 0 C7 C( k. r+ k8 H4 ?0 k) T
&&(!ag1.isCoupled())){
! S. j: W6 @3 x7 ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");
) S* B( H6 y r. @& l7 M potenAgent[goodNumber] = ag1;9 S! e( J. q5 D6 t
goodNumber ++;
1 Q) I5 y- U- N& J( A* j }
' ^; N! K3 o+ f }
) C( W) _1 d' [+ R) A
9 O% p9 v9 O( z( P7 S if(goodNumber >0){
1 e3 j* r, n5 l9 m" B+ k3 a) ^. e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 O. T) e! ^4 \ Random rd1 = new Random();
: V; u2 y! A E( v' T6 z8 T int select = rd1.nextInt(goodNumber);2 C9 L$ d! M9 A+ C( J) O0 i4 ?# W6 N
potentialParterner = potenAgent[select];
5 {; [: G) ^9 n" f4 W value = true;+ z" n- d6 x1 p `3 U* A
}
$ ~5 `' f# f( x1 Z* o$ I- D: b return value;
4 Y/ Z9 @- P" S" Y% N }. m# G& x* s0 R3 x7 p& g; ?+ D
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|