数学建模社区-数学中国

标题: lingo程序,求大神解答——0-1规划就是出不来 [打印本页]

作者: 菜菜菜    时间: 2013-7-29 17:57
标题: lingo程序,求大神解答——0-1规划就是出不来
用的lingo11,跑出来的结果,x不为0-1,是数量级较小的数,在10-7左右,不知道为什么,bin函数用不成。是语句问题么?

源程序采自《lingo和excel在数学建模中的应用》P100页
!火力发电厂;
model:
sets:
mon/1..12/:a,b,c,x,y;
endsets
data:
a=1875 1960 2160 1980 2085 2395 2555 2675 2330 2125 1930 2180;        !每月耗油量;
b=2626.15 2620.75 2647.275 2693.9 2737.775 2729.9 2707.425 2705.475 2703.85 2700.6 2718.5 2753.825;        !每月柴油价格预测;
enddata
@for(mon:@bin(x));
@for(mon:@gin(y));     注:英文输入‘:’变为了表情
min=@sum(mon(i):(d+y(i)*b(i)+@if(y(i)#le#2000,40,@if(y(i)#gt#12000,30,42-0.001*y(i)))*y(i))*x(i))+@sum(mon(i):(30*c(i)-15*a(i))*e);
d=10000;
e=0.5;
!限制条件;
c(1)=y(1)*x(1)+a(1)/2;
@for(mon(k)|k#ge#2:c(k)=@sum(mon(j)|j#le#k:y(j)*x(j))+a(1)/2-@sum(mon(i)|i#lt#k:a(i)));
c(12)>=1.5*a(12);
@for(mon(i)|i#lt#12:c(i)>=a(i)+a(i+1)/2);
@for(mon(i):c(i)<=20000);
@for(mon(i):y(i)>=1000*x(i));
end
作者: 菜菜菜    时间: 2013-7-29 18:49

作者: 菜菜菜    时间: 2013-7-29 19:38
不能沉啊,求救啊!

作者: _kk    时间: 2013-7-29 21:56
至少把题目完整贴出来吧 = =
我随便改了下!火力发电厂;
model:
sets:
mon/1..12/:a,b,c,x,y;
endsets
data:
a=1875 1960 2160 1980 2085 2395 2555 2675 2330 2125 1930 2180;        !每月耗油量;
b=2626.15 2620.75 2647.275 2693.9 2737.775 2729.9 2707.425 2705.475 2703.85 2700.6 2718.5 2753.825;        !每月柴油价格预测;
enddata
@bin(x(i));
@gin(y(i));
min=@sum(mon(i):(d+x(i)*b(i)+@if(y(i)#le#2000,40,@if(y(i)#gt#12000,30,42-0.001*y(i)))*y(i))*x(i))+(@sum(mon(i):30*c(i)-15*a(i))*e);
d=10000;
e=0.5;
!限制条件;
c(1)=y(1)*x(1)+a(1)/2;
@for(mon(k)|k#ge#2:c(k)=@sum(mon(j)|j#le#k:y(j)*x(j))+a(1)/2-@sum(mon(i)|i#lt#k:a(i)));
c(12)>=1.5*a(12);
@for(mon(i)|i#lt#12:c(i)>=a(i)+a(i+1)/2);
@for(mon(i):c(i)<=20000);
@for(mon(i):y(i)>=1000*x(i));
end
没报错了。但是结果跟你的差不多。
但是运行时出现
model is ill defined.这就跟目标规划的思想差不多了。当不能同时满足时,就弱化一个条件呗 柔性条件之类的吧~~
作者: 菜菜菜    时间: 2013-7-30 08:48
_kk 发表于 2013-7-29 21:56
至少把题目完整贴出来吧 = =
我随便改了下!火力发电厂;
model:

我的这个也没有报错啊,你把@bin()改成了x(i),我也试过,model is ill defined是不是因为你定义@bin的时候没有用for遍历啊?我也不知道哪里错了。
条件限制不是问题,放宽以后本来就很慢的程序不知道还要跑多久,,,,实在不知道bin哪里出问题了。linus,,救救我吧!
作者: 百年孤独    时间: 2013-7-30 10:05
菜菜菜 发表于 2013-7-30 08:48
我的这个也没有报错啊,你把@bin()改成了x(i),我也试过,model is ill defined是不是因为你定义@bin的时候 ...

你用的是 lingo9吗???
作者: 菜菜菜    时间: 2013-7-30 12:07
百年孤独 发表于 2013-7-30 10:05
你用的是 lingo9吗???

lingo11证书齐全啊....是不是设置错了?
作者: 《爱楠》    时间: 2014-8-5 20:03
好好学习!!!
作者: mathsky55    时间: 2014-8-18 14:41
谢谢楼主~~~我回去试试
作者: 樊朋朋    时间: 2014-8-22 14:48
看不懂呀。。。
作者: pen960223    时间: 2016-7-24 10:44


作者: pen960223    时间: 2016-7-24 10:44






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