|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
h! o8 p6 |6 ?: {0 N3 _; O. V( U" A private boolean findPotentialPartner(){
1 s2 F( W' n" [$ H% C6 i! G boolean value = false;
) ?8 J3 t" J0 Q Z6 X6 G ) E' N |3 |/ D8 r" D4 ^
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% j, r) C) b3 n7 k! t
Iterator iterator = grid.getIteratorAt(x, y);
6 t& j2 C' R$ c+ }/ b7 P2 e' O) \ SexAgent ag1 = null;
* E2 X$ [; q \( P3 ]/ z6 N/ T4 d SexAgent [] potenAgent = new SexAgent[20];# O9 m+ y9 V! ~9 k' h
int goodNumber = 0;
9 C9 k% O% N3 x7 I9 o/ k9 A while(iterator.hasNext()){* k8 w, ?8 S0 ^+ J
System.out.println("XXXXXXXXXXXXXXXXXXXXX");; d" s% ?5 q" R2 T; A% _
ag1 = (SexAgent)iterator.next();
7 y1 s/ ? X* B* u. L$ e if((ag1.sex == FEMALE)
- ~8 [. B# |/ w/ J &&(!ag1.isCoupled())){
& D3 p3 p, N+ Q$ k# s. i% M System.out.println("YYYYYYYYYYYYYYYYYYYY");: N& U5 W9 b9 r7 a; n. ?
potenAgent[goodNumber] = ag1;
' C$ W, l7 i* U+ N goodNumber ++;! A0 B0 O1 i/ |. n) Q
}% G: b1 {: ]6 [- D2 t1 K
}& M% G' X8 {% H
: s1 J' q: R/ @: b
if(goodNumber >0){
7 Z3 v* B+ r2 P1 [! | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 Q% W8 r9 q8 L! s. ?1 {- C- z5 U, H
Random rd1 = new Random();( g# h+ r6 ]3 n3 w# o" J- l' I
int select = rd1.nextInt(goodNumber);( m/ y( c H9 _: L( W7 h3 _
potentialParterner = potenAgent[select];
& u9 H) K: x! e, z4 w$ C; c6 h value = true;
3 b4 ^4 ?/ a( _0 m* [7 u" R+ m! ] }" \+ ?; K. a7 d8 H! w0 D% m* \( R1 r6 @
return value;
& j: T0 w; M/ q) k8 W }
# F$ z. X: E8 D G# I* S8 P/ I始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|