|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! ~- {) @- j, [# Q
private boolean findPotentialPartner(){6 z* L( p! E+ O/ a
boolean value = false;
- N& R- D; f3 Y ' K9 o; t/ Z1 @" ?
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
- D x8 [. B, T6 L% H( N" R$ T6 f: w Iterator iterator = grid.getIteratorAt(x, y);
+ y t% A$ F) X5 V0 ~) Y SexAgent ag1 = null; 9 k$ K$ ?$ R1 |
SexAgent [] potenAgent = new SexAgent[20];9 }7 x/ x: A' J% S
int goodNumber = 0;* ?5 b& ~+ r% I A2 W" O( M3 r! L) ^
while(iterator.hasNext()){
- T- _. V c1 E+ x7 z3 J System.out.println("XXXXXXXXXXXXXXXXXXXXX");" M, }; |" ~3 T. x o/ \
ag1 = (SexAgent)iterator.next();) A7 Y: y8 f/ v9 B! Q
if((ag1.sex == FEMALE) ( u% H3 @; X, Y7 ?/ c' m0 I/ q
&&(!ag1.isCoupled())){$ g9 {% i) P+ B) K
System.out.println("YYYYYYYYYYYYYYYYYYYY");( e% ]( a8 U6 o0 ]0 R. j' s
potenAgent[goodNumber] = ag1;
; E1 F% F5 ^5 h7 g' {/ F goodNumber ++;
: ]- E) \ d5 ?7 E6 @4 G# P5 H }: i6 {0 w* G, e
}
0 I1 ]$ T5 u0 Q! z+ k ; J. K; ^5 m: w4 G2 l7 \$ \$ v3 k
if(goodNumber >0){
% b5 B, T- ~) c8 L0 q System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( |: F5 |: S V# ^ K, G, G Random rd1 = new Random();
( ?" L0 r6 d) O5 j; P# H1 ^ int select = rd1.nextInt(goodNumber);; { r4 r& z4 A* y# R7 ^+ |# d% }& i
potentialParterner = potenAgent[select];& ^, F9 g8 [5 s% p' y7 M
value = true;; j9 s7 ^, x, t6 k3 r8 M% |/ Z
}
9 e0 Q% y2 L: j8 q s return value;
4 e8 p4 n6 _) t1 ]( S3 Z7 Y6 s$ @ }& i% N, [( y! e
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|