|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* o$ g4 @- c4 F/ X y private boolean findPotentialPartner(){& u7 {. Q- E. ^7 U a
boolean value = false;
+ y2 g) A- H# Y A 9 }( O+ c! `0 @& l1 i
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* A6 \+ c' ^# I. s' s
Iterator iterator = grid.getIteratorAt(x, y);
8 _ V& J( T' H+ a1 {9 ~ SexAgent ag1 = null;
8 D1 d# X5 T. a9 C* `# l7 d SexAgent [] potenAgent = new SexAgent[20];3 M+ i9 w# F2 c1 S9 f$ i8 ]4 h
int goodNumber = 0;
: e! G$ ]/ e+ P* Q+ S( N while(iterator.hasNext()){, O; C4 V* l$ C2 N
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 `: a3 a/ ?% y! Q) p- e
ag1 = (SexAgent)iterator.next();( o1 P* d4 w1 @( @9 O
if((ag1.sex == FEMALE) , _# X% h0 I% l, S
&&(!ag1.isCoupled())){& V2 a& w9 N7 |9 g
System.out.println("YYYYYYYYYYYYYYYYYYYY");9 z3 l0 }/ z* x' p) |& o
potenAgent[goodNumber] = ag1;) s) `4 M, ?0 s3 A: ]. ?, m, C
goodNumber ++;- Y9 i/ Z) n& R: V# b
}
! J! p1 h& A4 H# d1 s% [ }
$ J( E* J1 \, R& A: \ 4 E5 B6 H* i' u( p. p
if(goodNumber >0){
" j6 ~1 {6 j: {( T9 e* J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 S2 y8 [' Z& z" K Random rd1 = new Random();6 l" G# t5 L, L, K5 z( I) ~3 n
int select = rd1.nextInt(goodNumber);8 x& O+ W. P; r, a8 a* {% {9 g
potentialParterner = potenAgent[select];
+ Y/ |( W$ l! z value = true;
; G; Z/ d/ E5 X4 g; M }
( B8 f. b- D' v! R, K9 C return value;
( N e$ q( j7 X7 x6 j8 g }
! Q- w- a+ W0 U% I; D始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|