运筹学之线性规划与整数规划
1.线性规划
参考《Operations Research》第三章Introduction to Linear Programming
1.1线性规划定义
线性规划问题(LP)包括三个部分:
- 目标函数(objective function):决策变量(decision variables)的线性函数,最大化或者最小化
- 约束条件(constraints):每个约束条件都是线性等式或者线性不等式,用于限制决策变量可取值
- 符号限制(sign restrictions):如果变量符号无限制,则为unrestricted in sign (urs).
目标函数中变量系数称为目标函数系数(objective function coeffificient);约束中的变量系数称为技术系数(technological coeffificient);每个约束的右端称为right-hand side (rhs)。
可行域(feasible region):所有满足LP约束条件和符号限制的点的集合
最优解(optimal solution):可行域里有最优目标函数值的点
线性规划有四大假设:
- 比例假设(Proportionality Assumption):目标函数的值是单个变量的贡献总和
- 可加性假设(Additivity Assumption):每个约束的左边都是每个变量的贡献总和
- 可分性假设(Divisibility Assumption):允许每个变量取分值(反之为整数规划)
- 确定性假设(Certainty Assumption):每个参数(目标函数系数,技术系数,rhs)都是确定性知道
1.2图解法(Graphical Solution)
任何LP的可行域都是凸集(convex set),如果一个LP有最优解,可行域中存在一个极值点(顶点)为LP的最优解。带有两个决策变量的最大化LP问题图解法如下:
(1)画出可行域
(2)画出等利润线(isoprofifit line )(目标函数)
(3)沿z值增加的方向平行移动等利润线,接触等利润线的可行域中最后一个点为LP最优解
1.3LP解:四种情况
(1)LP有唯一解
(2)LP有不止一个最优解(alternative optimal solutions):等利润线与可行域边界重合
(3)LP无可行解:可行域无点
(4)LP无边界:等利润线与可行域永远相交
1.4LP实例
A Diet Problem,A Work-Scheduling Problem,A Capital Budgeting Problem,Short-Term Financial Planning,Blending Problems,Production Process Models,Multiperiod Decision Problems: An Inventory Model,Multiperiod Financial Models,Multiperiod Work Scheduling
本文以多阶段工作调度为例
(1)问题描述:
CSL是一家连锁计算机服务商店。CSL接下来五个月要求的skilled repair time数字如下:
一月开始,有50个技术工人为CSL工作,每个技术工人每月能工作160个小时,为了满足未来需求,需要训练新的技术工人。训练一名技术工人需要1个月。训练月期间,被训练则必须被有经验的技术工人监督管理50个小时。每个有经验的技术工人每月支付2000美元(即便没有工作满160个小时)。训练月期间,支付被训练者每月1000美元。每个月末,CSL经验技术工人的5%会跳槽去Plum Computers。建立LP模型要求CSL在满足未来5个月需求的前提下最小化劳动费用。
(2)求解:
- 决策变量
代表月,定义为月需要训练的工人,为月初已有的熟练技术工人
- 目标函数
总劳务费=训练工人劳务费+熟练工人劳务费
- 约束条件
月可用的技术时间>月所需的技术时间
月初可用的技术工人数=月初可用技术工人数+月训练工人数-月末离开的工人数
- 完整模型:本例应该为整数规划问题,此处只是作为案例分析。
线性规划常用求解方法:单纯形法
2.整数规划
参考《Operations Research》第九章Integer Programming
2.1整数规划形式
纯整数规划(pure Integer Programming):所有变量都要求整数
混合整数规划(mixed Integer Programming):只有部分变量要求整数
(1)固定成本问题
活动在任何正水平上都会产生一个固定费用,如建工厂和工厂生产规模问题
在约束中显示为,M为足够大的数
(2)Either–Or Constraints
要求确保以下两个约束至少满足一个
约束条件被转换成
为0/1变量,M足够大。当时,第一个条件等于原来约束,第二个条件无约束效应;当,第一个条件无约束效应,第二个条件等于原来约束。
(3)If–Then Constraints
如果,那么。M足够大
如果要求 ,则,可以推出
(4)带有0/1变量的分段整数规划
分段线性函数有断点,用代替,增加如下约束
2.2整数规划求解
2.2.1分枝定界法
选择合适的取值为分数的变量生成子问题,如果
一个子问题不再分枝,称为fathomed。有三种情况:
(1)子问题无可行解,不能产生IP的最优解
(2)子问题产生一个最优解,其中所有变量取整数,如果最优解比之前找到的最优解更好,那么它就成为一个候选解(candidate solution),其z值成为IP最优z值的当前下界(LB)。
(3)当前子问题的最优z值没有超过当前LB(最大化问题),不再考虑
knapsack problem:先放单位价值最高的物品,接着下一个最高的,直到需要分割物品才能填满
job shop problem:分支决定最后一个加工的作业,总拖期为所有作业的延迟时间,依次向前
TSP:选一初始解,破圈处理
2.2.2割平面法
(1) 通过单纯形法找到IP松弛问题的最优解,如果所有的变量取值为整,则为IP的最优解,否则转(2),图为IP松弛问题求解结果
(2)选择rhs分数部分接近1/2的约束等式产生一个割集,rhs和变量分成,,
重写约束等式变为:整数系数的部分=分数系数的部分,增加约束即右端的分数部分小于0
(3)增加约束后使用对偶单纯形法求解问题,重复上述操作
2.3IP实例
用整数规划求解9*9数独问题,问题描述:在每行每列及每个3*3的格子中填入数字使其没有重复
思路:将9*9的二维矩阵转化成为9*9*9的三维矩阵,矩阵的每一个元素是一个0-1变量。比如在(3,5,2)取值为1,即在二维格子的第3行,第5列填入数字2。前面的两个数字确定填入数字的位置,后一个数字代表填入的数值。对应于三维的矩阵,则是在第3行,第5列,第2层的元素取值为1
前三个等式为三维约束即横纵竖只能有一个数字,第四个等式为3*3*3约束
运筹学之线性规划与整数规划相关推荐
- 运筹学与最优化方法_[公开课]运筹学之线性规划算法十二讲
运筹学之线性规划算法十二讲 这是最美好的时代,同样带来最无助的希望:这是最丰富多彩的时代,思想同样的匮乏:这是最互联互通的时代,一样找不到自己和同路的人:这是最光明的时代,我们依然要经过黑暗的摸索和摸 ...
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第三次迭代 | 中心元变换 | 检验数计算 | 最优解判定 )
文章目录 一.第三次迭代 : 中心元变换 二.第三次迭代 : 单纯形表 三.第三次迭代 : 检验数计算 四.第三次迭代 : 最优解判定 五.第三次迭代 : 最终单纯形表 上一篇博客 [运筹学]线性规划 ...
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第二次迭代 | 中心元变换 | 检验数计算 | 最优解判定 | 选择入基变量 | 选择出基变量 )
文章目录 一.第二次迭代 : 中心元变换 二.第二次迭代 : 单纯形表 三.第二次迭代 : 计算检验数 四.第二次迭代 : 最优解判定 五.第二次迭代 : 选择入基变量 六.第二次迭代 : 选择出基变 ...
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第一次迭代 | 中心元变换 | 检验数计算 | 选择入基变量 | 选择出基变量 )
文章目录 一.第一次迭代 : 中心元变换 二.第一次迭代 : 单纯形表 三.第一次迭代 : 计算检验数 四.第一次迭代 : 最优解判定 五.第一次迭代 : 选择入基变量 六.第一次迭代 : 选择出基变 ...
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 初始单纯形表 | 检验数计算 | 入基变量 | 出基变量 )
文章目录 一.生成初始单纯形表 二.计算非基变量检验数 三.最优解判定 四.选择入基变量 五.选择出基变量 六.更新单纯形表 上一篇博客 [运筹学]线性规划 人工变量法 ( 单纯形法总结 | 人工变量 ...
- 【运筹学】线性规划 人工变量法 ( 单纯形法总结 | 人工变量法引入 | 人工变量法原理分析 | 人工变量法案例 )
文章目录 一.单纯形法总结 二.人工变量法引入 三.人工变量法案例 四.线性规划标准型 五.人工变量法 六.人工变量法解分析 一.单纯形法总结 求解线性规划 , 使用的是单纯形法 ; 迭代转化 : 其 ...
- 【运筹学】线性规划 单纯形法 案例二 ( 第一次迭代 | 矩阵变换 | 检验数计算 | 最优解判定 | 入基变量 | 出基变量 )
文章目录 一.第一次迭代 : 进行行变换 二.第一次迭代 : 计算检验数 三.第一次迭代 : 最优解判定 四.第一次迭代 : 入基变量 五.第一次迭代 : 出基变量 [运筹学]线性规划 单纯形法 ( ...
- 【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )
文章目录 一.线性规划示例 二.转化成标准形式 三.初始基可行解 四.列出单纯形表 五.计算检验数 六.选择入基变量与出基变量 七.第一次迭代 : 列出单纯形表 一.线性规划示例 线性规划示例 : 使 ...
- 【运筹学】线性规划 单纯形法 阶段总结 ( 初始基可行解 | 判定最优解 | 迭代 | 得到最优解 | 全流程详细解析 ) ★
文章目录 一.线性规划示例 二.转化标准形式 三.查找初始基可行解 四.初始基可行解的最优解判定 五.第一次迭代 : 入基与出基变量选择 六.第一次迭代 : 方程组同解变换 七.第一次迭代 : 生成新 ...
最新文章
- Spring入门详细教程(四)
- 【STBC】Alamouti,STBC误码率仿真
- linux 7 zip软件下载,linux安装使用7zip教程
- JPA基础(八):分析JPA与持久化实现产品对接的源代码
- linux系统串口设置参数,linux 串口编程记录(一)串口参数设置(示例代码)
- Django_前端显示Matplotlib画的图(亲测)
- mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment
- .Net中json序列化与反序列化
- c++11 随机数random
- eclipse中追加html模板,Eclipse创建自定义HTML5,JSP模板
- 腾讯+android+hotfix,发布到安卓平台报这个错误,xLua exception : xlua.access, no field __Hotfix0_Update...
- vue截取一个字符串_字符串截取方法
- Pr:旧版标题设计器
- 微信小程序如何支持分享给朋友和分享到朋友圈?如何解决分享朋友圈灰色问题
- vue项目中解决打开新页浏览器拦截的问题
- js判断字符超长度中间用...替换
- 小米生态链的战投启示
- 7-6 进步排行榜 (10 分)
- EAS单据F7引用设
- 【记】Vue - 拖拽元素组件实现