|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 W) N0 Z: o- `* {% y# d4 n private boolean findPotentialPartner(){
! Y R6 ^( [: t. A6 a boolean value = false;7 |( P# j% J/ _" R' [
: @. r4 P# X- _. `! v' q( { G& L
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: R6 e2 _7 c( _9 ^% O9 e Iterator iterator = grid.getIteratorAt(x, y);# T$ G ^7 S2 ^
SexAgent ag1 = null;
0 {5 f" p* ^2 t6 \+ D SexAgent [] potenAgent = new SexAgent[20];
# }/ N9 P I# b: i. ` int goodNumber = 0;/ C; l" ] d; q7 e# Y
while(iterator.hasNext()){" c0 S, |; L- F( y: Q, y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
: V; m, e+ `, B+ x9 v8 ]) C ag1 = (SexAgent)iterator.next();' p7 T# r/ A1 Z2 _7 u# L% C! x# E1 I
if((ag1.sex == FEMALE) - x) T- x( Y3 w8 y! D
&&(!ag1.isCoupled())){0 h; }) o4 b( w6 r# B2 L
System.out.println("YYYYYYYYYYYYYYYYYYYY");' e, K; F9 ]! g2 ^/ l
potenAgent[goodNumber] = ag1;
) w5 g3 i# |, P0 w: J3 a( M" K goodNumber ++;# m# a5 T: e/ S- ~& d$ ?$ w# P- j
}0 F: ]+ y; l2 F% _) I4 K
}3 V8 \) }1 i1 t, G, b0 Y
1 r9 E; Q0 M+ u! }" p+ D if(goodNumber >0){+ E0 b8 x7 X7 X9 m$ n+ _
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) Y( A) T6 ^8 z9 [
Random rd1 = new Random();* g; D3 I' q& U: s2 {; X# |- L
int select = rd1.nextInt(goodNumber);: H$ j N" f* Y0 D# s$ L
potentialParterner = potenAgent[select];
+ B- ~% a/ t% e! v9 |% y3 F value = true;, x. H9 K7 {3 ?
}
. b M( |8 v5 x1 d5 L return value;- p( _. W' j. K( ?$ q8 C. ~+ \, c
}8 E' W5 }0 d& V# E0 F
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|