|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* E$ a" c) t9 Y5 K( c/ j private boolean findPotentialPartner(){2 P7 ]( a" M9 i( ?; t
boolean value = false;, Z1 B. t5 x1 h
$ w2 ~2 L% U/ k3 A$ }. F | OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* J) K# R. W5 d, h! l. X Iterator iterator = grid.getIteratorAt(x, y);
. D: ]0 e0 }( X SexAgent ag1 = null; * i6 ^- F( V0 L6 q
SexAgent [] potenAgent = new SexAgent[20];
) {! G( f. E$ K) }, a+ i$ Y& }( X int goodNumber = 0;$ Q! N0 o2 ` l, x/ E
while(iterator.hasNext()){' `' a( k2 {; ~$ B* d; W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 G M( Z6 E2 ?5 }) X0 y ag1 = (SexAgent)iterator.next();! J, U9 l3 h* F2 B
if((ag1.sex == FEMALE)
. O# S+ D" g( k &&(!ag1.isCoupled())){6 I4 F. b; q6 p6 ~; t* z
System.out.println("YYYYYYYYYYYYYYYYYYYY");
6 k2 {/ P1 ?: x5 v7 Z# S potenAgent[goodNumber] = ag1;( I5 Q+ h7 I% b. b' T, ~) O" E2 N5 L
goodNumber ++;
# [+ f: M0 \- s; @0 i) n }. x7 `2 r" g4 w
}
V- ?& M- {# q% J6 Q% ^) v [ 4 A6 [- @4 L) {
if(goodNumber >0){
6 V) X3 {9 I! y) W s- n. S System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 D+ D6 d, K) D% a9 B1 J, c* ~
Random rd1 = new Random();
/ V# @$ Y. B! P/ @" u% f5 Z int select = rd1.nextInt(goodNumber);; s" A, c @4 G2 b5 K: D
potentialParterner = potenAgent[select];) n& \* E9 v' L# a$ H
value = true;
4 P- y) E7 X% i) ^# s }
$ d4 I; K% G* z1 w' ^0 E return value;
) B9 n; R9 F8 E4 r }% e7 F/ @3 z$ c, _) K
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|