|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
3 n. x7 T) i, Z7 { private boolean findPotentialPartner(){% |, R" M+ O% n5 U- o2 |
boolean value = false;
* V9 a& L4 p; |) u, b/ ~ + U8 e) Z; k5 Q! g9 l: c
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 {' Y {$ G G4 n Iterator iterator = grid.getIteratorAt(x, y);
# r! x( P9 O" V9 f SexAgent ag1 = null;
+ E+ i; U- T2 t. d$ T1 C SexAgent [] potenAgent = new SexAgent[20];! o5 l& L" ~5 I% G( w! z" e
int goodNumber = 0;+ H7 v1 e0 x( b; u+ A% D" V
while(iterator.hasNext()){. \+ n% Z0 j2 e1 ~
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 T# J! _' Q, i+ Z# l1 }- i
ag1 = (SexAgent)iterator.next();
2 p' o! z' |; ~) H. B" K if((ag1.sex == FEMALE)
8 E |- U3 V, n &&(!ag1.isCoupled())){
2 `, M" ~: { ~! ^- z; [" g System.out.println("YYYYYYYYYYYYYYYYYYYY");; S7 ]2 W# q& S$ S, [0 @* r
potenAgent[goodNumber] = ag1;
5 h$ |* l# y) \: w7 R0 a goodNumber ++;
; a) n7 s% f: H' p }0 ^, M% S3 Y Z) v
}
! s b4 W7 @* J$ l# T2 s
5 i ?9 F5 K! [ if(goodNumber >0){3 Z& |$ d" B7 |
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * m( t/ _5 K! w. P. _$ m" H
Random rd1 = new Random();
4 A# \0 Y3 I- r% \9 h* _3 V int select = rd1.nextInt(goodNumber);0 h. H/ k. c7 g
potentialParterner = potenAgent[select];
Q0 C! I3 w- Y/ o- i4 W! T value = true;8 G+ m+ Z/ K1 a0 W5 N
}
6 t$ A- ^" C. B% y) M) ?( v7 s return value;' z7 W' {$ y% S8 {. r( y" i" J
}, E8 x0 g+ j2 {& @1 r
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|