|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* d5 p& g. k0 X7 |
private boolean findPotentialPartner(){
. s [& [& M2 \: n9 f# m boolean value = false;
& T7 j2 G4 F/ ?1 D& d! Q: m " e3 k5 ?7 e; n' C D6 F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: p/ m% _9 P7 L; A) G' f% j
Iterator iterator = grid.getIteratorAt(x, y);
$ F- I: J; U4 X SexAgent ag1 = null; * A/ f" C3 u u9 B& c" g
SexAgent [] potenAgent = new SexAgent[20];
i4 t, e6 ]* k& v+ ~ int goodNumber = 0;* T; \; M) N4 C, S
while(iterator.hasNext()){
3 A9 a1 l* q* z5 y System.out.println("XXXXXXXXXXXXXXXXXXXXX");
- H* f3 x8 I( _2 Q ag1 = (SexAgent)iterator.next();3 c0 b" d8 {- Z: ]7 I1 ~$ l
if((ag1.sex == FEMALE) & D# K& u. B9 c7 S& b
&&(!ag1.isCoupled())){9 Y3 m( T" v( ^4 [- ^) T9 T) W* j
System.out.println("YYYYYYYYYYYYYYYYYYYY");: g8 N: z5 z/ h( D+ P: P, W
potenAgent[goodNumber] = ag1;7 N5 K8 z7 @& `
goodNumber ++;
6 W7 |3 ~6 m4 T: w }" C$ R5 y. ~. G# k+ L# P
}
1 Y$ j0 y, F, m3 L6 t$ Q # E* S. }$ V3 Z3 q4 O9 T
if(goodNumber >0){1 L: q6 u- G Q2 P3 b
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); $ ?4 j! Y7 H5 H: P/ ]9 a! \( A
Random rd1 = new Random();9 d) j# R( |# z; z) j, P
int select = rd1.nextInt(goodNumber);% u0 w5 }! H- T9 o, A
potentialParterner = potenAgent[select];
# b5 X2 V" j+ m- J5 p5 x value = true;! i6 O( z) D+ S* l( @) a
}- t0 c) @. T# B, i" ]0 u. c
return value;
* y' e. B( U4 l6 ^1 A6 O }
- |- s& j$ Y( Y. T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|