|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 A7 Q( k1 G! ?0 O4 p! a private boolean findPotentialPartner(){
1 o g5 E" `; i& Q9 l: n boolean value = false;
& y9 U1 C! U9 M/ E( V8 I L" ` 5 G7 Z3 G/ `! x& r* a4 q. u% q: T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* |3 g# z# p" x2 I- n
Iterator iterator = grid.getIteratorAt(x, y);
# a* F/ q) o& w+ _. o4 n6 X) ` SexAgent ag1 = null; 1 I- v+ e/ w5 q. t
SexAgent [] potenAgent = new SexAgent[20];8 f4 z$ t2 T' r/ n. o2 r
int goodNumber = 0;+ Q' w2 x* g& T6 A. w1 N, j
while(iterator.hasNext()){$ {! _9 Q- u2 E' V$ ~! a/ q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 C& s9 U9 w2 ~ ag1 = (SexAgent)iterator.next();
: a% q; N) N% \$ o: B( e% v. E+ t, _9 U if((ag1.sex == FEMALE) 3 ^: Q7 Q9 D" Y& H6 Q, e8 M! ^
&&(!ag1.isCoupled())){( e; d3 V/ ^8 H# g8 H2 D! Z9 q' E
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' i. r) L4 y( p potenAgent[goodNumber] = ag1;4 |+ f- |4 y% R0 _9 M
goodNumber ++;
. @5 l N( n: n }1 O4 T: k+ ?# q9 {. G
}! T1 r& K( r/ u/ ^6 F. P; |
( W; p0 z4 k0 e9 s
if(goodNumber >0){4 |1 |9 N& k/ Y% i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
8 z+ `% U6 N9 `# @+ I; x Random rd1 = new Random();
$ n9 W$ c w) D4 k4 Q) z' Y int select = rd1.nextInt(goodNumber);) w2 U. M# z0 A! ]
potentialParterner = potenAgent[select];9 ]2 @' i# u( o: `5 B3 |
value = true;
9 N0 i& H1 a6 T4 `; H }
# Z( u0 p" A) x; h0 s return value;, ^2 _+ p' ?" T$ a1 O# I
}' ^1 n) @4 V* o9 a# e
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|