|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" C+ b- @% t* C- }" A
private boolean findPotentialPartner(){
& f8 r* H% e7 O* R boolean value = false;
6 u! e$ w6 L2 S% l0 R# K. c ( Y5 R- V, k( z9 k8 B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ A; E6 p8 m5 x, Y( l! K Iterator iterator = grid.getIteratorAt(x, y);+ M9 D: ~9 Q" [. c8 w- Y; {
SexAgent ag1 = null; - }) l1 u4 w I6 w: P4 ~
SexAgent [] potenAgent = new SexAgent[20];% t) [7 a/ |! B: f2 j& u0 L% b
int goodNumber = 0;
" e, X0 ^2 R" Q# i% y- u while(iterator.hasNext()){: q9 ]9 `. _- z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 k, m. J+ _! c) C( Q2 F6 ? ag1 = (SexAgent)iterator.next();
6 H/ T- Y% |) T* c; {4 } if((ag1.sex == FEMALE)
& v$ {2 o0 @9 r9 ]- u &&(!ag1.isCoupled())){
$ j. u' a- L9 ?" U, Q1 Q System.out.println("YYYYYYYYYYYYYYYYYYYY");
8 h" P0 Y! _) f I" g potenAgent[goodNumber] = ag1;
' e) X$ g( V0 w goodNumber ++;
) w7 M5 g8 r+ E6 i3 W }5 l# m" W2 w2 E, G( V
}, R7 A/ `5 K1 I4 Y; d) n* T6 v7 L2 w
6 `! Y0 y, i. p( m' s7 `( D7 u
if(goodNumber >0){
M1 |. Q2 `; ` System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* C+ ?- m: n1 `5 a$ V6 _ Random rd1 = new Random();
4 Y' F0 p! Z1 M; i; g0 e7 _# `7 B int select = rd1.nextInt(goodNumber);
6 A! _5 D* X- J8 j9 ~7 e) i potentialParterner = potenAgent[select];
6 l4 k4 Y1 C' ~! j8 G value = true;
# X. r/ ]& u v. q; J! @ }
, \% l% J3 V l/ N return value;
' f% p$ c1 i4 k# J8 j }
' N4 R% f1 J6 X: w& Y4 ]始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|