QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2844|回复: 12
打印 上一主题 下一主题

多次运行结果不一致

[复制链接]
字体大小: 正常 放大
zyz数模        

6

主题

7

听众

254

积分

升级  77%

  • TA的每日心情
    擦汗
    2014-8-8 17:23
  • 签到天数: 88 天

    [LV.6]常住居民II

    自我介绍
    大一学生,专业环境工程。对数学建模感兴趣。

    群组数学建摸协会

    群组第三届数模基础实训

    群组华南理工大学

    群组2014美赛ICMC题备战群

    跳转到指定楼层
    1#
    发表于 2013-8-9 22:00 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    Max  z = x12 + x22 +3x32 + 4x42 + 2x5 2 −8x1 −2x2 −3x3 − x4 −2x 5
    约束条件:
    0 ≤ xi ≤ 99        (i =1,,5)
    x1 + x2 + x3 + x4 + x5   ≤ 400
    x1 + 2x2 + 2x3 + x4 +6x5 ≤ 800
    2x1 + x2 +6x3   ≤ 200
    x3 + x4 +5x5 ≤ 200


    function [f,g]=mengte(x); f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
    x(4)-2*x(5); g=[sum(x)-400
    x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
    2*x(1)+x(2)+6*x(3)-200 x(3)+x(4)+5*x(5)-200];

    主程序:
    rand('state',sum(clock));
    p0=0;
    tic
    for i=1:10^6
        x=99*rand(5,1);
        x1=floor(x);x2=ceil(x);
        [f,g]=mengte(x1);
        if sum(g<=0)==4
            if p0<=f
                x0=x1;p0=f;
            end
        end
        [f,g]=mengte(x2);
        if sum(g<=0)==4
            if p0<=f
                x0=x2;p0=f;
            end
        end
    end
    x0,p0
    toc
    采用的是蒙特卡洛法,程序多次运行,每次运行结果都不一样,是这种算法的缺陷,还是我的程序不够好。多谢各位指导。
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    magic2728 实名认证    中国数模人才认证   

    61

    主题

    478

    听众

    4861

    积分

    升级  95.37%

  • TA的每日心情
    慵懒
    2014-9-29 19:37
  • 签到天数: 409 天

    [LV.9]以坛为家II

    群组数学中国 2015美赛护航

    群组数模专题强化培训

    群组建模思维养成培训

    群组2015美赛护航(强化)

    群组2013年数学建模国赛备

    zyz数模 发表于 2013-8-10 23:11
    多谢提醒,因为初学matlab,没有接触lingo。这个算法运行多次,还是不能得出最优解,在自己加的一个matla ...

    运行的够多程序的解肯定会越来越好的!
    回复

    使用道具 举报

    zyz数模        

    6

    主题

    7

    听众

    254

    积分

    升级  77%

  • TA的每日心情
    擦汗
    2014-8-8 17:23
  • 签到天数: 88 天

    [LV.6]常住居民II

    自我介绍
    大一学生,专业环境工程。对数学建模感兴趣。

    群组数学建摸协会

    群组第三届数模基础实训

    群组华南理工大学

    群组2014美赛ICMC题备战群

    多谢各位,今天因为和姐姐跑出去玩,还看了一场电影(好开心的说!),登陆数学中国之后看到你们的建议心里真的好开心!
    回复

    使用道具 举报

    zyz数模        

    6

    主题

    7

    听众

    254

    积分

    升级  77%

  • TA的每日心情
    擦汗
    2014-8-8 17:23
  • 签到天数: 88 天

    [LV.6]常住居民II

    自我介绍
    大一学生,专业环境工程。对数学建模感兴趣。

    群组数学建摸协会

    群组第三届数模基础实训

    群组华南理工大学

    群组2014美赛ICMC题备战群

    wujianjack2 发表于 2013-8-10 18:42
    嗯,很好很好!我平常编程风格就是这样的。
      不过这次我没这么写有两个理由:
       1.估摸着这么写程序 ...

    嘿嘿,多谢啦!初接触建模,几个师兄建议我先学习功能强大的matlab软件,其他软件就没有接触了(自己比较笨,东西多了可能掌握不了)。最近一直在看关于建模的东西,发现自己所想到的解决办法当转化为程序时真心好难
    回复

    使用道具 举报

    zyz数模        

    6

    主题

    7

    听众

    254

    积分

    升级  77%

  • TA的每日心情
    擦汗
    2014-8-8 17:23
  • 签到天数: 88 天

    [LV.6]常住居民II

    自我介绍
    大一学生,专业环境工程。对数学建模感兴趣。

    群组数学建摸协会

    群组第三届数模基础实训

    群组华南理工大学

    群组2014美赛ICMC题备战群

    wujianjack2 发表于 2013-8-10 10:44
    楼主你好,你的想法不错啊!
      首先,我对你的问题有一些疑惑,主要有如下两个方面:
      1.个人觉得你的 ...

    多谢指出我的错误,因为初接触建模,几个师兄建议我学功能强大的matlab,其他软件就没有去研究了。我在一个matlab群里发问,一个师兄算出5100+,而我的最大值是5000+,多次运算结果在4900+处浮动,(具体数字没有列出,不好意思)多谢你的提醒
    回复

    使用道具 举报

    zyz数模        

    6

    主题

    7

    听众

    254

    积分

    升级  77%

  • TA的每日心情
    擦汗
    2014-8-8 17:23
  • 签到天数: 88 天

    [LV.6]常住居民II

    自我介绍
    大一学生,专业环境工程。对数学建模感兴趣。

    群组数学建摸协会

    群组第三届数模基础实训

    群组华南理工大学

    群组2014美赛ICMC题备战群

    magic2728 发表于 2013-8-10 15:08
    蒙特卡洛算法就是一种随机性的算法,所以每次运行结果不一样很正常,它的基本思想就是不断在可行域内找点试 ...

    多谢提醒,因为初学matlab,没有接触lingo。这个算法运行多次,还是不能得出最优解,在自己加的一个matlab群里有一位回复了我,他的答案要优于我,算法却不一样,同时也没有给我看他的程序。不知道有没有对我程序的改进方法。至于用到floor以及ceil是因为题目要求是整数解。
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    magic2728 发表于 2013-8-10 19:42
    你的风格是只把自变量当成集里面的元素写在程序里,我的风格是把所有的参数都按照集的方式写进来,这样的 ...

    嗯,大家都是为了能更好地解决楼主问题而尽力!至于风格嘛,也是可以变通学习的。
    有什么好说的
    回复

    使用道具 举报

    magic2728 实名认证    中国数模人才认证   

    61

    主题

    478

    听众

    4861

    积分

    升级  95.37%

  • TA的每日心情
    慵懒
    2014-9-29 19:37
  • 签到天数: 409 天

    [LV.9]以坛为家II

    群组数学中国 2015美赛护航

    群组数模专题强化培训

    群组建模思维养成培训

    群组2015美赛护航(强化)

    群组2013年数学建模国赛备

    wujianjack2 发表于 2013-8-10 18:42
    嗯,很好很好!我平常编程风格就是这样的。
      不过这次我没这么写有两个理由:
       1.估摸着这么写程序 ...

    你的风格是只把自变量当成集里面的元素写在程序里,我的风格是把所有的参数都按照集的方式写进来,这样的话会用到很多lingo的函数,如求和,循环等等,能体现lingo这个软件的特点和优势。而你那个却是更加明确一些。因为到底是变量还是参数,一目了然不会混淆。

    点评

    wujianjack2  嗯,大家都是为了能更好地解决楼主问题而尽力!至于风格嘛,也是可以变通学习的。  详情 回复 发表于 2013-8-10 19:59
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    magic2728 发表于 2013-8-10 15:08
    蒙特卡洛算法就是一种随机性的算法,所以每次运行结果不一样很正常,它的基本思想就是不断在可行域内找点试 ...

      嗯,很好很好!我平常编程风格就是这样的。
      不过这次我没这么写有两个理由:
       1.估摸着这么写程序显得更长,而且会涉及到LINGO过多的规则,不如写简短直观点,方便大家阅读;
       2.楼主既然用MATLAB解题,可能以前没有接触过LINGO,我有意要突出LINGO语言的表述可以与实际模型基本接近的优势,以此来向楼主推荐比较专业的优化软件LINGO,是别有居心的,哈哈。

    点评

    zyz数模  嘿嘿,多谢啦!初接触建模,几个师兄建议我先学习功能强大的matlab软件,其他软件就没有接触了(自己比较笨,东西多了可能掌握不了)。最近一直在看关于建模的东西,发现自己所想到的解决办法当转化为程序时真心好难  详情 回复 发表于 2013-8-10 23:20
    magic2728  你的风格是只把自变量当成集里面的元素写在程序里,我的风格是把所有的参数都按照集的方式写进来,这样的话会用到很多lingo的函数,如求和,循环等等,能体现lingo这个软件的特点和优势。而你那个却是更加明确一些。  详情 回复 发表于 2013-8-10 19:42
    有什么好说的
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-26 00:19 , Processed in 0.730582 second(s), 101 queries .

    回顶部