|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" m y6 @2 d8 q* [+ m Z
private boolean findPotentialPartner(){
! B, W5 w- I0 L boolean value = false;
9 @+ W& ^& {$ g' D/ F
" \: f* n7 \: ?" s( ?. C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. B+ B; h% ^' E" R6 J' F8 R
Iterator iterator = grid.getIteratorAt(x, y);
* j" Y: n0 U# o# `( Q SexAgent ag1 = null; . C! S8 U/ Y$ ~" a; V9 R
SexAgent [] potenAgent = new SexAgent[20];
/ v M$ S; m# R& }3 d0 B int goodNumber = 0;0 K6 Q- ^- W) X- Z4 E3 A0 U( ]
while(iterator.hasNext()){
- _3 I0 S- j; k6 M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 h- j$ q4 l4 |8 K ag1 = (SexAgent)iterator.next();
& ?6 O y C! s9 j& L6 i( k" Y7 ? h if((ag1.sex == FEMALE)
* ^% }$ a$ k. A; ~! Z &&(!ag1.isCoupled())){" P# r- f6 m$ G8 K
System.out.println("YYYYYYYYYYYYYYYYYYYY");3 e, e6 f$ @* }/ W
potenAgent[goodNumber] = ag1;
& H, I R. K7 I* @ goodNumber ++;
: a8 R. Z' K; ?4 d }
' L% d# h8 c0 B* n1 }6 w, U }
8 A) V1 z% K- K3 R# M 0 K9 s8 e8 H1 z! V8 T% q# r
if(goodNumber >0){$ W$ B1 G2 l+ ?
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
" L1 d- t1 T" {9 k; h8 Y Random rd1 = new Random();
2 ^' {8 T% G' d4 P int select = rd1.nextInt(goodNumber);
. H# A/ v' N( ^+ V* h: Z R potentialParterner = potenAgent[select];; I2 G K7 E K+ a r1 r C/ R
value = true;) c1 C! G, y; P% h
}( F/ h" v0 ~0 ]6 |4 E$ g) U
return value;% v( s6 L: U; @/ O5 ?7 O
}/ b) y* ?7 g+ o% H$ h
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|