文章目录

  • 一、单纯形法总结
  • 二、人工变量法引入
  • 三、人工变量法案例
  • 四、线性规划标准型
  • 五、人工变量法
  • 六、人工变量法解分析

一、单纯形法总结


求解线性规划 , 使用的是单纯形法 ;

迭代转化 : 其将 在无穷多个可行解中迭代 , 转化为了 在有限个基可行解中进行迭代 ;

单纯形法理论基础 : 将迭代范围由大集合转为小集合 , 不会漏掉最优解 , 根据线性规划定理 , 只要有最优解 , 该最优解一定是基可行解 ;

单纯形法求解流程 :

  • ① 找到单位阵
  • ② 最优准则 : 计算检验数
  • ③ 迭代准则 : 先根据检验数找到入基变量 , 再根据常量除以入基变量大于 000 系数 , 选择小的值对应的基变量作为出基变量 ;
  • ④ 中心元 : 找到 入基变量 与 出基变量 交叉点元素 , 这是中心元 , 中心元转为 111 , 同一列另一个系数转为 000 ; 然后继续根据最优准则计算检验数 , 转到步骤 ② ;

二、人工变量法引入


上述单纯形的解法是 从单位阵出发的 , 所有的前提是有单位阵 , 线性规划中可能不存在单位阵 , 如果线性规划转化为单位阵时 , 没有单位阵 , 就需要使用 人工变量法 , 构造一个单位阵 ;

下面通过一个案例来介绍人工变量法的使用 ;

三、人工变量法案例


求解线性规划 : 使用人工变量法求解线性规划 ;

maxZ=3x1+2x2−x3s.t{−4x1+3x2+x3≥4x1−x2+2x3≤10−2x1+2x2−x3=−1xj≥0(j=1,2,3)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 \geq 4 \\\\ x_1 - x_2 + 2x_3 \leq 10 \\\\ -2x_1 + 2x_2 - x_3 = -1 \\\\ x_j \geq 0 & (j = 1 , 2 , 3 ) \end{cases}\end{array}maxZ=3x1​+2x2​−x3​s.t⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​−4x1​+3x2​+x3​≥4x1​−x2​+2x3​≤10−2x1​+2x2​−x3​=−1xj​≥0​(j=1,2,3)​​

四、线性规划标准型


参考 【运筹学】线性规划数学模型标准形式 ( 标准形式 | 目标函数转化 | 决策变量转化 | 约束方程转化 | 固定转化顺序 | 标准形式转化实例 ) 线性规划 普通形式 -> 标准形式 转化顺序说明 博客 , 先处理变量约束 , 再将不等式转为等式 , 最后更新目标函数 ;

1 . 处理约束变量 : 所有的约束变量都大于等于 000 , 这里无需处理 ;

2 . 将不等式转为等式 :

① 方程 111 转为等式 : 方程 111 是大于等于不等式 , 需要在方程左侧减去剩余变量 x4x_4x4​ ;

−4x1+3x2+x3−x4=4-4 x_1 + 3x_2 + x_3 - x_4 = 4−4x1​+3x2​+x3​−x4​=4

② 方程 222 转为等式 : 方程 222 是小于等于不等式 , 需要在方程左侧加上松弛变量 x5x_5x5​ ;

x1−x2+2x3+x5=10x_1 - x_2 + 2x_3 + x_5 = 10x1​−x2​+2x3​+x5​=10

3 . 方程 333 转为符合要求的等式 : 方程 333 是等式 , 但是其右侧的常数小于 000 , 这里需要在等式两边都乘以 −1-1−1 , 使右侧的常数大于等于 000 ;

2x1−2x2+x3=12x_1 - 2x_2 + x_3 = 12x1​−2x2​+x3​=1

4 . 处理目标函数取最大值 : 目标函数就是取最大值 , 无需处理 ;

5 . 最终的标准形结果是 :

maxZ=3x1+2x2−x3s.t{−4x1+3x2+x3−x4=4x1−x2+2x3+x5=102x1−2x2+x3=1xj≥0(j=1,2,3,4,5)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 = 4 \\\\ x_1 - x_2 + 2x_3 + x_5 = 10 \\\\ 2x_1 - 2x_2 + x_3 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}maxZ=3x1​+2x2​−x3​s.t⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​−4x1​+3x2​+x3​−x4​=4x1​−x2​+2x3​+x5​=102x1​−2x2​+x3​=1xj​≥0(j=1,2,3,4,5)​​

五、人工变量法


将上述转化完毕的标准型的系数矩阵补全 :

maxZ=3x1+2x2−x3+0x4+0x5s.t{−4x1+3x2+x3−x4+0x5=4x1−x2+2x3+0x4+x5=102x1−2x2+x3+0x4+0x5=1xj≥0(j=1,2,3,4,5)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 = 4 \\\\ x_1 - x_2 + 2x_3 + 0x_4 + x_5 = 10 \\\\ 2x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}maxZ=3x1​+2x2​−x3​+0x4​+0x5​s.t⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​−4x1​+3x2​+x3​−x4​+0x5​=4x1​−x2​+2x3​+0x4​+x5​=102x1​−2x2​+x3​+0x4​+0x5​=1xj​≥0(j=1,2,3,4,5)​​

上述约束方程中没有单位阵 , 无法找到初始基可行解 , 创建初始的单纯形表 ;

上述线性规划中 , 需要找到 3×33 \times 33×3 的单位阵 (100010001)\begin{pmatrix} \quad 1 \quad 0 \quad 0 \quad \\ \quad 0 \quad 1 \quad 0 \quad \\ \quad 0 \quad 0 \quad 1 \quad \\ \end{pmatrix}⎝⎛​100010001​⎠⎞​ , 目前只有 x5x_5x5​ 的系数列向量是 (010)\begin{pmatrix} \quad 0 \quad \\ \quad 1 \quad \\ \quad 0 \quad \\ \end{pmatrix}⎝⎛​010​⎠⎞​ , 这里需要进行如下操作 ;

人工变量法 : 目的是人为制造单位阵 , 添加 222 个或 333 个人工变量 ;

  • 方程 111 构造变量 x6x_6x6​ : 该变量只出现在第 111 个方程中 ;

−4x1+3x2+x3−x4+0x5+x6=4-4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 + x_6 = 4−4x1​+3x2​+x3​−x4​+0x5​+x6​=4

  • 方程 222 构造变量 x7x7x7 : 该变量只出现在第 333 个方程中 ;

2x1−2x2+x3+0x4+0x5+x7=12x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 + x_7 = 12x1​−2x2​+x3​+0x4​+0x5​+x7​=1

添加了人工变量后 , 变量就变成了 777 个 (x1x2x3x4x5x6x7)\begin{pmatrix} \quad x_1 \quad \\ \quad x_2 \quad \\ \quad x_3 \quad \\ \quad x_4 \quad \\ \quad x_5 \quad \\ \quad x_6 \quad \\ \quad x_7 \quad \\ \end{pmatrix}⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛​x1​x2​x3​x4​x5​x6​x7​​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞​ , 原来的变量只有 555 个 (x1x2x3x4x5)\begin{pmatrix} \quad x_1 \quad \\ \quad x_2 \quad \\ \quad x_3 \quad \\ \quad x_4 \quad \\ \quad x_5 \quad \\ \end{pmatrix}⎝⎜⎜⎜⎜⎛​x1​x2​x3​x4​x5​​⎠⎟⎟⎟⎟⎞​ ; 如果解出该线性规划的 777 个解 , 去掉后面的 x6,x7x_6 , x_7x6​,x7​ 之后 , 该最优解不一定满足 555 个变量的线性规划 ;

如果解出的 777 个解中 , x6,x7x_6 , x_7x6​,x7​ 都等于 000 , 此时该最优解的前 555 个变量 , 满足最初的线性规划解 ;

引入大 MMM : 在目标函数中 , 为 x6,x7x_6 , x_7x6​,x7​ 加上系数 −M-M−M , MMM 是一个抽象数值 , 没有具体的值 , 其大于给定的任何一个值 ;

maxZ=3x1+2x2−x3+0x4+0x5−Mx6−Mx7max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 - M x_6 - Mx_7maxZ=3x1​+2x2​−x3​+0x4​+0x5​−Mx6​−Mx7​

引入大 MMM 后最优解 x6,x7x_6 , x_7x6​,x7​ 必须为 000 : 如果上述 x6,x7x_6 , x_7x6​,x7​ 只要大于 000 , 即使很小 , 但是乘以一个很大的负数值 −M-M−M , 也会极大降低目标函数大小 , 因此只有两个变量取值为 000 时 , 才能使该解称为最优解 ;

添加 222 个人工变量后 , 得到 人工变量单纯形法 线性规划模型 :

maxZ=3x1+2x2−x3+0x4+0x5−Mx6−Mx7s.t{−4x1+3x2+x3−x4+0x5+x6+0x7=4x1−x2+2x3+0x4+x5+0x6+0x7=102x1−2x2+x3+0x4+0x5+0x6+x7=1xj≥0(j=1,2,3,4,5,6,7)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 - M x_6 - Mx_7 \\\\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 + x_6 + 0x_7 = 4 \\\\ x_1 - x_2 + 2x_3 + 0x_4 + x_5 + 0x_6 + 0x_7 = 10 \\\\ 2x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 + 0x_6 + x_7 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 , 6 , 7 ) \end{cases}\end{array}maxZ=3x1​+2x2​−x3​+0x4​+0x5​−Mx6​−Mx7​s.t⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​−4x1​+3x2​+x3​−x4​+0x5​+x6​+0x7​=4x1​−x2​+2x3​+0x4​+x5​+0x6​+0x7​=102x1​−2x2​+x3​+0x4​+0x5​+0x6​+x7​=1xj​≥0(j=1,2,3,4,5,6,7)​​

其中的 MMM 是一个很大的数值 , 没有具体的值 , 可以理解为正无穷 +∞+\infty+∞ , 具体使用单纯形法进行计算时 , 将其理解为大于给出的任意一个确定的数值 ;

六、人工变量法解分析


原来的线性规划称为 LPLPLP , 添加了人工变量后的新线性规划为 LPALPALPA ;

  • 目标函数值有限 : 只要 LPLPLP 线性规划 , 可行域不为空集 ∅\varnothing∅ , 那么 LPALPALPA 线性规划一定能找到一个解 xxx , 使得 f(x)f(x)f(x) 是一个有限的数 , 该有限的数是与 负无穷 −∞-\infty−∞ 进行对比区分的 ;

  • 只要 LPLPLP 线性规划 有可行解 , 那么 LPALPALPA 线性规划中的目标函数一定不是 负无穷 −∞-\infty−∞ ;

  • 两个线性规划解的关系 : (x0)\begin{pmatrix} \quad x_0 \quad \\ \end{pmatrix}(x0​​) 是线性规划 LPLPLP 的可行解 , (x000)\begin{pmatrix} \quad x_0 \quad \\ \quad 0 \quad \\ \quad 0 \quad \\ \end{pmatrix}⎝⎛​x0​00​⎠⎞​ 一定是 LPALPALPA 线性规划的可行解 , 将该解代入目标函数 , 目标函数一定是一个有限的数 , 不是负无穷 −∞-\infty−∞ ;

  • 解 LPALPALPA 线性规划 : 构造的 LPALPALPA 辅助线性规划问题有单位阵 , 选取该单位阵为可行解 , 得到基可行解 , 然后开始进行迭代 ;

只要线性规划有初始基可行解 , 那么只可能有以下情况

  • ① 有最优解
  • ② 没有最优解

最优解情况 : 在有最优解的前提下 ;

  • ① 如果人工变量等于 000 , 将人工变量去掉 , 剩余的解就是原来线性规划 LPLPLP 的最优解 ;
  • ② 如果有一个或多个人工变量大于 000 , 那么说明 原线性规划 LPLPLP 没有可行解 ;

没有最优解的情况 :如果 LPALPALPA 线性规划没有最优解 , 那么 LPLPLP 线性规划也没有最优解 ;

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

  1. 运筹学 ——线性规划之单纯形法

    专栏简介: 大家好,我是小佘,一名交通专业在读本科生.新学期我们专业开设了运筹学课程,运筹学是本专业核心课程之一,所以学好运筹学是很有必要的.开设这个专栏的目的主要是为了督促自己及时整理,复习所学知识 ...

  2. 信奥中的数学:概率论、线性规划之单纯形法

    [概率论与数理统计]大学网课 [概率论与数理统计]大学网课_哔哩哔哩_bilibili 惊了!!!这就是隔壁的小学生也能看懂的统计学? 惊了!!!这就是隔壁的小学生也能看懂的统计学?_哔哩哔哩_bil ...

  3. 线性规划与单纯形法(线性规划、单纯形法、单纯形表、人工变量法)

    线性规划与单纯形法 文章目录 线性规划与单纯形法 概念.建模.标准型 标准型.基.基解.基可行解.可行基 单纯形法 单纯形表的应用 关于检验数和退化的讨论 人工变量法之"大M法" ...

  4. 【运筹学】线性规划数学模型 ( 单纯形法 | 第二次迭代 | 方程组同解变换 | 生成新单纯形表 | 计算检验数 | 最优解判定 | 线性规划解个数分析 )

    文章目录 一.第二次迭代 二.方程组同解变换 三.生成新的单纯形表 四.计算检验数.最优解判定 五.最优解个数说明 1.唯一最优解 2.无穷最优解 3.无界解 4.总结 六.出基变量选择说明 上一篇博 ...

  5. 【运筹学】线性规划数学模型 ( 单纯形法 | 第一次迭代 | 方程组同解变换 | 计算新单纯形表 | 计算检验数 | 入基变量选择 | 出基变量选择 )

    文章目录 一.初始基可行解后第一次迭代 二.迭代后新的单纯形表 三.方程组同解变换 四.生成新的单纯形表 五.解出基可行解 六.计算检验数 σj\sigma_jσj​ 并选择入基变量 七.计算 θ\t ...

  6. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 线性规划求解示例 )

    文章目录 一.单纯形法计算示例 二.转化标准形式 三.查找初始基可行解 四.列出单纯形表 五.最优解判定 在上一篇博客 [运筹学]线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | ...

  7. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | 系数计算方法 | 根据系数是否小于等于 0 判定最优解 )

    文章目录 一.(CNT−CBTB−1N)( C_N^T - C_B^T B^{-1}N )(CNT​−CBT​B−1N) 系数 分析 二.CBC_BCB​ XBX_BXB​ 分析 三.CNC_NCN​ ...

  8. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )

    文章目录 一.基矩阵 + 非基矩阵 约束条件 二.基矩阵 + 非基矩阵 线性规划 三.线性规划 可行解 四.目标函数 推导 五.XN=OX_N = OXN​=O 目标函数最大 分析 六.总结 在上一篇 ...

  9. 【运筹学】线性规划数学模型 ( 单纯形法 | 迭代原则 | 入基 | 出基 | 线性规划求解示例 )

    文章目录 一.单纯形法计算示例 ( 上篇博客回顾总结 ) 二.迭代原则 三.最优解推导 四.出基与入基 五.出基与入基变量选择 一.单纯形法计算示例 ( 上篇博客回顾总结 ) 在上一篇博客 [运筹学] ...

最新文章

  1. php构造和析构方法,php5构造函数与析构函数实例
  2. KS007基于JSP实现人个人博客系统
  3. NetworkManager 冲突
  4. ibmm,让思维导图回归本质
  5. 【Paddle】Anaconda安装PaddlePaddle和PaddleX教程
  6. 非刚性人脸跟踪 —— 实用工具
  7. linux 为什么编译内核,Linux内核编译与安装
  8. 如何设置多个图层层叠关系_如何玩转 XMind 中的多种思维结构?
  9. C++ class实现完全二叉树的顺序存储结构
  10. python 线程池回收_python实现线程池
  11. python打包安卓的方法_打包发布Python模块的方法详解
  12. 51nod 1256 扩展欧几里得
  13. multisim10元件库介绍
  14. ubuntu下virtualbox安装windows7
  15. 移动交互设计:提示语设计总结
  16. 七大行星排列图片_太阳系九大行星排列顺序(口诀:水金地,火木土,天海)...
  17. HDU-4567-思维-Brilliant Programmers Show -13长沙邀请赛
  18. python基础入门(变量)
  19. python设计一个三维向量类_一个简单的三维向量类
  20. php barcode_php 生成条形码

热门文章

  1. Python爬虫(十二)_BeautifulSoup4 解析器
  2. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?
  3. 获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)
  4. jaquery ready
  5. 管理文库]我喜欢的10个经典管理学定律点评
  6. Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
  7. Oracle PL/SQL语言入门
  8. javascript运行时问题
  9. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
  10. Nas服务器使用xampp修改端口号