|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; e# Q% ^* K& L6 a+ J4 X& v
private boolean findPotentialPartner(){% Y$ J+ V) O% o) j, h+ b
boolean value = false;/ `3 y0 F) O$ f' o3 U
4 Y$ ^) w2 X: j% C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ I! ~$ M. q, Q0 } u X; G Iterator iterator = grid.getIteratorAt(x, y);
; `+ f! ]- d6 w0 t e; N0 b4 n SexAgent ag1 = null;
, \ J2 r) s9 d( J' {% I: k& w0 s. k SexAgent [] potenAgent = new SexAgent[20];
8 ]6 W# h7 p6 b: W" |& t int goodNumber = 0;" \3 F G; e& s4 a) r0 \
while(iterator.hasNext()){7 E7 R% K0 Z ~# _9 p7 t
System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 J/ M4 E7 n; ~1 D" r5 v
ag1 = (SexAgent)iterator.next();2 v* ^+ P) u% O% p; f. U4 f2 f
if((ag1.sex == FEMALE)
: h" [# @+ O1 Q/ K2 E &&(!ag1.isCoupled())){+ Q3 T8 X& `7 h9 k( ~& N$ |
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' d: {$ n" P# [7 ?. {/ {6 G& b% l potenAgent[goodNumber] = ag1;& C: L$ q. O, y7 d8 G9 T0 r- w
goodNumber ++;
5 j& v" T) G, i+ r }
. W3 |# F5 o6 H* z" g/ R( G* [, t# a1 E }* g: ] \8 M3 C
?4 J c8 J% ` A
if(goodNumber >0){
5 e0 b* P6 A5 \+ Y1 @ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 M1 |8 d( q. O1 Z: X, U( e& |
Random rd1 = new Random();% e& T* x$ K( q$ w
int select = rd1.nextInt(goodNumber);
. f! S8 {, j( H+ z5 G potentialParterner = potenAgent[select];9 r g! L/ j/ \2 ~# J+ u6 d
value = true;
3 [; K/ I# Y1 o& o9 e6 a: Q8 X }
7 u( i( ~, k% ?6 {6 \2 T return value;
5 t9 `6 \& @' c+ F }* a5 O. t5 H# i% C
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|