|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
" m1 F8 B5 U- d/ L1 w/ U private boolean findPotentialPartner(){; Y5 F# ]4 L/ U# a( n1 ~- o
boolean value = false;
0 P9 b6 I: I" c
+ T3 W% `. e% G8 b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: h0 ]3 w+ y x6 [9 E- s2 v2 Y
Iterator iterator = grid.getIteratorAt(x, y);* k9 H& v/ [; l+ s- I0 u
SexAgent ag1 = null; 6 V+ @8 l. }# p
SexAgent [] potenAgent = new SexAgent[20];
4 N4 j: B7 q8 I int goodNumber = 0;
: K. ]) O0 e6 h, } while(iterator.hasNext()){
$ ], f* [ n i! s" b System.out.println("XXXXXXXXXXXXXXXXXXXXX");( L! ]6 t2 y2 T% K3 j
ag1 = (SexAgent)iterator.next();
1 y* U* ]/ J0 b9 q$ S if((ag1.sex == FEMALE)
: O6 d5 t# ^4 `$ D* `% O &&(!ag1.isCoupled())){+ ?" z+ M4 { Z( T, F
System.out.println("YYYYYYYYYYYYYYYYYYYY");
3 K9 n9 k& l$ c- o potenAgent[goodNumber] = ag1;$ q* [6 A$ w( A* ]
goodNumber ++;
m& H% u4 V* D. o: e }
- y6 T: @$ X$ x }' N) N9 F: T+ |3 |* @' D2 R# f3 _
; B+ L0 t7 u# B A$ t) M if(goodNumber >0){0 |3 {* W1 z4 Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 a' @; o% D% k+ o Random rd1 = new Random();
/ H8 U% ? t2 |! z$ R5 _ int select = rd1.nextInt(goodNumber);/ ~ i. D, }3 E
potentialParterner = potenAgent[select];+ A: b" X* m5 Z) n6 M
value = true;
. W0 w' Z0 _0 _+ O; ~2 C }: G6 h) b$ R- Q+ D+ P9 z3 d
return value;
9 W" Y' W4 f( Q }2 W6 X5 ^2 D! E3 F9 U* ?
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|