|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- k% w) O/ w/ E private boolean findPotentialPartner(){
; V' ?3 c# f' e' W0 \ boolean value = false;; F! c5 |4 M {# z+ _% T1 |
! f9 D) A( K- w: o6 x w* `
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();" ^! C6 x% H" s$ j
Iterator iterator = grid.getIteratorAt(x, y);
& `9 m2 J) M7 W7 z: E: b% j) D SexAgent ag1 = null;
: }4 z8 [9 @3 r2 ]& {0 [ SexAgent [] potenAgent = new SexAgent[20];: l' T$ P- R$ c' q2 h2 {
int goodNumber = 0;
* w0 c$ @6 m# g$ I" [5 m" K5 U while(iterator.hasNext()){
7 n' L$ S( {1 s5 ~. B. m7 E7 e/ | System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ v) N- c& j8 r8 W ag1 = (SexAgent)iterator.next();
& ?5 _" b3 J# S) b8 A* T if((ag1.sex == FEMALE) * C" j! i% w3 Y; M6 }! ~
&&(!ag1.isCoupled())){
. I: J6 T" m" f3 O" U System.out.println("YYYYYYYYYYYYYYYYYYYY");) Z& u9 K( I2 r2 L$ S3 G
potenAgent[goodNumber] = ag1;
2 T' F9 G4 \+ w2 o# L goodNumber ++;
7 x& W( Y1 H9 `: p1 U }& Z: n/ n% U: b7 _3 N
}0 w* t& I8 J1 m8 B/ X; a& K/ r
: T8 X0 R$ ]) [ if(goodNumber >0){
4 S: r7 b' [( F) X7 Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " ? ?1 m7 H$ e# M9 d8 u/ Q' }
Random rd1 = new Random();
8 s& D% |" v3 c3 N: ]4 a3 h2 G int select = rd1.nextInt(goodNumber);$ N( n4 H$ {' A/ |/ G0 I, u! T
potentialParterner = potenAgent[select];
1 U' I( T/ q# f# D/ ^/ x value = true;
2 Q; ?. d' E1 ~0 ]* B/ B }
" P c* \# j, g return value;
. V7 E" C* f8 n+ E( f }2 Y4 e; Q( l3 P
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|