|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% P" e+ s$ b# N7 ~0 t, _2 d: i
private boolean findPotentialPartner(){9 c: C$ o4 x2 ^$ ` A% ?: Z/ u, i
boolean value = false;
- q% R* Q# U6 l; {- ?2 h 3 [8 M$ U O. C) L) p2 }
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" W$ g$ a. \, u ]* I( I' N Iterator iterator = grid.getIteratorAt(x, y);
& d0 r* t& Y- q$ m4 w+ O* S SexAgent ag1 = null; - h7 R" @4 p- a) q. c$ r$ e
SexAgent [] potenAgent = new SexAgent[20];
4 T2 P& x. B1 Y( H0 C int goodNumber = 0;
8 m. P. r0 p# h2 g1 ?' | while(iterator.hasNext()){( T! w/ L3 r. F2 _* s+ W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' ~. w& Y* k. T" c ag1 = (SexAgent)iterator.next();
$ s3 f, @9 z' w4 I if((ag1.sex == FEMALE)
Y v$ o8 G, Z! i8 s &&(!ag1.isCoupled())){+ ^+ @4 }9 {" u/ k; W# a% Y
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& R" E. u8 v: i9 a9 r1 ^ potenAgent[goodNumber] = ag1;/ `, a* N6 o$ @+ @+ u# ?3 P
goodNumber ++;( H: [) f- Y: w9 L. c! f
}
% j. p# F' `' A: w8 W" @* k% x; G7 D- y }
2 k" c2 C2 f- ^ B. k+ C9 u; p% n8 s
if(goodNumber >0){6 W+ K$ N9 q5 K6 o" x; o/ W
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ^9 I- ^# o1 I. _7 r
Random rd1 = new Random();
7 E) S$ [9 ]" V5 f9 | int select = rd1.nextInt(goodNumber);% A5 h8 B4 U7 \. c7 u
potentialParterner = potenAgent[select];
* ]1 P5 K" U5 K8 I# Z! Q0 z value = true;/ o3 J1 d& ?# Q7 x* h5 U- L1 J
}& _! Y# l: s' A x7 z4 T _3 A3 O0 p
return value;5 W3 s) v. \, G. l- l. H B( |% d
}
W+ \, D# T5 |4 [始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|