Lingo错误代码51

img


sets:
dmc/1..92/:u;!直销中心i;
dc/1..92/:y;!配送中心j;
tlink(dmc,dc):x,d;
endsets

min=@sum(dmc(i)|i#LE#20:@sum(dc(j):d(i,j)*x(i,j)*u(i)))*2*60+300000*@sum(dc(j):y(j));

@for(dmc(i)|i#LE#20:@sum(dc(j):x(i,j))=1);
@for(dc(j):@for(dmc(i)|i#LE#20:x(i,j)<=y(j));
@for(dc(j):x(j,j)=y(j));
@for(tlink:@bin(x));
@for(dc:@bin(y)));

data:
data=@ole('C:\Users\DELL\Desktop\副本附件 网点坐标、订货量、配送道路的数据表.xls','data');
!省略自己补充
enddata

一直报错不知道原因,恳请大家帮帮忙解决一下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7576703
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:lingo学习笔记(3)分段函数的处理
  • 除此之外, 这篇博客: 【数学建模】12 线性规划模型的求解方法中的 3 Lingo法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    (1)代码实现

    model
    max = 72*x1 +64*x2
    [milk] x1 + x2 < 50
    [time] 12*x1 + 8*x2 < 480
    [epct] x*x1 <100
    end
    

    (2)Lingo实验结果分析
    在这里插入图片描述

    如图中的
    MILK 0.0000 48.0000表示MILK增加一个单位,利润增加48。就比如如果公式中的50变成51,fmin = 3360+48
    TIME 0.0000 2.00000表示TIME增加一个单位,利润增长2.
    CPCT 40.000 0.0000 表示这个约束有40的波动,在这个区间内变化,利润是不会变的
    (3)价值和应用分析
    Lingo options -->Output Level–>选择Verbose
    Lingo options–>Dual Computations -->选择Price & Range
    在这里插入图片描述

    X1 72 24 8表示X当前系数是72,增加24范围内或减小8的范围内,整个方案是不变的
    X2 64 8 16 表示X2当前系数是64,增加8范围内或减小16的范围内,整个方案是不变的
    MILK 50 10 6.66667 表示可以变动范围是最多增加10,最多减小6.66667
    以下同理


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^