|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' j, e+ r, j# k
private boolean findPotentialPartner(){
2 h) ~+ x; F; h( B' |" U boolean value = false;
- a- S7 L% x( T6 v6 Y+ L
9 \$ z- ?+ `' l: N& c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 F, B- X* c0 R+ L* ] Iterator iterator = grid.getIteratorAt(x, y);: F* z& ^/ f( X1 L& b
SexAgent ag1 = null; , h4 q8 P. X- s% s0 v% J6 i
SexAgent [] potenAgent = new SexAgent[20];- j5 `1 c' M( o9 T1 b
int goodNumber = 0;! Q! ^0 {& A, u* F3 U( N2 ?* z
while(iterator.hasNext()){
- ~1 ?4 _- h9 E$ t( r1 I% j8 h3 Y) S System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 L/ ]/ e. {$ M; V0 H7 ^0 T
ag1 = (SexAgent)iterator.next();3 e1 n6 D" q4 n2 j1 j
if((ag1.sex == FEMALE)
x& H: B$ J" h &&(!ag1.isCoupled())){
2 x5 Y) u( a6 {+ |3 e+ u0 P) | System.out.println("YYYYYYYYYYYYYYYYYYYY");' |% y9 X# Q1 Z3 M( `3 I5 F
potenAgent[goodNumber] = ag1;/ G. a' @- B4 q2 g# i& D& N) C! ^
goodNumber ++;8 w/ m' b5 `8 l) i7 t6 @) u# L
}0 t% { v/ I* O0 U8 J& ?
}
$ |- K8 _/ E8 ?$ @- t% ` / x' y2 s0 i0 d! @0 K- q! H
if(goodNumber >0){+ w2 w9 m/ F) q1 W. W' V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 0 O1 t" i" P' ?) |3 [3 T
Random rd1 = new Random();8 h! @& F- N) C+ \' p+ J
int select = rd1.nextInt(goodNumber);0 Q" w8 T4 f% c( d! E' U
potentialParterner = potenAgent[select];" }0 w1 i1 m' a% f, m
value = true;5 s7 g& l( z. l( i4 l( f* x! a
}4 y& o- C0 t. i; } a
return value;
- A. C8 m6 C( f- G- q, Y; { }0 D. q5 o# L% P* T0 j* d. i
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|