|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
. A2 h4 y; X" Q% Z8 k7 @) B private boolean findPotentialPartner(){
1 _0 X8 k6 E" P) a8 e boolean value = false;
N; ]/ v+ ?- ~5 Y' b: q 7 R6 H( a! j$ {* u2 ~3 W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 S, i' q2 T, k5 B5 K$ T. \ Iterator iterator = grid.getIteratorAt(x, y);
" v1 Q/ }% v4 ^# p1 w9 H SexAgent ag1 = null;
* ~- W0 U3 J4 N& A1 @7 ~* P SexAgent [] potenAgent = new SexAgent[20];
8 Y$ \5 O [; j0 B! a int goodNumber = 0;- m6 t0 S5 {) F' D: A% B# A
while(iterator.hasNext()){8 F. y9 W3 Q! R5 W4 q3 J
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) y! j; H; v. x3 Z7 K/ {, ~ ag1 = (SexAgent)iterator.next();
0 {' N. L% z( U- Q( p6 Y3 q if((ag1.sex == FEMALE) ; w% P/ O7 p: }
&&(!ag1.isCoupled())){# n# i `+ }, M; ^6 a4 ~! }, j# n/ j
System.out.println("YYYYYYYYYYYYYYYYYYYY");- j4 x2 S6 X3 J
potenAgent[goodNumber] = ag1;& N, K ^: x3 Q+ I7 F$ q9 Y
goodNumber ++;
% e! ]: s( L" A0 t' E( l }
3 o8 O8 o6 x5 X+ r1 a0 R' T4 E }
6 x6 d' F3 y/ q3 X8 ?
; L0 g' _& R& D9 G5 ] if(goodNumber >0){, s/ v% Z- f3 e- T+ H
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # G8 Z) `2 M% s. x, @
Random rd1 = new Random();! D" z* a3 \+ c& V* U
int select = rd1.nextInt(goodNumber);9 Q3 G7 ^8 j8 d9 N- Z8 j( s, ^- D
potentialParterner = potenAgent[select];
/ Z$ ]1 O( D- p8 W3 Y4 I value = true;/ F5 }! q5 W+ L/ ?6 s. ?8 Y
}
6 K: `3 c8 l# I6 e' j1 E return value;
. P3 _! ~/ y- O' t8 g }6 s: _. p. _( B) _
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|