




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 优优 化化 建建 模模 第二章第二章 lindolindo软件的基本使用方法软件的基本使用方法 原书相关信息原书相关信息 谢金星谢金星, 薛毅编著薛毅编著, 清华大学出版社清华大学出版社, 2005年年7月第月第1版版. http:/ 优化建模与优化建模与lindo/lingo软件软件 优优 化化 建建 模模 2.3 整数线性规划的求解整数线性规划的求解 内容提要:内容提要: lindolindo求解整数线性规划概述求解整数线性规划概述 例例2.6 2.6 员工聘用问题员工聘用问题(纯整数规划)(纯整数规划) 例例2.7 2.7 游泳队员的选拔问题(游泳队员的选拔问题(0-10-1规划)规划
2、) 例例2.8 2.8 汽车生产计划(汽车生产计划(混合整数规划)混合整数规划) 备注备注 优优 化化 建建 模模 lindo求解整数线性规划概述求解整数线性规划概述 lindo可用于求解线性纯整数规划或混合整数规划可用于求解线性纯整数规划或混合整数规划(ip), 模型的输入与模型的输入与lp问题类似问题类似, 但需但需在在end标志后定义整型变量标志后定义整型变量。 0/1型的变量可由型的变量可由integer(可简写为(可简写为int)命令来标识,)命令来标识, 有以下两种可能的用法:有以下两种可能的用法: int vname int n 前者只将决策变量前者只将决策变量vname标识为标
3、识为0/1型型, 后者将当前模型中前后者将当前模型中前n 个变量标识为个变量标识为0/1型(模型中变量顺序由型(模型中变量顺序由 模型中输入时出现的先后顺序决定模型中输入时出现的先后顺序决定, 该顺序可由输出结果中的该顺序可由输出结果中的 变量顺序查证是否一致)。变量顺序查证是否一致)。 一般的整数变量可用命令一般的整数变量可用命令gin (是(是general integer的意的意 思)思),其使用方式及格式与其使用方式及格式与int 命令相似。命令相似。 优优 化化 建建 模模 例例2.6 员工聘用问题员工聘用问题 首先在首先在lindo模型窗口输入模型模型窗口输入模型 : min x1
4、 + x2 + x3 + x4 + x5 + x6 + x7 subject to mon) x1 + x4 + x5 + x6 + x7 = 50 tue) x1 + x2 + x5 + x6 + x7 = 50 wed) x1 + x2 + x3 + x6 + x7 = 50 thu) x1+ x2 + x3 + x4 +x7 = 50 fri) x1 + x2 + x3 + x4 - x5 = 80 sat) x2 + x3 + x4 - x5 + x6 = 90 sun) x3 + x4 - x5 + x6 + x7 = 90 end gin 7 其中其中“gin 7”表示表示7个变量
5、都是一般整数变量。个变量都是一般整数变量。 (仍然默认为取值是非负的)(仍然默认为取值是非负的) 优优 化化 建建 模模 求解后状态窗口中与整数相关的三个域有了相关结果求解后状态窗口中与整数相关的三个域有了相关结果: “best ip :94”表示当前表示当前 得到的最好的整数解的目得到的最好的整数解的目 标函数值为标函数值为94(人)。(人)。 “ip bound :93.5” 表示表示 该整数规划目标值的下界该整数规划目标值的下界 为为93.5 (人)。(人)。 “branches :1”表示分表示分 枝数为枝数为1(即在第(即在第1个分枝个分枝 中就找到了最优解)。中就找到了最优解)。
6、我们前面说过,我们前面说过,lindo求解求解ip 用的是分枝定界法。用的是分枝定界法。 显然,上面第二条显然,上面第二条“整数规划目标值的下界为整数规划目标值的下界为93.5 (人)(人)”表明至少要表明至少要 聘用聘用93.5名员工,由于员工人数只能是整数,所以至少要聘用名员工,由于员工人数只能是整数,所以至少要聘用94(人)。(人)。 而第一条说明目前得到的解就是聘用而第一条说明目前得到的解就是聘用94(人),所以已经是最优的了。(人),所以已经是最优的了。 优优 化化 建建 模模 lp optimum found at step 8 objective value = 93.33333
7、59 set x2 to = 4 at 1, bnd= -94.00 twin= -93.50 18 new integer solution of 94.0000000 at branch 1 pivot 18 bound on optimum: 93.50000 delete x2 at level 1 enumeration complete. branches= 1 pivots= 18 last integer solution is the best found re-installing best solution. 求解结果的报告窗口如下:求解结果的报告窗口如下: (接下页)(
8、接下页) 优优 化化 建建 模模 objective function value 1) 94.00000 variable value reduced cost x1 0.000000 1.000000 x2 4.000000 1.000000 x3 40.000000 1.000000 x4 2.000000 1.000000 x5 34.000000 1.000000 x6 10.000000 1.000000 x7 4.000000 1.000000 row slack or surplus dual prices mon) 0.000000 0.000000 tue) 2.00000
9、0 0.000000 wed) 8.000000 0.000000 thu) 0.000000 0.000000 fri) 0.000000 0.000000 sat) 0.000000 0.000000 sun) 0.000000 0.000000 no. iterations= 18 branches= 1 determ.= 1.000e 0 优优 化化 建建 模模 报告窗口中前两行告诉我们:在报告窗口中前两行告诉我们:在8次迭代后找到对应的线次迭代后找到对应的线 性规划(性规划(lp)问题的最优解,最优值)问题的最优解,最优值=93.3333359。 lindo求解求解ip用的是分枝定界
10、法,紧接着几行显示的是分用的是分枝定界法,紧接着几行显示的是分 枝定界的信息,在第枝定界的信息,在第1个分枝中设定个分枝中设定x2=4,并在该分枝中并在该分枝中 找到了整数解,而且就是全局整数最优解,所以算法停止。找到了整数解,而且就是全局整数最优解,所以算法停止。 旋转迭代(旋转迭代(pivot)共)共18次。次。 后面显示的是最后的最优解:后面显示的是最后的最优解:x=(0,4,40,2,34,10,4). 松弛和剩余变量(松弛和剩余变量(slack or surplus)仍然可以表示)仍然可以表示 约束的松紧程度,但目前约束的松紧程度,但目前ip尚无相应完善的敏感性分析理尚无相应完善的敏
11、感性分析理 论,因此论,因此reduced cost和和dual prices的结果在整数的结果在整数 规划中意义不大。规划中意义不大。 优优 化化 建建 模模 例例2.7 游泳队员的选拔问题(游泳队员的选拔问题(0-1规划)规划) 在在lindo模型窗口中输入模型:模型窗口中输入模型: min 66.8x11+75.6x12+87 x13+58.6x14 +57.2x21+66 x22+66.4x23+53 x24 +78 x31+67.8x32+84.6x33+59.4x34 +70 x41+74.2x42+69.6x43+57.2x44 +67.4x51+71x52+83.8x53+62
12、.4x54 subject to x11+x12+x13+x14 21 x21+x22+x23+x24 =1 x31+x32+x33+x34 21 x41+x42+x43+x44 =1 x11+x21+x31+x41+x51 =1 x12+x22+x32+x42+x52 =1 x13+x23+x33+x43+x53 =1 x14+x24+x34+x44+x54 =1 end int 20 其中其中“int 20” 表示表示20个变量个变量 都是都是0-1整数变整数变 量量 优优 化化 建建 模模 求解得到结果为:求解得到结果为:x14 = x21 = x32 = x43 = 1, 其它变量为其
13、它变量为0, 成绩为成绩为253.2(秒)(秒)=413”2。即应当选派甲乙丙丁。即应当选派甲乙丙丁4人组成接人组成接 力队,分别参加自由泳、蝶泳、仰泳、蛙泳的比赛。力队,分别参加自由泳、蝶泳、仰泳、蛙泳的比赛。 由于这个问题中有由于这个问题中有20个个0-1变量,而最优解中肯定只有其中的变量,而最优解中肯定只有其中的4 个变量取非零值个变量取非零值“1”,所以要在一大堆变量中去找少量的几个,所以要在一大堆变量中去找少量的几个 取非零值的变量,这是不太方便的。有没有办法只把取非零值取非零值的变量,这是不太方便的。有没有办法只把取非零值 的变量显示出来呢?的变量显示出来呢? 这是可以做到的:选择
14、菜单命令这是可以做到的:选择菜单命令“reports | solution (alt+0)”(这个命令的功能是要把最优解显示出来),这时会弹(这个命令的功能是要把最优解显示出来),这时会弹 出一个选择对话框(图出一个选择对话框(图2-21),缺省的选项是),缺省的选项是“nonzeros only (只显示非零值)(只显示非零值)”。按下对话框中的。按下对话框中的“ok”按钮,则报按钮,则报 告窗口中的只显示取非零值的变量,这样阅读起来就很方便了。告窗口中的只显示取非零值的变量,这样阅读起来就很方便了。 请注意,这个功能并不仅仅在整数规划中可以使用,在其他模请注意,这个功能并不仅仅在整数规划中
15、可以使用,在其他模 型中也是可以使用的,不妨试试就知道了。型中也是可以使用的,不妨试试就知道了。 优优 化化 建建 模模 讨论讨论 若考虑到丁、戊最近的状态,若考虑到丁、戊最近的状态,c43 由原来的由原来的69.6变为变为75.2 (秒),(秒),c54由原来的由原来的62.4变为变为57.5(秒)(秒), 试讨论对结试讨论对结 果的影响。果的影响。 这类似于线性规划中的敏感性分析这类似于线性规划中的敏感性分析, 但是可惜的是,对于但是可惜的是,对于 整数规划模型,一般没有与线性规划相类似的理论,此时整数规划模型,一般没有与线性规划相类似的理论,此时 lindo中所输出的敏感性分析结果通常是
16、没有意义的,中所输出的敏感性分析结果通常是没有意义的, 因此不能利用这个输出的敏感性分析结果。因此不能利用这个输出的敏感性分析结果。 于是我们只好用于是我们只好用c43,c54 的新数据重新输入模型,用的新数据重新输入模型,用 lindo求解得到:求解得到:x21 = x32 = x43 = x51 = 1, 其它变量其它变量 为为0,成绩为,成绩为257.7(秒)(秒)=417”7。即应当选派乙丙丁戊。即应当选派乙丙丁戊 4人组成接力队,分别参加蝶泳、仰泳、蛙泳、自由泳的人组成接力队,分别参加蝶泳、仰泳、蛙泳、自由泳的 比赛。比赛。 优优 化化 建建 模模 例例2.8 2.8 汽车生产计划(
17、汽车生产计划(混合整数规划)混合整数规划) 一汽车厂生产小、中、大三种类型的汽车,已知各类型每一汽车厂生产小、中、大三种类型的汽车,已知各类型每 辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、 劳动时间的现有量如下表所示:劳动时间的现有量如下表所示: 小型小型中型中型大型大型现有量现有量 钢材(吨)钢材(吨)1.535600 劳动时间(小时)劳动时间(小时)28025040060000 利润(万元)利润(万元)234 由于各种条件限制,如果生产某一类型汽车,则至少要由于各种条件限制,如果生产某一类型汽车,则至少要 生产生产80辆。试制订月生
18、产计划,使工厂的利润最大。辆。试制订月生产计划,使工厂的利润最大。 优优 化化 建建 模模 模型建立与求解模型建立与求解 设每月生产小、中、大型汽车的数量分别为设每月生产小、中、大型汽车的数量分别为x1, x2, x3, (由于生产是一个月一个月连续进行的,所以这里可以合理(由于生产是一个月一个月连续进行的,所以这里可以合理 地认为这个产量不一定非取整数不可,而是可以取实数)地认为这个产量不一定非取整数不可,而是可以取实数) 设工厂的月利润为设工厂的月利润为z, 在题目所给参数均不随生产数量变化的在题目所给参数均不随生产数量变化的 假设下,立即可得线性规划模型:假设下,立即可得线性规划模型:
19、优优 化化 建建 模模 但是,如果生产某一类型汽车,则至少要生产但是,如果生产某一类型汽车,则至少要生产80辆,这个辆,这个 约束怎么表达?约束怎么表达? 可以引入可以引入0-1变量,化为整数规划。设变量,化为整数规划。设y1只取只取0, 1两个值,两个值, 则则“x1=0 或或80”等价于等价于 1 , 0,80, 11111 yyxmyx 其中其中m为相当大的正数,本例可取为相当大的正数,本例可取1000(x1不可能超过不可能超过1000)。)。 1 , 0,80, 11111 yyxmyx 类似地有类似地有 1 , 0,80, 22222 yyxmyx 1 , 0,80, 333331
20、yyxmyx 于是这个模型构成一个混合整数规划模型(既有一般的实数于是这个模型构成一个混合整数规划模型(既有一般的实数 变量变量x,又有,又有0-1变量变量y),用),用lindo直接求解时,输入的最直接求解时,输入的最 后(后(end语句后)只需要加上语句后)只需要加上0-1变量变量y的限定语句。的限定语句。 优优 化化 建建 模模 在在lindo模型窗口中输入模型:模型窗口中输入模型: max 2 x1 + 3 x2 + 4 x3 st 1.5 x1 + 3 x2 + 5 x3 600 280 x1 + 250 x2 +400 x3 60000 x1 - 1000 y1 0 x2 - 10
21、00 y2 0 x3 - 1000 y3 0 x2 - 80 y2 0 x3 - 80 y3 0 end int y1 int y2 int y3 优优 化化 建建 模模 objective function value 1) 611.2000 variable value reduced cost y1 1.000000 108.800003 y2 1.000000 0.000000 y3 0.000000 0.000000 x1 80.000000 0.000000 x2 150.399994 0.000000 x3 0.000000 0.800000 row slack or surpl
22、us dual prices 2) 28.799999 0.000000 3) 0.000000 0.012000 4) 920.000000 0.000000 5) 849.599976 0.000000 6) 0.000000 0.000000 7) 0.000000 -1.360000 8) 70.400002 0.000000 9) 0.000000 0.000000 no. iterations= 25 branches= 1 determ.= 1.000e 0 求解得到输出如下求解得到输出如下 : 即:只生产小型即:只生产小型 和中型汽车,产和中型汽车,产 量分别为量分别为80辆和辆和 150辆辆(近似值近似值), 可获得最大利润可获得最大利润
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论