|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! o8 s/ Y2 O6 C u, S8 L7 a
private boolean findPotentialPartner(){1 x- s* y' j& o! d; I( s# l
boolean value = false;
) b% r5 ]6 ^/ S
3 d( e* M& Y0 p% w: G. \6 L. o! t OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" k' P3 Z4 |! ^' q4 {/ @) V0 | Iterator iterator = grid.getIteratorAt(x, y);
+ p' r2 h/ k' K7 W1 q SexAgent ag1 = null; - U, z9 b0 j* \ d1 k9 W3 k; V* E
SexAgent [] potenAgent = new SexAgent[20];
1 A% q4 ?$ C# X. Z! v d$ i2 O int goodNumber = 0;
( h |3 Y- t( \5 a' r( | while(iterator.hasNext()){
5 J0 V$ h* ?6 Q5 D System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ X* W# E2 S0 M1 I ag1 = (SexAgent)iterator.next();
+ a6 |+ a( \/ b6 { if((ag1.sex == FEMALE) / ?- Z7 j1 a! ^1 {* b
&&(!ag1.isCoupled())){
1 b) Q9 G% i+ V3 _4 s1 [ X System.out.println("YYYYYYYYYYYYYYYYYYYY");
/ }) ?5 p7 `% `2 U" E2 i0 ] potenAgent[goodNumber] = ag1;
2 B) |% S9 A/ w o3 [) R goodNumber ++;
7 B( x2 S9 A: U0 ]8 G. D }
4 j0 P* h* V( A5 i" t7 q% d) F4 ~6 q }2 b! f |+ e. R' ]
2 X) u5 q+ n4 u' Z6 W
if(goodNumber >0){
) n: [% }$ r; x, v' u System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 g- o) [$ R3 `, R8 u: K7 G2 e, F N
Random rd1 = new Random();
; `+ u0 b: I8 m/ ^ int select = rd1.nextInt(goodNumber);
, h9 @- ?$ M! v% Z- A* N9 U potentialParterner = potenAgent[select];
/ {+ N- [ T: m' L0 h value = true;5 B2 g2 \$ ^" W, ?4 q9 V
}
, d _# S! N8 b return value;- y0 ~6 u/ D" Z$ R# B# |
}+ t- g6 U4 E) U! W1 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|