|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。) d5 _, y9 C; Y- q7 ?- D- c3 f! y2 O
private boolean findPotentialPartner(){
3 g8 t! A; e% s boolean value = false;3 }% D/ M0 y5 [" }- p
1 }! ]9 q8 ~( z+ w7 c- _ v
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. ?- D/ J. T7 \/ h' B: x3 k" Z Iterator iterator = grid.getIteratorAt(x, y);" a, T5 q5 p/ @: }/ V2 s( B: r6 W
SexAgent ag1 = null; ) Q; Q+ M5 J! x9 ?
SexAgent [] potenAgent = new SexAgent[20];3 n3 o- m, U% l* l1 \
int goodNumber = 0;, }5 G9 W" v' w3 T! u3 T' Y E
while(iterator.hasNext()){
/ B* ?) ]5 T; j! @8 x5 I8 O System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ J0 V$ l% v8 P, d( D ag1 = (SexAgent)iterator.next();+ i- H$ V* {1 n# d0 t3 _) U2 m, O
if((ag1.sex == FEMALE) 1 [, g0 |% ~. g+ B5 d5 N) W5 B
&&(!ag1.isCoupled())){1 l6 B: O$ h/ Y6 U9 U
System.out.println("YYYYYYYYYYYYYYYYYYYY");3 x( z; g1 H0 _ L. T' A# g
potenAgent[goodNumber] = ag1;; e+ |; y: h7 ~7 R1 k
goodNumber ++;
* f T& Z' @8 W2 {5 Y. J1 a2 P& P }. z8 r* X5 q1 [# X1 p+ k! k
}
/ q2 J* l* e3 m( b. B
& Q9 ~# K2 k; L ~; {5 t/ p- i: g6 R if(goodNumber >0){ ^7 Y5 B* i" ? `2 r7 o6 F* q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # W9 J9 `. U9 ^' r* F. l9 I1 \6 a
Random rd1 = new Random();
& |4 X( w+ p0 y: a. j int select = rd1.nextInt(goodNumber);' @3 z+ A- p: T" T: j4 T! R
potentialParterner = potenAgent[select];( V' N5 I9 ]* @5 b
value = true;
8 u# ^" }( R* X }
; p3 A1 h- U C return value;+ M1 l$ f) o: \- F# E
}
4 W! a @4 I0 B始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|