|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 ]. N. b& D7 l" N& W: k
private boolean findPotentialPartner(){1 r& L0 q- h: L5 b3 h
boolean value = false;7 K7 T8 p4 P7 g
0 D: @# a. I$ r) I0 n) I+ _% C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* R4 o" g) s! X; L2 h; w7 B
Iterator iterator = grid.getIteratorAt(x, y);& u& Z$ A% q9 ]" v) m g2 b8 \
SexAgent ag1 = null; & J7 K6 A0 D. L9 @) {' [" `. u* E; W2 d
SexAgent [] potenAgent = new SexAgent[20]; ^9 N& O3 P+ A7 J9 n
int goodNumber = 0;- u7 B8 j7 a8 {! O
while(iterator.hasNext()){
- y8 E0 F) O4 c9 l* n# Q System.out.println("XXXXXXXXXXXXXXXXXXXXX"); e |+ s2 x; n# Z0 `% C
ag1 = (SexAgent)iterator.next();
2 @' ~0 u5 ^7 Y- P' @" i0 G if((ag1.sex == FEMALE)
, j* Q+ S4 F! h7 X" W! E' G' } &&(!ag1.isCoupled())){
4 R/ N3 H6 F, ^' ?) y, Z System.out.println("YYYYYYYYYYYYYYYYYYYY");& G4 `+ S7 P w8 @0 v n9 [, m
potenAgent[goodNumber] = ag1;. }- A( Y* `9 w, P/ i+ ^( ~4 y
goodNumber ++;3 n1 A0 g! Q' [, p& h# J+ l
}. _& _2 m; z s* J' C9 y
}9 X3 W% h! _" {9 m8 |
+ Z- F: h' h- @: p8 p( x" h2 ? if(goodNumber >0){+ e$ a$ o$ k( s$ [# ~" G
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - A* y3 G9 C# [( ^$ Y2 ^
Random rd1 = new Random();
: A4 d0 p0 C# ?8 A$ \ int select = rd1.nextInt(goodNumber);
$ j0 K; N2 G. ^5 A' e8 a4 [# O potentialParterner = potenAgent[select];0 l, _) Y c# | M
value = true;; t; }. [) q: G& S& Y- \: `
}$ _6 z5 H @* H3 B; \. H
return value;# h) U# Z' F$ r( S
}$ v. I6 g* F- g! u( G
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|