|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; J$ d8 \/ O* ]# G# ?+ l private boolean findPotentialPartner(){
- C# k4 R r. n: P boolean value = false;
' }$ W3 _' X; `0 Y7 K: Q/ y5 a$ _
1 X: Y* h. T* L! M5 L% F OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% V5 l- G4 s. e1 C; R: F+ m
Iterator iterator = grid.getIteratorAt(x, y);/ ~8 D& H3 l: Q
SexAgent ag1 = null; 7 D1 g0 B- h3 X5 ^: y
SexAgent [] potenAgent = new SexAgent[20];
. R+ Z' b; I# K( X; [' M( V int goodNumber = 0;$ ]! ^+ {+ h( E- k
while(iterator.hasNext()){
6 `' c, U$ K* B System.out.println("XXXXXXXXXXXXXXXXXXXXX");9 P1 Z4 N3 N8 W9 E1 ?# E+ ?
ag1 = (SexAgent)iterator.next();
+ |, k/ i6 h# i2 D. ?# k0 f; C if((ag1.sex == FEMALE)
9 k4 [$ N8 f! j/ h9 I0 Z &&(!ag1.isCoupled())){) _0 i8 H+ R6 P7 a ^6 _* Z" u
System.out.println("YYYYYYYYYYYYYYYYYYYY");
# }& x9 l# k4 F W3 u potenAgent[goodNumber] = ag1;
7 h$ E s- K( w1 \* h3 P goodNumber ++; Y4 O4 z/ s4 m; z- i2 C! B
}
( B H6 z+ m# y: n }, x" ~; S) v- Y
3 s f0 n8 D) C& f$ i
if(goodNumber >0){' x; k4 W- d. o7 _9 h" h- t
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' a0 ^. J+ I& }' { Random rd1 = new Random();, u, R: W4 E( \! x/ F9 Y" {. Q
int select = rd1.nextInt(goodNumber);0 G8 b" _/ r. b3 e' x9 U! w' m
potentialParterner = potenAgent[select];
+ k) \+ A! d% [; ^+ b( V/ m6 n; B value = true;
# }. V+ i. H' a/ a5 j1 Z* v+ P7 c }; }8 u- `$ i5 K( c
return value;. J8 L3 \9 k1 }, H7 I _
}
/ {1 ]4 y. f6 P) K$ I始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|