|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* u' W" O# c! A; { private boolean findPotentialPartner(){7 P3 K6 h( \1 n& O% b' l
boolean value = false;
' v F) I+ O* n( u% D/ Q
- v: w, U5 x/ H( f7 q OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 H) r$ w9 ?# ]3 T/ n8 G) i
Iterator iterator = grid.getIteratorAt(x, y);+ S6 a# |; c j* Y
SexAgent ag1 = null;
5 \* y$ Y/ u% E SexAgent [] potenAgent = new SexAgent[20];
2 e6 X7 \+ b( y; R, s int goodNumber = 0;
1 d) Y, M0 W) }7 a2 C" V) ? while(iterator.hasNext()){
: F$ G0 {; l7 z1 C System.out.println("XXXXXXXXXXXXXXXXXXXXX");, t% W4 N' b3 O6 \
ag1 = (SexAgent)iterator.next();
! z0 @; d9 w; j% B9 G( B z if((ag1.sex == FEMALE)
& K# i; \$ G- ?0 q) c$ f &&(!ag1.isCoupled())){
8 n9 E7 M# ^1 M4 V6 y0 t5 H# p4 U& s System.out.println("YYYYYYYYYYYYYYYYYYYY");
; _" d5 j5 Z4 S$ E7 o1 D potenAgent[goodNumber] = ag1;; m/ P: @: g. c6 D1 z8 ]3 X( H
goodNumber ++;
9 s% y4 w% n' Y9 ` }
* `6 B+ p8 }0 c }
% {& `0 v* J, g" d% T / Y0 A' b! _( C# V# H4 T2 {
if(goodNumber >0){/ H5 g$ U5 H0 a2 @
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& h" {, a; }9 k! x Random rd1 = new Random();
# y' J+ v6 J& _) }* n int select = rd1.nextInt(goodNumber);
# X$ R* g+ W6 I8 e0 V potentialParterner = potenAgent[select];
# @' H9 k) U4 {) Z, ~/ C; O. z value = true;; M2 @. i% `5 d
}7 O* {. O) Y2 V. ?8 o8 ~8 A
return value;
, w% v* o' M9 `# Q! | g }6 H$ G; C3 S% k" S- w
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|