|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- {5 Z% c1 }6 O; B- O& R private boolean findPotentialPartner(){( j6 O3 x/ b% V7 T! P
boolean value = false;
4 t: Q4 b( V% @- c
/ A# q+ i0 f7 Y5 A$ C5 G0 H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: V6 |4 _& A, ?; `$ V( a Iterator iterator = grid.getIteratorAt(x, y);
* D, i u( ^% n2 y/ O& S8 j- y$ ? SexAgent ag1 = null;
7 }) k6 r' D5 C# u1 e- W" ^0 U4 @9 k SexAgent [] potenAgent = new SexAgent[20];. @( M4 |8 e% x; f* V
int goodNumber = 0;
2 Z$ N r+ f; c& T0 d5 M0 G+ M while(iterator.hasNext()){
% |, _) |' R! g a8 y9 V System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ w9 E ^/ B4 Z5 _# t( s
ag1 = (SexAgent)iterator.next();
/ ]5 k) h( B7 h5 L7 ^) @* U" w if((ag1.sex == FEMALE)
, u1 c$ [; B0 t8 D# q- V X- J &&(!ag1.isCoupled())){
- S! o/ F: @" l4 i% L9 X0 X System.out.println("YYYYYYYYYYYYYYYYYYYY");' U4 D" [6 I7 ^7 c9 b
potenAgent[goodNumber] = ag1;$ T; S% C7 L- }7 V
goodNumber ++;
. r% y" H; z" [0 {. c# T( x1 i }
6 I' V0 M' e9 c+ v+ x }
I- d0 r! e, }; z ; \0 h. G1 p' Q
if(goodNumber >0){+ p9 D: c4 e6 ~1 t
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 o6 [6 B0 |+ R/ ^. \' g5 r
Random rd1 = new Random();
* y+ f/ |3 \, t0 ~" m) O int select = rd1.nextInt(goodNumber);
5 k, t/ j0 j6 L' F! ?$ G$ `: I+ { potentialParterner = potenAgent[select];5 Y# D% \* O, W
value = true;
3 R& N* n% {2 E! @; E, h }2 j/ M* W# \5 C1 T
return value;; o0 |1 S* H8 A8 Q9 R/ p
}- B% c, K1 M6 P' F6 l
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|