欢迎来到天天文库
浏览记录
ID:18941754
大小:1.39 MB
页数:91页
时间:2018-09-27
《lingo求解优化问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、首页91一、Lingo简介1.目标函数一个函数解析式,你希望求它的最大或最小值max=函数解析式;或min=函数解析式;例max=3*b+2*c^2;min=b^(1/3)-c*k;Lingo的语句以;号结束。2.运算加(+),减(-),乘(*),除(/),乘方(x^a)3.变量用字母或字母数字的组合表示例a,b,cc1,x1。Lingo的变量缺省值为非负数。4.限制条件一组等式或不等式。Lingo的>,<与>=,<=等价。示例程序1min=3*x1+5*x2;!x1,x2是非负变量;3*x1+2*x2>=36
2、;913*x1+5*x2>=45;Lingo的注释语句用!开头用;结束。5.变量类型变量类型说明@bin(变量名);限制该变量为0或1。@bnd(a,变量名,b);限制该变量介于a,b之间。@free(变量名);允许该变量为负数。@gin(变量名);限制该变量为整数。91二、Lingo高级sets语句连续六个月的产量,可以用x1,x2,x3,x4,x5,x6表示,但十二个月的产量用同样的方法表示就显繁琐。Lingo可以通过sets语句设置数组功能使问题变得简单。例定义数组x,有x(1),x(2),x(3),x(
3、4)…x(12)个成员,用以表示十二个月的产量。sets:r/1..12/:x;!r是组的类型名,x数组名;endsets;sets语句以sets开头,endsets结束。示例程序2sets:mat/1..4/:x;!mat是组的类型名,x数组名;endsetsmin=50*x(1)+20*x(2)+30*x(3)+80*x(4);400*x(1)+200*x(2)+150*x(3)+500*x(4)>=500;3*x(1)+2*x(2)>=6;2*x(1)+2*x(2)+4*x(3)+4*x(4)>=10;2
4、*x(1)+4*x(2)+x(3)+5*x(4)>=8;91data语句有时,我们要用到常数数组,比如在400*x(1)+200*x(2)+150*x(3)+500*x(4)>=500中,x(1),x(2),x(3),x(4)的系数分别为400,200,150,500,此时,可用data语句。例定义数组a,其中a(1)=400,a(2)=200,a(3)=150,a(4)=500。sets:l/1..4/:a,x;endsetsdata:a=400200150500;enddatadata语句是以data开头,
5、enddata结尾。示例程序3sets:l/1..4/:x,a;91endsetsdata:a=7239;!a(1)=7,a(2)=2,a(3)=3,a(4)=9;enddatamax=x(1)*a(3)+x(2)*a(1)+x(3)*a(4)+x(4)*a(2);x(1)+x(4)-x(2)-x(3)6、)sets:r/1..5/:a,b;endsets91data:a=3.34.62.77.110.3;enddatamax=a(1)*b(1)-a(2)*b(2)+a(3)*b(3)-a(4)*b(4);@for(r(i):b(i)7、类型名(i):含数组名(i)的语句);示例程序5sets:r/1..5/:a,b;91endsetsdata:a=3.34.62.77.110.3;enddatamax=@sum(r(i):b(i))+@sum(r(i):b(i)/a(i))+@sum(r(i):b(i)*a(i));!等价于max=b(1)+b(2)+b(3)+b(4)+b(1)/a(1)+b(2)/a(2)+b(3)/a(3)+b(4)/a(4);@for(r(i):b(i)8、6(bnd语句)sets:m/1..4/:x,need,g,y;endsetsdata:need=40002000300010000;enddatamin=30000*@sum(m(i):x(i))+30*@sum(m(i):g(i));91g(1)=600+y(1)*(x(2)+x(3)+x(4))-need(1);g(2)=g(1)+y(2)*(@sum(m(i):x(i))-x(
6、)sets:r/1..5/:a,b;endsets91data:a=3.34.62.77.110.3;enddatamax=a(1)*b(1)-a(2)*b(2)+a(3)*b(3)-a(4)*b(4);@for(r(i):b(i)7、类型名(i):含数组名(i)的语句);示例程序5sets:r/1..5/:a,b;91endsetsdata:a=3.34.62.77.110.3;enddatamax=@sum(r(i):b(i))+@sum(r(i):b(i)/a(i))+@sum(r(i):b(i)*a(i));!等价于max=b(1)+b(2)+b(3)+b(4)+b(1)/a(1)+b(2)/a(2)+b(3)/a(3)+b(4)/a(4);@for(r(i):b(i)8、6(bnd语句)sets:m/1..4/:x,need,g,y;endsetsdata:need=40002000300010000;enddatamin=30000*@sum(m(i):x(i))+30*@sum(m(i):g(i));91g(1)=600+y(1)*(x(2)+x(3)+x(4))-need(1);g(2)=g(1)+y(2)*(@sum(m(i):x(i))-x(
7、类型名(i):含数组名(i)的语句);示例程序5sets:r/1..5/:a,b;91endsetsdata:a=3.34.62.77.110.3;enddatamax=@sum(r(i):b(i))+@sum(r(i):b(i)/a(i))+@sum(r(i):b(i)*a(i));!等价于max=b(1)+b(2)+b(3)+b(4)+b(1)/a(1)+b(2)/a(2)+b(3)/a(3)+b(4)/a(4);@for(r(i):b(i)8、6(bnd语句)sets:m/1..4/:x,need,g,y;endsetsdata:need=40002000300010000;enddatamin=30000*@sum(m(i):x(i))+30*@sum(m(i):g(i));91g(1)=600+y(1)*(x(2)+x(3)+x(4))-need(1);g(2)=g(1)+y(2)*(@sum(m(i):x(i))-x(
8、6(bnd语句)sets:m/1..4/:x,need,g,y;endsetsdata:need=40002000300010000;enddatamin=30000*@sum(m(i):x(i))+30*@sum(m(i):g(i));91g(1)=600+y(1)*(x(2)+x(3)+x(4))-need(1);g(2)=g(1)+y(2)*(@sum(m(i):x(i))-x(
此文档下载收益归作者所有