|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 J. I9 j n. R+ {, {5 { ~. m
private boolean findPotentialPartner(){' F- s _- R4 Z- L& I) P- Q. q% V& j6 w
boolean value = false;- ]5 m& Y. k8 M- o+ I# q3 O
$ n& Z1 g4 N0 i& p
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 n! |$ e. j! q$ y
Iterator iterator = grid.getIteratorAt(x, y);, R+ u# J; J1 m m. C4 J+ J5 V
SexAgent ag1 = null;
) F' C* i9 E- w( { SexAgent [] potenAgent = new SexAgent[20];, m9 x- s4 N4 L* l
int goodNumber = 0;
& J: Y$ Y) ^$ i2 }" X while(iterator.hasNext()){
0 G) ~: T, T; V. Y; m4 ?8 D System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 J0 Z, J& M }9 D
ag1 = (SexAgent)iterator.next();
! i/ {8 \% B4 A. ~/ T if((ag1.sex == FEMALE) 7 d; N& e1 e7 q6 ] s2 |
&&(!ag1.isCoupled())){
! I! a3 {6 x/ Y4 H! t3 ?8 F System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ x, B, } s' c6 u9 R. C! y% l0 Q potenAgent[goodNumber] = ag1;
/ @2 {& i4 ?; g3 g goodNumber ++;! f: {' k; F& Q3 V
}
' l$ S/ t, b1 ~. @: y, D }/ [) @8 x1 f8 p# z
# i. n# v/ e5 |2 ^+ U' t/ j
if(goodNumber >0){# V5 w+ j. \9 v% D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( ?6 a9 a& C" l3 n
Random rd1 = new Random();/ L; J! f7 ~3 y0 N: \
int select = rd1.nextInt(goodNumber);, E5 y4 E: B( [& `
potentialParterner = potenAgent[select];3 \/ `: I% g5 _* l: Q, ]
value = true;! @5 X8 I. R0 V0 a$ C
}
6 O2 V8 n2 b9 `0 \7 p& M/ s return value;" e, Z) W0 C# y. D' N$ p
} M3 V- m' ~0 G& [( h
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|