|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 F8 Q# {4 w+ K/ G; F, w
private boolean findPotentialPartner(){' d4 p$ ]$ O# M, V. ]
boolean value = false;9 j: p' y: s8 N( f* [3 Y
% B) H" F* [/ @' S& p4 x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) v K: u! }0 _# y% K4 q Iterator iterator = grid.getIteratorAt(x, y);
' G K( B! h1 j5 ? SexAgent ag1 = null;
' ` s' x' b9 u SexAgent [] potenAgent = new SexAgent[20];
) z: l, n4 L. S6 `" l int goodNumber = 0;
6 }% ]- J& H0 |9 x while(iterator.hasNext()){$ d1 n; F" l' u/ o
System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 |+ [0 _$ v+ U) `" d8 U
ag1 = (SexAgent)iterator.next();
- p5 @2 s# ~. m( j3 Z( h/ T if((ag1.sex == FEMALE) 9 E2 c; ^+ t5 P% i4 T8 x
&&(!ag1.isCoupled())){: k: t* ^0 Y7 ~
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 D( T, d. L4 s' {# X) y! \$ W% Y potenAgent[goodNumber] = ag1;, h% u3 F& V" \2 v
goodNumber ++;
9 A, L2 _/ Y& q3 ^) h# k }
* u+ K) f G. H. C }& k( `4 a' H! j$ d2 d Y+ A' k
5 X& a$ z1 `( i. X
if(goodNumber >0){" u N' V- |$ A$ Y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ^8 F) k1 @, M4 o( u
Random rd1 = new Random();
, [9 G2 o. Q9 |. s7 Q int select = rd1.nextInt(goodNumber);) S2 c0 O5 |; @' H7 s& J+ `
potentialParterner = potenAgent[select];
: d; \5 n4 p* C, o ] value = true;: R5 v7 H9 l6 n- w, t, x o i, T
}
/ |% U* n0 ?1 j1 \4 ~# U4 l: L5 X return value;. B- S& r: W, J+ {1 a
}
1 B4 `0 z. H( w; I; F4 u% `5 p* L始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|