设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5803|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?- W0 h5 P" c$ B1 A' z9 O! w
        public void spreadmoney(int m){
) ]9 ~4 K+ l) {/ e/ f8 G% F                for(int i=0;i<m;i++){- f% e3 W& j+ J% E% W  z: v2 X
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
* ]* B5 |1 U8 W& T* K                        int y = (int)(Math.random()*(moneyspace.getSizeY()));  B% w5 u! b+ ]* z+ d0 j

/ S, g+ r. f1 [8 Z8 ]                        int I;
7 G# |9 ]0 I, s" R/ ^; @  A                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();7 q# ^5 l  b7 o$ e; @
                        }2 T( D% n$ S5 e. r0 _  a6 V$ @
                        else{# K7 j3 l8 q, o4 `& @
                                I = 0;
. v- ^8 J8 z) z5 X, E: j                        }
7 v% a9 j; Y3 \. b+ V) g                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }6 m( y' Q$ b- r! v; ]0 n. |( w
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       9 `" I- ?" V: r, H
       public void spreadmoney(int m){# n, }& L" o/ m5 S
                for(int i=0;i<m;i++){. L0 H1 [' R' H
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));9 N' @$ L# u) v  c: ?' \' z  Z2 X
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
2 M& [: w2 J9 K! B! v# g  A
  r. a: G8 Q. s- y                        int I;
% n7 h! F; \" W  f                        if(moneyspace.getObjectAt(x,y)!=null                                " S' K: v7 j8 m7 t9 F0 u+ |! E
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
5 i/ A# _+ Y2 S" J                        }
  l7 y% j# h/ _: z& U8 |) Y6 s0 N                        else{
6 a/ J- R# S' i' T                                I = 0;
# B0 w. A+ {  ^7 t% a" e9 V1 e                        }
& X2 A$ X5 G! [$ j                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
3 f# O0 R3 A/ Q7 n2 u        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
( H* q, W. A- m第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。9 e' t' c- _+ M. g
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-7-20 18:24 , Processed in 0.016453 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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