|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 ]8 N7 `4 ^8 `7 i3 I9 O7 ]# H( \+ i
private boolean findPotentialPartner(){8 ]! w+ p( m: f5 P3 M! w
boolean value = false;
- b8 U) c9 M" j" r' B- ~, g
) y. z9 f) t: Z& x" k) z5 ? OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
$ A4 N0 s% R7 D2 {& b; ? Iterator iterator = grid.getIteratorAt(x, y);; R% o) R2 \# u# `. [ \0 s8 H
SexAgent ag1 = null; ) I1 _9 W& _3 O$ F( M( g1 Z
SexAgent [] potenAgent = new SexAgent[20];- K1 b M! M J; @1 O% N8 G
int goodNumber = 0;- V1 b8 o: ]& e; g( e
while(iterator.hasNext()){
5 V+ y, i( n, Y5 G0 I5 O System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 y! a* D! Z5 t/ ~& r+ z8 n
ag1 = (SexAgent)iterator.next();
7 o6 T& ~3 g- ] if((ag1.sex == FEMALE)
' Q* ]8 h0 N; }* D" G) C3 W( L &&(!ag1.isCoupled())){6 U, Q" `, P ]& C4 ]
System.out.println("YYYYYYYYYYYYYYYYYYYY");
. W$ P' e6 E# H7 c potenAgent[goodNumber] = ag1;0 ^7 m" H7 Z- g- N7 H
goodNumber ++;
* C/ {& D# I2 L# z }% d2 m1 j8 H9 C0 B8 h
}
0 b; ?/ ? d7 F4 K o/ c + c2 ]+ T/ M3 x& T- L& w
if(goodNumber >0){7 i3 i) S2 m0 \6 L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + H8 Z+ J; ]! k) w2 O% l4 C
Random rd1 = new Random();( ^9 L* w- i9 i$ m8 V$ L: Q; c! R
int select = rd1.nextInt(goodNumber);
1 H3 Y! Q7 ] e+ Q6 n5 k7 m potentialParterner = potenAgent[select];& D' d0 B2 j; V& b1 i2 ?- |, n
value = true;
5 @6 }% u' m" U- O9 I, I }
I1 y' ~+ |, v5 U5 J return value;: M) J: Y* f& }, I6 _5 Z3 k6 h* E& f
}* t* g7 |" n7 j t% {! _
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|