|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) [% N( a, E* a* Y0 I& |3 x; ? private boolean findPotentialPartner(){
3 G: U6 B$ W0 T/ T* n1 H boolean value = false;. g, ~9 }0 J0 A e. Z/ x
4 g, E, |; r/ }) r, R OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. A4 L# `/ b( N5 O/ z0 @
Iterator iterator = grid.getIteratorAt(x, y);, ]& |. \0 B$ A+ T( e) d$ X
SexAgent ag1 = null; 8 x* m3 ?) H2 L: j2 D! S, W
SexAgent [] potenAgent = new SexAgent[20];& n: l+ l, s5 i: Z2 `
int goodNumber = 0;
% H6 P2 U! Y, S6 h% ^ while(iterator.hasNext()){) p2 p+ j& _2 r: o* c) h
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
f, r, W* z- J$ G5 h* x( t ag1 = (SexAgent)iterator.next();
. [; y% |9 x9 h2 ^& Z: t1 c" D if((ag1.sex == FEMALE) $ n/ z7 b5 M6 p' O! R9 i& M; ?
&&(!ag1.isCoupled())){
2 F0 U0 d9 F2 P n4 M- Q, W System.out.println("YYYYYYYYYYYYYYYYYYYY");
0 l) m& c& B9 v# n# W8 S potenAgent[goodNumber] = ag1;
h9 C: q; C6 `- O goodNumber ++;; P0 D& K6 p. a3 L/ a! u
}: |/ R( N8 g5 ?' x& }2 g: o4 Q+ h
}: w$ z/ e6 L1 v" O
0 F& c5 V! j! j' y: D' N% q1 g if(goodNumber >0){
2 [% Q/ |% |" \- p System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 e9 j, a" q1 x+ ?8 K0 e! C
Random rd1 = new Random();4 @( g, ^: I+ B% u: k
int select = rd1.nextInt(goodNumber);
5 ^0 N. Q9 `% }, | q) H6 H& K potentialParterner = potenAgent[select];
9 R( C/ j" ?9 Z5 N4 w7 I value = true;+ g; Y7 ]3 K" w5 W7 n; G+ N6 y
}! D% y1 K( m, J8 P1 h/ ^0 Z6 o
return value;0 Z/ N; Y- J+ g% ^9 n, ]
}
5 `2 m1 r L5 c! u始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|