|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 t1 X$ P8 A/ V, a8 `' ]9 }
private boolean findPotentialPartner(){
& y; \ F5 r- Q! ~* @ M4 g boolean value = false;
" o( ~' d5 s ] - ~, o8 F) G. X; d9 A: ?. h) [6 X4 F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ s- o$ p* E- q5 N1 x6 Z Iterator iterator = grid.getIteratorAt(x, y);
6 o8 U8 K3 v, O% ^. P SexAgent ag1 = null;
, ^8 ^8 ?* q& t; [3 v SexAgent [] potenAgent = new SexAgent[20];: e; ^ U& M7 K6 z+ X9 N
int goodNumber = 0;
1 F% f' t* s& Y2 |6 l0 R$ Q. Y9 }# A while(iterator.hasNext()){1 ~! x0 i# d! u; G8 z- ?" `+ u: t7 C8 W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");- @+ a4 Z4 a: d: K9 l" l
ag1 = (SexAgent)iterator.next();
6 u$ K5 ~; E; I9 { if((ag1.sex == FEMALE) : B! c; m1 m5 m* A( J# d& n
&&(!ag1.isCoupled())){
w5 \, b( G1 s3 @8 z( Y4 t( r" I* o3 { System.out.println("YYYYYYYYYYYYYYYYYYYY");$ H: K: W8 }5 y1 X9 U$ v
potenAgent[goodNumber] = ag1;5 P2 o' x7 {" V: _& @2 E& e. W4 F
goodNumber ++;
$ L. K# r; c/ E$ f }
2 s! P0 {/ ]! V1 Z }* d- W7 O8 x& K
$ k/ {. h/ X' t* Q8 Q7 Q
if(goodNumber >0){. U' }/ S2 ~$ z9 F
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 L& ^% ]/ R4 I: J/ Q
Random rd1 = new Random();: p3 ^) T3 \" |3 G2 T( r
int select = rd1.nextInt(goodNumber);0 u$ Q+ D0 B* J* ~3 h% t2 I- w
potentialParterner = potenAgent[select];
- q% x& I# g5 S7 z+ e1 _- u value = true;7 Q" K# I8 U2 f6 Z3 v" d& P
}
7 Q) N, i7 F) l) E8 b8 ? return value;
( m# q4 p( O+ \ }6 y$ w' s1 V( w
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|