|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. P1 \+ T4 a3 A d4 t
private boolean findPotentialPartner(){5 \; @4 J9 J* G! r' l' f4 O
boolean value = false;
1 m2 Z8 Y) z5 X' N" n+ {1 n # U2 T0 m; d" f& m D
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 d t' k& L6 m1 G* N9 i Iterator iterator = grid.getIteratorAt(x, y);
/ W' a6 f6 f0 T2 K- f1 } SexAgent ag1 = null; 4 P \: M% S" }% D
SexAgent [] potenAgent = new SexAgent[20];5 j0 h2 [0 g" Y7 L/ Z* j
int goodNumber = 0;" H2 Z Y1 |5 j1 ^' j8 Q& q5 m
while(iterator.hasNext()){
' G) r) a6 a# M7 J2 C System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" N5 c: | [9 N, h ag1 = (SexAgent)iterator.next();; Y' d4 T4 e' O. E3 U
if((ag1.sex == FEMALE) " H0 ^* l: |" m& b0 D
&&(!ag1.isCoupled())){
" v6 z* s+ D7 \6 e9 M d/ B System.out.println("YYYYYYYYYYYYYYYYYYYY");
0 M* b" S' X7 |- B$ e' g b2 f potenAgent[goodNumber] = ag1;: |+ R4 n+ O; {6 _
goodNumber ++;
6 H( T- a M( w w- z }( u9 ]# J1 J. j: h5 ]3 i
}% Y# H$ _. W: t# R p
- t; d. w0 {: O# u, [5 ?* ?3 v if(goodNumber >0){( D* B: Z) v! H" S( L3 e
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& s: E3 {: [( i% n Random rd1 = new Random();/ @& a$ U$ O; L
int select = rd1.nextInt(goodNumber);
2 X6 R9 E: ^) Z8 { potentialParterner = potenAgent[select];9 q. i0 r0 t7 J* E8 b
value = true;
' P, Y: c, A! E. a5 G3 | }' B- P- |9 l; Y% f6 U% i( c
return value;
! \% Q `# }' y }
7 j3 \5 N- Q) h7 u9 N- v始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|