|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% N. e# c0 Q+ D# J3 j' w# m
private boolean findPotentialPartner(){
- b e6 Z' M8 f2 [/ D boolean value = false;
! ?* |6 R0 K% \* z* `
" z: m: d# x% x' \: v) E OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) q; M3 h" z- v. u; [2 V Iterator iterator = grid.getIteratorAt(x, y);* G5 x. d0 \, [* m2 l7 P
SexAgent ag1 = null; ' X P9 A1 a: J0 K$ ^7 y: D" G: n# ~
SexAgent [] potenAgent = new SexAgent[20];6 _$ c: a/ D) i/ B
int goodNumber = 0;
3 R* k' Z; F) }8 d" f% A, ~ while(iterator.hasNext()){6 u- K3 ?9 `7 ~+ `" s: @! p
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% b+ `5 T- K+ L$ X. O ag1 = (SexAgent)iterator.next();+ h8 ~6 D& E- i8 Q# a
if((ag1.sex == FEMALE)
) g! p r2 N* d* s2 L% O% g/ c &&(!ag1.isCoupled())){
2 ^+ S" u/ g! q3 { System.out.println("YYYYYYYYYYYYYYYYYYYY");
& t' c# Y3 U( `; l8 W* S! y, I2 @ potenAgent[goodNumber] = ag1;
7 d- m) V( f# n! A goodNumber ++;( [; Y: `2 K* ?' d7 U
}
1 W7 h: D. F" o) A, U }0 @2 p5 q3 c) T& g! x( I3 F1 ]. ?
$ Y0 n! P$ W( A
if(goodNumber >0){
* Z: R. p5 T/ j( `+ ?/ O' t: p System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 S8 e2 P' v% m6 k5 c Random rd1 = new Random();
. A# x, y6 @2 z7 ^+ J" ` int select = rd1.nextInt(goodNumber);
( w" d2 k7 }, t potentialParterner = potenAgent[select];" Y0 A9 j' n5 G |+ P& u
value = true;
% x/ y6 l6 i4 h- u- J }
5 F# J/ b; w( T$ _* K. K( I( ~+ o return value;+ | P, l: C6 W, G# @: J% Y% {
}4 ~. ]9 m7 m, I! q0 {' V- [- L
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|