|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; R' r. _# q7 E) P9 U# ?* R+ f" Y
private boolean findPotentialPartner(){6 k& f C# W3 j. D) ]9 [- z
boolean value = false;
* v8 X0 ?* |' V3 b) g K. r 8 A6 q) l, A* {
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* O5 ^1 Y$ n( x Iterator iterator = grid.getIteratorAt(x, y);, Z" H4 ?9 t% J; H
SexAgent ag1 = null; ! R; J9 L2 ?0 y! {$ Y! p% H
SexAgent [] potenAgent = new SexAgent[20];
: |" F1 E6 A0 A2 d int goodNumber = 0;
- }4 c5 C- c9 b& Z% s while(iterator.hasNext()){9 u% n* V# |* q# {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( B0 c$ q; ~4 ~5 ?- T; v" F
ag1 = (SexAgent)iterator.next();
0 {; E# B, K/ R8 D. @ if((ag1.sex == FEMALE)
5 h6 `: S% `! v) \* G" i &&(!ag1.isCoupled())){
- T$ ?* S; ^& m+ z0 z% M System.out.println("YYYYYYYYYYYYYYYYYYYY");, v2 v |( W+ x- g1 |
potenAgent[goodNumber] = ag1;7 n: f6 j1 |/ Y
goodNumber ++;
2 |$ n( W! Z9 t# j& Q& Q0 s9 @3 |# } }# `/ g" H1 }# Q1 Y+ n9 T% [
}2 W: t) R- F/ U% t
6 @) D4 n$ g/ H if(goodNumber >0){
/ v( M! g) }/ G& J0 o2 D! e# c. { System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; z5 g4 L2 r! Z; g; Y Random rd1 = new Random();6 C4 y- T# a6 _1 P" V
int select = rd1.nextInt(goodNumber);
+ X$ h2 W* O) U potentialParterner = potenAgent[select];
- _3 z" g' Y& r" R' N value = true;1 S4 Z+ r1 d+ l1 F6 b. u
}/ V4 c: S6 P1 v8 s* D/ b
return value;
: |8 B/ `0 J7 y4 n- K1 {3 ^ }; _5 {, h2 l0 d" }
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|