|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
. C! f1 Y, s1 i8 C- m( X private boolean findPotentialPartner(){' i: B( h" w2 w" B. r. w
boolean value = false;
* l1 O0 X1 D2 Z! v" z/ \# C7 u. X8 w
* r3 U o1 G, m! S3 \: i( k OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 \$ h, ~" r; i' D" {, Y( O
Iterator iterator = grid.getIteratorAt(x, y);" V: K0 T. G1 P _, _+ E# R' `0 R% s
SexAgent ag1 = null;
8 _$ s" d9 H' P* c. t SexAgent [] potenAgent = new SexAgent[20];
; d9 ^7 U7 c5 e* a% ~$ M5 s$ V int goodNumber = 0;
- m n2 v* F: n while(iterator.hasNext()){
* |! E# l/ b! S" B! _8 G$ A System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. a$ i. B3 w1 W- i5 | ag1 = (SexAgent)iterator.next();- B& W9 Y5 c! S8 h
if((ag1.sex == FEMALE)
: O; t. f) I) _! B/ o9 l4 Y8 o &&(!ag1.isCoupled())){' Y {9 a0 p. h
System.out.println("YYYYYYYYYYYYYYYYYYYY");6 W% t }# M+ ?9 F! ]7 L. m6 @
potenAgent[goodNumber] = ag1;
- i( l/ r% e# J goodNumber ++;
/ T! J* ^7 T3 t }: T, y6 w* a0 }
}+ c e4 U1 n- m
# r4 C% ~# v6 @/ F if(goodNumber >0){/ k/ h5 K$ r9 I, f- l
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- k4 {& l1 \& F0 | Random rd1 = new Random();
+ Z1 i9 k/ ^. c% x: k% k int select = rd1.nextInt(goodNumber);1 [; r, E% R) Y7 F" m0 x
potentialParterner = potenAgent[select];
( E# T$ m$ x, E- e; A value = true;, G" q1 H" O8 _+ s/ K7 ~( ^
}
$ A+ s5 m ? Z0 k) y7 u return value;* i6 u& G2 r- Q" ^
}* B0 v& ~+ j* L
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|