QQ登录

只需要一步,快速开始

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

新手求教大家一下,谢谢大家了

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

4

主题

10

听众

10

积分

升级  5.26%

  • TA的每日心情
    郁闷
    2015-8-6 17:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    自我介绍
    中等水平
    跳转到指定楼层
    1#
    发表于 2015-7-28 13:11 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    model:
    sets:
    row/1..5/;
    col/1..5/;
    links(row,col):a,x;
    endsets
    data:
    a=3 8 2 10 3
    8 7 2 9 7
    6 4 2 7 5
    8 4 2 3 5
    9 10 6 9 10;
    enddata
    min=@sum(links:a*x);
    @for(linksbnd(0,x,2));
    @for(row(i)sum(col(j):x(i,j))=1);
    @for(col(j)sum(row(i):x(i,j))=1);

    谁有有时间啊?能帮忙看下程序吗?

    非常感谢大家了

    [color=gray !important][size=0.8em]今天 13:10LCYMATH
    我的问题是,如果@for(row(i)sum(col(j):x(i,j))=1);
    @for(col(j)sum(row(i):x(i,j))=1);这两个语句中i,j下标都去掉,运行结果还一样吗?



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

    4

    主题

    10

    听众

    10

    积分

    升级  5.26%

  • TA的每日心情
    郁闷
    2015-8-6 17:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    自我介绍
    中等水平
    回复

    使用道具 举报

    LCYMATH        

    4

    主题

    10

    听众

    10

    积分

    升级  5.26%

  • TA的每日心情
    郁闷
    2015-8-6 17:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    自我介绍
    中等水平
    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5195

    积分

    独孤求败

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

    [LV.Master]伴坛终老

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

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

    群组计量经济学之性

    群组LINGO

    省略下标LINGO有时候可能会显示语法错误。只有LINGO能唯一识别的情况,才不会出错。就针对你给出的这个例子LINGO应该可以正确识别,结果应该不会变。
    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

    gf2015 实名认证       

    3

    主题

    10

    听众

    375

    积分

    升级  25%

  • TA的每日心情
    奋斗
    2016-11-19 18:24
  • 签到天数: 178 天

    [LV.7]常住居民III

    社区QQ达人

    楼上说的对,就你这个程序来说,不会变

    点评

    liwenhui  呵呵。大胆猜测,小心求证。自己动手,丰衣足食。不要迷信。  详情 回复 发表于 2015-7-28 13:56
    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5195

    积分

    独孤求败

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

    [LV.Master]伴坛终老

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

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

    群组计量经济学之性

    群组LINGO




    刚才又试了一下,结果会有出入,主要是识别问题。实践当中,推荐大家还是写上指标最好,这样能避免错误。
    针对你这个例子,两种方法都不会报错,但结果会有出入,因为LINGO把这两种情况识别为了不同的模型,我在下面解释。

    首先是写明下标的情况,
    1. model:
    2. sets:
    3. row/1..5/;
    4. col/1..5/;
    5. links(row,col):a,x;
    6. endsets
    7. data:
    8. a=3 8 2 10 3
    9. 8 7 2 9 7
    10. 6 4 2 7 5
    11. 8 4 2 3 5
    12. 9 10 6 9 10;
    13. enddata
    14. min=@sum(links:a*x);
    15. @for(links:@bnd(0,x,2));
    16. @for(row(i):@sum(col(j):x(i,j))=1);
    17. @for(col(j):@sum(row(i):x(i,j))=1);
    18. end
    复制代码
    用Generate/display model把这个模型在LINGO里展开,得到的结果是:
    1. MODEL:
    2. [_1] MIN= 3 * X_1_1 + 8 * X_1_2 + 2 * X_1_3 + 10 * X_1_4 + 3 * X_1_5 + 8 * X_2_1 +
    3.   7 * X_2_2 + 2 * X_2_3 + 9 * X_2_4 + 7 * X_2_5 + 6 * X_3_1 + 4 * X_3_2 + 2 * X_3_3
    4.   + 7 * X_3_4 + 5 * X_3_5 + 8 * X_4_1 + 4 * X_4_2 + 2 * X_4_3 + 3 * X_4_4 + 5 *   
    5.   X_4_5 + 9 * X_5_1 + 10 * X_5_2 + 6 * X_5_3 + 9 * X_5_4 + 10 * X_5_5;            
    6. [_2] X_1_1 + X_1_2 + X_1_3 + X_1_4 + X_1_5 = 1;
    7. [_3] X_2_1 + X_2_2 + X_2_3 + X_2_4 + X_2_5 = 1;
    8. [_4] X_3_1 + X_3_2 + X_3_3 + X_3_4 + X_3_5 = 1;
    9. [_5] X_4_1 + X_4_2 + X_4_3 + X_4_4 + X_4_5 = 1;
    10. [_6] X_5_1 + X_5_2 + X_5_3 + X_5_4 + X_5_5 = 1;
    11. [_7] X_1_1 + X_2_1 + X_3_1 + X_4_1 + X_5_1 = 1;
    12. [_8] X_1_2 + X_2_2 + X_3_2 + X_4_2 + X_5_2 = 1;
    13. [_9] X_1_3 + X_2_3 + X_3_3 + X_4_3 + X_5_3 = 1;
    14. [_10] X_1_4 + X_2_4 + X_3_4 + X_4_4 + X_5_4 = 1;
    15. [_11] X_1_5 + X_2_5 + X_3_5 + X_4_5 + X_5_5 = 1;
    16. @BND( 0, X_1_1, 2); @BND( 0, X_1_2, 2); @BND( 0, X_1_3, 2);
    17. @BND( 0, X_1_4, 2); @BND( 0, X_1_5, 2); @BND( 0, X_2_1, 2);
    18. @BND( 0, X_2_2, 2); @BND( 0, X_2_3, 2); @BND( 0, X_2_4, 2);
    19. @BND( 0, X_2_5, 2); @BND( 0, X_3_1, 2); @BND( 0, X_3_2, 2);
    20. @BND( 0, X_3_3, 2); @BND( 0, X_3_4, 2); @BND( 0, X_3_5, 2);
    21. @BND( 0, X_4_1, 2); @BND( 0, X_4_2, 2); @BND( 0, X_4_3, 2);
    22. @BND( 0, X_4_4, 2); @BND( 0, X_4_5, 2); @BND( 0, X_5_1, 2);
    23. @BND( 0, X_5_2, 2); @BND( 0, X_5_3, 2); @BND( 0, X_5_4, 2);
    24. @BND( 0, X_5_5, 2);
    25. END
    复制代码
    运行结果:
      Global optimal solution found.
      Objective value:                              21.00000
      Infeasibilities:                              0.000000
      Total solver iterations:                            11

    最优解为21

    接着,把i 和j 去掉,
    1. model:
    2. sets:
    3. row/1..5/;
    4. col/1..5/;
    5. links(row,col):a,x;
    6. endsets
    7. data:
    8. a=3 8 2 10 3
    9. 8 7 2 9 7
    10. 6 4 2 7 5
    11. 8 4 2 3 5
    12. 9 10 6 9 10;
    13. enddata
    14. min=@sum(links:a*x);
    15. @for(links:@bnd(0,x,2));
    16. @for(row:@sum(col:x)=1);
    17. @for(col:@sum(row:x)=1);
    18. end
    复制代码
    同样,展开这个模型为:
    1. MODEL:
    2. [_1] MIN= 3 * X_1_1 + 8 * X_1_2 + 2 * X_1_3 + 10 * X_1_4 + 3 * X_1_5 + 8 * X_2_1 +
    3.   7 * X_2_2 + 2 * X_2_3 + 9 * X_2_4 + 7 * X_2_5 + 6 * X_3_1 + 4 * X_3_2 + 2 * X_3_3
    4.   + 7 * X_3_4 + 5 * X_3_5 + 8 * X_4_1 + 4 * X_4_2 + 2 * X_4_3 + 3 * X_4_4 + 5 *   
    5.   X_4_5 + 9 * X_5_1 + 10 * X_5_2 + 6 * X_5_3 + 9 * X_5_4 + 10 * X_5_5;            
    6. [_2] X_1_1 + X_1_2 + X_1_3 + X_1_4 + X_1_5 = 1;
    7. [_3] X_2_1 + X_2_2 + X_2_3 + X_2_4 + X_2_5 = 1;
    8. [_4] X_3_1 + X_3_2 + X_3_3 + X_3_4 + X_3_5 = 1;
    9. [_5] X_4_1 + X_4_2 + X_4_3 + X_4_4 + X_4_5 = 1;
    10. [_6] X_5_1 + X_5_2 + X_5_3 + X_5_4 + X_5_5 = 1;
    11. [_7] X_1_1 + X_1_2 + X_1_3 + X_1_4 + X_1_5 = 1;
    12. [_8] X_2_1 + X_2_2 + X_2_3 + X_2_4 + X_2_5 = 1;
    13. [_9] X_3_1 + X_3_2 + X_3_3 + X_3_4 + X_3_5 = 1;
    14. [_10] X_4_1 + X_4_2 + X_4_3 + X_4_4 + X_4_5 = 1;
    15. [_11] X_5_1 + X_5_2 + X_5_3 + X_5_4 + X_5_5 = 1;
    16. @BND( 0, X_1_1, 2); @BND( 0, X_1_2, 2); @BND( 0, X_1_3, 2);
    17. @BND( 0, X_1_4, 2); @BND( 0, X_1_5, 2); @BND( 0, X_2_1, 2);
    18. @BND( 0, X_2_2, 2); @BND( 0, X_2_3, 2); @BND( 0, X_2_4, 2);
    19. @BND( 0, X_2_5, 2); @BND( 0, X_3_1, 2); @BND( 0, X_3_2, 2);
    20. @BND( 0, X_3_3, 2); @BND( 0, X_3_4, 2); @BND( 0, X_3_5, 2);
    21. @BND( 0, X_4_1, 2); @BND( 0, X_4_2, 2); @BND( 0, X_4_3, 2);
    22. @BND( 0, X_4_4, 2); @BND( 0, X_4_5, 2); @BND( 0, X_5_1, 2);
    23. @BND( 0, X_5_2, 2); @BND( 0, X_5_3, 2); @BND( 0, X_5_4, 2);
    24. @BND( 0, X_5_5, 2);
    25. END
    复制代码
    运行得到的结果为:
      Global optimal solution found.
      Objective value:                              14.00000
      Infeasibilities:                              0.000000
      Total solver iterations:                             0


    最优解为14.

    为什么会有差异?

    仔细观察展开后的两个模型会发现,LING把这两种情况识别为了不同的模型。原因是在省略i j的情况下,LINGO把模型按照“先行后列"的形式进行识别。

    所以最好不要省略下标。

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

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5195

    积分

    独孤求败

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

    [LV.Master]伴坛终老

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

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

    群组计量经济学之性

    群组LINGO

    gf2015 发表于 2015-7-28 13:31
    楼上说的对,就你这个程序来说,不会变

    呵呵。大胆猜测,小心求证。自己动手,丰衣足食。不要迷信。
    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

    LCYMATH        

    4

    主题

    10

    听众

    10

    积分

    升级  5.26%

  • TA的每日心情
    郁闷
    2015-8-6 17:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    自我介绍
    中等水平
    liwenhui 发表于 2015-7-28 13:54
    刚才又试了一下,结果会有出入,主要是识别问题。实践当中,推荐大家还是写上指标最好,这样能避免错误 ...

    认真看了你的回答之后,感觉好详细,太感动啦!谢谢,谢谢
    回复

    使用道具 举报

    2

    主题

    12

    听众

    171

    积分

    升级  35.5%

  • TA的每日心情
    慵懒
    2016-6-29 20:41
  • 签到天数: 85 天

    [LV.6]常住居民II

    自我介绍
    正在努力学习数学建模,还望网友多多指教

    社区QQ达人

    群组MATLAB与数模算法实训

    回复

    使用道具 举报

    2

    主题

    12

    听众

    171

    积分

    升级  35.5%

  • TA的每日心情
    慵懒
    2016-6-29 20:41
  • 签到天数: 85 天

    [LV.6]常住居民II

    自我介绍
    正在努力学习数学建模,还望网友多多指教

    社区QQ达人

    群组MATLAB与数模算法实训

    @liwenhui 求不沉啊

    点评

    liwenhui  他是指在LINGO语句中省略下标的写法可能会造成差异,不是把那行删除。  详情 回复 发表于 2015-7-29 18:22
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2024-5-29 03:18 , Processed in 0.806875 second(s), 99 queries .

    回顶部