设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5222|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?8 u2 c+ m- p5 k4 R- c8 A
        public void spreadmoney(int m){9 t' R- r1 w. B
                for(int i=0;i<m;i++){
' C+ _3 Y7 F# I; R: k) W                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
2 ~' n' P( V) z1 K                        int y = (int)(Math.random()*(moneyspace.getSizeY()));" P* a" q; ^" w" f2 m; c7 k9 c' T

4 x5 R' x5 ~! d. Z" K( J/ a                        int I;4 R* {" Q& Y' U* Q" z) l( n5 ?7 m
                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();; n, J+ D' @3 u: h
                        }. |$ t5 d3 `3 k; j5 r3 O# C
                        else{
( J( Q5 m, S4 ?" k& j2 N. `6 [                                I = 0;) f; g% J3 M! F* P+ w. l# ^* g
                        }
' B% g, Q/ k5 B6 p0 v) s                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
  I% V( ]6 ^/ N- ?, p1 ~; ]: \+ \  y        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       , k0 [2 g$ h6 n2 T" \
       public void spreadmoney(int m){* w, P" G! D# n. T/ v
                for(int i=0;i<m;i++){
/ e( j0 R) o1 l& l! Y+ _' X                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
, X; d1 K  x: I5 ]1 q' e                        int y = (int)(Math.random()*(moneyspace.getSizeY()));' c5 o1 h. f: ]
1 T: M3 ~$ M' l" o2 o5 d4 K7 l
                        int I;
) ]( s% I1 y+ w4 b$ x( Y3 q3 Y                        if(moneyspace.getObjectAt(x,y)!=null                                $ i/ V* c" {. w2 ?8 y9 I2 D) {
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();: P4 |) X. c+ J% a9 X5 @; M) w
                        }- t/ U4 {8 o- L  ?. V3 {$ I  m
                        else{) J& C$ ^8 v8 v  s# m( q
                                I = 0;; E1 b3 J* O- I* h, ~
                        }& A! ^! O: ?; I# ~9 P4 k
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
! M6 N) k! P1 k        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
9 l2 G( ?$ {" r第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。
& t, k. s/ l/ p7 r( l第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-3-14 03:08 , Processed in 1.664477 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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