数学建模社区-数学中国

标题: 利用Lingo编程求解一个模型,得不到结果,不知道哪错了,请高手指点 [打印本页]

作者: 照片记录谁    时间: 2014-5-10 11:49
标题: 利用Lingo编程求解一个模型,得不到结果,不知道哪错了,请高手指点
问题是一个井组划分,由于无法粘贴公式,以图片展示,下面是相应的代码,不知道哪有问题,求解的不到结果。望大神指点。。。只需要看看模型和程序对不对得上就行。

model:
        sets:
        ss/1..124/:x,y,qq;
        sw/1..10/:xx,yy;        
        link(ss,sw):A,d;
        endsets
        data:
        nmax = 20;
        x = @ole("C:\Users\CQ\Desktop\data.xlsx");
        y = @ole("C:\Users\CQ\Desktop\data.xlsx");
        qq = @ole("C:\Users\CQ\Desktop\data.xlsx");
        enddata
        min = @sum(link(i,j):A(i,j)*@sqrt((x(i)-xx(j))^2+(y(i)-yy(j))^2));

        !@for(sw(j):@prod(ss(i):(xx(j)-x(i)))=0);
        !@for(sw(j):@prod(ss(i):(yy(j)-y(i)))=0);

        @for(ss(i):@sum(link(i,j):A(i,j)) = 1);
        @for(sw(j):@sum(link(i,j):A(i,j)) < nmax);

        @for(sw(j):@sum(link(i,j):A(i,j)*qq(i)) > 1);
        @for(sw(j):@sum(link(i,j):A(i,j)*qq(i)) < 10);

        @max(link(i,j):A(i,j)*@sqrt((x(i)-xx(j))^2+(y(i)-yy(j))^2))<5/100000;

        @for(link(i,j):@bin(A(i,j)));
        @for(sw(j):@bnd(1.96450,xx(j),1.964977));
        @for(sw(j):@bnd(0.396243,yy(j),0.3966622));

end



model.png (38.58 KB, 下载次数: 338)

模型

模型

yueSu.png (28.49 KB, 下载次数: 314)

符号说明

符号说明


作者: 照片记录谁    时间: 2014-5-10 11:50
代码中的表情处是冒号。。。
作者: bytbyt    时间: 2014-5-10 16:20
代码中的表情处是冒号。。。
作者: 照片记录谁    时间: 2014-5-10 17:21
bytbyt 发表于 2014-5-10 16:20
代码中的表情处是冒号。。。

???。。。。。。
作者: madio    时间: 2014-5-10 21:36
把数据文件data.xlsx也发上来,要不无法测试!
作者: 照片记录谁    时间: 2014-5-10 22:24
由于excel上传出错,所以数据放在Word里了。

data.docx

18.99 KB, 下载次数: 1, 下载积分: 体力 -2 点

数据


作者: 照片记录谁    时间: 2014-5-10 22:26
刚刚那个需要体力,这里再上传一下。

data.docx

18.99 KB, 下载次数: 1, 下载积分: 体力 -2 点


作者: 照片记录谁    时间: 2014-5-10 22:27
照片记录谁 发表于 2014-5-10 22:24
由于excel上传出错,所以数据放在Word里了。

不好意思额,不知道怎么设置不需要体力。
作者: 照片记录谁    时间: 2014-5-10 22:41
madio 发表于 2014-5-10 21:36
把数据文件data.xlsx也发上来,要不无法测试!

恩,数据已上传,但是不知道怎么设置才能下载不需要体力
作者: wujianjack2    时间: 2014-5-16 19:59
    直接运行会造成数值不稳定,你仔细检查下是不是强加了什么约束,及忽略了SCALE的量级,我胡乱修改后是可以得到结果的,一分钟左右可以得到结果,不过,和你的原来程序不一样了,就不贴上来了,你自己仔细检查下再运行。
作者: 照片记录谁    时间: 2014-5-17 21:46
wujianjack2 发表于 2014-5-16 19:59
直接运行会造成数值不稳定,你仔细检查下是不是强加了什么约束,及忽略了SCALE的量级,我胡乱修改后是可 ...

约束都是按照模型来的,忽略scale的量级是什么意思?恩,如果我注释掉某些条件的话是可以运行出结果,但是那样感觉结果就不对了。
作者: wujianjack2    时间: 2014-5-17 22:42
照片记录谁 发表于 2014-5-17 21:46
约束都是按照模型来的,忽略scale的量级是什么意思?恩,如果我注释掉某些条件的话是可以运行出结果,但是 ...

     合理的SCALE在LINGO中指最好不要出现最大的数与最小的数之比在1E+12以上,其实LINGO在解决某些问题的时候,不同的编程方式乃直风格,细微的LINDO API设置对求解结果可能会产生很大的差别。
     如果想使用LINGO软件尽可能高效地求解出结果,要注意细节,在未较熟练掌握LINDO API的各项参数的默认设置前最好不要一味地追求精度,及想当然的去做,这是我之前与官方人员交流时他们告诉我的。
     祝好!
作者: 照片记录谁    时间: 2014-5-20 19:46
wujianjack2 发表于 2014-5-17 22:42
合理的SCALE在LINGO中指最好不要出现最大的数与最小的数之比在1E+12以上,其实LINGO在解决某些问题的 ...

好的,多谢。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5