|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: a* U$ d+ s/ V! B private boolean findPotentialPartner(){3 D, _# l* U' f" |
boolean value = false;
% H* J+ E1 j" ?9 p0 c
: z9 I8 F9 W! R1 S: u5 w8 v OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); t; @( w; z1 E# C: ^: G
Iterator iterator = grid.getIteratorAt(x, y);* v1 M) Y7 @7 a% ^3 J, m' o1 ]! U
SexAgent ag1 = null; / @! K9 @( |' Q, r. a
SexAgent [] potenAgent = new SexAgent[20];. n# d4 k3 }3 V3 S3 c
int goodNumber = 0;3 O/ @' k8 E" Y# K; h8 G
while(iterator.hasNext()){
) n8 i6 s1 e- G! r System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% t( _2 u+ I, q ag1 = (SexAgent)iterator.next();) W0 H4 m0 Z4 [2 C! q4 R( }
if((ag1.sex == FEMALE) 7 ~* W2 m" `+ [& R! [
&&(!ag1.isCoupled())){6 V2 c/ p9 m2 T! m; d
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ j: Q( _4 ~- H+ f2 D! x
potenAgent[goodNumber] = ag1;
$ g8 j( F" }$ j" _& j goodNumber ++;
) m+ h0 I( t R' Q& U+ P }
9 L7 P! H+ z7 K$ u( m' h }- n, d, } _6 H7 U" y7 {, f( t1 k/ z# M
$ k4 ^& U1 {. F- N7 ^" u2 Y
if(goodNumber >0){0 x7 e& J) C6 C1 J( ^7 Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% Z/ x7 B7 ?( }" d Random rd1 = new Random();
# T/ G1 k" ^$ X% p9 U int select = rd1.nextInt(goodNumber);
- p- J0 [% j0 r. Z8 b4 @* s potentialParterner = potenAgent[select];; @; N: _" m3 N4 k* _! A6 S# I1 ^
value = true;
4 D( N0 G$ u4 z; O) A z }! Q4 r3 O+ i; i/ M0 l
return value;
b0 T# V. K: T. l* c }
+ ^# y; k" V$ x% V, W& ~% d7 w始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|