|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。9 N" o( T# x% D) \ Q$ I+ j: [ X
private boolean findPotentialPartner(){
5 ?* A" \' d* `+ |9 s4 _2 a boolean value = false;
$ ^$ i/ s, n' C: I" E" P 0 ^, {0 Y- V/ D/ _) C, I
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ ^ q& R0 ` P: h Iterator iterator = grid.getIteratorAt(x, y);* f/ a' a4 W( c5 \
SexAgent ag1 = null; / s. p7 N6 b$ S
SexAgent [] potenAgent = new SexAgent[20];
' E/ ?, ^& U0 S+ o int goodNumber = 0;
- T+ E6 M1 N5 S0 Z* b# M% h0 o& b while(iterator.hasNext()){
P0 l3 a0 ]# A4 c' Q; D System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) E2 O: f. N) {0 h) [7 U ag1 = (SexAgent)iterator.next();
/ @/ [5 z, b) N, G4 | if((ag1.sex == FEMALE) 2 l4 K+ V$ t( M
&&(!ag1.isCoupled())){& y& m) W: `" q! u9 ~2 X2 N$ C3 N, e
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) j- g' \* S& Z5 f' D6 z/ s potenAgent[goodNumber] = ag1;6 Y: i6 ~/ F/ f+ m0 N- E h9 e) Z
goodNumber ++;
" Z o# d6 w5 I9 I6 g }9 t/ j! K8 O& f9 f8 b: d; s
}
* Y6 u' Z x7 M- H0 g# Z 1 E1 \2 p8 `0 u4 x
if(goodNumber >0){' _. a3 |( h3 y7 o4 \/ E5 k
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ }- q' D6 J4 M/ h( u4 } Random rd1 = new Random();' J4 S) u m! Q+ e9 m
int select = rd1.nextInt(goodNumber); q6 `2 y0 b+ Y/ G, K2 s
potentialParterner = potenAgent[select];
( g5 _" Q8 x# [, A! t( Z value = true;0 \9 g' C6 J; S4 {5 A9 t* x
}
! W, x N% I Y9 s- i return value;
% K; p& i& O" Y }
2 `1 c) f. X0 B& ~2 X; c始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|