|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 I0 w+ d0 N& J9 B; v% ?9 t! C
private boolean findPotentialPartner(){9 _8 U1 G% x0 h9 V. F; ]
boolean value = false;
, R) l. } G9 m8 ?% c" ^6 k ( y9 M' a. z( C4 X u/ ^7 F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 X$ i5 d% d9 N. ~* m
Iterator iterator = grid.getIteratorAt(x, y);
6 o- L$ F! i u" K, S) K& b SexAgent ag1 = null;
/ H/ e# o6 M D) b0 B SexAgent [] potenAgent = new SexAgent[20];
4 @- P: C5 }# F* \ int goodNumber = 0;
$ C b; q% Z, \0 x2 k while(iterator.hasNext()){& u% Z4 h- |' ? x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");9 G6 v& ^8 s9 D
ag1 = (SexAgent)iterator.next();9 `4 v7 E# K0 \+ B
if((ag1.sex == FEMALE)
( `$ b6 f6 `3 P5 i% z &&(!ag1.isCoupled())){% G+ b4 I- p3 C
System.out.println("YYYYYYYYYYYYYYYYYYYY");% s$ d: i* |0 H, Z8 [. ~
potenAgent[goodNumber] = ag1;1 H2 T4 m- d# y2 s& o# Y. X+ d
goodNumber ++;% }' r3 e! @9 Q( M2 E
}- }$ E$ O1 E s q x. U/ ` c" b
}
' P6 |. Y1 c% j
1 E' {$ u( o- e8 X* Z if(goodNumber >0){1 b. \' J6 f' _2 \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 b, |* I7 @5 Q3 j W" c; M/ N Random rd1 = new Random();
3 ~2 o" i; H3 V8 H& [ int select = rd1.nextInt(goodNumber);
' Q0 Y3 U5 _* d, F! |. R potentialParterner = potenAgent[select];
- J5 G7 y3 T! j0 b1 S4 N5 v value = true;* o1 G7 y$ o# _& W+ A- A- E
}
+ u+ k0 T% h, H) S7 R: ] return value;: @0 y1 a" [9 g; d8 V/ S
}) b- V$ W/ X5 ~
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|