设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4184|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?
6 W2 C8 ]' A0 J' D# V1 t        public void spreadmoney(int m){
# s: s( j/ u1 w' t. Q  G1 `9 `                for(int i=0;i<m;i++){3 P* |+ u' `. d$ q$ o
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));/ _9 v2 G1 ~* L* {7 W; N" c! g
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));$ d& {, V, O  b7 M
$ q2 }+ d: V% H/ x
                        int I;3 z* S' Y2 t' l
                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();" }' A8 P4 D& R1 j- ~3 t8 h. y1 P
                        }. p" J* |: `+ l( L# u8 j
                        else{
5 v" ^2 D2 @; ]4 M3 r, V                                I = 0;, ~5 s( B* o( d/ L3 c! l+ S
                        }4 T3 N( Z& \; j
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
- x2 x' K0 ?( i/ `. B* b# T* r& y        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       2 ]  B; r8 Y% ?) m. `
       public void spreadmoney(int m){
6 {" K- u) d8 [( p4 H5 i                for(int i=0;i<m;i++){
5 K4 x/ b# O0 L0 r1 A) M8 y                        int x = (int)(Math.random()*(moneyspace.getSizeX()));# f8 T# l' \+ W7 d  V+ V
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));( }& I0 z- i3 k3 p
1 C# }2 x9 J& G, k0 T7 z. `& ?
                        int I;
# w( m" |. m' r# p: S( N                        if(moneyspace.getObjectAt(x,y)!=null                                ( h+ w9 M2 n0 F% {
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
7 v' b3 l& S, h                        }
2 s$ _( E! T5 T$ e( f                        else{7 Y0 t; h+ n, I: h
                                I = 0;+ m' E. Z3 W- i2 M4 p. k
                        }8 z; X( K+ O; c8 i$ F1 L- _
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }- ?" _. F& k8 l$ H
        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
' M$ h9 V8 ]% F! a% U4 u( S" y第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。: P% w* {* w6 i
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2025-7-16 04:17 , Processed in 0.016872 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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