|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。& h4 I D! M1 z& ? F6 L
private boolean findPotentialPartner(){
! k7 | x" d3 g boolean value = false;
7 @7 X# C! u) o5 U
4 x0 C" ~5 o; R8 p! D6 A- A/ K5 z+ g OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: y" {4 U* U2 r2 q- o* w8 W. t
Iterator iterator = grid.getIteratorAt(x, y);& ?9 ^& g: Y4 H6 V( [+ B, e* f
SexAgent ag1 = null; 8 k1 ?& ^) f1 d5 S
SexAgent [] potenAgent = new SexAgent[20];# Z* f* g( ]6 H! R" W
int goodNumber = 0;
2 _' }* G! A$ ?; E$ p/ ~ while(iterator.hasNext()){5 r+ p, i, @/ w. F: X, D, a& x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ i3 D& s9 T5 F$ s* E
ag1 = (SexAgent)iterator.next();
; w9 j1 w J9 V5 @ V7 `: } if((ag1.sex == FEMALE)
1 f- S7 z0 y9 ]5 U6 {5 g &&(!ag1.isCoupled())){
% c6 `% n9 N, p& ~! r$ ~$ M4 O System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 u) Z& Q* _8 b# }% }4 S0 q# s potenAgent[goodNumber] = ag1;
% e* }/ j: t8 v) o# q6 P7 B goodNumber ++;5 L4 D) |5 q+ G o% Z7 n% n
}; B9 z4 x- k5 J- ^* q" y5 g3 D) n8 c" d
}# _# o: Y: f1 ?2 Q
* X5 b6 n! J& Z$ I3 m, U l if(goodNumber >0){
5 E8 }$ m4 P' N5 x0 u System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) @. m; y/ S i% G) {- B
Random rd1 = new Random();$ ~9 u9 f9 S' F4 f% ]
int select = rd1.nextInt(goodNumber);, N, k, Z2 O2 W& k3 |7 T
potentialParterner = potenAgent[select];2 u9 {0 _' S8 b& |% ]! t* A
value = true;
3 R/ g* @. A( R( r! b5 _4 t }. x3 b# t+ A+ {& g
return value;
1 o6 D$ r- ^5 q }1 W$ J! e( G, v2 \
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|