|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( z, o3 m* y4 D1 W% Q H private boolean findPotentialPartner(){
9 G' |/ y+ c$ p: U$ q/ e; O) a4 C V boolean value = false;1 T( E! \& a: x5 _6 ^
8 O- l& G- T }* n9 o5 A OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* q: Z. a% o- i6 v: i0 D* ~0 V
Iterator iterator = grid.getIteratorAt(x, y);
% s4 {: \' z9 F/ t SexAgent ag1 = null; / r! k8 W- h m
SexAgent [] potenAgent = new SexAgent[20];7 M E4 s8 @0 l1 I( s
int goodNumber = 0;: I+ k+ K+ l0 g" l8 Z5 [! @
while(iterator.hasNext()){
3 z$ J- ^6 m. i System.out.println("XXXXXXXXXXXXXXXXXXXXX");% @. I, P" r, J+ v
ag1 = (SexAgent)iterator.next();
/ i3 g- ?9 ]4 p P( `8 u if((ag1.sex == FEMALE)
, N( l" h3 G _: p+ d7 H2 | &&(!ag1.isCoupled())){$ [9 Z, l1 a; I D) f0 X3 ~
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& t! V0 F/ a, m2 H& \" U! K potenAgent[goodNumber] = ag1;
0 S2 C6 S4 L" h; ~, j goodNumber ++;3 D6 b k" Q9 W9 t' s" u5 Z6 L' e
}8 R1 s, r, H7 O
}* a4 A* t% G/ J6 {! p9 H
# F/ }3 W9 f9 }
if(goodNumber >0){
1 u4 b! q; w& F6 {( E6 P4 s- C% ]! I System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 ?$ {- K( S+ j. y, ` Random rd1 = new Random();
. W! j! ~6 Z5 a" K4 Q7 E int select = rd1.nextInt(goodNumber);
) e; P+ d, d1 {1 m8 S potentialParterner = potenAgent[select];
4 b5 k ?2 y# R value = true;
9 b% d. b2 u' W }, p+ J1 f; _( V3 Q( Y* p* k7 ^) E# o* o
return value;( j& v6 g9 ^+ H S$ S
}5 v1 S3 L$ C) i+ U0 }: ?: V
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|