|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
9 E( Z8 `* s% o* R' s- o private boolean findPotentialPartner(){
" [7 k6 e- A% b# j, b boolean value = false;/ E$ B3 O3 ~8 ]$ A* J6 a0 `
e2 O2 X: D% v3 x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
2 J, X8 @( F0 g& n8 P; e. F3 S4 r% ] Iterator iterator = grid.getIteratorAt(x, y);1 T/ d: t: h& N E
SexAgent ag1 = null;
2 z2 |" }4 |* g: t+ H9 M SexAgent [] potenAgent = new SexAgent[20];7 n6 X1 |1 r9 C- t) N/ ^" e
int goodNumber = 0;
0 M; {$ J Q; t5 L, o. ? while(iterator.hasNext()){: w3 O0 z! h; c* K
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) X) ^* s6 h) |1 I$ a ag1 = (SexAgent)iterator.next();- m7 C- c/ m1 Z b6 Z0 ]+ R, }- d
if((ag1.sex == FEMALE)
f1 U" b, E! H. |; U9 Q( p( u: O &&(!ag1.isCoupled())){' U% [/ k6 S8 S8 J; d6 Z
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- V' U% u" L$ b potenAgent[goodNumber] = ag1;* n5 Q! \+ F5 L8 Z* E
goodNumber ++;
8 I2 x2 M' V( }$ N6 M! v }2 M/ |. {; A0 c9 |$ u- h
}
; O9 [: b3 U$ s H/ ]3 F 3 i. D0 i3 W1 U% \
if(goodNumber >0){$ L% I2 r. N9 l/ R- o7 y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* ~# f, b! @! F# p Random rd1 = new Random();$ J6 m2 p9 S5 J9 ~
int select = rd1.nextInt(goodNumber);
l1 I2 K0 t! }0 r# d$ U potentialParterner = potenAgent[select];
) ]; U0 R7 C/ c: R% S0 b, o value = true;
$ @) w0 V6 H% V& Y6 u: G }
5 j$ K0 k! _: A( q return value;2 x4 h8 M$ w7 N$ m: Q3 P
}! T- H) |2 I/ l [) K7 ]' A' v
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|