|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 l, U8 |- x, V$ D9 m& H
private boolean findPotentialPartner(){# T+ q0 c' u& W' {. S5 u
boolean value = false;
, ?3 E8 m% c+ W, R) b4 G8 V( l
X8 n9 J, Z6 b& z& N" I2 C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# p: D% N$ J% u' p3 u
Iterator iterator = grid.getIteratorAt(x, y);
% }* I2 x. v4 ~$ q" f3 f SexAgent ag1 = null; ) @8 G% ]3 `; r& M9 ~1 y/ g9 F
SexAgent [] potenAgent = new SexAgent[20];
- r1 H: L) Q* t int goodNumber = 0;
3 U' l1 z, L4 x4 o/ ~5 m/ S6 i/ H while(iterator.hasNext()){
8 w' f- U6 @9 ~& M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" T( I G; {: c1 d ag1 = (SexAgent)iterator.next();" E2 B0 s% `, p7 j! c) S
if((ag1.sex == FEMALE)
( o0 b8 q7 B* h5 m) ~& C% P &&(!ag1.isCoupled())){
* Q$ s9 g+ m8 e4 v1 t System.out.println("YYYYYYYYYYYYYYYYYYYY");7 ?, {* l @3 S' B) n: R
potenAgent[goodNumber] = ag1;+ ?2 @( d6 G( r, I1 t
goodNumber ++;
5 ]& \ l9 c0 D7 V+ i }
4 o i$ l- |0 a1 X' w }$ H$ J" L, k5 J/ t+ X7 Z V1 q( t
* Y% K& R% K" h0 o% s if(goodNumber >0){) O5 [: e; L) `$ t" _9 W
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( B2 a$ x5 Q3 Y$ r! [
Random rd1 = new Random();0 X! D7 L) W) E6 E8 d6 @
int select = rd1.nextInt(goodNumber);
6 _# [2 j9 _( r potentialParterner = potenAgent[select];& f0 ]( `: l$ B- K/ b
value = true;6 `0 f$ k7 U* @2 u' F
}
* I6 r. W# h6 e7 V* a: [; h return value;( U5 z+ k4 q+ \) V
}
/ W& k2 B: }3 t" Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|