|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 O0 v; P9 q" v" ] private boolean findPotentialPartner(){
( o& {& ]3 z; X9 z# b, J boolean value = false;0 H1 A O8 S' o" u
8 C- c! r! Y9 l2 w/ _
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! v. x; ?/ ^; \9 L
Iterator iterator = grid.getIteratorAt(x, y);- Q1 X2 O4 O7 q1 Q& N) U
SexAgent ag1 = null; : J7 {4 Y& P$ `3 l% Y S _
SexAgent [] potenAgent = new SexAgent[20];4 ^% F" V6 a2 i1 y1 o! Z9 E% {, [+ w
int goodNumber = 0;0 s- [/ w0 |( o" a/ G) X& U+ V: u
while(iterator.hasNext()){/ x* c. u) I' k8 x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* E' j2 U# ~- J0 Q) t ag1 = (SexAgent)iterator.next();% D4 f& H7 M* I
if((ag1.sex == FEMALE)
, c8 m6 s3 e% K7 k7 w2 l &&(!ag1.isCoupled())){
2 V3 {8 V+ L# G0 ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");
& J- t& P; h0 V/ X# H9 @ potenAgent[goodNumber] = ag1;
6 O5 H9 F: u0 d- i goodNumber ++;" z& d/ Q$ M0 \& L. v8 \: L% ]
}
5 U* _1 G5 d4 U }- }* Y' p" K s8 t. z
! r! G1 ^" G: E& n" c if(goodNumber >0){
) m9 W( a; x. [/ E System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& j% A: C' o. C Random rd1 = new Random();
+ a! x' l- ]5 ~5 i# \& m) r int select = rd1.nextInt(goodNumber);
2 F8 {2 B" \. |7 M potentialParterner = potenAgent[select];
3 X, m3 J+ P/ V5 ?$ Z value = true;
" a a( t3 m1 R7 [ }5 ?5 O# ]8 S# d& ~
return value;! b* {0 e1 ?4 P
}
; v7 V) H- l, x; u5 x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|