LINGO8.0编程介绍

上传人:z**** 文档编号:259424845 上传时间:2022-02-25 格式:PPT 页数:38 大小:216KB
返回 下载 相关 举报
LINGO8.0编程介绍_第1页
第1页 / 共38页
LINGO8.0编程介绍_第2页
第2页 / 共38页
LINGO8.0编程介绍_第3页
第3页 / 共38页
LINGO8.0编程介绍_第4页
第4页 / 共38页
LINGO8.0编程介绍_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《LINGO8.0编程介绍》由会员分享,可在线阅读,更多相关《LINGO8.0编程介绍(38页珍藏版)》请在金锄头文库上搜索。

1、LINGO8.0编程介绍LINGO程序的背景及应用 美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:http:/LINDO: Linear INteractive and Discrete Optimizer (V6.1)LINGO: Linear INteractive General Optimizer (V8.0)LINDO API: LINDO Application Programming Interface (V2.0)Whats Best!: (SpreadShe

2、et e.g. EXCEL) (V7.0)目前的产品有:演示(试用)版、学生版、高级版、超级版、工业版、扩展版 (求解问题规模和选件不同)LINDO和LINGO软件能求解的优化模型 LINGO LINDO优化模型线性规划(LP)非线性规划(NLP)二次规划(QP)连续优化整数规划(IP)LINDO应用实例牛奶问题(1)程序max 72x1+64x2st2)x1+x2503)12x1+8x24804)3x1100end牛奶问题(2)程序max 72x1+64x2+8.2x3+5x4st2) x1+x2=503) 12x1+8x2+2x3+2x4=4804) 3x1=1005) x3-3x1=06

3、) x4-4x2”(或“=”(或“=”)功能相同;变量与系数间可有空格, 但无运算符;变量名以字母开头,不区分大小写;目标函数所在行是第一行,第二行起为约束条件;行号(行名)自动产生或人为定义,行名以“)”结束;行中“!”符号的后面部分为注释,如: ! Its Comment.变量不能出现在约束条件的右端;表达式中不接受括号“()”和逗号“,”等任何符号;表达式应化简,如2x1+3x2- 4x1应写成 -2x1+3x2;缺省时假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消;可在 “END”后用“SUB” 或“SLB” 设定变量上下界 例如: “

4、sub x1 10”的作用等价于“x1=10” 但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析;14. “END”后对整数变量说明:GIN n 或 GIN name;15. “END”后对0-1变量说明: INT n 或 INT name. TITLE This Model is only an ExampleLINGO程序max 2x1+3x2+4x3st1.5x1+3x2+5x3600280 x1+250 x2+400 x360000endgin 3 LINDO应用实例 汽车厂生产三种类型的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润及工

5、厂每月的现有量。制订月生产计划,使工厂的利润最大。 小型 中型 大型 现有量钢材(吨) 1.5 3 5 600劳动时间(小时) 280 250 400 60000利润(万元) 2 3 4 LINGO程序简单实例牛奶问题(2)程序model:max=24*(3*x1-x3)+16*(4*x2-x4)+ 44*0.8*x3-3*x3+32*0.75*x4-3*x4;x1+x2=50;12*x1+8*x2+2*x3+2*x4=480;3*x1=100;x3=3*x1;x4”(或“=”(或“=”)功能相同; 变量与系数间应有运算符“*”; 变量名以字母开头,不区分大小写; 程序以“model:”开始,

6、以“end”结束; 目标函数行中max(或min)后要有等号“=”; 每行最后必须以分号“;”表示结束; 行中“!”符号的后面部分为注释。如: ! Its Comment. 表达式的书写方式比较自由,变量可以出现在等式右边; 缺省时假定所有变量连续非负;可在模型的“END”语句前用free(name)表示取消非负假定; 用gin(name)表示变量为整数;用bin(name)表示01变量.11. LINGO一般不给出敏感性分析,如需要可以在option选项中设置。例1:编一个LINGO程序求解下列线性规划问题的最优解程序model:max =1.15*x41+1.4*x23+1.25*x32+

7、1.06*x54; x11+x14=10000; -1.06*x14+x21+x23+x24=0; -1.15*x11-1.06*x24+x31+x32+x34=0; -1.15*x21-1.06*x34+x41+x44=0; -1.15*x31-1.06*x44+x54=0; x23=30000; x32=40000; End运行结果:Global optimal solution found at iteration: 2 Objective value: 14840.00 Variable Value Reduced Cost X41 0.000000 0.6739130E-01 X23

8、 10600.00 0.000000 X32 0.000000 0.4043478E-01 X54 0.000000 0.000000 X11 0.000000 0.000000 X14 10000.00 0.000000 X21 0.000000 0.000000 X24 0.000000 0.3213913E-01 X31 0.000000 0.7143478E-01 X34 0.000000 0.000000 X44 0.000000 0.9379130E-01 Row Slack or Surplus Dual Price 1 14840.00 1.000000 2 0.000000

9、1.484000 3 0.000000 1.4000004 0.000000 1.2904355 0.000000 1.2173916 0.000000 1.0600007 19400.00 0.0000008 40000.00 0.000000例2:编一个LINGO程序求解下列线性规划问题的最优解程序一model:max=120*x1+108*x2+150*x3+190*x4+160*x5+200*x6+98*x7; 100*x1+98*x2+130*x3+160*x4+130*x5+170*x6+ 88*x7=1600; x1+x2+x3=1; x6+x7=1; bin(x1); bin(

10、x2); bin(x3); bin(x4); bin(x5); bin(x6); bin(x7);EndLINGO模型的优点 包含了LINDO的全部功能,还可以求解非还可以求解非线性规划问题,包括非线性整数规划问题。线性规划问题,包括非线性整数规划问题。 提供了灵活的编程语言(矩阵生成器)。LINGO模型的构成:4个段 目标与约束段(MODEL: END) 集合段(SETS: ENDSETS) 数据段(DATA: ENDDATA) 初始段(INIT: ENDINIT)程序二model: sets: A/1.7/: x,b,c; endsets data: b=120,108,150,190,1

11、60,200,98; c=100,98,130,160,130,170,88; enddata max =sum( A( j ):b( j )*x( j ) ); sum( A( j ): c( j )*x( j ) )=1600; x(1)+x(2)+x(3)=1; x(6)+x(7)=1; for( A( j ): bin( x( j ) ) );end运行结果:Globaloptimalsolutionfoundatteration:0Objectivevalue:918.0000VariableValueReducedCostX11.000000-120.0000X20.000000-

12、108.0000X31.000000-150.0000X41.000000-190.0000X51.000000-160.0000X61.000000-200.0000X71.000000-98.00000RowSlackorSurplusDualPrice1918.00001.0000002822.00000.00000030.0000000.00000041.0000000.00000051.0000000.000000例3:编一个LINGO程序求解下列线性规划问题的最优解 目标函数 约束条件 程序model: SETS: T/1,2/: tt; Endsets init: x11=10;

13、 x21=13; endinitmin =max(T( j ): tt( j ); x11+x21=50; x12+x22=30; x13+x23=45; tt(1)=4*x11+10*x12+10*x13; tt(2)=6*x21+8*x22+20*x23;End运行结果:Globaloptimalsolutionfoundatiteration:1Objectivevalue:486.0000VariableValueReducedCostX119.0000080.1886861E-08X2140.999990.000000X120.0000004.666667X2230.000000.0

14、00000X1345.000000.000000X230.0000003.333333TT(1)486.00000.000000TT(2)486.00000.000000LINGO模型 例:选址问题某公司有6个建筑工地,位置坐标为(ai, bi) (单位:公里),水泥日用量di (单位:吨)假设:料场和工地之间有直线道路用例中数据计算,最优解为总吨公里数为总吨公里数为136.2136.2线性规划模型决策变量:ci j (料场j到工地i的运量)12维LINGO程序:model:sets:P/1,2/;Q/1.6/:a,b,d;R(P,Q):c,z;endsetsdata:a=1.25,8.75,

15、0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;enddatamin=sum(R(i,j):c(i,j)*z(i,j);for(Q(j):z(1,j)=(sum(Q(j):(5-a(j)2+(1-b(j)2)(1/2);for(Q(j):z(2,j)=(sum(Q(j):(2-a(j)2+(7-b(j)2)(1/2);for(P(i):sum(Q(j):c(i,j)=20);for(Q(j):sum(P(i):c(i,j)=d(j);end选址问题:NLP2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在

16、其它条件不变下使总吨公里数最小。决策变量:ci j,(xj,yj)16维非线性规划模型LINGO程序model:sets:P/1,2/:x,y;Q/1.6/:a,b,d;R(P,Q):c,z;endsetsdata:a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;enddatamin=sum(R(i,j):c(i,j)*z(i,j);for(Q(j):z(1,j)=(sum(Q(j):(x(1)-a(j)2+(y(1)-b(j)2)(1/2);for(Q(j):z(2,j)=(sum(Q(j):(x(2)-a(j)2+(y(2)-b(j)2)(1/2);for(P(i):sum(Q(j):c(i,j)=20);for(Q(j):sum(P(i):c(i,j)=d(j);for(P:free(x);free(y);end 逻辑运算符LINGO具有种逻辑运算符: # not #一元运算符,否定该操作数的逻辑值 # eq # 若两个运算数相等,则为true;否则为flase # ne # 若两个运算

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号