版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Lingo与线性规划线性规划的标准形式是 (1)其中称为目标函数,自变量称为决策变量,不等式组(1)称为约束条件. 满足不等式组(1)的所有的集合称为可行域,在可行域里面使得z取最小值的称为最优解,最优解对应的函数值称为最优值。求解优化模型的主要软件有Lingo、Matlab、Excel等。其中Lingo是一款专业求解优化模型的软件,有其他软件不可替代的方便功能。本文将简要介绍其在线性规划领域的应用。一、基本规定1、目标函数输入格式max=函数解析式; 或者 min=函数解析式;2、约束条件输入格式利用:>、<、>=、<=等符号。但是>与>=没有区别。Lin
2、go软件默认所以自变量都大于等于0.3、运算加(+),减(-),乘(*),除(/),乘方(xa),要注意乘号(*)不能省略。4、变量名不区分大小写字母,不超过32个字符,必须以字母开头。5、标点符号每个语句以分号“;”结束,感叹号“!”开始的是说明语句(说明语句也需要以分号“;”结束)。但是,model,sets,data以“:”结尾。endsets,enddata,end尾部不加任何符号。6、命令不考虑先后次序7、MODEL语句一般程序必须先输入MODEL:表示开始输入模型,以“END”结束。对简单的模型,这两个语句也可以省略。8、改变变量的取值范围bin(变量名); 限制该变量为0或1.
3、bnd(a,变量名,b); 限制该变量介于a,b之间.free(变量名); 允许该变量为负数.gin(变量名); 限制该变量为整数.例1 求目标函数的最小值,约束条件为输入Lingo程序:min = 2*x1 + 3*x2;x1 + x2 >= 350;x1 >= 100;2*x1 + x2 <= 600;有两种运行方式:1、点击工具条上的按钮 即可。2、点击菜单:LINGOSolve运行结果如下:下面对其各个部分进行说明:Global optimal solution found:表示已找到全局最优解。Objective value:表示最优值的大小。可见本题函数最小值80
4、0。 Infeasibilities:矛盾约束的数目。Total solver iterations:迭代次数。 Variable:变量。本题有两个变量。 Value:变量对应的最优解,即。Reduced Cost:变量在最优解的基础上增加一个单位,目标函数值的改变量。例如,一个变量的Reduced Cost值为8,那么当该变量增加一个单位,在最大化(最小化)问题中目标函数值将减少(增大)8个单位。Slack or Surplus:表示接近等于的程度,即约束离相等还差多少。在约束条件是<=中,表示松弛程度,在约束条件是>=中,不是过剩程度。如果约束条件是=,则Slack or Su
5、rplus为0,该约束是个紧约束(或有效约束)。如果一个约束是矛盾的,即模型无可行解则Slack or surplus的值是负数。知道Slack or Surplus的值,可以帮助我们发现优化模型中错误的约束条件。在上例中第2和第4行松弛变量均为0,说明对于最优解来讲,两个约束(第2和4行)均取等号,即都是紧约束,第3行为150,即最优解使得第3行过剩150.Dual Price :对偶价格的值,它表示约束条件中的常数,每增加一个单位,目标函数值改变的数量(在最大化问题中目标函数值是增加,在最小化问题中目标函数值是减少)。比如,在上一个Min模型中第四行的1,表示2*x1 + x2 <=
6、 600增加一个单位到2*x1 + x2 <= 601,可以使目标值增加-1(因为第一行是目标函数的Dual Price是-1),即Objective value = 799; 如果增加-1个单位到599会使目标值增加到801。例2求目标函数的最小值,约束条件为输入Lingo程序:min = 4*x12-x22+2*x32+12;3*x1+2*x2+x3=9;x1+x2+x3=-1;free(x1); free(x2); free(x3);运行结果:即当时,。二、灵敏度分析灵敏度分析是指:找出模型变量系数的一个变化范围,使得最优基(即最优解)保持不变。一般只对线性规划模型做灵敏度分析。1
7、、灵敏度分析操作步骤第一步:菜单lingo->options->general solver->dual computations:prices & ranges->ok.第二步:菜单lingo->range2、灵敏度报告中常见的词汇Current coefficient:当前目标函数系数Allowable increase:允许增加量Allowable decrease:允许减少量Current RHS:当前右边常数项INFINITY:表示正无穷。例1 求解下列模型:max = 72*x1+64*x2;x1+x2 <= 50;12*x1+8*x2
8、<= 480;3*x1 <= 100;并做灵敏度分析。求解报告:灵敏度分析报告:灵敏度分析报告的解读:x1的系数变化范围是(72-8,72+24)=(64,96);x2的系数变化范围是(64-16,64+8)=(48,72)。注意:x1系数的允许范围需要x2系数64不变,反之亦然。由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。右边常数项中,第2行原来为50,当它在50-6.67,50+10 = 43.33,60范围变化时,最优基保持不变。第3行可以类似解释。对第4行,原来为100,当它在100-40,100+ = 60,+范围变化
9、时,最优基保持不变。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。 三、数据输入对于大型的优化问题,即自变量比较多的时候,还像上两节那样输入目标函数和约束条件就比较麻烦了。一般输入数据的方法有两种:一、建立向量、矩阵输入;二、调用外部数据。这里仅介绍第一种方法。1、建立向量命令格式:集合名称/集合维数/:向量名称例如:sets:set1/1.9/:x;set2/1.5/:a,b;endsets表示建立了两类集合。第一类集合set1,维数为9,x和y是向量名。向量x=(x(1), x(9)),其中x(i)是x的元素。第二类集合set2,维数为5,a和b都是向量名。向量a=
10、(a(1), a (5)),其中a (i)是a的元素。向量b=(b(1), b(5)),其中b (i)是b的元素。2、建立矩阵命令格式:集合名称(集合1,集合2)/:矩阵名称例如:sets:set1/1.3/:x;set2/1.4/:a;link(set1, set2):A;endsets表示建立了一个矩阵类link,其矩阵的阶数为,A是具体的矩阵名。有两个命令是比较常见的:求和语句:sum(集合名(i):含集合名(i)的语句);循环语句:for(集合名(i):循环的语句);例3:求目标函数的最小值,约束条件为输入Lingo程序:model:sets:set1/1.2/:c,x;set2/1.
11、3/:b;link(set2,set1):A;endsetsmax=sum(set1(i):c(i)*x(i);for(set2(i):sum(link(i,j):A(i,j)*x(j)<=b(i);data:c=11 15;A=20 30 30 25 30 25;b=360 2000 300;enddataend运行结果报告:例4、某地区有三个蔬菜生产基地,估计每年可供应本地区的蔬菜量表为:生产基地ABC蔬菜生产量(吨)783有四个地市需要该类蔬菜,需求表为:地区甲乙丙丁蔬菜生产量(吨)6633如果从各蔬菜生产基地到各地市的每吨蔬菜的运价表(单位:万元/吨)为: 地市生产基地甲乙丙丁A
12、5879B49107C8429为了降低运输费,需要合理调拨资源.(1) 根据以上资料表制订一个使总的运费为最少的蔬菜调拨方案(2)如果有机会增加生产基地的产量1吨,问应当优先增加那个基地的产量? (3)如果将A到乙市的运价减少为5万元/吨,问这会影响最优的调拨方案吗?设:第i个蔬菜生产基地,分别对应生产基地A,B,C;:第i个蔬菜需求地,分别对应蔬菜需求地市甲、乙、丙、丁;:总运输费用;:表示的是从第i个生产基地向第j个地市运输的蔬菜数量;:表示的是从第i个生产基地向第j个地市运输蔬菜的运价;:第i个蔬菜生产基地的蔬菜产量;:第j个地市的蔬菜需求量;那么有优化模型:输入Lingo程序求解模型:
13、model:sets:set1/1.3/:b;set2/1.4/:q;link(set1,set2):c,x;endsetsmin=sum(link(i,j):c(i,j)*x(i,j);for(set1(i):sum(link(i,j): x(i,j)<=b(i);for(set2(j):sum(link(i,j): x(i,j)=q(j);data:c=5,8,7,9 4,9,10,7 8,4,2,9;b=7,8,3;q=6,6,3,3;enddataend运行结果如下:Global optimal solution found. Objective value: 100.0000
14、Infeasibilities: 0.000000 Total solver iterations: 6 Variable Value Reduced Cost B( 1) 7.000000 0.000000 B( 2) 8.000000 0.000000 B( 3) 3.000000 0.000000 Q( 1) 6.000000 0.000000 Q( 2) 6.000000 0.000000 Q( 3) 3.000000 0.000000 Q( 4) 3.000000 0.000000 C( 1, 1) 5.000000 0.000000 C( 1, 2) 8.000000 0.0000
15、00 C( 1, 3) 7.000000 0.000000 C( 1, 4) 9.000000 0.000000 C( 2, 1) 4.000000 0.000000 C( 2, 2) 9.000000 0.000000 C( 2, 3) 10.00000 0.000000 C( 2, 4) 7.000000 0.000000 C( 3, 1) 8.000000 0.000000 C( 3, 2) 4.000000 0.000000 C( 3, 3) 2.000000 0.000000 C( 3, 4) 9.000000 0.000000 X( 1, 1) 1.000000 0.000000
16、X( 1, 2) 6.000000 0.000000 X( 1, 3) 0.000000 1.000000 X( 1, 4) 0.000000 1.000000 X( 2, 1) 5.000000 0.000000 X( 2, 2) 0.000000 2.000000 X( 2, 3) 0.000000 5.000000 X( 2, 4) 3.000000 0.000000 X( 3, 1) 0.000000 7.000000 X( 3, 2) 0.000000 0.000000 X( 3, 3) 3.000000 0.000000 X( 3, 4) 0.000000 5.000000 Row
17、 Slack or Surplus Dual Price 1 100.0000 -1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 4.000000 5 0.000000 -5.000000 6 0.000000 -8.000000 7 0.000000 -6.000000 8 0.000000 -8.000000从该报告可以得到:1、 最优的调拨方案为: 地市生产基地甲乙丙丁A1600B5003C0030 2、从Dual Price来看 生产基地A的供应量增加1个单位,费用不变;生产基地B的供应量增加1个单位,费用减少1;
18、生产基地C的供应量增加1个单位,费用减少4;城市甲的需求量增加1个单位,费用减少-5,即增加5;城市乙的需求量增加1个单位,费用减少-8,即增加8;城市丙的需求量增加1个单位,费用减少-6,即增加6;城市丁的需求量增加1个单位,费用减少-8,即增加8;3、从Slack or Surplus来看,所有的约束都是紧约束。可见每个生产基地的蔬菜都全部运完。然后做灵敏度分析:Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficie
19、nt Increase Decrease X( 1, 1) 5.000000 1.000000 1.000000 X( 1, 2) 8.000000 1.000000 4.000000 X( 1, 3) 7.000000 INFINITY 1.000000 X( 1, 4) 9.000000 INFINITY 1.000000 X( 2, 1) 4.000000 1.000000 1.000000 X( 2, 2) 9.000000 INFINITY 2.000000 X( 2, 3) 10.00000 INFINITY 5.000000 X( 2, 4) 7.000000 1.000000
20、INFINITY X( 3, 1) 8.000000 INFINITY 7.000000 X( 3, 2) 4.000000 4.000000 1.000000 X( 3, 3) 2.000000 1.000000 INFINITY X( 3, 4) 9.000000 INFINITY 5.000000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 7.000000 INFINITY 0.0 3 8.000000 1.000000 0.0 4 3.000000 6.000000 0.0
21、 5 6.000000 0.0 1.000000 6 6.000000 0.0 6.000000 7 3.000000 0.0 3.000000 8 3.000000 0.0 1.000000可以得到以下信息:1、运价在下面的范围内最优的调拨方案不变: 地市生产基地甲乙丙丁A4,64,96, +8, +B3,57, +5, +0,8C1, +3,80,34, +2、生产基地的产量在下面的范围内最优基不变:生产基地ABC蔬菜生产量(吨)7, +8,96,93、四个地市的需求量在下面的范围内最优基不变:地区甲乙丙丁蔬菜生产量(吨)5,60,60,32,3四、收集的一些问题1、福特在L.A. 和 D
22、etroit生产汽车,在Atlanta有一仓库,供应点为Houston 和 Tampa;城市间每辆汽车运输费用见下表. L.A.的生产能力为1100辆, Detroit的生产能力为2900辆. Houston汽车需求量为2400辆, Tampa汽车需求量为1500辆,L.ADETROITATLANTAHOUSTONTAMPAL.A.014010090225DETROIT1450111110119ATLANTA105115011378HOUSTON891091210-TAMPA21011782-0如何确定运输和生产方案,才能满足Houston 和 Tempa的需求且费用最低.2、设有三个化肥厂供应四个地区的农用化肥.假定等量的化肥在这些地区使用效果相同.各化肥厂年产量,各地区年需要量及从各化肥厂到各地区运送单位化肥的运价(万元/万吨)如下表所示.试求出总的运费最省的化肥调拨方案. 需求地区化肥厂IIIIIIIV产量(万吨)A1613221750B14
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年中国密闭型砂磨机市场调查研究报告
- 2024年中国头孢氨苄甲氧苄啶胶囊市场调查研究报告
- 上海工商职业技术学院《面向对象分析和设计》2023-2024学年第一学期期末试卷
- 上海工程技术大学《幼儿教师专业发展与研究》2023-2024学年第一学期期末试卷
- 钢结构试题库含答案
- 22古诗三首塞下曲 (教学实录)2023-2024学年统编版语文四年级下册
- 心脏介入治疗并发症
- 选择专项08(实验探究与设计30题)解析版-2024年中考化学常考点专题必杀题(深圳专用)选择题专项
- 幼儿我的好朋友课程设计
- 摆臂夹具课程设计
- 格力电子商务案例分析报告
- 中国地图素材课件
- 《彻底搞懂信用证》课件
- 学校护理实训室建设方案
- 中小学生反恐防暴安全教育课件
- 《药物制剂工程》课程教学大纲全套
- DL-T 2559-2022 灯泡贯流式水轮机状态检修评估技术导则
- 信阳市光山县2023-2024学年七年级上学期期末数学测试卷(含答案)
- 《“健康中国2030”规划纲要》全文健康中国2030规划纲要全文
- 案场物业管理制度
- 军队文职-政治理论-政治-马克思主义基本原理练习一
评论
0/150
提交评论