|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* h0 {- A8 D6 d1 b1 D
private boolean findPotentialPartner(){* W5 C- B# i0 U+ B
boolean value = false;
' B$ Z r, u1 q! u ~# z8 Z % b) o- L+ r) Z! \6 h
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 Z! ^" Y: R# l( Y$ w& h Iterator iterator = grid.getIteratorAt(x, y);
. p1 ~5 @% k( W SexAgent ag1 = null; $ m: d# D# A& @: c8 k
SexAgent [] potenAgent = new SexAgent[20];! w3 j8 S& e6 Y/ }) n
int goodNumber = 0; {% D- @# l$ s+ |6 ~# `2 Z- y
while(iterator.hasNext()){
y% s; n2 O) E2 n. A, a X System.out.println("XXXXXXXXXXXXXXXXXXXXX");" T4 Y' N3 w4 Q: ~: D6 Y/ q( M
ag1 = (SexAgent)iterator.next();! @! }* ?2 a4 v1 k, E8 \" j
if((ag1.sex == FEMALE) / c. \1 \4 P! L( y" |/ q L$ V
&&(!ag1.isCoupled())){
+ k2 h' l1 i" Q. I% n2 p System.out.println("YYYYYYYYYYYYYYYYYYYY");
, F! I) w1 k8 g2 z- }9 @ potenAgent[goodNumber] = ag1;
& l* V% L t# N+ ?) y6 a7 A. j goodNumber ++;
* v, x4 o1 \2 S* B* N2 Z5 k }' o* v+ x. S3 E1 F" i* R
}$ M2 S0 ^! N$ c" u
D/ F( h* P, r
if(goodNumber >0){
! ~! [3 ?8 _6 p5 K& p' x3 j- L1 L- c- f System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! W9 E8 v! a" n1 G$ x/ N Random rd1 = new Random();8 v; h K& O( c: {# Y8 H! w
int select = rd1.nextInt(goodNumber);
0 T! o5 l. H. H% b7 Q* a potentialParterner = potenAgent[select];
, T; W' W: a( m& X" W" ~ value = true;
. W% r/ D$ Y' l, g( v( I8 N! Z }
( |) o! I& c. R0 A) ^2 u) } return value;8 v: B1 T6 |5 H& G) q4 p
}" v# s. f9 I! A6 l
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|