QQ登录

只需要一步,快速开始

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

为什么编译通不过?

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

5

主题

6

听众

129

积分

升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    跳转到指定楼层
    1#
    发表于 2013-8-29 14:55 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    本帖最后由 wujianjack2 于 2013-8-29 15:09 编辑

    model:
    sets:
    node /supply,res_1,res_2,simple_1,simple_2,simple_3,simple_4,simple_5,outlet/;
    nl (node)/res_1,res_2/;
    endsets
    sets:
    month /Jan, Feb, Mar,Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec/;
    water_supply(nl,month):sup;
    endsets
    sets: net_flow(node,node)
    /supply,res_1
    supply,res_2
    res_1,simple_1
    res_2,simple_1
    simple_1,simple_2
    simple_2,simple_3
    simple_3,simple_4
    simple_4,simple_5
    simple_5,outlet
    outlet,supply/:flow;
    endsets
    sets:
    net_time(net_flow,month):waterflow;
    endsets

    data:
    sup=128 125 234 290 350 400 500 440 240 210 181 128
         39 39  52  121 168 144 105 78  49  44  45 39;
    enddata

    @for(month(t):waterflow(1,2,t)=sup(1,t));     !提示出现属性越界
    @for(month(t):waterflow(1,3,t)=sup(2,t));
    @for(month(t):@for(node(i):@sum(net_time(j,i,t):waterflow(j,i,t))=@sum(net_time(i,j,t):waterflow(i,j,t))));
    end

    提示出现属于越界,这是为什么?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    bei_fang        

    5

    主题

    6

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    本帖最后由 bei_fang 于 2013-8-29 15:09 编辑

    model:
    sets:
    node /supply,res_1,res_2,simple_1,simple_2,simple_3,simple_4,simple_5,outlet/;
    nl (node)/res_1,res_2/;
    endsets
    sets:
    month /Jan, Feb, Mar,Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec/;
    water_supply(nl,month):sup;
    endsets
    sets: net_flow(node,node)
    /supply,res_1
    supply,res_2
    res_1,simple_1
    res_2,simple_1
    simple_1,simple_2
    simple_2,simple_3
    simple_3,simple_4
    simple_4,simple_5
    simple_5,outlet
    outlet,supply/:flow;
    endsets
    sets:
    net_time(net_flow,month):waterflow;
    endsets

    data:
    sup=128 125 234 290 350 400 500 440 240 210 181 128
         39 39  52  121 168 144 105 78  49  44  45 39;
    enddata

    @for(month(t):waterflow(1,2,t)=sup(1,t));     !提示出现属性越界;
    @for(month(t):waterflow(1,3,t)=sup(2,t));
    @for(month(t):@for(node(i):@sum(net_time(j,i,t):waterflow(j,i,t))=@sum(net_time(i,j,t):waterflow(i,j,t))));
    end

    回复

    使用道具 举报

    bei_fang        

    5

    主题

    6

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

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

    [LV.8]以坛为家I

       楼主你好!冒昧回答下你的问题。
       其一:集合定义时可以全部放在一个"SETS:  ENDSETS"对里的,不必写这么多;
       其二:以“@for(month(t):waterflow(1,2,t)=sup(1,t));”为例,楼主在使用时忽视了waterflow,sup这两个属性所属的派生集合了,不是你以为只是用其中一个变量就可以只写month的,waterflow和sup根本就不在month集合中,而是month与其它集合的派生集合,直接这么使用当然会出现下标越界;
       其三:楼主的集合定义略显不够精简,可以更好地定义方便大家阅读程序。
       以上是一点拙见,仅供楼主参考。
    有什么好说的
    回复

    使用道具 举报

    bei_fang        

    5

    主题

    6

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    请问,Lingo中可以定义三维成员的集合吗?

    点评

    wujianjack2  可以的,与二维的定义方式是一样的。  详情 回复 发表于 2013-8-29 16:41
    回复

    使用道具 举报

    bei_fang        

    5

    主题

    6

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    model:
    sets:
    row/1..2/;
    line/1..12/;
    number(row,line):n;
    endsets
    @for(line(j): n(1,j)=0);
    end

    这里n不是line集合的属性,为什么可以通过?

    点评

    wujianjack2  好吧,看来楼主并未理会我的意思。 首先很抱歉,这段程序我也试了,确实可以,但我不是LINDO公司的开发人员,我接触LINGO的时间也有限,我对此无法给出满意的答复; 其次,我可以肯定我按我说的写是比较规范  详情 回复 发表于 2013-8-29 16:48
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

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

    [LV.8]以坛为家I

    bei_fang 发表于 2013-8-29 15:29
    请问,Lingo中可以定义三维成员的集合吗?

      可以的,与二维的定义方式是一样的。
    有什么好说的
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

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

    [LV.8]以坛为家I

    bei_fang 发表于 2013-8-29 16:24
    model:
    sets:
    row/1..2/;

      好吧,看来楼主并未理会我的意思。
      首先很抱歉,这段程序我也试了,确实可以,但我不是LINDO公司的开发人员,我接触LINGO的时间也有限,我对此无法给出满意的答复;
      其次,我可以肯定我按我说的写是比较规范的,LINGO是可以很好的执行的。自己也会更加清楚自己在做什么,是在对什么进行操作。
      我这么想只是想提醒下楼主软件毕竟是软件,它总有一定的限制,你在编写时需要遵循它的一定规则,按照它比较认可的方式去写,这样能够避免一些不必要的错误出现。我建议不要对这些取巧,有些我们认为理所当然的事情,程序却不一定会这么做。
       最后,我的学识确实相当有限,只能给出这样的小小建议,这也是我的一些体会,至于怎么做,全在楼主的思量,同时也谢谢你的支持!
    有什么好说的
    回复

    使用道具 举报

    bei_fang        

    5

    主题

    6

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    难过
    2013-10-8 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    Lingo建模优化
    首先非常感谢你的建议,我昨天通过多次的实验,已经把问题解决了。
    目前我想用Lingo做一个水资源系统的优化,自我感觉Lingo与其他语言有很大差别,对于流程的控制感觉比较难。下边是我昨天实验通过的程序,我也想与大家交流,共同学习Lingo,共同进步。

    model:
    sets:
    node /supply,res_1,res_2,simple_1,simple_2,simple_3,simple_4,simple_5,outlet/;
    nl (node)/res_1,res_2/;
    month /Jan, Feb, Mar,Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec/:sup1,sup2;
    endsets
    sets: net_flow(node,node)
    /supply,res_1
    supply,res_2
    res_1,simple_1
    res_2,simple_1
    simple_1,simple_2
    simple_2,simple_3
    simple_3,simple_4
    simple_4,simple_5
    simple_5,outlet
    outlet,supply/;
    endsets
    sets:
    net_time(net_flow,month):waterflow;
    endsets
    data:
    sup1=128 125 234 290 350 400 500 440 240 210 181 128;   
    sup2=39 39  52  121 168 144 105 78  49  44  45 39;     
    enddata

    data:
    @text('result.txt')=waterflow;
    enddata

    @for(net_time(i,j,t)|i#eq#1 #and# j#eq#2:waterflow(i,j,t)=sup1(t));     
    @for(net_time(i,j,t)|i#eq#1 #and# j#eq#3:waterflow(i,j,t)=sup2(t));     
    @for(month(t):@for(node(i):@sum(net_time(j,i,t):waterflow(j,i,t))=@sum(net_time(i,j,t):waterflow(i,j,t)))); !入流量等于出流量;
    end
    已有 1 人评分体力 收起 理由
    wujianjack2 + 15 鼓励共享,如果把附件传上来就好了!

    总评分: 体力 + 15   查看全部评分

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-7-27 19:30 , Processed in 0.592784 second(s), 94 queries .

    回顶部