|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, P) Z+ i$ _* h+ v* | private boolean findPotentialPartner(){
2 n4 Z2 Y8 Z) a9 r- p) r% u& R boolean value = false;
6 M, }+ e% B* w0 G9 m/ A
c$ U) Z- j' O OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 X0 c8 J' a$ g& |' ? Iterator iterator = grid.getIteratorAt(x, y);
$ p7 h# U4 M% O# T0 _9 k+ h SexAgent ag1 = null;
% h1 j, A8 |4 w5 s( r4 \ SexAgent [] potenAgent = new SexAgent[20];
" \9 O8 `2 ~0 M2 J int goodNumber = 0;
0 H+ s% Z0 n4 p$ |1 P while(iterator.hasNext()){6 y) G1 u5 M; T% x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");& ~1 O: h! {! ?* J- D
ag1 = (SexAgent)iterator.next();: z, `$ a6 D& R: _# S5 ~
if((ag1.sex == FEMALE) 2 q) U. I# u' e
&&(!ag1.isCoupled())){
) S1 ]6 s8 A+ z, p; s9 Q System.out.println("YYYYYYYYYYYYYYYYYYYY");2 S4 @ k7 E! p* v5 _
potenAgent[goodNumber] = ag1;
5 _2 i% v3 g; M5 g goodNumber ++;
. `* L( G$ i" M' K }
" ~/ P y* R/ ` }/ k; g& |, ^( O9 Z: A
I, i/ x$ W4 `4 O, w1 |, h if(goodNumber >0){
: `. z/ z! m a8 n- ` System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% i" b; X# s" i) E. T& \! ^ Random rd1 = new Random();3 X8 S7 e4 z( i1 f) r
int select = rd1.nextInt(goodNumber);. Q. q2 v$ p7 s* r1 C2 p M
potentialParterner = potenAgent[select];' B/ ]5 ]/ v( G; Q( ~
value = true;8 z# _, s( ~& b& V; V4 B6 d* K3 O
}0 B6 b% N4 M5 J6 m! L
return value;# N& y' K( j* J) E- k P- w% y
}
# q. T; F& [" Q2 V2 D$ I: x, j始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|