|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 V1 ]9 m- m8 ?. S
private boolean findPotentialPartner(){: w7 L \9 M x' ~
boolean value = false;
* O! g. x# P/ U, F' j1 Q6 `
& R9 |8 \6 t( j8 d8 u+ } OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 [5 g5 @/ S; A
Iterator iterator = grid.getIteratorAt(x, y);
; ?8 u) O' K: z* N& o SexAgent ag1 = null; 3 K4 d2 x" r8 u2 y0 G/ v
SexAgent [] potenAgent = new SexAgent[20];" |9 n. I3 f! @5 i
int goodNumber = 0;
! a2 v. l# j5 X4 R, V R' h" z while(iterator.hasNext()){
" b+ s+ i5 \, A, W# K/ x System.out.println("XXXXXXXXXXXXXXXXXXXXX");! u& E& g( b. c |# m! f
ag1 = (SexAgent)iterator.next();
. r& s1 F2 n# i' } if((ag1.sex == FEMALE)
# i' _9 k( t6 G2 L &&(!ag1.isCoupled())){3 f% R- v3 [. g2 `! [
System.out.println("YYYYYYYYYYYYYYYYYYYY");
3 R+ Y6 M( }1 L potenAgent[goodNumber] = ag1;
' n3 g9 S; d+ u) X/ P- H2 C goodNumber ++;, M- T/ M# ` |5 N( C
}5 `; |( b3 k7 }0 D8 e( m
}
j. k4 M, S a- B! k5 o
B. \# S/ T1 H4 F$ `# J4 S if(goodNumber >0){( H% Q% h* k4 s" `- H9 L6 q0 u1 t
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& M: O% N# w# e* q8 Y' n) r' N8 T8 L Random rd1 = new Random();4 Z8 @4 f+ @! ?/ L& r
int select = rd1.nextInt(goodNumber);2 b: ^- S) O) v+ C" o
potentialParterner = potenAgent[select];0 Z8 Z' a! U/ T) @$ g
value = true;; ]' v* o3 \( G. y& `1 R
}: J: U& E4 U; l" f) C# {" t) ^( a, @
return value;
3 h2 s; c, E$ ]. ]. B3 c4 V }- n1 ^% ]# s2 I8 I9 C
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|