|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" N# b$ V6 ~/ f' l3 ^# ~+ a
private boolean findPotentialPartner(){
4 W' Y- W9 `2 T% n4 E/ a6 P1 x boolean value = false;! R9 ?" [& v7 \! t
8 \& D2 ^. F; L7 `: c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 j/ q4 L* `% ?0 G8 x Iterator iterator = grid.getIteratorAt(x, y);% k/ x# Q8 z, ^3 I2 t, i9 a
SexAgent ag1 = null; & Q7 C/ [& S2 g
SexAgent [] potenAgent = new SexAgent[20];
[# D$ [ J- m9 t* { int goodNumber = 0;
6 V# J( C4 ]% ~1 Q" C while(iterator.hasNext()){& M/ U, v8 q% |* k$ ~9 K6 o
System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 @/ W/ L2 l! K3 Q% ^
ag1 = (SexAgent)iterator.next();2 y2 s% g9 |9 N: M- a& N3 Q
if((ag1.sex == FEMALE) ! C) w+ m g5 r
&&(!ag1.isCoupled())){
: {+ S' F% Z8 o2 A, T System.out.println("YYYYYYYYYYYYYYYYYYYY");+ X. T3 r5 x. M9 \( J
potenAgent[goodNumber] = ag1;
, v/ e% w3 V, ?9 {( f goodNumber ++;# A' h4 d' l; w J0 V0 H9 l, l) j: ^
}1 I, N: x Z% I$ o/ m
}
. S0 Z! ^ F$ b: Z
( s2 C: K2 e7 ?; Z( z if(goodNumber >0){ a0 q. o! v( ^( Z5 |0 u
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 Q; d7 t; L( @6 t7 u! H
Random rd1 = new Random();0 E6 Q- R( e0 a& P/ j1 c% T
int select = rd1.nextInt(goodNumber); e- f1 G" X9 H
potentialParterner = potenAgent[select]; [' ?- j6 p- I9 v" `; |
value = true;
* E# y4 A% y+ ^ }7 d: j3 z5 f+ Z* |- J) q
return value;3 W/ y7 f" `* |* M* S7 @5 p
}" \* X( m0 \- D9 z5 x. @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|