|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! }* a: ]9 J4 s! X0 i) S
private boolean findPotentialPartner(){
/ Q9 A7 J& W h* t* [ boolean value = false;
1 N( ^$ X: @- P! z0 `8 I, c6 @
0 V* M7 h6 p" }* m" m OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! H; y" ]' c# w! x' h Iterator iterator = grid.getIteratorAt(x, y);
' J3 t, o# W( _ ~! N, q SexAgent ag1 = null; ( g- v* g$ o& u( o
SexAgent [] potenAgent = new SexAgent[20];4 N( o$ V" ~5 q
int goodNumber = 0;
4 N$ @6 B$ p. y4 W while(iterator.hasNext()){# ]- y/ A' n A" w, c# z4 D) u
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) d$ s' a1 Y( n) I2 Y9 O9 D
ag1 = (SexAgent)iterator.next();
% s. {! ~/ F% ~- A6 ~* c if((ag1.sex == FEMALE) . }& A: w9 L8 a- M
&&(!ag1.isCoupled())){
8 C( e5 L6 y5 U, e, v' c* f System.out.println("YYYYYYYYYYYYYYYYYYYY");6 @$ `" V! I; ~. u: k
potenAgent[goodNumber] = ag1;
4 K. J- k: U. r goodNumber ++;
; l8 G ]( I$ r2 X }' B4 j8 e( k8 h7 i! K! S* D
}
* \0 y7 b" j5 H7 i# o: t' I
) w8 p2 C9 z3 K4 l0 q if(goodNumber >0){
5 {! T" F/ `& H. u3 \, H! u System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 I5 a' D1 B9 q: H; D& t5 a Random rd1 = new Random();* ~! B/ F! B) M1 f& z
int select = rd1.nextInt(goodNumber);$ C. c/ h2 A# u/ [! h7 q
potentialParterner = potenAgent[select];+ o4 K7 H- H& w! v7 n( D$ ~$ |' j
value = true;" H2 m" U9 P5 t) K7 h
} B$ j1 O3 o% _# P: r$ z6 D* B
return value; a" J! P, T# D) l. B8 j
}
5 @& P" Z( F! n S" M6 D% F始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|