|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" Y$ a0 F, A" D0 l. T$ o& d/ m; D
private boolean findPotentialPartner(){
2 N; V/ A/ q4 S boolean value = false;/ i6 s3 O2 N9 L3 K8 g
( H& b3 T' n2 k- X
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: G1 [" s" K- C9 g A# p! _
Iterator iterator = grid.getIteratorAt(x, y);
4 P' O2 k5 r# `- E% c SexAgent ag1 = null;
0 V: W$ D0 ]; E* ^4 y SexAgent [] potenAgent = new SexAgent[20];
$ i. t/ D- f" @& V int goodNumber = 0;
7 l; I2 h% J! Q, o7 \4 v+ b while(iterator.hasNext()){6 e# F1 }) u, r/ `- ]- j
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
- ~- c+ D" f# u, ?8 q ag1 = (SexAgent)iterator.next();1 ]9 l# U& B2 @
if((ag1.sex == FEMALE)
: E( X5 N5 x9 n1 V &&(!ag1.isCoupled())){7 ~) A4 [: T, o9 Y) t l
System.out.println("YYYYYYYYYYYYYYYYYYYY");4 V$ N' F* S( ]2 y/ m+ M
potenAgent[goodNumber] = ag1;$ n: O+ ~) a; G
goodNumber ++;: F B$ n; i; M
}
- |# d& k- w. Y4 \7 v6 V% H }* N* }: {* k: r$ s
/ L' |7 X( x- ?% S
if(goodNumber >0){
/ P# p" P+ z1 o8 u8 B' @6 n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 a K& j5 O" |9 w6 h8 R' i% y3 g+ j
Random rd1 = new Random();
# B2 w6 O. g8 {& @8 @ int select = rd1.nextInt(goodNumber);! F0 B E7 e5 C7 x9 n8 N8 M# d
potentialParterner = potenAgent[select];
! o- z2 e/ c# R% s5 [8 G value = true;
5 V6 m2 {5 c0 K1 j, Y9 N }
& P- M' m. g9 k3 S3 E) k& k return value;5 h( @8 `, E/ P; k8 l9 h! s( c
}
$ G& g) @: @+ q+ e8 `7 K) o# U& p始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|