|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 a+ S, W# D6 R7 `" P# t private boolean findPotentialPartner(){
+ n- k' {4 M# W/ ] o# U boolean value = false;
! [4 j' j- ?- E9 S
% w. @: b. F6 @& o# S! n+ J- [+ \& Z$ V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ n! Y3 t% p/ W4 b% h* Q* Z- { Iterator iterator = grid.getIteratorAt(x, y);. [9 N- D5 B! A/ D9 ^8 a" \/ k
SexAgent ag1 = null;
' ^- A. j: y V0 a! J1 I4 l( m SexAgent [] potenAgent = new SexAgent[20];
2 f, f0 s7 X) C2 I int goodNumber = 0;2 X% Q) {$ D% `" o# }) T0 _& j; F
while(iterator.hasNext()){
" R' Y* a/ K: g System.out.println("XXXXXXXXXXXXXXXXXXXXX");! @5 t8 j# {: a7 ~) b; G6 a
ag1 = (SexAgent)iterator.next();
. m4 @0 L+ n4 l7 S8 k0 E) W' e if((ag1.sex == FEMALE)
4 d$ B4 f: U0 ~8 b &&(!ag1.isCoupled())){3 S+ `0 M" \3 L0 `8 b1 `" P
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& Y8 Z6 d8 J$ A# I' _2 Z. y) T potenAgent[goodNumber] = ag1;
9 A9 A: t9 F+ \& n goodNumber ++;
; i! j; e; w4 Q9 b. \0 c+ E6 g }3 I( C' p; s/ k# b8 x% a4 }7 s* J
}
. U( i' k* t8 x( }2 e( V
1 [# _+ N! }, \! D0 R if(goodNumber >0){
0 `) I/ v" P' N System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 k: R6 [: E( J4 M# Q9 E' c' b Random rd1 = new Random();* D T% v5 p0 [; o) a
int select = rd1.nextInt(goodNumber);
6 ~+ ]7 F7 S' m+ K potentialParterner = potenAgent[select];
2 j/ z, O" H$ y P& p% \$ l value = true;
3 R9 F1 d6 Z( t# i% p1 ]' \9 u }" }9 ]. u! @: v
return value;
8 J1 z1 X) V: T' a& `0 p8 D }
; y; Y, Z3 Z" d' g5 g7 P始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|