|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* z6 p# e6 U8 ]1 O% M/ w8 D private boolean findPotentialPartner(){+ S1 x/ `# Q- l4 V; ~% W2 J7 d! d
boolean value = false; [# K7 n7 j% D( {' o7 l: {
7 [& W$ g9 |% v! A OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) d0 f) P9 B/ z% n2 A0 ]
Iterator iterator = grid.getIteratorAt(x, y);2 O4 ~, p( k5 F% Y, D' x! l
SexAgent ag1 = null;
8 l/ a1 A1 h9 X! ] SexAgent [] potenAgent = new SexAgent[20];$ R8 ]& [7 Y+ G2 L8 ]* x U
int goodNumber = 0;: V; E0 y, e% T
while(iterator.hasNext()){( Y3 B- k7 p$ b: A I; c
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# n, F+ m: I& n6 @+ m0 | e ag1 = (SexAgent)iterator.next();' O* y$ a, S! p+ K" t! R
if((ag1.sex == FEMALE) 5 d% P* K4 ?7 @5 o& a
&&(!ag1.isCoupled())){% Z; u) I5 ]. H' W- l$ b/ N
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ m5 J b8 z4 ^7 K1 y+ E( l- @
potenAgent[goodNumber] = ag1;7 y4 X. m0 y) H# v9 r8 x; O
goodNumber ++;
' I$ A) ]( K, l( S1 N" ? }- T6 T& t) n! `' O9 {/ @
}, P$ L* t! u% N, E/ r, k
C3 \( a. e- f. J3 y3 O3 J+ g if(goodNumber >0){
e* |. x- h$ {/ n" t System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
, h* \" n! G5 c3 l$ E Random rd1 = new Random();
( r, {( v- H8 N int select = rd1.nextInt(goodNumber);
; F2 T2 P5 ?# y6 T potentialParterner = potenAgent[select];
. F+ E2 O: B a; {; | value = true;7 C- v. a6 o$ [
}6 w* B$ n4 m" F1 a7 X& ^0 z) k
return value;
8 {8 E" j# z: F' t1 q* u }
. e4 ~8 G- U. K4 j: T9 S始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|