|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ K5 x+ b2 _+ y
private boolean findPotentialPartner(){9 O) Q; q7 x6 v, H; R. d/ k! J
boolean value = false;' f9 Z i3 ^+ y3 o* W1 o
" w' P* T& _0 _ M OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 A" I3 z& e Q% n
Iterator iterator = grid.getIteratorAt(x, y);6 M& E: ]8 ]* D7 Q$ R$ a ~% [
SexAgent ag1 = null;
1 D0 U+ B9 l1 m- j. Q$ L SexAgent [] potenAgent = new SexAgent[20];
, `1 i* p8 g, ~$ b/ t int goodNumber = 0;
/ Z6 J2 y/ i9 N/ Z3 h( |6 V while(iterator.hasNext()){) D. m( |2 [: \9 S) i; D
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 J' ~( c& P$ A7 u5 g8 |" q9 j ag1 = (SexAgent)iterator.next();
1 J/ a% r% m5 E2 v9 U if((ag1.sex == FEMALE) 6 T; h1 T5 N# E9 P+ z) z- V/ t
&&(!ag1.isCoupled())){$ J( L! K5 {: P( P a
System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 z- y, }/ {* n# \9 L) `# ^1 G potenAgent[goodNumber] = ag1;
# c0 h: N( Y7 r& x) T+ d4 [ goodNumber ++; c4 Z) e' D' y. e4 Y; ]! h
}
" w/ b; t* d. j: N6 K }2 N) r1 j8 p+ h. T5 g
8 F5 J5 H" W' A5 @. q2 i
if(goodNumber >0){1 F4 f1 p/ \2 D; {5 C
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( g: g& x) }# B7 H% J6 q3 o Random rd1 = new Random();
0 I5 M: Q' S! G1 a/ b# a int select = rd1.nextInt(goodNumber);* f7 M$ M# ~- f% ~5 f$ t r
potentialParterner = potenAgent[select];. x X: V4 z Q* F2 U' k, W
value = true;# F- p+ T- _( a% W% e" e5 o& p
}
3 [" ~3 c) |+ v, j# K. u return value;$ w. j {+ k; ]8 y* l- D
}7 U+ f3 U2 Q$ w! @: ~3 z/ t
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|