|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* Q/ O& S5 Q, |0 ^$ [
private boolean findPotentialPartner(){$ h* V) g% l( q; D7 ^
boolean value = false;
* b" m; F5 L) f 1 W$ M" E: j2 x; v$ d8 h( J. @
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 l: T7 q* u u+ \# U
Iterator iterator = grid.getIteratorAt(x, y);
$ F7 Y; ^0 o& ]( m6 d4 Y- L SexAgent ag1 = null; - J+ g" x1 [* g' v: @
SexAgent [] potenAgent = new SexAgent[20];
0 E4 `7 q& t, V( e) @ int goodNumber = 0;
5 h- m/ K3 c& N while(iterator.hasNext()){+ r% r7 }- g1 F" r
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 }+ ~. B* `# R7 Y0 s ag1 = (SexAgent)iterator.next();- w7 G U" c6 C/ |" O- [4 I
if((ag1.sex == FEMALE)
; \4 ]0 \) U4 k &&(!ag1.isCoupled())){4 c/ w/ h& @3 a: v1 o; S/ S
System.out.println("YYYYYYYYYYYYYYYYYYYY");
# d5 w. I( v: l0 m0 [% r potenAgent[goodNumber] = ag1;) R. ^1 B7 B( {
goodNumber ++;
; R- S0 V; Y0 `6 C }- g+ N! e$ D+ V: t4 z
}
- n8 A8 {7 U0 x- X
0 E4 X6 o- a7 F2 ]" O: R if(goodNumber >0){
7 ^1 @8 X$ E9 p6 j2 [# l System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " J/ q5 |/ |! g9 \- _9 K( I
Random rd1 = new Random();$ G* X! J( e! Z# e- H
int select = rd1.nextInt(goodNumber);
4 R. a( q: v- [* h$ p# d potentialParterner = potenAgent[select];1 J$ U, F: I2 {, S3 {
value = true;9 i+ x0 U+ B# }) v! T* g
}
U( ^0 ~2 M8 s! x return value;
/ N0 W$ ^& f( I/ \' X* O- U }
. m! j$ g$ ?# `3 h2 I$ k始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|