|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: l3 }7 c: {7 }$ F6 c8 {
private boolean findPotentialPartner(){, G4 K, [) F* E, L
boolean value = false;3 i2 ]2 `3 I* J' |8 q" u& |- A
" \: l" x. _" W p6 z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 `3 @$ H1 C# S+ @0 C2 V Iterator iterator = grid.getIteratorAt(x, y);, o8 p/ Y! e; f/ A `
SexAgent ag1 = null; 6 J: X% E; \& C; e6 _
SexAgent [] potenAgent = new SexAgent[20];
- J7 g% Z w+ ?8 I( w7 g. o int goodNumber = 0;
G# g- g ^6 h, H# |+ u2 ^! g while(iterator.hasNext()){6 w7 s+ H9 I9 z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) D0 ^) I' i/ k F4 z [
ag1 = (SexAgent)iterator.next();
1 ?: O" D% e8 J if((ag1.sex == FEMALE)
: Q" x5 v" ~, y9 [ &&(!ag1.isCoupled())){
/ ]( v+ H& l. ^" u* U System.out.println("YYYYYYYYYYYYYYYYYYYY");
0 z3 O3 _- ]2 E% [8 | k' w7 Q, q' Z, _ potenAgent[goodNumber] = ag1;
6 y$ b0 P! ^$ s3 u" k goodNumber ++;
, R; }$ v! c) C A }
* V" j T L: h }
^2 t: P4 j% |# Y
" j1 m% K# K8 B/ F if(goodNumber >0){/ o6 _) b: L8 L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& W6 l& e8 }& ~+ w6 P H$ _5 ~ Random rd1 = new Random();
' a; L5 N; e& H, a* o int select = rd1.nextInt(goodNumber);
' i* h' Y a1 G6 v9 U+ H* v potentialParterner = potenAgent[select];7 G* J7 E2 T3 {# H- Q* b
value = true;
+ l3 m! e. N, B9 z }3 o/ @9 |: ~( `3 q; Z7 O) W0 w! E
return value;
3 B. p9 \9 d7 j& C& Z9 N0 |2 p }
. P4 b9 {- @+ {- J) }始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|