|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 \# |. F* H# C! [$ H( j K) u
private boolean findPotentialPartner(){4 L0 Q5 k, Q, T* n7 d7 s9 d+ M
boolean value = false;( e* }0 w/ C! U2 z: Q( f
" A T. z4 `3 z* M: T, u OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( j, a% l1 R: ]0 `% p1 w! a3 ]
Iterator iterator = grid.getIteratorAt(x, y);4 O4 C- N) i% r+ {& @
SexAgent ag1 = null;
& L7 y7 E( v: k SexAgent [] potenAgent = new SexAgent[20];
- S1 c5 j1 s8 k int goodNumber = 0;) v" D1 c8 c! n. k6 [
while(iterator.hasNext()){8 U2 `0 d& W6 U6 S/ w
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 t7 }" K* R% B
ag1 = (SexAgent)iterator.next();$ T* D: |0 P. G8 g$ u- E
if((ag1.sex == FEMALE)
% g9 A% s1 ^6 n; K! Y0 i8 ^ &&(!ag1.isCoupled())){
3 ^, X6 w; g i1 ^# B- ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");: s3 J9 ~- n2 T/ S3 N6 T* P
potenAgent[goodNumber] = ag1;. g8 J S' N3 `* k7 o$ u
goodNumber ++;9 N! C6 J" S" R' f
}
[+ P2 ~( }3 n6 I1 P0 { }- L+ r. N' U3 S& H
$ |: I, ]! s* w3 \" D9 q1 d
if(goodNumber >0){
* f# T- g5 a& y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) B; M& o) h0 u7 c- d, E4 p Random rd1 = new Random();6 J9 W/ q7 j; Z
int select = rd1.nextInt(goodNumber);
1 f$ r- v1 y3 N9 |* N& `; x6 e) s+ U potentialParterner = potenAgent[select];/ O3 q2 K. u: C% X8 k
value = true;# |+ R, X B# G: G
}7 X; U! J1 ~2 z+ ~0 O `4 P' V) b
return value;, d% f6 V- N( f
}
; Z4 k e ?- v3 ?/ J/ S8 s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|