|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 m! p! w R. a3 c
private boolean findPotentialPartner(){, l- s% s5 ^' L# S5 O4 j! s8 R
boolean value = false;
j# X8 k4 |1 Y4 c0 { * h0 B2 u: i' K; H4 L1 V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 z8 L2 d, I; [: M- @8 U$ h% Q- P8 R Iterator iterator = grid.getIteratorAt(x, y);
8 G/ Q3 w+ X# a3 ?3 Z SexAgent ag1 = null; & B/ i* D/ @! Z# I& h
SexAgent [] potenAgent = new SexAgent[20];0 U2 w6 L' X5 A! o
int goodNumber = 0;4 K: b: C' |0 ^1 I* k0 `, X( V( n
while(iterator.hasNext()){$ l: W8 n) @9 }
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 p9 o- t$ e9 v: Y ag1 = (SexAgent)iterator.next();/ B M( e3 s- Y- ~5 T+ L
if((ag1.sex == FEMALE) 5 i+ \2 t7 s' X8 Y' R3 F# V
&&(!ag1.isCoupled())){3 W4 V5 I* Q: j- c8 b
System.out.println("YYYYYYYYYYYYYYYYYYYY");
. P9 C/ Y% ^1 x. Q potenAgent[goodNumber] = ag1;/ V, d4 Y" {# Y
goodNumber ++;9 u7 m8 ?5 X8 Y+ w
}; |& j- N* B% {
}
& Y/ D+ `$ d+ X6 j2 X3 N
3 X7 c5 N( [* ?& l if(goodNumber >0){6 u n' Y' [7 t a0 T( i2 Y0 u
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & G3 O. ?& p4 z6 X# a
Random rd1 = new Random();! P/ A+ a3 U/ z- @9 h
int select = rd1.nextInt(goodNumber); g! D7 b- j1 g8 ^2 \3 a2 j) n
potentialParterner = potenAgent[select];
# r# |* E* g2 W# a. `3 r value = true;
. a. m6 j0 N1 _8 E }
/ z/ _( A, u& c1 G t return value;
8 o) r+ C& s( s8 q4 F+ ~. n }
) Y9 g7 ]! c8 i& ~; L2 q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|