|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 w% O4 ]$ Q5 j4 ^; e3 C8 c! E private boolean findPotentialPartner(){2 M! T X+ w! h
boolean value = false;, ], F* c* |$ f# H0 q
4 U( k4 S8 a n4 F: [% V. D% O
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 l0 w& F6 K/ B ?- I Iterator iterator = grid.getIteratorAt(x, y);9 `5 ~. n' j; {# m. x
SexAgent ag1 = null;
7 _0 m9 e( A+ e3 M# S+ ? SexAgent [] potenAgent = new SexAgent[20];$ s; \7 T( m3 J: R0 D: m7 f; [
int goodNumber = 0;
0 Q$ q6 O. w1 X, o$ D( P while(iterator.hasNext()){8 ]! ]! ?: V& T2 B# ~% X2 H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 n2 l( c8 v4 c5 W3 w Y& D ag1 = (SexAgent)iterator.next();
% f6 b6 Q4 B j3 N if((ag1.sex == FEMALE) 3 B h% I) \) J o
&&(!ag1.isCoupled())){
}# u+ s2 r! Q2 m8 ^/ }+ n8 T System.out.println("YYYYYYYYYYYYYYYYYYYY");$ A, |# `- L0 |5 m
potenAgent[goodNumber] = ag1;
. I: y2 ]; }6 q- G1 O# u+ a goodNumber ++;6 Q0 ^9 a% d3 V" u8 o" ?" T5 ]
}' L9 R( d; V/ A- o& G
}. {" W- I: a: G/ n2 X, V6 {4 K! Y
+ E/ \; _. s4 Y$ E/ {* F4 n$ J5 \ if(goodNumber >0){
( ]* j U b x System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% m$ `$ G! F2 R( ^0 V Random rd1 = new Random();
P) ^/ f5 z5 _0 E, H7 D" l( x int select = rd1.nextInt(goodNumber);
1 i/ `( G5 B# U6 p C potentialParterner = potenAgent[select];; M. X" W5 |5 |$ ~
value = true;
, O( w4 {7 K r+ z0 }1 V }
! D4 c: b$ A9 s3 X* J return value;1 H7 g- f$ ?/ S- J- j& d9 o1 L
}7 ^$ K& W2 r; h2 G8 ~
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|