设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5715|回复: 3

[求助] 关于CarryDrop model的一个问题

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?
9 P  C( D$ J9 O+ d1 H% b        public void spreadmoney(int m){9 \7 r" q3 z% Y7 x6 ]( h, e
                for(int i=0;i<m;i++){
) E$ x. r% G) }! ~: ^                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
. B0 M0 z9 p' @4 q; q1 P3 T8 j                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
( R+ ?3 h' ~$ D( f- f- Z& L. m9 ^. e
                        int I;
* B. K1 t4 h( n! v! `                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
8 v4 A5 F. F; O* ?                        }
/ I8 T% t0 T2 z' b. A4 l; I                        else{( Y" M$ p' {. C; }$ R8 z0 ?! O% S
                                I = 0;
# ?' B/ w& A9 s                        }, m, ~+ G! a9 n3 g& g
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }# B, r2 `6 P- [9 X+ p3 x- T
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       8 `% O: M" u/ _/ B" L4 j. q  @" c  ^
       public void spreadmoney(int m){
. F2 A; M$ o1 `; e, F2 v4 C& u                for(int i=0;i<m;i++){
& P# ^+ g+ E0 f- n) V) ~                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
8 y9 M5 C  @5 `1 L& x5 j, y                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
  f9 K7 ?- |1 r6 B1 z
6 t, D$ u# a2 e0 y                        int I;4 ~8 Q  G! s8 h% i7 m2 s/ ]0 T  q
                        if(moneyspace.getObjectAt(x,y)!=null                                
. a7 s; u) _& k4 G* d9 N* R1 x$ [                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();3 C8 k! ^# u4 \* e7 C
                        }
7 ~. G' l5 N2 T/ A+ I0 ^                        else{4 [! P5 b* N- S" T5 n9 O
                                I = 0;# B8 L9 V( X3 B2 M
                        }
3 j  V7 X% s2 g3 b0 }                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }6 Q, ]" s( d( u5 v* J
        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
: Z* z* q! S" F7 C3 `, G! ?5 {. j第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。
! N) t9 N( A" X; a- G) s' O. l& y第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

e, 没人回答你不代表论坛失败。。。做这块的本来人就少,而且刚好看过捡钱这个例子的人也不多。  发表于 2012-3-15 17:29
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-7-11 15:05 , Processed in 0.017667 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表