|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: [3 G- L; f4 f, j8 B( f! _7 O
private boolean findPotentialPartner(){
- C3 z5 y0 ]6 M* g7 z boolean value = false;
; [6 ~) l% e6 C, z6 v3 O$ e1 l / X9 _8 G9 N% G6 c
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 _1 W! z* N1 q$ Q Iterator iterator = grid.getIteratorAt(x, y);
$ Z3 ?7 K5 l1 M) t" W8 ]2 Q4 t SexAgent ag1 = null;
4 w4 [- D* { C6 w8 U' w9 y8 J* e: k SexAgent [] potenAgent = new SexAgent[20];( e( b* w/ U. E2 o. h) p/ P
int goodNumber = 0;/ @# F( Q4 P% X
while(iterator.hasNext()){, C& @' r. u* `6 R1 S. A, y8 }
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
! n0 } V0 k7 }; T ag1 = (SexAgent)iterator.next();, i4 A: T: B* t6 C0 F" O$ P
if((ag1.sex == FEMALE) 2 [ c& |$ i3 S: I7 t
&&(!ag1.isCoupled())){0 P6 a; \/ v8 j1 Z1 Y5 {' u
System.out.println("YYYYYYYYYYYYYYYYYYYY");. ?# v" O) y8 ]! c4 |
potenAgent[goodNumber] = ag1;2 J/ p h5 Z; m. ` y
goodNumber ++;3 Q' ?& r2 S+ ]1 w
}
1 P0 q4 M) P9 H: _! Z) r; X }/ G" y" c7 M8 T- b
1 U) F( ^) k% I9 |) @5 h8 ` q5 } if(goodNumber >0){$ @9 h6 x* J; {3 v
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + |- ]/ p+ _( f+ q& g# a" d' w
Random rd1 = new Random();
8 _7 Q1 T/ C' r5 I2 }" R) a* O int select = rd1.nextInt(goodNumber);1 C$ t$ }- ~0 n" U4 a
potentialParterner = potenAgent[select];
$ I" L9 W" K9 ]+ w, _ value = true;
# O2 P/ O V8 @' u }
; C, ~) s6 X! p, s; K+ S return value;5 A( `0 |" p# J$ Q
}- l. X ?# k- E( c) D% s' B( y# j
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|