|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 q; q& l2 V5 ^( p0 p1 y
private boolean findPotentialPartner(){+ x# R$ ~% n/ r
boolean value = false;
3 x3 a, z& V" ~3 B# o 2 U5 q! `6 f2 ]7 r1 Y3 r0 |! |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ u% G3 f1 k) E4 O" Q7 Y3 G& c
Iterator iterator = grid.getIteratorAt(x, y);; A! m9 w4 _- R+ N' ]
SexAgent ag1 = null;
$ D4 W1 X( ?6 a6 U0 U SexAgent [] potenAgent = new SexAgent[20];
9 r2 I# ?5 m; ~2 M4 e# y2 e2 |: B int goodNumber = 0;
* a+ o0 q9 L- n2 @' Q7 u while(iterator.hasNext()){
, a0 J+ U9 E5 h1 m$ v6 N `4 ]6 N System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* m5 e$ h2 F% [( Y5 \' y+ G ag1 = (SexAgent)iterator.next();4 K j& I# N9 w g2 p# r; I
if((ag1.sex == FEMALE) 1 j$ F* l1 G+ b4 h) N) E
&&(!ag1.isCoupled())){ S) L! L$ U* h4 S$ Q
System.out.println("YYYYYYYYYYYYYYYYYYYY");
# q; b' B9 f5 c% F5 ` potenAgent[goodNumber] = ag1;
( P2 K# Y" \5 i) O$ \! |" ?; v. T goodNumber ++;
* {$ a% \. o$ t A1 [ j2 ] }
7 C7 X% T1 n1 q! f+ o$ } }: H- @( C9 ~3 m
/ X0 e) |% ]/ l
if(goodNumber >0){
- o4 ]! I( S u& s" e9 b- l1 `9 i System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 a2 H" ^ A/ o, H' T Random rd1 = new Random();0 m; S2 T2 f: a _3 `
int select = rd1.nextInt(goodNumber);
2 N7 X9 S: k$ l5 L+ \0 |4 C potentialParterner = potenAgent[select];
4 v1 x2 P. h6 D7 h% j8 l9 j value = true;' T( h! ^- d5 V7 {" N; l3 [) ]) M
}
( n# n0 \) K& u% R: x return value;( }* i: Z9 L2 i. T% T; }8 p
}
3 C! W5 X4 b1 c& m0 G3 P始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|