|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
" o* c4 `4 z4 H) V! h private boolean findPotentialPartner(){7 u. X+ c0 Q* S. Z/ C1 r
boolean value = false;9 e; G4 [3 e4 l
2 J4 N$ I4 s/ `
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- [, n4 m& ^( k- E; |
Iterator iterator = grid.getIteratorAt(x, y);
: Z8 u/ \! c' s; k: _6 V$ k SexAgent ag1 = null; 7 S) k" j3 O: @
SexAgent [] potenAgent = new SexAgent[20];
% S, M( f5 k& @ int goodNumber = 0;. Y9 J( k. Z D5 P) {2 u
while(iterator.hasNext()){( g+ O# o$ |2 n% ]4 Q6 \
System.out.println("XXXXXXXXXXXXXXXXXXXXX");% b5 |1 E1 |; A' q0 `# i/ b1 @
ag1 = (SexAgent)iterator.next();3 U! h2 V1 c0 J4 ^
if((ag1.sex == FEMALE) 1 X' }* V+ [1 G1 U
&&(!ag1.isCoupled())){
2 j- O; S9 D$ m! t System.out.println("YYYYYYYYYYYYYYYYYYYY");6 [ e5 Y" Q4 P6 O
potenAgent[goodNumber] = ag1;, w' n7 v& h+ ]7 `. w
goodNumber ++;
: o0 S4 A# m/ f" O& s. i }
& |* M1 K( o. {' v8 j& A$ O8 p }
4 s* n* \8 g3 \% _1 S- X$ `
, v; j9 p. G' S& r if(goodNumber >0){
" K" g9 l& [6 { System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : R# v! E! S/ F: i' C: J! Y3 f1 U
Random rd1 = new Random();
6 ]. _) b' x: P- P" K int select = rd1.nextInt(goodNumber);
. n* @# f2 m4 P potentialParterner = potenAgent[select];
" ]5 s/ F9 [+ n value = true;
! t7 I# J' E. K% X7 r }6 E% b2 g3 Z0 v7 c
return value;% F8 A* s/ y, g! A2 p% _# k2 w
}! @. O0 V1 Q/ U, Z- X
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|