|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 ^1 a. }0 X0 l9 T( q; _
private boolean findPotentialPartner(){- u* R' B+ ^9 e1 m, \
boolean value = false;$ A9 l' K/ v4 G" C
\- t. t& P! [5 N8 |' Z* b( q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: ?! N# o _$ {9 q# w
Iterator iterator = grid.getIteratorAt(x, y);8 r& I) ~, r2 q+ R/ k6 Z
SexAgent ag1 = null; d; ~- _6 ^7 ]7 `3 i0 b6 h4 m: t
SexAgent [] potenAgent = new SexAgent[20];
. A8 P( h2 c6 ]( r int goodNumber = 0;! g k& g' x2 E" O
while(iterator.hasNext()){
5 ^- i4 i+ ?3 D6 M: n) t) W System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 {$ D: e0 L) h! f- Y9 G" Y8 }' j
ag1 = (SexAgent)iterator.next();
! \* ]- n, Z- w, h* z3 h if((ag1.sex == FEMALE)
- `8 ?" }5 l) v; s2 [ &&(!ag1.isCoupled())){2 k8 U) z: w0 Y. @
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ [" r% W, t* x Q0 Z
potenAgent[goodNumber] = ag1;* N8 `7 k) l- c) D+ i8 [8 x
goodNumber ++;
5 ?1 p& j5 F) p; x9 k6 R& L0 i }1 z, q4 }8 Z+ n$ J
}' n5 G6 f* g3 c F j9 t& P
1 T0 j: H1 a& r$ C0 y$ | if(goodNumber >0){! T$ D( A# |8 q# V) l0 `
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 x3 M+ ~' |" q
Random rd1 = new Random();* E; e8 ?" g" j3 K$ f9 F
int select = rd1.nextInt(goodNumber);- N6 ?1 _3 G4 v* {- ` ]# L
potentialParterner = potenAgent[select];% h# g, j6 E+ Z' J
value = true;
! W( K$ b2 Z% t }
\& {9 F4 r4 o8 R& q return value;
4 N7 R0 T6 U4 _ H }
. @; @; I, }( j始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|