|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! ]: x- t a3 [
private boolean findPotentialPartner(){. `! j) }) b: y' ]& k
boolean value = false;% ]3 o) E/ V, [8 g6 y$ I
2 O) S3 r. e# X$ h8 j) y8 M( |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 B( l+ b3 l4 ^ U& g; }
Iterator iterator = grid.getIteratorAt(x, y);
: P4 ^1 w7 ]6 z) x$ w1 y; k# k SexAgent ag1 = null; ! ~, X3 G; k# K7 d; ~2 S/ Y, s; \3 Y
SexAgent [] potenAgent = new SexAgent[20];
8 G/ S! h; r) R7 Z% O" _8 | int goodNumber = 0;* G- T. P1 q+ \1 W2 `3 ~2 `4 c9 x1 Y# Y, d
while(iterator.hasNext()){: K/ }8 j9 b; U J
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
: X1 x$ l2 Q" O& [4 o% N: I! U ag1 = (SexAgent)iterator.next();5 |6 j* H1 {! l
if((ag1.sex == FEMALE) 4 b* d) B1 z5 N& b0 \( Q% m& N& `
&&(!ag1.isCoupled())){ s, J1 H& `/ K) T+ k# [0 x# _0 r
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ z- I C8 \4 G f! J r4 [9 l
potenAgent[goodNumber] = ag1;" b/ c# }! H9 H
goodNumber ++;8 t }0 J1 R E& @0 A* _
}; c* d3 B4 u1 r9 c0 J8 A5 T; A% S
}
6 _8 _# b$ [# w q0 @( u6 Y
: z z; f/ \+ u8 {" C& \ if(goodNumber >0){
8 V" k9 G/ X8 w' h' k6 ^ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 \0 U3 Y) q; h- I1 k! g
Random rd1 = new Random();
* ~" q$ ]2 j- ~" V: _+ P int select = rd1.nextInt(goodNumber);" U+ K: G; J* {% A+ g- |/ t
potentialParterner = potenAgent[select];
7 Y. [. v$ x- U( \! f# @ value = true;
/ d! M) l5 u* D: z( @ }
* Z5 O/ \: h4 G% y return value;
9 {5 q/ |% h- a) F4 ~3 ~4 G1 i7 i }% t7 I) ?9 X/ N3 q" [2 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|