|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 b* N' y4 I6 I& s1 }
private boolean findPotentialPartner(){ Q1 f3 T9 }) _# S7 _: u
boolean value = false;0 V% r3 }/ i4 B+ J$ h% P9 b* c
& H& @$ |) q' r
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 [) n' F W3 V* B4 K0 V
Iterator iterator = grid.getIteratorAt(x, y);, W: u' d( |/ J' Z
SexAgent ag1 = null;
: |' A3 x, @6 _9 g! V0 B SexAgent [] potenAgent = new SexAgent[20];) n8 q+ _5 D1 A0 v, p# I5 a
int goodNumber = 0;) F8 O. \5 E/ a Q# K
while(iterator.hasNext()){
% T% \$ l' C) ? System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ c o1 C" z: x/ K) Z$ h ag1 = (SexAgent)iterator.next();& i4 G M9 B" N3 E% o7 d+ J
if((ag1.sex == FEMALE)
( U, j6 n5 F6 L8 Y2 V8 l$ x &&(!ag1.isCoupled())){# [7 |2 G0 h/ N. s4 |& D
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& f5 Q. H+ H8 e- j potenAgent[goodNumber] = ag1;
' b/ C) x; Z# Y- y goodNumber ++;
* Y) Z2 W5 ]) j. d6 K7 H }
( M: t4 z$ }* o7 O6 t* Q7 e }: E/ g: C1 I. a" p) \# z/ I: l
( E& I3 a! }% F if(goodNumber >0){. L8 M! H7 U) i$ \7 t1 r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) b( l8 C# G- R7 u- H* Q* ?
Random rd1 = new Random();& Y6 q: W7 N& E( a2 |' ]8 S U
int select = rd1.nextInt(goodNumber);
5 W0 S9 Y" u8 {" s potentialParterner = potenAgent[select];
?8 |+ ]' W/ r m* I) C value = true;
5 [; b9 E, n5 a8 l: k+ O }
) {7 Q& C2 ?! G3 r l$ } return value;; I; ?+ n: s9 m8 f( b5 q
}
9 V c3 y; v- y' u5 H8 \始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|