|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 p* ^ B2 W( i1 O. d- K2 A. \8 q private boolean findPotentialPartner(){
& D: Y8 V: i4 Y$ O7 w+ k7 L9 \0 U/ P boolean value = false;! q' s$ K, a) P8 `; I1 A4 h
/ @% V, ]5 A) F' u/ v- P OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 p# T3 F0 b0 n. F" w$ l
Iterator iterator = grid.getIteratorAt(x, y);
9 n9 m6 g$ ~) w SexAgent ag1 = null; 9 H! v+ _: z1 s
SexAgent [] potenAgent = new SexAgent[20]; f$ t; Q8 U, v! f
int goodNumber = 0;
1 n$ _- T0 f% k2 f2 }1 L while(iterator.hasNext()){
3 s X% J) L m& e' }5 N System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 u& D* B+ `2 Y0 |' K5 e2 G
ag1 = (SexAgent)iterator.next();
5 I @$ L3 R/ P5 b if((ag1.sex == FEMALE) * p2 I, x( I2 [0 H) B
&&(!ag1.isCoupled())){
* C5 k6 u. _+ ]( T System.out.println("YYYYYYYYYYYYYYYYYYYY");: e9 U% R( s8 R/ h3 e
potenAgent[goodNumber] = ag1;) M8 O: f! s. U/ i# g
goodNumber ++;
/ z N. y! W& J5 r; n ?7 k }5 J. B$ c7 K2 X" ]- U! y: a v
}8 @& S0 B {2 G5 J
/ q) m6 m$ I& D
if(goodNumber >0){
8 Q3 g$ I- P, s* a+ o; _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 V% D& w$ N- j$ c$ e9 ?
Random rd1 = new Random();9 |7 Z+ T, O, U0 e! h/ _: \
int select = rd1.nextInt(goodNumber);) t+ w+ h* v+ _. b. G3 y
potentialParterner = potenAgent[select];
- Q" m. u0 ~, W; y5 v1 x value = true;/ ~+ H5 k9 _) A# j3 t
}2 t( g( o4 y# M. F; A
return value;/ Z' W( c7 V* n8 w7 ?
}
3 G- \7 X+ Z/ [+ d2 w始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|