|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
6 a- s1 ^# a$ p/ g% P private boolean findPotentialPartner(){
5 Q) R! ?' P* ~8 H+ n7 o8 Z: T1 A9 _+ s2 | boolean value = false;7 W2 }$ X( A+ a$ s
( L+ v7 ~$ }. r& F+ F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' L0 |) e3 _; v) U( l; g
Iterator iterator = grid.getIteratorAt(x, y);( C+ B _! ?% C& b) t6 f1 {1 d
SexAgent ag1 = null; - X: q9 W) K: ^6 O; o4 K% E5 j
SexAgent [] potenAgent = new SexAgent[20];. F5 f7 l, V8 G
int goodNumber = 0;3 i6 V0 {) t3 ?# h* j6 x4 j3 h a( D$ z
while(iterator.hasNext()){$ Q5 Y# s6 l% A) N8 \; ~6 P
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 |7 r& j! t; e" T G3 t3 g ag1 = (SexAgent)iterator.next();+ m {7 R- |% c
if((ag1.sex == FEMALE) 3 J k$ N8 r* _, O
&&(!ag1.isCoupled())){( t# {/ O. N$ t, D6 M
System.out.println("YYYYYYYYYYYYYYYYYYYY");
6 O9 t9 s# b# {& o5 e1 _0 _* Z potenAgent[goodNumber] = ag1;3 q; {. s2 W7 O
goodNumber ++;
4 U$ a U: {2 k7 u) o+ t/ D" `+ I# H }: J9 o+ o# q' ]' ` [( j
}
- ]$ V2 ^. k# Q$ C( H& n7 ] / B$ `) P1 g$ }, l3 u" G
if(goodNumber >0){
- D) `5 _5 E) I5 Q( ~# v; D2 Z: w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
p, Y3 L: ]% z4 M9 S9 n Random rd1 = new Random();& y# q) p1 L7 U J) j4 }8 C1 ]1 o
int select = rd1.nextInt(goodNumber);
$ f+ t, o& z3 {% K* h potentialParterner = potenAgent[select];+ `2 N" I* \4 q; E% k
value = true;1 d' r, ~5 V( X8 g! I- G2 L5 _
}
, A& F" f6 B1 H- X% f r* y/ d5 \ return value;" z c- E: P ?! `: s1 f8 K* O0 |
}( \0 v* f% q6 f9 W7 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|