|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' q4 T: z0 S* k, L# E# C
private boolean findPotentialPartner(){! L( M) @) G" n. Q" A/ Q4 ~
boolean value = false;
8 |1 d( p, U8 w
- O/ {$ u) z" z w, x) D OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 ^! j1 ~+ L$ T: j+ b: i7 p" i Iterator iterator = grid.getIteratorAt(x, y);
; C7 i* x/ Z0 C9 b" ] SexAgent ag1 = null; # M/ _ T0 `+ J5 H8 E
SexAgent [] potenAgent = new SexAgent[20];7 l3 w- O" r1 U! p, h
int goodNumber = 0;
. G0 V* ]( a1 `" [ while(iterator.hasNext()){0 W3 i5 G3 Z% D) m& n3 J4 _& M
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" Z6 q! H% R. D* t ag1 = (SexAgent)iterator.next();
& q) W7 t( T2 {% ]- R, b5 E1 j if((ag1.sex == FEMALE)
- N0 |0 h2 U/ R; ]1 i3 T' P! u2 v &&(!ag1.isCoupled())){1 A: l: v- v0 X/ `0 O$ E
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) A1 z z: j- u/ A5 d+ I+ f# {4 S potenAgent[goodNumber] = ag1;
% \8 T; T! O" | goodNumber ++;
* w7 P6 ^( l- V% ?. t. S( e( n4 _ }% W3 B: n5 N5 s6 [ c
}
6 |7 ~5 E" V0 j, z; ]: c8 q B) @& i5 Y! Q: y5 ]7 k
if(goodNumber >0){! J A8 M4 H [/ L, S
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ r5 R/ Y; y) _$ M4 H Random rd1 = new Random();
+ _$ Z6 ?# W$ O9 x' T int select = rd1.nextInt(goodNumber);+ o2 {) M4 Q$ m2 n. E% o
potentialParterner = potenAgent[select];+ ]9 r1 o6 l2 |7 M& ?& a" ?
value = true;
* Q! g: P5 h: _5 ~( [5 j }6 t! Q+ Q$ M/ z1 f
return value;
8 \, k9 a/ ~. [/ s; r4 L }
, J. |$ ^" h+ v* U% U始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|