|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, U t" M7 i* n; \+ t' p- m
private boolean findPotentialPartner(){# e) M N/ o3 @
boolean value = false;
% x* R; ^1 } i1 b! v% J
# K& w% I/ O! A OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 {. K4 b/ q) K' L$ B Iterator iterator = grid.getIteratorAt(x, y);4 i( L1 g7 L* x h
SexAgent ag1 = null;
) O& S) Z9 F3 l4 ] SexAgent [] potenAgent = new SexAgent[20];5 Z4 o( O* a% Q( r2 ^+ }( q3 Q
int goodNumber = 0;; R/ ^5 }/ A2 x% R* C7 I, V" u
while(iterator.hasNext()){
, ^2 N" `* o, B/ [, Q. u3 W5 T System.out.println("XXXXXXXXXXXXXXXXXXXXX");& O d/ T- y3 L3 S7 P
ag1 = (SexAgent)iterator.next();
' Q6 t( F1 C( g if((ag1.sex == FEMALE) 8 i ?0 ^' Q7 X
&&(!ag1.isCoupled())){& y8 F0 w# P8 @, v
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' y/ ~0 r9 k' Y0 r: I potenAgent[goodNumber] = ag1;
0 c) ?6 k- a9 g: h# m, B2 s goodNumber ++;
, {( F, L( N3 i c1 S9 { }
7 i7 a2 E: a, ]/ h% u5 Z }) R: y5 \$ n7 f7 p; M N2 ^
7 X6 z) @5 x4 \ `
if(goodNumber >0){$ L+ l4 }- F/ g7 r; J
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; }. G) k' J1 d- t; Y3 Q! R; ?- \8 O Random rd1 = new Random();& { l$ x9 t; ]
int select = rd1.nextInt(goodNumber);
L- m7 ]; R2 k3 i9 K& J. S4 D potentialParterner = potenAgent[select];
' b1 U' {4 S" \1 _ H value = true;6 X ^ F6 Z7 A' w% |9 U A
}
* s& _) x: ~' e return value;( A, G1 R3 B- Q! U" e
} w) |+ |. F6 U- _" a7 v
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|