|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. d' w( p. {2 Q) f$ Y4 u) F2 v
private boolean findPotentialPartner(){) d" X! u: ]# t
boolean value = false;9 T' s1 R( a. _. H- d3 ?+ a
: ?, Z6 i$ l* j) c8 e. Y7 G
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ \# J* r+ ?: h! Y' g
Iterator iterator = grid.getIteratorAt(x, y);; z6 p/ C2 k+ X7 q" a6 Q
SexAgent ag1 = null; 3 F. W: _' O4 d: U7 K
SexAgent [] potenAgent = new SexAgent[20];) w+ _5 h& A: {7 h9 W* v k z
int goodNumber = 0;
Q1 @+ k2 Z% N8 P, `. H while(iterator.hasNext()){! N7 Y% H5 N p
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 y* [0 |8 i- _! n: _; u ag1 = (SexAgent)iterator.next();
# l% W v: w9 Y, y4 e$ z if((ag1.sex == FEMALE) " e" c3 `! r$ l
&&(!ag1.isCoupled())){
2 Q$ d+ N9 U. A1 E" p0 O2 h5 w System.out.println("YYYYYYYYYYYYYYYYYYYY");$ ^( V% Q% \/ F, o) }/ A6 s- Q
potenAgent[goodNumber] = ag1;
8 Y+ ?! p6 N# K goodNumber ++;. |5 ]" O y$ X) V" \3 y9 p/ \
}3 u2 J5 u8 \* H9 Q; U( i3 \0 l
}8 [% t7 |; T0 t4 L, }
+ B" [& h4 [! G9 [
if(goodNumber >0){
9 y0 \1 t6 v; e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); . C+ d1 t% k3 D
Random rd1 = new Random();5 W" j3 M9 p5 o! M7 ?; X* S
int select = rd1.nextInt(goodNumber);* i, z F6 y1 P8 W4 c: Q: ]
potentialParterner = potenAgent[select];! Q$ G) ` [$ \$ r7 y$ i- [5 B
value = true;: m: Z; x, @, n& @' o& ^* u X
}& P- ~* N4 t B9 T3 f; I# \# }' l4 k
return value;
7 b& v% m2 A% Y7 @, D. ]2 Q }
$ u' C- s9 d) ?( Y4 C# G6 F; t" X5 \& a始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|