|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
& }! U* f& {" T" ^ private boolean findPotentialPartner(){
" C7 O J5 c9 L' `; J$ u" ~ v) O boolean value = false;! S! l2 Q# @# |: m3 H% j
3 g& B0 g, }0 Z+ R
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 @/ A! i0 u' t
Iterator iterator = grid.getIteratorAt(x, y);( }3 J/ h* ?/ n8 N5 L
SexAgent ag1 = null; - j: [& _, g! m& j
SexAgent [] potenAgent = new SexAgent[20];" M. l4 | K1 T9 h
int goodNumber = 0;0 K5 @0 W' y0 K+ Z N
while(iterator.hasNext()){2 i4 Q1 }, X/ J E) a, G( r( J7 q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ p2 B' j- I# J
ag1 = (SexAgent)iterator.next();8 K5 I F7 C; q7 Z8 a% k7 ~9 \
if((ag1.sex == FEMALE)
+ ~6 r; ^/ Z B! R" q &&(!ag1.isCoupled())){
8 `' I( I6 C, z2 K% I; } System.out.println("YYYYYYYYYYYYYYYYYYYY");3 M( {- ` r( Y0 v- c
potenAgent[goodNumber] = ag1;; |5 m. h4 X8 Q4 |, `
goodNumber ++;
8 ~' H5 R! R3 q0 c, R7 X }3 k9 ]$ L, ?2 _- f! l
}
+ V, w0 s' Z2 i. G9 b2 n
, K$ C5 y" j" N- \4 h: H6 Y, K if(goodNumber >0){" G9 g8 H9 n5 u; n; P
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- ?4 w E, o: Q$ L9 t Random rd1 = new Random();
5 ^# R3 z8 m) ]: e int select = rd1.nextInt(goodNumber);, Q! M! M% q- q+ G* V
potentialParterner = potenAgent[select];
# Q" {1 j1 S) F" ?" v( ~4 z value = true;
/ F/ }9 ]) I9 p }4 r( _$ A2 q& n$ r) W; v; ^
return value;
0 u. A. V8 l* E% Q& F; D }- K7 W0 F0 @4 X8 r- d7 D, P
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|