|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
& l, b' q6 v- {. Q+ k6 I' U* T private boolean findPotentialPartner(){
! T5 H6 K+ ~5 X boolean value = false; b; j1 k) Q4 R! K
) ^9 I3 g) g7 c o H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 Y+ e2 l% r: G8 ~# a& |6 A: U
Iterator iterator = grid.getIteratorAt(x, y);
; [5 D% { }! @- y! [; r$ }& m SexAgent ag1 = null;
! ^- m6 ?: ?. v7 A8 q/ x7 m SexAgent [] potenAgent = new SexAgent[20];
* b0 U- [. `# ^; w* T/ D int goodNumber = 0;, H, c4 F6 x# ^3 F$ T9 h, o" ~
while(iterator.hasNext()){
6 B+ x0 ?2 m0 ^8 g, V8 i& K System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 c0 z7 c" X+ g) L7 m: S ag1 = (SexAgent)iterator.next();- p$ d1 N/ B# l
if((ag1.sex == FEMALE)
k7 D, ^8 v' L7 b Z &&(!ag1.isCoupled())){
1 Y; p: x! H, ?7 a" |* T& _# h* d System.out.println("YYYYYYYYYYYYYYYYYYYY");0 O5 b. H* t" u- ?0 c
potenAgent[goodNumber] = ag1;
% b- c( {: |3 o6 k I1 [$ d goodNumber ++;1 x- O9 V/ B" g4 A5 T
}9 u9 k) A, C4 K- O+ D$ ]( N
}
* f9 p" Z2 H' J6 T* d9 F ; j1 I$ [6 K. g& A
if(goodNumber >0){: m9 } }6 ?! L. j
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & L: |/ C, n: E$ t3 `: O! U7 t* |
Random rd1 = new Random();
( i4 r1 e. n& M int select = rd1.nextInt(goodNumber);( \! J# ]9 d4 I/ i
potentialParterner = potenAgent[select];" Q4 A3 R( t& I& x! e
value = true;
9 k) j3 Q7 \' |# C) w( g2 u }7 \8 q) L! x1 M1 J
return value;
, J. E2 h% j1 E7 P7 G, M% u2 M M }
- V( d& c: w6 g8 r始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|