|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ R# E- B6 d( A, r [5 T: g! S
private boolean findPotentialPartner(){
4 } y8 v; e9 S, [) C! b+ g boolean value = false;
, V! b* e' F% ?3 I
, M5 j' p4 g6 A; N* Y1 i OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 U5 v9 n4 D9 V& u8 b3 u# p9 k8 \" D
Iterator iterator = grid.getIteratorAt(x, y);
0 r8 x9 K2 C8 J: } SexAgent ag1 = null; 6 K1 z3 U! C- T
SexAgent [] potenAgent = new SexAgent[20];
) P4 `6 C2 j- f5 A. J: Y) ? int goodNumber = 0;$ {. K, b4 v5 u5 e- V
while(iterator.hasNext()){6 O) e: Q( e' x2 Y+ s
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) P) V2 L& b. {
ag1 = (SexAgent)iterator.next();
, E u: t! k9 t( r5 _0 S6 F if((ag1.sex == FEMALE) : p- d! E w) v7 ]! G
&&(!ag1.isCoupled())){
- J! d3 O4 l! O System.out.println("YYYYYYYYYYYYYYYYYYYY");$ V* B+ R5 Y A( z/ S
potenAgent[goodNumber] = ag1;
7 L; y/ t0 q5 k1 e goodNumber ++;
' P) M4 _7 D$ x! a) \) k }4 w. w$ x m1 K6 y& l5 \" O
}
, F0 G3 Z( v/ s0 t
* b* f: o4 s$ ^ if(goodNumber >0){
$ B& M# `' d9 z0 C System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 i V& e+ t- B$ j$ ~- m- s3 a4 s9 A1 k Random rd1 = new Random();! P* @) ]9 I. h
int select = rd1.nextInt(goodNumber);
2 U/ ^$ v, t0 P# w+ E potentialParterner = potenAgent[select];
+ b/ I0 T/ Y8 r, O& Y G/ P! t% C% J value = true;
/ u& M7 F9 f8 _6 o( z }% A- s* F+ G J: ^
return value;
; w _7 _7 s$ [6 n# f: s } B, T3 G# v" f1 P( ]
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|