|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。& R4 H9 e; q" C p& a c" f
private boolean findPotentialPartner(){
: v8 r+ Z9 \ Q$ {9 S, o, ^ boolean value = false;
4 ~" z; z/ h: R! I n& b 5 X+ J/ c4 c5 G
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- E3 R$ l! X3 {* M# c( Q# @/ y
Iterator iterator = grid.getIteratorAt(x, y);% S9 O- h0 c. x$ O( V
SexAgent ag1 = null; " C7 v# h5 s0 J, A
SexAgent [] potenAgent = new SexAgent[20];' [0 A' x, m* r
int goodNumber = 0;# }! l6 d/ n6 W: u1 P
while(iterator.hasNext()){
* ~6 q4 N1 U1 Z$ ~2 g9 p4 m0 ` System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 l1 [3 H" \6 C1 _2 r! e# e4 ?& K5 B; I
ag1 = (SexAgent)iterator.next();4 ^1 H) O8 \: D# V0 S& W3 L+ z
if((ag1.sex == FEMALE) % Q' V; l( }: d2 Y; T) u" V6 U' Q
&&(!ag1.isCoupled())){
7 [$ i0 a+ M4 Q. g System.out.println("YYYYYYYYYYYYYYYYYYYY");2 b. y1 m) F) Z9 J
potenAgent[goodNumber] = ag1;
$ i4 `; i1 q3 C: `8 _ goodNumber ++;' t4 k* V* a k
}% S) g4 V# c% }7 G# N& N
}. `, X( p: ~* u# m' m8 b
8 y: W# W* p; I/ b
if(goodNumber >0){, W& U1 M$ E' T, D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 u- u; B5 E1 D8 {/ l" P
Random rd1 = new Random();
5 y8 o, z% P) X7 T! C2 Y" M: T int select = rd1.nextInt(goodNumber);8 ~' h f3 ]( J* P8 Q+ n
potentialParterner = potenAgent[select];) W' v& t$ U+ V; D
value = true;2 l* H& z' M% n) b4 n& V' A6 R
}
h" s6 k, R) v# a return value;8 M3 V5 z# r2 ?7 N4 d
}
/ M- j. K- V8 b/ s1 }8 {& o始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|