|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 `0 V7 j: C4 L' a I! g" N* G* P private boolean findPotentialPartner(){0 b9 R0 c+ d+ k4 D. O( f: G
boolean value = false;! W$ y! |: j2 g7 m& k
5 }2 f! X+ }: Z9 f1 r6 ^/ T) y& b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ j! j; B+ _' C$ C
Iterator iterator = grid.getIteratorAt(x, y);4 I* p0 a7 G& a$ k
SexAgent ag1 = null; 8 ^! C3 H& U, f# G
SexAgent [] potenAgent = new SexAgent[20];
% {. j4 k9 f' K0 Z- U$ ~ int goodNumber = 0;. H) x+ h5 }- X1 c0 e3 U$ h
while(iterator.hasNext()){( Y; }8 p' q# u) ] g
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 m; j$ x9 g5 ~8 W* b x, K. \ ag1 = (SexAgent)iterator.next();
, {! E0 g1 O1 U2 g f. a8 D if((ag1.sex == FEMALE) $ A: Y u/ T$ P# A. D
&&(!ag1.isCoupled())){5 k' _" E! Q; g1 `, v" q2 c
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: `# \. a' @; q4 j/ j potenAgent[goodNumber] = ag1;
; T- Q" p- b) K& g goodNumber ++;
. N8 ^1 ]$ T: J: U- i6 u }
' h: J7 b2 [: e; n* N& Q" j( m; V- p }
2 @* n+ S, {) g C
' Q- s# ?9 W' _, { if(goodNumber >0){; J# V- o1 [7 X' p
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); . _8 E* S2 A8 I/ ]
Random rd1 = new Random();
$ R+ W$ N Y7 o- Q int select = rd1.nextInt(goodNumber);
" O6 S2 d H- a1 ~ potentialParterner = potenAgent[select];
# s5 C8 R2 Z) V0 O. R0 a5 G+ n value = true;, _1 f- D6 Z/ X
}* P. C: o( ~3 s( y0 d6 Z+ \
return value;
/ `& C9 N" D# e' W; @- B }9 T) t9 h# U8 `( V% C/ S$ M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|