|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 ]: X w2 ` X/ X6 C
private boolean findPotentialPartner(){
+ g1 Y: l" t7 G! C( U boolean value = false;
: K# o6 w4 u+ |6 |5 N1 t 4 f7 v& w" k* W$ k; R
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; v& U, a2 ]$ N: N! f* a( S. o
Iterator iterator = grid.getIteratorAt(x, y);4 h. X# {) v% ~8 e& ~0 ~ v: D
SexAgent ag1 = null;
) U3 ^, [6 j' V0 j1 g6 j' o* }; j SexAgent [] potenAgent = new SexAgent[20];% z# R( M3 O) b- @
int goodNumber = 0;" s: g+ Z& x& D1 s
while(iterator.hasNext()){5 m# e+ w0 I" K" C
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( [6 u+ R6 J7 b1 T# I3 }
ag1 = (SexAgent)iterator.next();9 c9 X1 i+ ?7 U
if((ag1.sex == FEMALE) % u6 }* u- M9 Y: X
&&(!ag1.isCoupled())){
7 q* x/ x. x' b System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 T* K' b: k& u) f potenAgent[goodNumber] = ag1;/ K- S) g8 ^4 j( ^# C$ T2 B0 N: s. R% Y, Q
goodNumber ++;3 u" n: @5 E( g- ~; z" D6 Q
}0 q$ D& Z0 Z( Z R
}: w" d! p) r( W+ \$ Y9 ?- U
3 a4 g+ ?- G! y7 J( U b$ L if(goodNumber >0){
! \# Q2 ?$ N% {) P: b) }* k. D9 X System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 @5 B5 M* V& K* ?2 f: M. P Random rd1 = new Random();
( o- Q, ?1 M1 T8 z* _ int select = rd1.nextInt(goodNumber);! k9 c% S7 R' x3 x# `+ q
potentialParterner = potenAgent[select];4 Z, W9 Q/ Y3 r; ~, c3 E
value = true;' H& c/ B! z/ D6 R7 O# ?$ M( o, s
}
' d/ k- u$ f/ G( w6 K return value;, J- G6 K: M5 f! k% i- o8 |
}
3 Z- J1 U' a" _5 f( |5 r! x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|