|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( ^& S8 ^) H S B' P. i d& z
private boolean findPotentialPartner(){
8 ^3 w) v- E" F* H' D1 a9 E boolean value = false;
1 [' q F) Z7 I5 @# q 3 y6 ] l1 }* u8 v
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 p7 E/ e2 t7 I9 a7 g Iterator iterator = grid.getIteratorAt(x, y);4 _/ x. D0 n" b: m5 |) K
SexAgent ag1 = null;
9 u2 ]6 _+ v' n6 R" @$ M SexAgent [] potenAgent = new SexAgent[20];
1 [+ n; U d/ D5 z& y8 i2 @, s int goodNumber = 0;
: a+ Q; W/ g1 c1 J) v; @ while(iterator.hasNext()){) e, z" @1 T( D( I" N: Y. M" }
System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 H; J9 C: j4 j o
ag1 = (SexAgent)iterator.next();' g6 v4 M. p6 \$ v3 s
if((ag1.sex == FEMALE)
+ G: {2 a* ?' N! b7 L# m8 G9 O% y &&(!ag1.isCoupled())){
) Q) T" R/ r' P9 M; f System.out.println("YYYYYYYYYYYYYYYYYYYY");
! [. L1 e' w. C' d; z) K$ Y& n potenAgent[goodNumber] = ag1;9 s; p2 L' Q+ F4 F5 I) T
goodNumber ++;
4 b. i, ^! Z$ r }; I! s+ f8 q O. E) Y/ C
}
( O0 ?6 `' N$ x/ |4 | t ; c. s @. _. r- @- o! k# I& r {
if(goodNumber >0){/ w- L6 G) x' W% }) a- A1 b
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; f. X* e& F8 R7 v0 Q" y Random rd1 = new Random();
& |8 ?9 z& ]* v int select = rd1.nextInt(goodNumber);
2 ?9 X' J+ w/ ?4 Q7 a* ]* F potentialParterner = potenAgent[select];5 k5 ]. z* L, ]% O4 c _8 V; G7 O- p, q
value = true;' e- j! L' F1 x' w N; K u. R
}
2 L1 O) }3 @( i* P/ s% O8 G, ~ return value;' r8 A: n, I+ x7 E" A4 @8 g, A1 x
}' a9 Z, I! V1 |3 @' I( E" {7 s. E7 V4 J
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|