|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* Y1 R9 x5 \7 ?, i, y% A( j. W
private boolean findPotentialPartner(){
5 \8 J5 L# O3 d( {# w( p boolean value = false;* W) w. v5 t; y" L) `% |6 f2 R
5 ^' k# ~) I" e; a/ D
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 F& o" ]* V% u+ G- D" n$ J0 L1 I Iterator iterator = grid.getIteratorAt(x, y);
% ~0 j/ N6 ]8 n- d! f SexAgent ag1 = null;
. H. i% K% ?" ~ z/ ] SexAgent [] potenAgent = new SexAgent[20];
9 ?3 I; V7 q9 k: Z) X: J int goodNumber = 0;+ u5 G* C' B$ f+ [
while(iterator.hasNext()){& A- C% h3 C9 k. E
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ m1 s9 F1 {3 P1 ]
ag1 = (SexAgent)iterator.next();
/ d2 U5 i" }- E& @* R' L$ Q5 p if((ag1.sex == FEMALE)
0 J( A8 W: y: h+ U &&(!ag1.isCoupled())){
. E4 x5 m! V0 V- m. V: f System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 x/ k6 ?. ]; s* i/ [ potenAgent[goodNumber] = ag1;
" L0 N, y5 _6 j# Y3 P0 b goodNumber ++;) x% W, F- o7 a- ]% C
}
( m! Z$ p- E0 k7 c# ?) Z4 a1 T }
' N( K* Z a+ R/ d, r% R G6 i. z! P8 b% W$ K
if(goodNumber >0){
/ W3 T1 R/ s) t; O2 V System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 V$ q- _: d6 W# P$ l' ?9 `( c Random rd1 = new Random();, {! O1 _, {: i( G' e% R: T$ i
int select = rd1.nextInt(goodNumber);% K+ o- e% c0 j+ U5 d& D. r: @
potentialParterner = potenAgent[select]; V1 o6 e4 B ~7 E
value = true; x1 [% h& }- O0 v2 W
}6 V# G) [5 [1 I* u/ Y% S7 V* z# v p
return value;
3 s2 x1 H9 }. k; t }. @, z7 s6 J. R$ V
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|