|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% m- ^* k4 O" n) b- b
private boolean findPotentialPartner(){1 o$ e# j8 `( Y/ ?- j) u
boolean value = false;
7 r% J" j! o! y5 G: n: L
! Q' V- O- V2 t% K1 B! m# m OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( A7 X$ }# x2 s; f0 V% S Iterator iterator = grid.getIteratorAt(x, y); t! P+ [, d7 j# Z& v1 f! Z
SexAgent ag1 = null;
2 B. R- ~, C( `9 E0 y SexAgent [] potenAgent = new SexAgent[20];
# v5 M( p; K# @2 h* R int goodNumber = 0;0 q% w2 E$ i. ?0 q- M3 }% q
while(iterator.hasNext()){
/ @, ^! f* o" ?" u! I O System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) n, ^4 P3 C% R, D0 Q ag1 = (SexAgent)iterator.next();5 q/ @: ~+ H% Z/ J' q1 ~
if((ag1.sex == FEMALE) ' _# A. A4 I4 y. f( K- }! h
&&(!ag1.isCoupled())){
. @# y+ z9 C$ t System.out.println("YYYYYYYYYYYYYYYYYYYY");
/ r! c: A, O2 |( [0 H; f potenAgent[goodNumber] = ag1;/ ? B' Y5 e& C3 J$ j, ~* k; m4 B$ @6 b
goodNumber ++;# o- R; m( J0 g) C
}
) C/ I+ y- O2 Y9 f }) s1 P* X0 \, U' a4 Z2 E
" \1 V6 m& F0 D if(goodNumber >0){
# Y: _& s+ J* `. ` System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - q" ~+ w1 D( G& d
Random rd1 = new Random();
6 s7 @) p0 G; _; }4 o int select = rd1.nextInt(goodNumber);
5 M3 E/ H, O* u0 | potentialParterner = potenAgent[select];) d e& a& ]0 _6 h9 g
value = true;8 l2 v9 X, r! V& q6 \" J! |
}2 `% ?; f3 l5 d9 K9 U. g O) `. u
return value;
! j; h$ j6 I/ [* n6 O9 f }* s7 t, K. E* v) R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|