|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 x" d* y/ L8 X4 q$ j; g$ S% J+ w private boolean findPotentialPartner(){5 v2 {0 z$ Z) Y. a+ A$ j6 {
boolean value = false; v6 `; a" M# h' V6 y: Y4 A
3 N- e$ L% m/ J! N2 Q( }8 [
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 e9 F3 D% F( g! v' y
Iterator iterator = grid.getIteratorAt(x, y);
1 J* b0 [1 u, d1 ?. [) u1 |& m) N2 O SexAgent ag1 = null; * C' r2 D- i' b: f) @
SexAgent [] potenAgent = new SexAgent[20];
/ m- C5 O8 Z s! h int goodNumber = 0;; S- o% a7 k$ |
while(iterator.hasNext()){
8 U2 W) m# h/ Y$ L: C System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# ^4 {! ~ B3 @: v H6 z ag1 = (SexAgent)iterator.next();
5 d; ~1 W& n' y S if((ag1.sex == FEMALE) ( d3 B* ]) w4 E: n' R0 U, U+ H
&&(!ag1.isCoupled())){2 B; D+ Z+ Z% t! l9 g& w5 f% `8 J
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 D; f# `1 I9 d) B0 n ~ potenAgent[goodNumber] = ag1;
3 j) ?& P q+ [2 s# X0 K goodNumber ++;$ e) W; s3 Y. ]5 D
}
' n) i$ }9 N1 q& T$ w8 i$ L }
) g8 x- a7 ?9 s8 Q: } * ?' f" M- Z) Z) y- V
if(goodNumber >0){* o) f7 [& N1 m
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 i" ]8 D2 P; \. g( o
Random rd1 = new Random();
5 |/ W' A; b/ B int select = rd1.nextInt(goodNumber);
) W- G8 P& F6 t. x( }0 N potentialParterner = potenAgent[select];" `* F, f* u! H: o9 g
value = true;% \8 H9 A5 i. S, ^' A6 t
}
/ `2 {" {& L i2 D! L+ g return value;' `9 n. o' _$ ]- Q8 g
}# J6 r# K; b, @. m) V3 `# i- j
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|