|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( {/ a! y4 l8 \ private boolean findPotentialPartner(){
- q. t3 R v# P& h. c boolean value = false;
1 g$ `# P8 b* K! k1 f
- e6 A9 y& `4 E; V$ J& w1 l/ [ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% Z+ n: p* C1 }2 w
Iterator iterator = grid.getIteratorAt(x, y);6 q. U: T5 r' R4 n' H: W
SexAgent ag1 = null; # q+ U6 y& N( j6 M* O* P( {
SexAgent [] potenAgent = new SexAgent[20];
1 l/ [# ]# m; O8 |3 @* ` int goodNumber = 0;& d5 P) ^3 H w6 h& ` M5 L. Z
while(iterator.hasNext()){% l. `/ f* K3 s$ a; f$ }
System.out.println("XXXXXXXXXXXXXXXXXXXXX");8 D# _9 i; J# a" v
ag1 = (SexAgent)iterator.next();
8 q$ d0 i0 d% k7 Q& ?' @* y if((ag1.sex == FEMALE) & u0 y: z1 d; v5 R% n: k5 Y. q
&&(!ag1.isCoupled())){
- c! i: R0 p0 c1 B! e# Y System.out.println("YYYYYYYYYYYYYYYYYYYY");% ]' \1 b4 R+ r3 ^0 l, C
potenAgent[goodNumber] = ag1;# ^6 V, E3 ?6 E) n7 [* c I
goodNumber ++;& q, D* f" p, s: A& a
}
& Z/ ~& _. i2 n9 j. |$ C }
$ j/ R5 O9 h2 Q- b, S 9 P) g' `! J6 c7 g- P2 [
if(goodNumber >0){
8 H, i$ {1 I3 H n/ H7 k2 o System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ Y: p8 v& f9 X% J$ z Random rd1 = new Random();
& E, W$ f& T2 y( j, U- M int select = rd1.nextInt(goodNumber);- |8 q- [6 S. H/ e; q1 Q
potentialParterner = potenAgent[select];7 |! |, f& a# E3 W0 C/ H
value = true;
) Q" ~. V n1 F4 a }
' H9 g/ I6 j0 Z+ d6 h return value;7 Z; \" o1 D/ l- I
}7 M! a/ K& Z# a* y# s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|