|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- n: W1 x6 X$ L2 ^& n, u* E private boolean findPotentialPartner(){( o' J+ r* e7 n' V" Z2 @( }
boolean value = false;/ t* J. c F" B6 x! T0 V3 F- g2 @4 [1 P
' I l, [1 H- C4 \6 \+ p/ f- b( ]4 c! t OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
' K5 n* Q7 Z5 I$ D Iterator iterator = grid.getIteratorAt(x, y);4 r2 @# o* v S7 m; ?! s! }& ~) ~( m
SexAgent ag1 = null; 1 J+ @& y, B' w
SexAgent [] potenAgent = new SexAgent[20];
/ c3 X J$ r8 M, b1 @% J int goodNumber = 0;
- p, D! j& A! ?- z1 c while(iterator.hasNext()){& n, l% F* f- h
System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ @0 q7 h: E2 M9 I" e* D) t3 A# s
ag1 = (SexAgent)iterator.next();0 |6 y b! F& p/ o1 [
if((ag1.sex == FEMALE)
, D) X8 X5 w/ ]& L1 p &&(!ag1.isCoupled())){ T, Y3 v& W3 u) n. X% G
System.out.println("YYYYYYYYYYYYYYYYYYYY");
8 T( ~" K, i! a potenAgent[goodNumber] = ag1;
9 k2 l) k3 Q1 M goodNumber ++;
; U* N6 z! E- Y" j }3 ~1 ]- w+ r# x6 Z7 j
}% Y) _" I2 k z4 h( p ?& O/ `
6 T+ Q7 L" l) |' D3 U* U, Y: W4 f
if(goodNumber >0){
0 W5 U. g& V/ S* w" g System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 `5 ?2 D* D) E. \8 D1 Q
Random rd1 = new Random();
, _( u& _ p- M' i) m/ j int select = rd1.nextInt(goodNumber);7 [/ y: C1 K4 V5 Z: Q. p
potentialParterner = potenAgent[select];- e5 K( ~3 d, Y. d) H( Z
value = true;
$ c+ B: K- f' o x( O }/ n' \+ M1 b y* @5 E, J
return value;7 V3 A6 }' O9 d3 T
}* _# v, y2 ^+ l# B, y. ~5 f) g
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|