|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- h2 z& d4 p- F8 X6 [5 J7 r# h private boolean findPotentialPartner(){3 [7 d1 p" A' ?6 h& p
boolean value = false;2 z) e! a' ], D' r
, H5 \+ W/ B$ z" Q. {0 m. o
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 A, {# p v. D( |5 L1 K0 C
Iterator iterator = grid.getIteratorAt(x, y);
0 k. J: L: m1 H) @0 F SexAgent ag1 = null;
- z. Y. g( U% A2 x SexAgent [] potenAgent = new SexAgent[20];
) f. `. V' q, q5 V/ c) g- s int goodNumber = 0;
6 V6 _1 e1 a) \3 ?- ? while(iterator.hasNext()){) @# K7 S/ E; T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ z6 L6 }5 T" [8 y+ E# y( b ag1 = (SexAgent)iterator.next();
: G% [2 N! f& h/ o' A: ? if((ag1.sex == FEMALE)
0 F# b1 F B6 h8 f &&(!ag1.isCoupled())){
. Z7 p/ O$ n8 q# u8 X+ N System.out.println("YYYYYYYYYYYYYYYYYYYY");8 W) C" }- n r1 h ?6 l
potenAgent[goodNumber] = ag1;* D. y; D0 j4 {8 O$ m1 `# u2 F- a
goodNumber ++;
# `. {" @% R$ _, n+ O }* d, F# U/ J! V+ h
}/ d: @: p' O" u/ J6 E/ ?$ R# R
) m! w7 [" O0 L if(goodNumber >0){
) p, i( G7 G/ z* S7 ]* q System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 \$ ]3 l& W0 _0 B; l' `( P1 ~+ {
Random rd1 = new Random();
' n0 e7 F9 t% w int select = rd1.nextInt(goodNumber);
8 U9 O' \8 M; [( \- Z potentialParterner = potenAgent[select];2 H' ], x4 ]( p: r
value = true;
. x0 J8 e; S& T4 M }
: R6 b( [1 Z4 x W0 a return value;
) s2 o# C/ E* U# A8 t }
+ F8 Y5 m7 v3 ~. [- M* ]1 y* N! K始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|