|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, b% u4 U }1 j/ Q: q3 S( E
private boolean findPotentialPartner(){
\& x7 q! B1 a# u+ ?: t boolean value = false;5 v8 `1 q$ ^1 L
* H( ~. B. m1 ^! { OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 v/ g$ X0 c' |6 E' D1 \' t
Iterator iterator = grid.getIteratorAt(x, y);4 A5 p8 v, e6 w7 U$ @- \
SexAgent ag1 = null; " V4 `. f* t) i1 a& k! y
SexAgent [] potenAgent = new SexAgent[20];3 N8 |. w( Y/ |
int goodNumber = 0;
$ ?% Z. ?# L* A3 G$ p' O8 a while(iterator.hasNext()){
y* t: X& @3 M& U# Y: l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 U, Y% ? K: J ag1 = (SexAgent)iterator.next();' t3 t2 ~) K; a
if((ag1.sex == FEMALE)
9 U& z; J. T' j0 j- I &&(!ag1.isCoupled())){ P4 t: g- e, U1 T# @
System.out.println("YYYYYYYYYYYYYYYYYYYY");& ~0 o: i k. ]
potenAgent[goodNumber] = ag1;
* Q, n ]* K# {. w5 E4 P goodNumber ++;" s. s$ E" Q6 } J( d8 Q. L
}
* ]8 r( L6 p* \! H. @7 ]7 c1 I }" g, c/ r( v' B4 w: h. C( Y1 \ E
4 B3 |2 Y. A* t4 c
if(goodNumber >0){
8 B2 M. M' P& |1 G" N3 B0 O0 F System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- M' [+ z6 K% a A4 y$ k Random rd1 = new Random();, y9 j$ ` d6 M/ Y5 A2 F
int select = rd1.nextInt(goodNumber);
4 f# d+ ^$ ^+ \ potentialParterner = potenAgent[select];$ X1 f3 t' Q" `; m$ V- I/ ]- }" J" f
value = true;
. Z( q2 y. G8 r! f }. l$ [# k4 k0 n$ P! D* b, S' H' ^
return value;. S6 N# _" u' o' F3 \ L- r# \( }
}; m/ P, Q8 K% j, V+ P9 Q" n' R" O, d
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|