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约束

运筹学之线性规划与整数规划相关推荐

  1. 运筹学与最优化方法_[公开课]运筹学之线性规划算法十二讲

    运筹学之线性规划算法十二讲 这是最美好的时代,同样带来最无助的希望:这是最丰富多彩的时代,思想同样的匮乏:这是最互联互通的时代,一样找不到自己和同路的人:这是最光明的时代,我们依然要经过黑暗的摸索和摸 ...

  2. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第三次迭代 | 中心元变换 | 检验数计算 | 最优解判定 )

    文章目录 一.第三次迭代 : 中心元变换 二.第三次迭代 : 单纯形表 三.第三次迭代 : 检验数计算 四.第三次迭代 : 最优解判定 五.第三次迭代 : 最终单纯形表 上一篇博客 [运筹学]线性规划 ...

  3. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第二次迭代 | 中心元变换 | 检验数计算 | 最优解判定 | 选择入基变量 | 选择出基变量 )

    文章目录 一.第二次迭代 : 中心元变换 二.第二次迭代 : 单纯形表 三.第二次迭代 : 计算检验数 四.第二次迭代 : 最优解判定 五.第二次迭代 : 选择入基变量 六.第二次迭代 : 选择出基变 ...

  4. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第一次迭代 | 中心元变换 | 检验数计算 | 选择入基变量 | 选择出基变量 )

    文章目录 一.第一次迭代 : 中心元变换 二.第一次迭代 : 单纯形表 三.第一次迭代 : 计算检验数 四.第一次迭代 : 最优解判定 五.第一次迭代 : 选择入基变量 六.第一次迭代 : 选择出基变 ...

  5. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 初始单纯形表 | 检验数计算 | 入基变量 | 出基变量 )

    文章目录 一.生成初始单纯形表 二.计算非基变量检验数 三.最优解判定 四.选择入基变量 五.选择出基变量 六.更新单纯形表 上一篇博客 [运筹学]线性规划 人工变量法 ( 单纯形法总结 | 人工变量 ...

  6. 【运筹学】线性规划 人工变量法 ( 单纯形法总结 | 人工变量法引入 | 人工变量法原理分析 | 人工变量法案例 )

    文章目录 一.单纯形法总结 二.人工变量法引入 三.人工变量法案例 四.线性规划标准型 五.人工变量法 六.人工变量法解分析 一.单纯形法总结 求解线性规划 , 使用的是单纯形法 ; 迭代转化 : 其 ...

  7. 【运筹学】线性规划 单纯形法 案例二 ( 第一次迭代 | 矩阵变换 | 检验数计算 | 最优解判定 | 入基变量 | 出基变量 )

    文章目录 一.第一次迭代 : 进行行变换 二.第一次迭代 : 计算检验数 三.第一次迭代 : 最优解判定 四.第一次迭代 : 入基变量 五.第一次迭代 : 出基变量 [运筹学]线性规划 单纯形法 ( ...

  8. 【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )

    文章目录 一.线性规划示例 二.转化成标准形式 三.初始基可行解 四.列出单纯形表 五.计算检验数 六.选择入基变量与出基变量 七.第一次迭代 : 列出单纯形表 一.线性规划示例 线性规划示例 : 使 ...

  9. 【运筹学】线性规划 单纯形法 阶段总结 ( 初始基可行解 | 判定最优解 | 迭代 | 得到最优解 | 全流程详细解析 ) ★

    文章目录 一.线性规划示例 二.转化标准形式 三.查找初始基可行解 四.初始基可行解的最优解判定 五.第一次迭代 : 入基与出基变量选择 六.第一次迭代 : 方程组同解变换 七.第一次迭代 : 生成新 ...

最新文章

  1. Spring入门详细教程(四)
  2. 【STBC】Alamouti,STBC误码率仿真
  3. linux 7 zip软件下载,linux安装使用7zip教程
  4. JPA基础(八):分析JPA与持久化实现产品对接的源代码
  5. linux系统串口设置参数,linux 串口编程记录(一)串口参数设置(示例代码)
  6. Django_前端显示Matplotlib画的图(亲测)
  7. mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment
  8. .Net中json序列化与反序列化
  9. c++11 随机数random
  10. eclipse中追加html模板,Eclipse创建自定义HTML5,JSP模板
  11. 腾讯+android+hotfix,发布到安卓平台报这个错误,xLua exception : xlua.access, no field __Hotfix0_Update...
  12. vue截取一个字符串_字符串截取方法
  13. Pr:旧版标题设计器
  14. 微信小程序如何支持分享给朋友和分享到朋友圈?如何解决分享朋友圈灰色问题
  15. vue项目中解决打开新页浏览器拦截的问题
  16. js判断字符超长度中间用...替换
  17. 小米生态链的战投启示
  18. 7-6 进步排行榜 (10 分)
  19. EAS单据F7引用设
  20. 【记】Vue - 拖拽元素组件实现

热门文章

  1. 5步快速成为牛逼的UI设计师!
  2. python安装anaconda3_Anaconda3安装教程
  3. Android 蓝牙在不同系统版本中使用的不同的蓝牙版本
  4. jquery实现iframe自适应高度
  5. Android面试题目大全完结部分,Android笔试题目集锦
  6. 手机版百度m.baidu.com被运营商劫持到xjcf168.com
  7. js截取字符串的方法
  8. MP3的频率、比特率、码率与音质的关系
  9. 自行车和电动自行车上亚马逊标准有什么区别?UL2849,16CFR1512
  10. ReentrantLock源码分析(一)