|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 G# {) r( _4 }& \! a+ |) S private boolean findPotentialPartner(){
+ b) M% f) ?7 Y" o+ ^. f, A boolean value = false;; a' Y9 l" x- t; ^# A5 F7 t( @2 \
9 k5 X9 _# A+ h; g; {9 U: O4 d! g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: o1 b8 f* x# \1 z) l
Iterator iterator = grid.getIteratorAt(x, y);
+ w; A, ] h6 ^5 w/ M SexAgent ag1 = null;
( g1 x/ n/ A# Q$ c* w& j$ q5 o$ e SexAgent [] potenAgent = new SexAgent[20];% g& ~- m6 k' |' S
int goodNumber = 0;
4 k% \; d$ r* _9 j R4 |/ P0 ? while(iterator.hasNext()){ Z3 |3 P! g1 L1 ^' L% E8 d
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# G/ f" h# P7 h, v" ]3 @ ag1 = (SexAgent)iterator.next();* E7 Y5 {4 z$ ~* i
if((ag1.sex == FEMALE) ' w0 `! `0 {6 u0 H1 V* A
&&(!ag1.isCoupled())){
* Q% k+ K* W5 g! C- ^: ] System.out.println("YYYYYYYYYYYYYYYYYYYY");
) Y. i* u& \' @- W# J } potenAgent[goodNumber] = ag1;
! G6 l+ P( Z, u. v goodNumber ++;
$ P4 N; {8 M4 M }6 C' M3 D8 b0 g; X( U* X2 M8 d" A- G
}2 P; @* P+ M( K, X
! H) p t3 e+ R. S, U# ]
if(goodNumber >0){6 A& D' E- e8 n$ X( n7 L! n1 K" a
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) d0 q/ u! C- g$ l' a g9 y* q6 D
Random rd1 = new Random();5 h9 a4 ~, I( O& |4 j5 m8 \
int select = rd1.nextInt(goodNumber);
5 t$ U1 Z7 X' Z2 h6 D potentialParterner = potenAgent[select];2 L7 G* d/ P/ D) ?5 N. w
value = true;
) e$ i4 }7 y+ e) Y2 E# b9 B$ r }
7 m/ y' |0 r* p7 ^0 m2 a, ?2 A return value;
9 g t. N8 D% Q: ]; P) y, Q }
3 b! z/ W; h1 M, [" e: _4 W* I5 k1 I始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|