|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 r/ A0 b. R$ e0 g8 @
private boolean findPotentialPartner(){2 B' q8 K; ~. ^$ ]. s
boolean value = false;
% l S8 U4 m& O0 W; D$ ^
$ f N! D# {$ N& s! s OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# F* B6 j7 ?% H( r% j- E. l/ d, B7 R7 u
Iterator iterator = grid.getIteratorAt(x, y);
7 Y: g: z4 b9 h+ M SexAgent ag1 = null;
% g: R. c4 X$ l+ I2 i SexAgent [] potenAgent = new SexAgent[20];
$ U( Z- L2 v2 Y" Z" Y" y- E" z int goodNumber = 0;
1 H4 A4 Z y, u/ N3 w while(iterator.hasNext()){
8 K' |1 v; K1 ~& f System.out.println("XXXXXXXXXXXXXXXXXXXXX");- l* h/ d# e" n( n6 S
ag1 = (SexAgent)iterator.next(); r }" N* g" @ A) V
if((ag1.sex == FEMALE) " ]6 M8 e1 c0 w* b4 A! Q C7 Q8 c
&&(!ag1.isCoupled())){& R u! C% u. W
System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ e! v3 p# t) {& v' V6 q% d potenAgent[goodNumber] = ag1;
6 l6 R1 Z+ q8 t5 ?6 V n goodNumber ++;
- m9 q1 f* i2 B- n* g2 W0 u }6 J# f4 M# t5 W
}3 s- O( J9 {; f! f6 j$ `& \/ R) N
: k- J/ q1 E9 ] H# @* Y6 _; s9 l if(goodNumber >0){
8 W6 Z$ ~7 b2 J+ W, J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); / r% c+ V& P2 Z6 w$ \
Random rd1 = new Random();* z* J. d5 ^* Y- ]) U
int select = rd1.nextInt(goodNumber);
3 I" A* \/ H/ G3 P potentialParterner = potenAgent[select];4 g$ @" a, V% c5 K7 R
value = true;4 K# G" G9 n; x' ]$ e" g( f/ K
}
3 P8 a B0 p8 E: P! Z+ y1 b& A return value;
9 w: d$ W5 b/ B/ d }
' K5 m6 N$ A+ x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|