Matlab编程 - 第六章 lingo软件基础_第1页
Matlab编程 - 第六章 lingo软件基础_第2页
Matlab编程 - 第六章 lingo软件基础_第3页
Matlab编程 - 第六章 lingo软件基础_第4页
Matlab编程 - 第六章 lingo软件基础_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12第六章第六章 lingo软件简介软件简介LINGO(linear interactive and general optimiuzer)的基本含义是交互式的线性和离散化求解器。的基本含义是交互式的线性和离散化求解器。最初是由芝加哥大学的最初是由芝加哥大学的Linus Schrage教授于教授于1980年年开发的开发的.是主要用来求解优化问题的软件。是主要用来求解优化问题的软件。最大特色:允许优化问题中的决策变量为整数,即可最大特色:允许优化问题中的决策变量为整数,即可求解整数规划,而且执行速度快。求解整数规划,而且执行速度快。3约束优化的约束优化的简单分类简单分类 线性规划线性规划(LP)

2、Dxljxgmixhtsxfji ,.,1, 0)( ,.,1, 0)(.)(min 整数规划整数规划(IP) 决策变量决策变量( (全部或部分全部或部分) )为整数为整数 整数线性规划整数线性规划(ILP),整数非线性规划整数非线性规划(INLP) 纯整数规划纯整数规划(PIP), 混合整数规划混合整数规划(MIP) 一般整数规划一般整数规划,0-1(整数)规划(整数)规划非线性规划非线性规划(NLP)目标和约束均为线性函数目标和约束均为线性函数 二次规划二次规划(QP)目标或约束中存在非线性函数目标或约束中存在非线性函数目标为二次函数、约束为线性目标为二次函数、约束为线性4一、用一、用li

3、ngo直接求解优化模型直接求解优化模型开始运行开始运行LINGO系统时,会得到下面的一个窗口:系统时,会得到下面的一个窗口:主框架主框架窗口,窗口,包含菜包含菜单命令单命令和工具和工具条,条,标题为标题为LINGO Model LINGO1的窗口是的窗口是LINGO的默认模型窗口,建立的模型都要的默认模型窗口,建立的模型都要在该窗口内编码实现。在该窗口内编码实现。5例例6.1 求解如下的求解如下的LP问题:问题: 12min 23xx 12s.t 350 xx1100 x 122600 xx12,0 x x 在模型窗口中输入如下代码:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+

4、x2=350;x1=100;2*x1+x2=0;然后点击工具条上的按钮然后点击工具条上的按钮 即可。即可。6问题问题: 如何下料最节省如何下料最节省 ? 例例6.2 钢管下料问题钢管下料问题 原料钢管原料钢管: :每根每根19米米 4米米50根根 6米米20根根 8米米15根根 客户需求客户需求节省的标准节省的标准:合理切割模式合理切割模式的余料应小于客户需要钢管的最小尺寸的余料应小于客户需要钢管的最小尺寸 所用原料钢管总根数最少所用原料钢管总根数最少 7 b=;i=1; for z=0:2 for y=0:3 for x=0:4 m=19-(4*x+6*y+8*z); if m=0&

5、m=50;x2+2*x4+x5+3*x6=20;x3+x5+2*x7=15;gin(x1);gin(x2);gin(x3);gin(x4);gin(x5);gin(x6);gin(x7);约束:约束:结论:按第结论:按第1种模式切种模式切5根,第根,第2种模式切种模式切5根,第根,第5种种模式切模式切15根,共需切割根,共需切割25根原料钢管。根原料钢管。10集是一群相联系的对象,这些对象也称为集的集是一群相联系的对象,这些对象也称为集的成员成员。每个集成员可能有一个或多个与之有关联的特征,每个集成员可能有一个或多个与之有关联的特征,这些特征称为这些特征称为属性属性。LINGO有两种类型的集:

6、有两种类型的集:原始集原始集和和派生集派生集。原始集是由一些最基本的对象组成的。原始集是由一些最基本的对象组成的。派生集是用一个或多个其它集来定义的。派生集是用一个或多个其它集来定义的。二、二、LINGO中集中集111.定义原始集定义原始集sets:setname/member_list /:attribute_list;endsets集名集名集成员列表集成员列表成员属性列表成员属性列表集成员列表:有集成员列表:有显式罗列显式罗列和和隐式罗列隐式罗列两种方式。两种方式。显式罗列:显式罗列: 将集成员将集成员一个个写出一个个写出中间用逗号中间用逗号分开。分开。如:如:sets:niu/A,C,F

7、 /:x;endsets如:如:sets:yang/1,2,5,8 /:x,y;endsets12sets:setname/member_list /:attribute_list;endsets隐式罗列:隐式罗列: 第一个集成员第一个集成员.最后一个集成员最后一个集成员如:如:sets:niu/A1.A5 /:x;endsets如:如:sets:yang/1.8 /:x,y;endsets132.定义派生集定义派生集 由其它集定义的集合称为派生集。由其它集定义的集合称为派生集。 由多个原始集定义派生集:由多个原始集定义派生集: 如:如:sets:niu1/1.5 /;niu2/2,4,7/;

8、nn(niu1,niu2):x;endsets nn集是派生集,集是派生集, niu1集集niu2集称为集称为nn集的父集集的父集 在派生集在派生集nn中定义了变量:中定义了变量: xij (i=1,2,3,4,5; j=2,4,7) 在定义派生集时,父集成员也可以是派生集。在定义派生集时,父集成员也可以是派生集。14 若若派生集成员由父集成员所有的组合构成,称派生集成员由父集成员所有的组合构成,称该集成为该集成为稠密集稠密集。 定义定义稠密集的方法:稠密集的方法:setname(parent_set_list):attribute_list; 若派生集的成员为父集成员所有组合构成的集若派生集

9、的成员为父集成员所有组合构成的集合的一个子集,这样的派生集成为合的一个子集,这样的派生集成为稀疏集稀疏集。 定义稀疏集的方法:定义稀疏集的方法:setname(parent_set_list)/member_list/:attribute_list;15定义定义稠密集的方法:稠密集的方法:setname(parent_set_list):attribute_list;定义稀疏集的方法:定义稀疏集的方法:setname(parent_set_list)/member_list/:attribute_list;稀疏集的成员列表生成:稀疏集的成员列表生成: 显式罗列;显式罗列; 设置成员资格过滤器。

10、设置成员资格过滤器。显式罗列法显式罗列法:sets:niu1/1.5 /;niu2/2,4,7/;nn(niu1,niu2)/1,2,4,2,5,7/:x;endsets16定义定义稠密集的方法:稠密集的方法:setname(parent_set_list):attribute_list;定义稀疏集的方法:定义稀疏集的方法:setname(parent_set_list)/member_list/:attribute_list;设置成员资格过滤器法设置成员资格过滤器法:sets:niu1/1.5 /;niu2/1.4/;nn(niu1,niu2)|&1#gt#2#and#&2#

11、lt#3:x;endsets17三、数据部分和初始部分三、数据部分和初始部分1.数据部分数据部分 (1)对成员属性赋值对成员属性赋值格式:格式: data: object_list = value_list; enddata例例6.3 建立一个有建立一个有4个个成员的集合,其中成成员的集合,其中成员有两个属性员有两个属性t与与w,其值为其值为13,16,19,15与与42,51,61,53sets:red/a b c d/:t, w;endsetsdata: t=13,16,19,15; w=42,51,61,53; enddata或或data: t,w=13,42,16,51,19,61,1

12、5,53;enddata(数据的复合声明)(数据的复合声明)18(2)参数输入)参数输入data: p= .085; enddata(3)实时数据处理)实时数据处理 data: p,q= 0.085,?; enddata 参数参数q由键盘输入由键盘输入(4)指定属性为一个值)指定属性为一个值sets:red/a b c d/:t, w;endsets data: t,w=40,9;enddata19(5) 数据部分未知数值的表示数据部分未知数值的表示 在数据定义中在数据定义中输入两个相连的输入两个相连的“,”表示该位置的集成表示该位置的集成员的属性值未知。员的属性值未知。 如:如: sets:

13、 num_i/1.6 /:x; endsets data: x= 40,9,5; enddata20初始部分输入的值仅被初始部分输入的值仅被LINGO求解器当作初始点来求解器当作初始点来用,并且仅仅对非线性模型有用。用,并且仅仅对非线性模型有用。LINGO求解器可以自由改变初始部分初始化的变量求解器可以自由改变初始部分初始化的变量的值。的值。初始部分的初始声明规则和数据部分的数据声明规初始部分的初始声明规则和数据部分的数据声明规则相同。则相同。2. 模型的初始段模型的初始段如:如: init: x,y=0,1; endinit 21优先级优先级运算符运算符最高最高#NOT# (负号)(负号)*

14、 /+ (减法)(减法)#EQ# #NE# #GT# #GE# #LT# #LE# #AND# #OR#最低最低(=)三类运算符:算术运算符三类运算符:算术运算符 逻辑运算符逻辑运算符 关系运算符关系运算符1. .运算符及其优先级运算符及其优先级四、四、LINGO函数函数22逻辑运算符逻辑运算符:#not# 否定该操作数的逻辑值,否定该操作数的逻辑值,#eq# 若两个运算数相等,为若两个运算数相等,为true;否则为;否则为flase#ne# 若两个运算符不相等,为若两个运算符不相等,为true;否则为;否则为flase#gt# 若左边运算符严格大于右边运算符,为若左边运算符严格大于右边运算符

15、,为true;# #ge# # 若左边运算符大于或等于右边的运算符,为若左边运算符大于或等于右边的运算符,为true;#lt#若左边运算符严格小于右边运算符,为若左边运算符严格小于右边运算符,为true;#le#若左边运算符小于或等于右边运算符,为若左边运算符小于或等于右边运算符,为true;#and# 仅当两个参数都为仅当两个参数都为true时,结果为时,结果为true;#or# 仅当两个参数都为仅当两个参数都为false时,结果为时,结果为false;23运算符的优先级由高到低:运算符的优先级由高到低:高高 #not# #eq# #ne# #gt# #ge# #lt# #le#低低 #an

16、d# #or#如:如:a=2#le#3#and#3#gt#4; b=(2+5)#eq#7;242.Lingo.Lingo数学函数数学函数ABS(X) X的绝对值的绝对值COS(X) X的余弦的余弦FLOOR(X) X的整数部分的整数部分LOG(X) X的对数的对数SMAX(LIST) 返回一列数的最大值返回一列数的最大值SIGN(X) X的符号的符号SQR(X) X的平方的平方SQRT(X) X的算术根的算术根253.Lingo编程时的常用函数编程时的常用函数bin(x) 限制限制x为为0或或1bnd(L,x,U) 限制限制LxUfree(x) x可以取任意实数可以取任意实数gin(x) 限制

17、限制x为整数为整数if(logical_condition,true_result,false_result)若若logical_condition,为真,返回,为真,返回true_ result,否则返回否则返回false_result。size(set_name)返回集返回集set_name的成员个数。的成员个数。wrap(a,b) :返回返回a a除以除以b b的余数。的余数。26例例6.4 求解最优化问题求解最优化问题 , 0 ,2 0 ,2100)(:.xxxxxfts , 0 ,3 0 ,360)(yyyyyg)()( minygxf 30 yx min=fx+gy; fx=if(

18、x#gt#0, 100,0)+2*x; gy=if(y#gt#0,60,0)+3*y; x+y=30;27index(set_name primitive_set_element)返回在集返回在集set_name中,原始集成员中,原始集成员primitive_set_element的索引。的索引。 sets: gs/a,u,c,d/; bs/b,j,u,f,d/; endsets I1=index(u); I2=index(bs,u); Feasible solution found. Total solver iterations: 0 Variable Value I1 2.000000

19、I2 3.000000 284.集循环函数:集循环函数:for, sum, max, min用法:用法:(1) for(setname: expression_list)对集合对集合setnane的每个元素独立生成的每个元素独立生成expression_list。(2) for(setname(i)|logical_condition:expression_list)对集合对集合setnane中满足中满足logical_condition的成员独立生成的成员独立生成expression_list。 如:如: sets: niu/1.6/:x,y,z; endsets data: x=3,8,5

20、,7,6,-2;enddata for(niu:y=x2+2);for(niu(i)|i#le#3:z(i)=x(i)-3);for(niu(i)|i#gt#3:z(i)=x(i)2-2);29如:如:sets: number/1.5/:x,y,z;endsetsdata:x=3,8,5,7,6,-2;enddatafor(number:y=x2+2;z=x2-3);s=sum(number(i)|i#ge#3:x(i);Mn=max(number(i)|i#lt#3:y(i);mm=min(number(i)|i#gt#3:z(i);30例例6.5 (发电机组的功率分配问题)某发电厂有三台(

21、发电机组的功率分配问题)某发电厂有三台机组的发电功率可以在机组的发电功率可以在301600kw的范围内调节,的范围内调节,但功率越大,发电费用越高,试验表明,若记三台但功率越大,发电费用越高,试验表明,若记三台机组的发电功率分别为机组的发电功率分别为x1,x2,x3(单位:(单位:kw),则发),则发电费用分别为电费用分别为, 132)(12111 xxxf, 24)(22222 xxxf, 6)(32333 xxxf现要求三台机组的总功率为现要求三台机组的总功率为3500kw,试问各发电机组应如何分配负荷(功率),使得总发试问各发电机组应如何分配负荷(功率),使得总发电费用最小?电费用最小?

22、31 31)(miniiixfz ,160030,3500.31iiixxts3 , 2 , 1 isets:DJ/1.3/:x,f;endsetsobjmin=sum(DJ:f);f(1)=2*x(1)2+3*x(1)+1;f(2)=x(2)2+4*x(2)+2;f(3)=x(3)2+x(3)+6;sum(DJ:x)=3500;for(DJ:bnd(30,x,1600);, 132)(12111 xxxf, 24)(22222 xxxf, 6)(32333 xxxf32例例6.6 (动态生产计划安排问题)某厂生产某种电子(动态生产计划安排问题)某厂生产某种电子产品,今年前产品,今年前6个月收

23、到的该产品的订货数量分别为个月收到的该产品的订货数量分别为3000件,件,4500件,件,3500件,件,4000件,件,4000件,和件,和5000件,已知该厂的正常生产能力为每月件,已知该厂的正常生产能力为每月3000件,件,利用加班还可以生产利用加班还可以生产1500件,正常生产成本为每件件,正常生产成本为每件5000元,加班生产还要增加元,加班生产还要增加1500元,库存成本为每元,库存成本为每月每件月每件200元,试问该厂如何组织生产才能在保证完元,试问该厂如何组织生产才能在保证完成生产计划的情况下使生产成本最低?成生产计划的情况下使生产成本最低?33每月订货量:每月订货量:3000

24、,4500,3500,4000,4000,5000每月正常:产能每月正常:产能3000,单件成本,单件成本5000每月加班:增加产能每月加班:增加产能1500,单件成本增加,单件成本增加1500每月库存成本:单件每月库存成本:单件200第第i个月:订货量个月:订货量di ,正常生产量,正常生产量xi ,加班生产量,加班生产量yi,月初库存量月初库存量zi (i=1,2,6)总成本:总成本: 61)20065005000(iiiizyx34第第i个月:订货量个月:订货量di ,正常生产量,正常生产量xi ,加班生产量,加班生产量yi,月初库存量月初库存量zi (i=1,2,6)总成本:总成本:

25、61)20065005000(miniiiizyxs.t:,2111zdyx ,1 iiiiizdzyx(i=2,3,4,5), 06666 dzyxxi, yi , zi 为整数(为整数(i=1,2,6),30000 ix,15000 iy35 61)20065005000(miniiiizyxs.t:,2111zdyx ,1 iiiiizdzyx(i=2,3,4,5), 06666 dzyxxi, yi , zi 为整数为整数(i=1,2,6),3000 ix,1500 iysets: month/1.6/:d,x,y,z;endsetsobjmin=sum(month(i):5000*x

26、(i)+6500*y(i)+200*z(i);x(1)+y(1)-d(1)= z(2);for(month(i)|i#gt#1#and#i#lt#6:x(i)+y(i)+z(i)-d(i)=z(i+1);x(6)+y(6)+z(6)-d(6)=0;for(month:x=3000;y=d);for(day:gin(x); data:d=20,16,13,16,19,14,12;enddata 71miniix,jiijdxts 51)7, 2mod( .7 , 2 , 1 j39练习题练习题1.编一个编一个LINGO程序求解下列线性规划问题的最优解程序求解下列线性规划问题的最优解 1 . 01

27、1216008817013016013098100.98200160190150108120max765432176543217654321orxxxxxxxxxxxxxxxtsxxxxxxxzi402.2.编一个编一个LINGOLINGO程序求解下列线性规划问题的最优解程序求解下列线性规划问题的最优解目标函数目标函数: : 约束条件约束条件:),minmax(21ttT 3 , 2 , 1, 2 , 1, 0453050231322122111jixxxxxxxij 23222121312111208610104xxxtxxxt413.设有甲、乙、丙、丁四个人,各有能力去完成设有甲、乙、丙、

28、丁四个人,各有能力去完成A,B,C,D,E五项科研任务中的任一项,由于四个人的能力和经验不同,所五项科研任务中的任一项,由于四个人的能力和经验不同,所需完成各项任务的时间如下表所示,由于任务数多于人数,要需完成各项任务的时间如下表所示,由于任务数多于人数,要求考虑如下问题:求考虑如下问题:1)任务任务E必须要完成,其他四项中可任选三项完成;必须要完成,其他四项中可任选三项完成;2)要求有一分人完成两项任务,其他人各完成一项任务;要求有一分人完成两项任务,其他人各完成一项任务;3)要求任务要求任务A可由甲或丙完成,任务可由甲或丙完成,任务C可由丙或丁完成,任务可由丙或丁完成,任务E可由甲、乙或丁

29、完成,且规定四个人中丙或丁能够完成两项任可由甲、乙或丁完成,且规定四个人中丙或丁能够完成两项任务,其他人完成一项任务。务,其他人完成一项任务。试分别确定最优的分配方案,使得完成任务的总时间最少。试分别确定最优的分配方案,使得完成任务的总时间最少。 项目项目人员人员ABCDE甲甲2529314237乙乙3938262033丙丙3427284032丁丁2442362345424. 某小型服装加工厂可以生产某小型服装加工厂可以生产A,B,C三种不同服装,生产三种不同服装,生产不同种类的服装需要租用不同的加工设备,设备的租金、生不同种类的服装需要租用不同的加工设备,设备的租金、生产成本、销售价格等指标

30、如下表所示。如果各类服装都有足产成本、销售价格等指标如下表所示。如果各类服装都有足够的市场需求,该厂每月可用人工工时为够的市场需求,该厂每月可用人工工时为2000h,那么该厂,那么该厂应如何安排生产计划可使每月有最大的利润?应如何安排生产计划可使每月有最大的利润?服装服装种类种类设备租金设备租金/元元生产成本生产成本/(元(元/件)件)销售价格销售价格/(元(元/件)件)人工工时人工工时/(h/件)件)设备工时设备工时/(h/件)件)设备可用设备可用 工时工时/hA500028040053300B2000304010.5300C200020030042300435. (战勤值班的安排)某部队为

31、了完成某项任务,需要昼夜(战勤值班的安排)某部队为了完成某项任务,需要昼夜24小时不间断值班,但每天不同时段所需要的人数不同,具小时不间断值班,但每天不同时段所需要的人数不同,具体情况见表,假设值班人员开始上班后需连续值班体情况见表,假设值班人员开始上班后需连续值班8小时,小时,问部队至少需要配备多少值班人员?问部队至少需要配备多少值班人员?班次班次时间段时间段需要人数需要人数班次班次时间段时间段需要人数需要人数16:0010:0060418:0022:0050210:0014:0070522:002:0020314:0018:006062:006:0030446.一架货机有三个货舱:前舱、中

32、仓和后舱。三个货舱所一架货机有三个货舱:前舱、中仓和后舱。三个货舱所能装载的货物的最大重量和体积有限制如表能装载的货物的最大重量和体积有限制如表1所示。并且为所示。并且为了飞机的平衡,三个货舱装载的货物重量必须与其最大的了飞机的平衡,三个货舱装载的货物重量必须与其最大的容许量成比例。容许量成比例。 前舱前舱 中仓中仓 后舱后舱重量限制(吨)重量限制(吨) 15 16 10体积限制(立方米体积限制(立方米 6800 8700 5300 现有四类货物用该货机进行装运,货物的规格以及装现有四类货物用该货机进行装运,货物的规格以及装运后获得的利润如下:运后获得的利润如下: 重量(吨)重量(吨) 空间(

33、立方米空间(立方米/吨)吨) 利润(元利润(元/吨)吨)货物货物1 18 480 3200货物货物2 15 650 3900货物货物3 23 580 3600货物货物4 12 390 2950表表145 假设:假设:(1)每种货物可以无限细分;)每种货物可以无限细分;(2)每种货物可以分布在一个或者多个货舱内;)每种货物可以分布在一个或者多个货舱内;(3)不同的货物可以放在同一个货舱内,并且可以保证)不同的货物可以放在同一个货舱内,并且可以保证 不留空隙。不留空隙。 问应如何装运,使货机飞行利润最大?问应如何装运,使货机飞行利润最大?7.(原料采购与分配问题原料采购与分配问题)某服装加工厂有某

34、服装加工厂有5个车间,可用个车间,可用6种不同的布料(单位种不同的布料(单位m)加工)加工成不同的服装。该厂现有资金成不同的服装。该厂现有资金40万元,为充分利用这些资金,万元,为充分利用这些资金,根据各车间的实际生产需求,工厂要求每个车间每种布料至少根据各车间的实际生产需求,工厂要求每个车间每种布料至少加工加工1000m,每个车间的总加工能力为,每个车间的总加工能力为10000m,问该厂每种布,问该厂每种布料应购买多少米,又如何分配给所属的料应购买多少米,又如何分配给所属的5个车间,使总利润最大。个车间,使总利润最大。468.(运输规划模型运输规划模型) 某产品有某产品有6个产地个产地Ai 和和8个销售地个销售地Bj (i=1,2,6, j=1,2,8) ,产地到销地的单位运价见下表,产地到销地的单位运价见下表,问如何安排运输可使运输总费用最小。问如何安排运输可使运输总费用最小。B B1 1B B2 2B B3 3B B4 4B B5 5B B6 6B B7 7B B8 8产产 量量A A1 16 62 26 67 74 42 25 59 960A A2 24 49 95 53 38 85 58 82

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论