|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 G+ V* o) A8 Y2 [- S$ `, }8 {9 b( R' k% i private boolean findPotentialPartner(){" x0 ]- ]( G( i2 o; n
boolean value = false;
6 z0 D( V: @5 C! |1 E% J5 b
# @; v4 j0 p9 V/ C6 t OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 U& V1 O. f& p" i
Iterator iterator = grid.getIteratorAt(x, y);
E) K& H [! D& k SexAgent ag1 = null; 7 V; U: q/ G( V# n
SexAgent [] potenAgent = new SexAgent[20];8 t$ l. M, ]1 a1 F I/ u
int goodNumber = 0;
; \% {1 X' }9 v' v8 u# a: K while(iterator.hasNext()){
& R2 t# h( X8 L( g: Q* R. e5 F% { System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# b: @; D* ]* E ag1 = (SexAgent)iterator.next();( D8 k6 X- o. F; ?! D3 N1 p
if((ag1.sex == FEMALE) C: @( a, U. }0 \) Z9 n: q6 v
&&(!ag1.isCoupled())){
& I! a" a1 y5 f% T, I+ t System.out.println("YYYYYYYYYYYYYYYYYYYY");
' X. w. n% T0 [) r2 U9 R6 U potenAgent[goodNumber] = ag1;' R f I+ F/ m' u
goodNumber ++;
/ g, D4 G- b8 }* D6 t9 [) F }
. Y4 S1 K" w7 B+ f! p# u }
: ]% m% h7 V4 ^& e/ b. V
- {/ L" x: O' Z- t+ e if(goodNumber >0){
; K& Y, `; o- _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
8 g0 w% I$ q+ v- m( E Random rd1 = new Random();
& ~& _: ]$ D" z% l Q7 g int select = rd1.nextInt(goodNumber);) s5 }9 m2 |. l) e2 \: y
potentialParterner = potenAgent[select];$ X3 q6 Z' N- [' Y
value = true;9 G& y- q7 }; |$ q1 U$ @8 J- g
}8 W3 j- F9 P O3 y Y
return value;% r3 f. Q% Y6 f5 g
}
8 [ P1 o. i- b' p2 E始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|