QQ登录

只需要一步,快速开始

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

C++和Lingo混合编程,求全局最优解

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

1

主题

10

听众

15

积分

升级  10.53%

  • TA的每日心情
    奋斗
    2016-12-12 13:45
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    自我介绍
    建模初学者,爱好者。

    群组物联网工程师培训

    跳转到指定楼层
    1#
    发表于 2016-12-5 12:09 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    用Lingo求非线性方程组的解。在Lingo里的option中勾选use global solver,可以得到最优解,不勾选,只能得到可行解。在C++里调用Lingo时得到的是可行解,试过将SET ECHOIN改为SET GLOBAL也没用(这个设置我也不太懂,后面是设置全局?麻烦明白的讲一下)。我的目的要得到全局最优解。用的VS2008,Lingo11破解版。num(1)= 9.5;num(2)= -11;num(3) = -0.5;num(4) = -11;num(5) = 9.5;num(6) = 16;num(7) = -0.5;num(8) = 16;
    下面是Lingo程序
    model:

    sets:
            coor/1..12/:x;
            ID/1..8/:num;
    endsets

    data:
            num=@pointer(1);
    enddata

    !约束条件;
    1.5*x(1)+2*x(2)=num(1);
    x(2)-1.5*x(3)=num(2);
    1.5*x(4)-2*x(5)=num(3);
    x(5)-1.5*x(6)=num(4);
    1.5*x(7)+2*x(8)=num(5);
    x(8)+1.5*x(9)=num(6);
    1.5*x(10)-2*x(11)=num(7);
    x(11)+1.5*x(12)=num(8);
    @sqrt((x(1)-x(4))^2+(x(2)-x(5))^2+(x(3)-x(6))^2)=4;
    @sqrt((x(4)-x(7))^2+(x(5)-x(8))^2+(x(6)-x(9))^2)=3;
    @sqrt((x(7)-x(10))^2+(x(8)-x(11))^2+(x(9)-x(12))^2)=4;
    @sqrt((x(10)-x(1))^2+(x(11)-x(2))^2+(x(12)-x(3))^2)=3;
    @sqrt((x(4)-x(10))^2+(x(5)-x(11))^2+(x(6)-x(12))^2)=5;
    @sqrt((x(1)-x(7))^2+(x(2)-x(8))^2+(x(3)-x(9))^2)=5;

    data:
            @pointer(2) = x;
            @pointer(3) = @status();
    enddata

    end



    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    1

    主题

    10

    听众

    15

    积分

    升级  10.53%

  • TA的每日心情
    奋斗
    2016-12-12 13:45
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    自我介绍
    建模初学者,爱好者。

    群组物联网工程师培训

    好像是Lingo11是不完全破解,在Lingo中是无限制,但C++调用后就有限制,求完全破解版
    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5199

    积分

    独孤求败

  • TA的每日心情
    擦汗
    2018-4-26 23:29
  • 签到天数: 1502 天

    [LV.Master]伴坛终老

    自我介绍
    紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。 重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。

    社区QQ达人 邮箱绑定达人 发帖功臣 元老勋章 新人进步奖 风雨历程奖 最具活力勋章

    群组计量经济学之性

    群组LINGO

    求解的时候需要调用全局变量,对你的模型全局求解,代码里面添加一句:
    1. model:

    2. sets:
    3.         coor/1..12/:x;
    4.         ID/1..8/:num;
    5. endsets

    6. data:
    7.         num=@pointer(1);
    8. enddata
    9. @SET('GLOBAL', 1);
    10. !约束条件;
    11. 1.5*x(1)+2*x(2)=num(1);
    12. x(2)-1.5*x(3)=num(2);
    13. 1.5*x(4)-2*x(5)=num(3);
    14. x(5)-1.5*x(6)=num(4);
    15. 1.5*x(7)+2*x(8)=num(5);
    16. x(8)+1.5*x(9)=num(6);
    17. 1.5*x(10)-2*x(11)=num(7);
    18. x(11)+1.5*x(12)=num(8);
    19. @sqrt((x(1)-x(4))^2+(x(2)-x(5))^2+(x(3)-x(6))^2)=4;
    20. @sqrt((x(4)-x(7))^2+(x(5)-x(8))^2+(x(6)-x(9))^2)=3;
    21. @sqrt((x(7)-x(10))^2+(x(8)-x(11))^2+(x(9)-x(12))^2)=4;
    22. @sqrt((x(10)-x(1))^2+(x(11)-x(2))^2+(x(12)-x(3))^2)=3;
    23. @sqrt((x(4)-x(10))^2+(x(5)-x(11))^2+(x(6)-x(12))^2)=5;
    24. @sqrt((x(1)-x(7))^2+(x(2)-x(8))^2+(x(3)-x(9))^2)=5;

    25. data:
    26.         @pointer(2) = x;
    27.         @pointer(3) = @status();
    28. enddata

    29. end
    复制代码
    我的LINGO求解变量有限制,你在自己的上面试试,模型本身没问题的话就能求解出来。

    点评

    七月sanger  我用的Lingo11,添上这句,说代码语法错误哎  详情 回复 发表于 2016-12-6 11:27
    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

    1

    主题

    10

    听众

    15

    积分

    升级  10.53%

  • TA的每日心情
    奋斗
    2016-12-12 13:45
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    自我介绍
    建模初学者,爱好者。

    群组物联网工程师培训

    liwenhui 发表于 2016-12-5 20:33
    求解的时候需要调用全局变量,对你的模型全局求解,代码里面添加一句:我的LINGO求解变量有限制,你在自己的 ...

    我用的Lingo11,添上这句,说代码语法错误哎

    点评

    liwenhui  这不科学  详情 回复 发表于 2016-12-6 15:29
    liwenhui  这不科学  详情 回复 发表于 2016-12-6 15:27
    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5199

    积分

    独孤求败

  • TA的每日心情
    擦汗
    2018-4-26 23:29
  • 签到天数: 1502 天

    [LV.Master]伴坛终老

    自我介绍
    紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。 重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。

    社区QQ达人 邮箱绑定达人 发帖功臣 元老勋章 新人进步奖 风雨历程奖 最具活力勋章

    群组计量经济学之性

    群组LINGO

    七月sanger 发表于 2016-12-6 11:27
    我用的Lingo11,添上这句,说代码语法错误哎

    这不科学
    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5199

    积分

    独孤求败

  • TA的每日心情
    擦汗
    2018-4-26 23:29
  • 签到天数: 1502 天

    [LV.Master]伴坛终老

    自我介绍
    紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。 重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。

    社区QQ达人 邮箱绑定达人 发帖功臣 元老勋章 新人进步奖 风雨历程奖 最具活力勋章

    群组计量经济学之性

    群组LINGO

    七月sanger 发表于 2016-12-6 11:27
    我用的Lingo11,添上这句,说代码语法错误哎

    这不科学
    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

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

    [LV.8]以坛为家I

       1. 可以向LINDO Systems申请Extended版本的Free Academic, six months renewable;
       2. 看Samples下的例子如何使用函数‘@SET',这个应出现在CALC段;
       3. 用这种Run script的方式控制力还不够,试试LINDO API。
    有什么好说的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-7-20 03:16 , Processed in 1.266917 second(s), 92 queries .

    回顶部