|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 E2 e+ X6 O+ m
private boolean findPotentialPartner(){( x( B; s% B) \0 ` j
boolean value = false;
: o- I- b" Q# ^& V! p! v : n* `# |/ |: a8 H
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 V6 m4 H& E) G& r5 j9 F7 @
Iterator iterator = grid.getIteratorAt(x, y);
1 Z2 B2 K5 i+ v% P" V3 h SexAgent ag1 = null; 4 @' B9 y; g g
SexAgent [] potenAgent = new SexAgent[20];
$ r: n1 ]8 U; \+ k& p3 L/ j& U int goodNumber = 0;& d% ], d5 y4 R- P% v3 G
while(iterator.hasNext()){
# v8 y. _1 d! g4 @( G' W- e0 m- R System.out.println("XXXXXXXXXXXXXXXXXXXXX");, d3 x! C$ ~7 J: m' Q" r- |/ x& v$ _8 `
ag1 = (SexAgent)iterator.next();
" B2 p- c1 l( e2 \" o$ { if((ag1.sex == FEMALE)
. h7 r5 [& e1 U# o0 ]" D' X &&(!ag1.isCoupled())){: X1 u* i. d* S* i m& S+ D
System.out.println("YYYYYYYYYYYYYYYYYYYY");
# f0 k( N. C% y i; r9 \, G potenAgent[goodNumber] = ag1;
$ c" @6 d. v% b( T) G& n# t4 p goodNumber ++;
2 I9 B+ S' P8 k* `& [ }
7 A' R1 D" m0 e* |+ O) \. W) ~0 f }- l5 y7 r }8 B4 K x% z! z# G2 V
0 V2 h# U* @" ]) ^2 L if(goodNumber >0){: l7 B0 ~$ Z$ b1 W
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; I2 `! d, f* [5 I( v1 T- A
Random rd1 = new Random();
: z' P) Z Q# w/ M3 n int select = rd1.nextInt(goodNumber);; {* u! A$ w* k5 \ \4 k; m
potentialParterner = potenAgent[select];3 U/ ~+ d0 a. |4 A, l: a( }
value = true;
H" ~5 P6 H- L7 ^7 t0 V9 G }
/ z D3 D, T! H4 I8 W return value;) D' D- M/ P4 w+ R& W8 e, b+ I* B# q
}
! o. B% T/ R( M5 X$ i, y9 _- k [始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|