|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。9 S. E" G# v+ ~* q. z
private boolean findPotentialPartner(){
( z! C( w- j4 v5 m3 R5 J% F7 J boolean value = false;3 X8 j+ ~1 q2 E [ _/ _
% y: H( u" Q7 D5 a' ^, E
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ L( N- E7 O) j5 i, m; [1 A% R2 \3 u Iterator iterator = grid.getIteratorAt(x, y);% v9 D, Z; i; e; W9 }
SexAgent ag1 = null; / }+ Q" ~& T7 O5 Q1 t# |
SexAgent [] potenAgent = new SexAgent[20];# B4 X, S5 d o& o
int goodNumber = 0;& r8 n; Z+ Z7 p: D6 ]
while(iterator.hasNext()){
: f' n1 N6 O% x: B* Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ [9 M8 \9 I; U1 V ag1 = (SexAgent)iterator.next();
: o" I$ m _0 \5 Y1 T1 Q if((ag1.sex == FEMALE) 0 u; ^: ]* t" G! L5 n9 g
&&(!ag1.isCoupled())){: c" j; |: m) Y7 S
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- f. h4 O, y0 `# E1 E potenAgent[goodNumber] = ag1;
% Q" h' P6 e* r; K goodNumber ++;& P F @: R+ c/ D0 x! @
}! b. W9 Y; P+ _: y8 N6 ~8 \4 F- }
}
0 O# i! p4 i7 Q N
" L' p8 s' U: n. p1 H* B3 ]% H if(goodNumber >0){
6 N$ r" k2 c+ ]3 a) ^( z/ G System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 R. A6 C' S+ j6 x' e. P& J Random rd1 = new Random();
( C+ P7 a9 ]+ C) R H: O int select = rd1.nextInt(goodNumber);
# v0 P4 K( a# _! i. q potentialParterner = potenAgent[select];9 Q$ ]" f' I5 R6 H& P% p- }
value = true;
8 y% g- v5 Z2 x" r9 L }
) ^! U8 S6 ~' A return value;' f3 M# r" u; S5 W- A+ @. b" i
}0 b/ V" C( [- p% d5 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|