|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 r; q; h9 k e/ h. A1 w7 b" b' B* z
private boolean findPotentialPartner(){& Z2 s7 A4 |: S$ y0 A! W$ b
boolean value = false;/ F; B6 \1 h; m
) X9 ?7 A8 ]( a) g# }- [1 N2 l! g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 L4 h; X* P9 i7 E* w- C Iterator iterator = grid.getIteratorAt(x, y);
" S6 f2 Y2 j/ j- P9 X( Y- J' j SexAgent ag1 = null; 6 p3 B. L% D4 V( e
SexAgent [] potenAgent = new SexAgent[20];- r) s2 r; w/ s# `! y
int goodNumber = 0;" q7 n W8 S% Z& C* T' H; @" ]
while(iterator.hasNext()){
- F! }' b& E3 Y System.out.println("XXXXXXXXXXXXXXXXXXXXX");, y2 k* e7 l, [2 m6 Y, G. q
ag1 = (SexAgent)iterator.next();6 W" F, }7 n- j
if((ag1.sex == FEMALE) 2 b% S" p0 B. p# R! ?" O8 @
&&(!ag1.isCoupled())){
* R5 i0 `3 [$ @$ O- N System.out.println("YYYYYYYYYYYYYYYYYYYY");
& m8 N/ N% t4 Q; P) Y: ]% v potenAgent[goodNumber] = ag1;
. l3 P8 H Q9 n- G. r7 B goodNumber ++;+ v+ g7 h/ f' c# D2 o
}1 Q; p$ g2 [4 w& j6 Z" W* a5 e
}! S. N) d/ k7 Y" B4 r
/ L7 j& P; f' T if(goodNumber >0){8 r8 O+ D* A5 k& @3 I/ h* W8 X
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 b0 P/ j( w. w, i, T2 n( z7 B Random rd1 = new Random();
- v/ M! t2 }$ S2 H6 A: v int select = rd1.nextInt(goodNumber);1 N( Q- J# m& k# l* ~* p0 W# H4 _+ o
potentialParterner = potenAgent[select];
* [8 Q5 z; N9 `1 C value = true;
5 `0 _1 ]) D v# O/ D }6 t& Y5 H% q, M4 \1 E
return value;
2 W$ s4 ]8 N0 K1 z; [, ~& j }
- S% h: _ y, @+ h8 o, w1 ]始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|