|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
# ^: d. ?2 f5 z3 \1 F4 @ private boolean findPotentialPartner(){
1 T7 ^: M! A: o% M2 O boolean value = false;
7 _8 r7 a( \% a8 K' w; e1 l
3 D& I' c( x0 c" K, ? OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% `; ] z! Q7 C9 g+ s: K
Iterator iterator = grid.getIteratorAt(x, y);% \0 J5 t, t6 w9 e2 h- h
SexAgent ag1 = null; 4 `$ U% G! w$ i3 g6 G# I- }# u
SexAgent [] potenAgent = new SexAgent[20];" ?/ M* ~8 G+ g I2 s+ P
int goodNumber = 0;8 H6 i0 a+ I+ S0 H
while(iterator.hasNext()){" X. K/ l. m0 o; o+ p( y& d% v
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); o1 ]' J- a' i2 y' b& _2 `7 R
ag1 = (SexAgent)iterator.next();! S8 r6 ]0 p. v
if((ag1.sex == FEMALE)
( X% ~# ?5 a2 C &&(!ag1.isCoupled())){
$ I) C1 b) L9 Y# S; ^5 N4 a System.out.println("YYYYYYYYYYYYYYYYYYYY");
) b0 U1 k) e4 ]# h' Z/ q potenAgent[goodNumber] = ag1;
% N; P; _$ ^+ k3 S& ?3 v goodNumber ++;
% A* e2 [1 H+ j0 C$ ` }+ Y0 i- s) _& J8 {! R
}# v5 ~; S% L q8 \# O8 X3 H9 J
* G# g: ?8 e& q5 e
if(goodNumber >0){, `. Q- M0 x6 k2 F. T4 ?* X7 ^
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 Q7 f8 B$ B1 E
Random rd1 = new Random();0 G0 r# v, a2 C7 j
int select = rd1.nextInt(goodNumber);* R) b; d& z/ g3 ^9 G6 a7 S
potentialParterner = potenAgent[select];
- F1 J! F1 @6 R7 K+ |' I* j value = true;0 `( K0 T4 e6 F) E6 q3 W5 J+ X7 N1 V
}4 @& H& t) _; a& ^) z; r( N
return value;
9 g- U( N! Y# s- `7 {/ y }
& V0 s, j# |9 N; }, W6 o* D始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|