|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; i" M. B8 c; v) K& a% i% A% M5 P1 v7 r
private boolean findPotentialPartner(){9 i2 Z* O) A: U2 r
boolean value = false;
. D" o+ |$ s1 S8 Y$ | + M. l. X( ?! B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 j: U' t" Q4 P- c2 E$ h Iterator iterator = grid.getIteratorAt(x, y);
( d7 E5 |- a! V5 D5 r SexAgent ag1 = null; : j, t y) r& c7 i& p
SexAgent [] potenAgent = new SexAgent[20];, x: {! I/ m5 V$ u
int goodNumber = 0;
$ f A% d5 R% A6 V' Z$ T while(iterator.hasNext()){: u( X8 |* h8 v3 o! ]6 r+ n
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% q' q- T B5 V$ {9 d2 k; @ d! ^ ag1 = (SexAgent)iterator.next();9 f6 g, l6 V7 w6 `/ u: T, e; t
if((ag1.sex == FEMALE) }9 Q( s H0 i9 `( e
&&(!ag1.isCoupled())){
/ J) ]+ j2 E- ], y7 Z System.out.println("YYYYYYYYYYYYYYYYYYYY");
# }3 f& \9 U# F3 r I7 I potenAgent[goodNumber] = ag1;
) v" y f s, w) X) I G7 [5 d goodNumber ++;& @% }# e3 A4 g$ t- A) V7 m
}
; n# b* N! f# l: `. a6 g2 Y }( g+ N8 P& q5 s! F' O( q8 w. d+ S
$ y3 q* h% f) H b# J% | if(goodNumber >0){
+ y6 G9 D# h+ y1 n; D) n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 s/ I; D& k8 D6 d Random rd1 = new Random();
5 z: \; G1 f9 `: J int select = rd1.nextInt(goodNumber);
+ w( l- O7 Y9 P* X. ~ potentialParterner = potenAgent[select];
1 M3 |4 N2 J. I7 K) K value = true;
4 n& y9 s2 u" l8 Y6 u0 R }
& N/ u. N; |1 K9 f return value;
% h, K' e" i" M }0 e! T, T' B+ V- ~5 j) L
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|