|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; C: E/ l9 b8 R8 X, x# {+ |
private boolean findPotentialPartner(){% h+ f8 M6 q4 G u5 Y, Y
boolean value = false;" t3 w. X7 }9 @- k% k; \
4 H1 K0 H3 K8 N OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
& T# X1 K( k9 a. K/ Y Iterator iterator = grid.getIteratorAt(x, y);8 O; u& J4 _' b* r) ?( q. K
SexAgent ag1 = null;
3 F# l6 L/ Q: W- d4 R SexAgent [] potenAgent = new SexAgent[20];4 e3 g" U' f1 a) F
int goodNumber = 0;
* \( _/ e# b! K7 o while(iterator.hasNext()){/ M' G4 B( h: P C2 Y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ ^0 h9 F3 s, b( [) M
ag1 = (SexAgent)iterator.next();
+ T4 \. @. S# u$ j8 l if((ag1.sex == FEMALE) , ^) g; F* j2 N) f. ]: i- m
&&(!ag1.isCoupled())){6 o' m |. v$ R, T" ]+ ?. L
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 w9 K( G) n+ W8 o% W% P9 _ potenAgent[goodNumber] = ag1;0 `2 b$ ^) Q& C
goodNumber ++;# Z2 u: j* u- h s% ~6 j V9 G
}5 O+ m# [- U) w% F6 S- Q
}
' c j* ]2 |' s7 j7 U
+ [4 N/ N+ m! H* S# | if(goodNumber >0){ V$ D' P% Q* L: u
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) @/ G, {$ z1 S$ P+ N5 t1 r1 {" L Random rd1 = new Random();3 e& p5 C6 W- i
int select = rd1.nextInt(goodNumber);
$ X7 P& z5 E6 ^" Q# w potentialParterner = potenAgent[select];
7 `" w5 \5 u: \" b value = true;! a& D1 |+ N0 z6 l: D ]( s
}
/ j( t% g. ^, I+ C+ h) F return value;& p6 _* ` w+ J! j/ j
}' b4 E/ o, K0 H, ]$ X4 c* `3 D
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|