|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ o. y4 D& ~% a! E
private boolean findPotentialPartner(){
9 P4 N# r7 _0 c% J4 [ boolean value = false;( e* p) z. y% J+ E
- l' e# R! z: k, m. y5 L# b' i$ K1 p OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 B" A7 ]* r: E# }* [/ l( ?% K Iterator iterator = grid.getIteratorAt(x, y);
1 ~5 P/ M" d( }7 l2 d9 M3 [ SexAgent ag1 = null; 5 u: H" h: c) T4 H$ g
SexAgent [] potenAgent = new SexAgent[20];
# H) J9 Z2 Q4 L' ^* F2 V int goodNumber = 0;$ h8 U. o, K5 I( Z6 Y/ O
while(iterator.hasNext()){
$ z- e6 ?0 ]9 p0 Q System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 Q( M6 ]1 g: `1 h/ Z$ t ag1 = (SexAgent)iterator.next();
; |, z* R ^* e9 M* F if((ag1.sex == FEMALE)
% D0 _) B7 ]- n* q &&(!ag1.isCoupled())){+ J* k7 k8 r* T9 `/ o3 E; J
System.out.println("YYYYYYYYYYYYYYYYYYYY");( }; ]: l+ x g" Q8 T# l6 I
potenAgent[goodNumber] = ag1;
+ p1 n- }1 }8 O2 E. d2 a3 V5 |6 k9 ? goodNumber ++;; ~$ o8 d7 u/ e% q
}& e+ b+ v, b& C5 q4 ?
}1 c. E8 [. j: t
% ]) ^2 C0 M- a! \
if(goodNumber >0){$ r! y( e1 L( c9 W! _6 T
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 i* E: J1 v8 F- X$ o) G( T$ z Random rd1 = new Random();- o5 M/ O% h8 _% B0 B, S
int select = rd1.nextInt(goodNumber);4 {4 J n1 Z" d! R2 Y
potentialParterner = potenAgent[select];
9 v5 {# j' ~) R value = true;
3 V6 R7 h. [$ R* D/ ]) I" M }+ z7 R$ h# X% B& }' M
return value;, \- T! r3 K/ n8 ?) D$ _6 e
}2 Y7 E. Q* r7 o* y E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|