设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2757|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?) I4 S+ r9 Q) C
        public void spreadmoney(int m){
/ `( Z, g$ Y( B                for(int i=0;i<m;i++){
0 L0 S1 E# G4 Q0 j                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
# a  t4 N. t$ m! a' k6 h                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
- \/ _/ \. I( L( ^% Z: U7 I
2 W( {0 t0 X% d* b/ y' z8 I                        int I;+ p/ r- o# }+ l  t2 L# b
                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();- z% y8 h9 J- [; Q8 Q  W
                        }- |7 u$ ]1 T, b- U7 {
                        else{0 P( t8 i, h! r! R& `0 E) U
                                I = 0;" ]8 |6 d& v6 ]' K0 J- n, j+ [) k# D
                        }
$ n4 w4 R: `) d. g                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }5 V7 q9 r% p# r9 b+ m$ P+ q
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?      
% Q4 s0 U5 e, ~6 h. K       public void spreadmoney(int m){; t2 v  N: G& B
                for(int i=0;i<m;i++){
, `; J- x1 a/ _                        int x = (int)(Math.random()*(moneyspace.getSizeX()));: F2 {4 @5 x5 L0 P) T7 X; l; R+ j
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
* j0 P8 r! V6 l! ?  E" j  X0 |1 H- W8 M, |4 z9 L! J( v/ e1 z& S
                        int I;
/ Z$ d( [, B( h                        if(moneyspace.getObjectAt(x,y)!=null                                , b/ Q+ n, j7 S; K
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
: W1 F' M& O; |                        }; O' n% M- A! a8 Q0 p
                        else{4 G, ^( s3 K! }$ N
                                I = 0;# Y; O1 x' ?$ L
                        }
1 o6 G% \; P: z! W                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }3 B9 w" Z0 x+ L+ R0 E4 W6 J' }2 o
        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
2 \& {- Q. \' ~第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。/ \3 M, j1 d" X6 V$ K+ K
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2024-5-7 00:22 , Processed in 0.011708 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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