|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; u$ j% d; ]1 b* n' F. b# j$ t private boolean findPotentialPartner(){
2 d; p( Q1 b. H. r boolean value = false;: B2 h$ F+ G0 y9 {6 X: L+ k# a' T
5 j6 S6 q e4 c" U3 R8 T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. E3 i; H; V6 L( a
Iterator iterator = grid.getIteratorAt(x, y);
& r+ A7 ^ p4 {" i, D SexAgent ag1 = null;
, p; T+ E% y% z) O) P SexAgent [] potenAgent = new SexAgent[20];" ~ z# l, c' z* }: x
int goodNumber = 0;. C2 T7 Q7 ~/ E5 b% d+ D& d
while(iterator.hasNext()){
) T8 O1 a. t. \$ U. s System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' P; k1 ^' k0 o; ?5 e' y! ^ ag1 = (SexAgent)iterator.next();
% E( I2 v" z; P- W8 z! R/ Z if((ag1.sex == FEMALE)
) Z9 r% l" v& c &&(!ag1.isCoupled())){
3 w8 O$ L+ g7 d& t/ ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");
; K& k" o) ] p6 X potenAgent[goodNumber] = ag1;
2 o \# K" e9 ]6 k9 N goodNumber ++;
+ e7 w2 \- U) L7 v7 ~& L }
: k4 h- ~. G" Y: D }# T6 r) k5 F1 w S. S) I, T
7 i/ V% _9 D5 e& X1 r; J2 J! b' G3 G if(goodNumber >0){/ A6 ~* w1 g) ]7 O8 E
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! F, T. s, |2 F, v0 M8 w( | Random rd1 = new Random();. [0 ?. g; Y" f: h5 ]2 z
int select = rd1.nextInt(goodNumber);
' A0 D9 O( o2 G- L# h% v, @% l$ ~ potentialParterner = potenAgent[select];
+ @4 y! ~- K# ~0 ^9 n0 s; N% S) { value = true;! d, h6 R4 ?" T
}
9 z. l# r+ R w0 q return value;# F: w7 X/ V1 D
}
( q7 J# ?8 q I3 R4 M, x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|