欢迎来到天天文库
浏览记录
ID:14677085
大小:1.39 MB
页数:91页
时间:2018-07-29
《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;913*x1+5*x2>=45;Lingo的注释语
2、句用!开头用;结束。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(4)…x(12)个成员,用以表示十二个月的产量。sets:r/1..12/:x;!r是组的类型名,x数组
3、名;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*x(1)+4*x(2)+x(3)+5*x(4)>=8;91data语句有时,我们要用到常数数组,比如在400*x(1)+200*x(2)+150*x(3)
4、+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开头,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
5、(2)*a(1)+x(3)*a(4)+x(4)*a(2);x(1)+x(4)-x(2)-x(3)6、)7、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、(i):x(i))-x(
6、)7、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、(i):x(i))-x(
7、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、(i):x(i))-x(
8、(i):x(i))-x(
此文档下载收益归作者所有