|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。& V" s/ {" d& A. r) |# O
private boolean findPotentialPartner(){
+ D, j1 N7 [4 Z' d- x! g boolean value = false; _# }9 t% `. P% v/ j
/ V2 b! a8 R' j) s/ Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) M% |5 E7 a$ t3 U/ M7 A# E4 a Iterator iterator = grid.getIteratorAt(x, y);
4 Q2 O; K5 J& K+ { SexAgent ag1 = null; $ O) _/ ^! O+ k( f) Y; [
SexAgent [] potenAgent = new SexAgent[20];6 w5 u; j( Y& X) J, H7 T1 s2 a$ [. \
int goodNumber = 0;
8 O! b1 i- B ~' b* n4 S% D+ { while(iterator.hasNext()){/ S( ^' ?, U/ D" E
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( f+ F8 c9 l! t7 Y0 T ag1 = (SexAgent)iterator.next();
8 k6 Y) i: y9 ^2 U if((ag1.sex == FEMALE) 2 b8 Z+ V9 b4 v& C9 b: ] n
&&(!ag1.isCoupled())){3 ]. [$ V3 R; ~) D) ~
System.out.println("YYYYYYYYYYYYYYYYYYYY");- v7 M U* i) F; T
potenAgent[goodNumber] = ag1;" i4 A7 A( L" t4 ]2 K; Z1 |% y) |
goodNumber ++;9 d, }7 L2 }8 C" T) D: \
}$ K- H* A5 U' ]9 y9 }
}' M! Q$ Q$ ~8 ]. F4 ~0 y' B
+ @# ^: _- E+ X/ W if(goodNumber >0){
' B# y, o' A) x3 c% H" O System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( e, B1 b# k# J( f
Random rd1 = new Random();5 Z) ?+ B1 o4 m3 F/ Q
int select = rd1.nextInt(goodNumber);# U6 J1 g1 o7 S3 O$ g: ^
potentialParterner = potenAgent[select];7 {# S6 ^; n, P* F1 x/ b
value = true;1 y% i9 t4 X8 r7 V# F6 E* D. E4 b
}
. t: y; j* B1 }, Y8 q return value;
% z; g- Y/ z9 k }* Z: z3 J3 U2 t
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|