|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ R8 v; j! N5 ^5 X4 {/ S) I private boolean findPotentialPartner(){- d' ]0 O" ^8 Z
boolean value = false;$ j4 F1 c8 k* ^2 B# M: S
# T" e1 i! X/ H. R* m% P OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
I% b& N: ]% E! ~! U# y5 W. k. _ Iterator iterator = grid.getIteratorAt(x, y);
# N+ n( L1 K# T7 B SexAgent ag1 = null;
+ v3 z, H9 G) b# S SexAgent [] potenAgent = new SexAgent[20];" S0 E6 M' C3 Y
int goodNumber = 0;$ K0 t) O- ~! z9 u' W% @% F& ?
while(iterator.hasNext()){* N9 p* g1 D( R6 [
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# p$ L. d6 M; [9 X) ` ag1 = (SexAgent)iterator.next();
4 {+ r b; W; d- b k if((ag1.sex == FEMALE) 6 L, l" z6 d+ l' d
&&(!ag1.isCoupled())){! y* o" I: B5 @
System.out.println("YYYYYYYYYYYYYYYYYYYY");3 }. _3 n: \+ y1 \; N! ]) Z
potenAgent[goodNumber] = ag1;
. W7 V( \$ d. n5 y# E: { goodNumber ++;
, x; l, v, l0 U- e }
! ]& J) R3 C5 Q: |1 `9 a1 o# |1 F( d/ d }0 A( X. @6 Q- h% H( u
/ z7 h1 P- L9 P7 |6 a I& I9 U
if(goodNumber >0){2 N" J3 p6 k4 B6 g
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( L1 L% r% K9 T
Random rd1 = new Random();
* \8 \2 h0 x; b int select = rd1.nextInt(goodNumber);
8 M$ `, Z& o P7 o; B6 @% M potentialParterner = potenAgent[select];1 v7 D- |2 C! L
value = true;
9 o! d% a- v6 o* c }3 J y$ }% P, Z
return value;
9 A( C2 {1 ^; @, m7 _ }4 d9 W5 \" F: X# i* I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|