|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 W) e7 @7 t7 L9 @* B private boolean findPotentialPartner(){; B' u/ |# t$ R# c
boolean value = false;
9 n/ `0 r; B1 q z; c" D4 O & g& h5 N* H) w% B3 q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ j) h- b$ u& {8 C
Iterator iterator = grid.getIteratorAt(x, y);
' i! O, B6 |5 Q) J7 s5 n3 l$ i SexAgent ag1 = null;
[+ |! J' N9 b( i7 j5 ~ SexAgent [] potenAgent = new SexAgent[20];
$ W4 j& Z2 {: i5 h' P% e int goodNumber = 0;
. V% C; _- i' }8 R( ~1 P4 B while(iterator.hasNext()){
& u) m% `0 n: L; ?( I | System.out.println("XXXXXXXXXXXXXXXXXXXXX");: n' t. e6 q; H
ag1 = (SexAgent)iterator.next();
+ z2 b" t% k2 z* ^. U/ [ if((ag1.sex == FEMALE)
2 G: ]' E: q+ K6 t7 c &&(!ag1.isCoupled())){8 d2 m" t$ B- `, B7 a- t3 U
System.out.println("YYYYYYYYYYYYYYYYYYYY");* m" a, G) K# \: y1 ^+ ~# S/ {
potenAgent[goodNumber] = ag1;/ b' G4 X% `0 {7 A) ?
goodNumber ++;
* i# K" z4 `' D# T* l B9 V }
' J! S2 A; E9 Z6 T; M3 ^3 b+ A0 x }
/ m8 @4 x# d% C
6 i' W% u( A8 E+ s' A% c, y if(goodNumber >0){
9 P/ J8 u9 u; ~: N) p% Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
1 L% v' ]4 c! x( s/ I Random rd1 = new Random();
( I$ [ ^) d4 S. ~/ q int select = rd1.nextInt(goodNumber);$ S h0 A% K- Y9 `# Y
potentialParterner = potenAgent[select];! w+ m! l/ F! H5 T
value = true;
8 B( v& f) ^" `4 { n) z; g! S }
N" K! Y& h$ g; [8 O7 d/ E return value;; ?' N- D! N' S
}3 d& k8 D8 h( V8 A$ T8 C
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|