|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( x, F3 G. X$ d6 j2 b1 |' Q private boolean findPotentialPartner(){) M( e$ X/ @. z; }
boolean value = false;. H! G6 |* Q9 r
6 I. v/ x6 ^4 p: `7 `2 u, l& S OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 @3 A A4 M6 l5 `
Iterator iterator = grid.getIteratorAt(x, y);2 Y) S# g, d/ E( s/ x( @+ N
SexAgent ag1 = null; # T- k& _! Z7 W3 ?( \
SexAgent [] potenAgent = new SexAgent[20];
) C1 R, r' R7 Q9 l J9 U, R int goodNumber = 0;* Q3 _# c! m8 Z9 J) s2 ^
while(iterator.hasNext()){
" z. C. Y! K& ` System.out.println("XXXXXXXXXXXXXXXXXXXXX");
~5 D2 T) I# u5 A1 m" _ ag1 = (SexAgent)iterator.next();0 u2 L a- }. V
if((ag1.sex == FEMALE) 0 C" V0 j+ \8 [) R" Y& M; E6 O
&&(!ag1.isCoupled())){2 y- Q& x' b! W9 T( O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: ^9 j" Z) }4 f V% l potenAgent[goodNumber] = ag1;" l4 h+ ]$ F$ Z8 u! O) V% p
goodNumber ++;
# p' j- m5 E2 z7 s0 u; M+ S* U }! {! M, f4 N4 x* a
}3 ]6 u' U R& C( h& j' w4 J
) ?6 f4 i' k& S: m0 e if(goodNumber >0){
: t1 h1 w; L& i2 r9 T' n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 z( U$ f/ }" B8 s* l
Random rd1 = new Random();. u* |! T( g5 P4 i. Q$ B4 o
int select = rd1.nextInt(goodNumber);
& i! P( q7 j& `6 v- w potentialParterner = potenAgent[select];5 V5 L) I" }' L5 U) K/ B k0 L
value = true;- ]% z# H0 L$ g; Z
}
7 I6 p% |- f- b6 C" W% {! O return value;
3 s0 \' `- Q! q }
% S% F' t$ B' d2 y; i/ K: X始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|