文章目录

  • 一、单纯形法原理
  • 二、单纯形法流程
  • 三、初始的基可行解查找

一、单纯形法原理


单纯形法的理论基础 :

定理 111 ( 可行域是凸集 ) : 如果线性规划的问题 存在可行解 , 其 可行域 必定是 凸集 ;

定理 222 ( 基可行解是凸集顶点 ) : 线性规划的 基可行解 XBX_BXB​ 对应了上述 可行域 ( 凸集 ) 的顶点位置 ;

定理 333 ( 某个基可行解是最优解 ) : 如果线性规划问题 存在最优解 , 那么 一定存在一个基可行解是最优解 ;

参考上一篇博客 【运筹学】线性规划 图解法 ( 唯一最优解 | 无穷最优解 | 无界解 | 无可行解 ) 进行分析 :

给定线性规划 :

maxZ=2x1+x2s.t={x1+1.9x2≥3.8x1−1.9x2≤3.8x1+1.9x2≤10.2x1−1.9x2≥−3.8x1,x2≥0\begin{array}{lcl} max Z = 2x_1 + x_2\\\\ s.t = \begin{cases} x_1 + 1.9x_2 \geq 3.8\\\\ x_1 - 1.9x_2 \leq 3.8\\\\ x_1 + 1.9x_2 \leq 10.2\\\\ x_1 - 1.9x_2 \geq -3.8\\\\ x_1 , x_2 \geq 0 \end{cases} \end{array}maxZ=2x1​+x2​s.t=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​x1​+1.9x2​≥3.8x1​−1.9x2​≤3.8x1​+1.9x2​≤10.2x1​−1.9x2​≥−3.8x1​,x2​≥0​​

使用图解法进行分析 , 得到如下结果 ;

使用迭代的思想进行求解 :

  • 无限个解中迭代 : 上图中的 可行域 DDD 中的点是无限的 , 可以在所有的无限个可行域 DDD 解中进行迭代 , 逐个迭代很难 ;

  • 有限个解中迭代 : 因此选取 可行域 ( 凸集 ) 的顶点 , 也就是 基可行解 进行迭代 , 该线性规划问题的基可行解是有限的 , 只有 444 个 , 即该凸集有 444 个顶点 ;

上图的凸集中的 444 个顶点 , 必然有一个是最优解 , 因此迭代的时候 , 不用从 DDD 可行域中的无限个点中进行迭代 , 只需要在有限个基可行解中进行迭代 , 即可找到最优解 ;

单纯形法的原理的基础就是源自上述理论 , 在线性规划的有限个基可行解中 , 必定存在一个解释最优解 , 逐个迭代 , 将这个最优解找出即可 ;

从无限个可行解中进行迭代 , 到有限个基可行解中进行迭代 , 简单了很多 ;

但是对于 m×nm \times nm×n 阶的线性规划系数矩阵 , 其基可行解的个数可能有 CnmC_n^mCnm​ 个 , 如果 nnn 和 mmm 很大的话 , 基可行解的数目还是很大 , 这是一个指数级的数 , 因此使用多项式算法 , 完成上述操作 , 计算量还是很大的 ;

这里使用单纯形法 , 进行迭代 , 要比使用多项式法计算量更少 ;

二、单纯形法流程


单纯形法的基本流程 :

① 初始基可行解 : 首先找到初始的基可行解 ;

② 判定是否最优解 : 需要一个准则 , 判定该初始基可行解 , 是否是最优解 ; 这里是单纯形法最核心问题 ;

③ 是最优解 : 如果该基可行解是最优解 , 那么结束迭代 ;

④ 不是最优解 : 如果该基可行解不是最优解 , 那么迭代到下一个基可行解 , 继续判定是否是最优解 ; 如何迭代也需要一个准则 ;

这里涉及到了两个准则 :

  • 判断最优解 : 判断一个 基可行解 是否是最优解 ;
  • 迭代原则 : 如何从一个 基可行解 迭代到下一个基可行解 ;

单纯形法涉及到的问题 :

① 初始解 : 如何找到初始基可行解 ;

② 最优解 : 如何找到一个准则 , 用于判定基可行解是否是最优解 ;

③ 迭代解 : 如果一个基可行解不满足准则 , 如何去选择下一个基可行解进行迭代 ;

解决上述 333 个问题 , 基可行解的算法 , 也就可以得出 ;

三、初始的基可行解查找


如何去找初始的基可行解 , 首先要找到一个 基 , 并且该基是 可行基 ;

对于 m×nm \times nm×n 阶的系数矩阵 :

基 : 从 C(n,m)C(n, m)C(n,m) 个子矩阵中找到基矩阵 , 基矩阵的条件是 该 mmm 阶方阵是可逆的 ;

参考 【运筹学】线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | 线性规划表示为 基矩阵 基向量 非基矩阵 非基向量 形式 ) 一、求解基矩阵示例 博客章节 , [51−110−106201]\begin{bmatrix} &5 & 1 & -1 & 1 & 0 & \\\\ & -10 & 6 & 2 & 0 & 1 & \end{bmatrix}⎣⎡​​5−10​16​−12​10​01​​⎦⎤​ 系数矩阵 , 有 C(5,2)=10C (5 , 2) = 10C(5,2)=10 个子矩阵 , 但是只有 999 个是可逆的 ;

基矩阵如下 :

B1=[51−106]B_1 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}B1​=⎣⎡​​5−10​16​​⎦⎤​ , B2=[1−162]B_2 = \begin{bmatrix} &1 & -1 & \\\\ & 6 & 2 & \end{bmatrix}B2​=⎣⎡​​16​−12​​⎦⎤​ , B3=[50−101]B_3 = \begin{bmatrix} &5 & 0 & \\\\ & -10 & 1 & \end{bmatrix}B3​=⎣⎡​​5−10​01​​⎦⎤​ ,

B4=[1160]B_4 = \begin{bmatrix} &1 & 1 & \\\\ & 6 & 0 & \end{bmatrix}B4​=⎣⎡​​16​10​​⎦⎤​ , B5=[51−100]B_5 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 0 & \end{bmatrix}B5​=⎣⎡​​5−10​10​​⎦⎤​ , B6=[−1021]B_6 = \begin{bmatrix} &-1 & 0 & \\\\ & 2 & 1 & \end{bmatrix}B6​=⎣⎡​​−12​01​​⎦⎤​ ,

B7=[−1120]B_7 = \begin{bmatrix} &-1 & 1 & \\\\ & 2 & 0 & \end{bmatrix}B7​=⎣⎡​​−12​10​​⎦⎤​ , B8=[11061]B_8 = \begin{bmatrix} &1 & 10 & \\\\ & 6 & 1 & \end{bmatrix}B8​=⎣⎡​​16​101​​⎦⎤​ , B9=[1001]B_9 = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}B9​=⎣⎡​​10​01​​⎦⎤​ ;

选择一个基矩阵 , 每个基矩阵都唯一对应一个基解 , 如果该解大于等于 000 , 说明该解是基可行解 , 那么该选择的基矩阵 , 就是可行基 ;

参考 【运筹学】线性规划数学模型 ( 线性规划求解 | 根据非基变量的解得到基变量解 | 基解 | 基可行解 | 可行基 ) 三、基解 博客章节 , 基解的公式是

XB=B−1bX_B = B^{-1}bXB​=B−1b

使用 B1=[51−106]B_1 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}B1​=⎣⎡​​5−10​16​​⎦⎤​ 矩阵作为基矩阵 , 求出其对应的基可行解 , 代入上述公式 :

XB=B−1bXB=[51−106]−1×[32]\begin{array}{lcl} X_B = B^{-1}b\\\\ X_B = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}^{-1} \times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix} \end{array}XB​=B−1bXB​=⎣⎡​​5−10​16​​⎦⎤​−1×⎣⎡​​32​​⎦⎤​​

如果上述 XBX_BXB​ 的两个分量 (x1x2)\begin{pmatrix} x_1\\ x_2 \\ \end{pmatrix}(x1​x2​​) 都大于 0 , 说明该解释基可行解 , 该基矩阵 B1B_1B1​ 是可行基 ;

使用算法进行迭代 , 一个个判断太浪费时间 , 选择 B1B_1B1​ 作为基矩阵 , 计算很复杂 , 这里选择 B9=[1001]B_9 = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}B9​=⎣⎡​​10​01​​⎦⎤​ 作为基矩阵 , 这是个单位阵 , 其逆矩阵还是其单位阵本身 ;

B9B_9B9​ 基矩阵对应的基变量是 XB=(x4x5)X_B = \begin{pmatrix} x_4\\ x_5 \\ \end{pmatrix}XB​=(x4​x5​​) , 将基矩阵代入 XB=B−1bX_B = B^{-1}bXB​=B−1b 公式 ;

XB=B−1bXB=[1001]−1×[32]XB=[1001]×[32]XB=[32]\begin{array}{lcl} X_B = B^{-1}b\\\\ X_B = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}^{-1} \times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix}\\\\ X_B = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}\times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix}\\\\ X_B = \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix} \end{array}XB​=B−1bXB​=⎣⎡​​10​01​​⎦⎤​−1×⎣⎡​​32​​⎦⎤​XB​=⎣⎡​​10​01​​⎦⎤​×⎣⎡​​32​​⎦⎤​XB​=⎣⎡​​32​​⎦⎤​​

由上述计算过程得到 XB=(x4x5)=(32)X_B = \begin{pmatrix} x_4\\ x_5 \\ \end{pmatrix} = \begin{pmatrix} 3\\ 2 \\ \end{pmatrix}XB​=(x4​x5​​)=(32​) 结果 , x4x_4x4​ 和 x5x_5x5​ 都大于 000 , (00032)\begin{pmatrix} 0\\ 0\\ 0\\ 3\\ 2 \\ \end{pmatrix}⎝⎜⎜⎜⎜⎛​00032​⎠⎟⎟⎟⎟⎞​是基可行解 , 该 XBX_BXB​ 是可行基 ;

使用 B1B_1B1​ 作为基矩阵 , 不好计算 , 还需要求 B1B_1B1​ 矩阵的逆矩阵 , B9B_9B9​ 是单位阵 , 所有的 单位阵 III 都是可行基 , 初始基可行解选取时 , 优先选择单位阵 ;

【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 )相关推荐

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

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

  2. 【运筹学】表上作业法 ( 最优解判别 | 初始基可行解 | 运费修改可行性方案 | 闭回路法 )

    文章目录 一.最优解判别 二.初始基可行解 三.运费修改可行性方案 四.闭回路法 一.最优解判别 在上两篇博客 [运筹学]表上作业法 ( 求初始基可行解 | 最小元素法 ) , [运筹学]表上作业法 ...

  3. 【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★

    文章目录 一.单纯形法原理 二.单纯形法流程 三.单纯形法案例一 1.线性规划示例 2.转化标准形式 3.查找初始基可行解 4.初始基可行解的最优解判定 5.第一次迭代 : 入基与出基变量选择 6.第 ...

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

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

  5. 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )

    文章目录 一.运输规划问题 二.找初始基可行解 一.运输规划问题 运输规划问题 : B1\rm B_1B1​ B1\rm B_1B1​ B1\rm B_1B1​ B1\rm B_1B1​ 产量 A1\ ...

  6. 【运筹学】表上作业法 ( 找初始基可行解 | 计算检验数 | 调整运量 )

    文章目录 一.运输规划问题 二.找初始基可行解 三.计算检验数 四.调整运量 ( 换基 ) 一.运输规划问题 运输规划问题 : 二.找初始基可行解 使用最小元素法求得的初始基可行解 : B1\rm B ...

  7. 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )

    文章目录 一.表上作业法 第一步 : 确定初始基可行解 二.最小元素法 一.表上作业法 第一步 : 确定初始基可行解 运输问题如下 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问 ...

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

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

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

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

最新文章

  1. ubuntu 访问php没反应,linux - 在Ubuntu中,我对php.ini进行了更改,但没有任何反应 - Ubuntu问答...
  2. gsk meaning
  3. 类.接口.多态.向上转型.向下转型
  4. 各个线程顺序循环执行
  5. 使用Idea搭建Spring Boot环境
  6. 如何破解qq仅三天可见
  7. 电商后台管理系统——JavaWeb项目 毕业设计论文
  8. 雷霄骅《基于 FFmpeg + SDL 的视频播放器的制作》源码在VS2017中编译的兼容性问题
  9. Linux实操篇②(远程连接Linux;Xshell 6 和 Xftp 6 工具的安装;Xshell 6 和 Xftp 6 工具的配置和使用;)
  10. unity自动生成敌人_敌人的自动生成 - Unity脚本编程 — Project 2:慕课英雄 MOOC HERO(第三人称射击简易版) | Coursera...
  11. 用幻灯片征服全世界_NET为什么会征服世界NET很显然很像
  12. UE4材质(二):PBR材质
  13. 区块链入门 第二部分
  14. mysql与pg的主键索引说明
  15. 城乡规划资质怎么办?
  16. C语言算法之将十进制数转换成二进制数
  17. 【权限维持】Windows自启动映像劫持粘滞键辅助屏保后门WinLogon
  18. 股票指数的估值计算与可视化
  19. 【python教程入门学习】Python的内存管理机制
  20. odoo里面 Domain

热门文章

  1. 支付宝接口参数调用相关
  2. ConfigUtil读取配置文件
  3. C# 给枚举类型增加一个备注特性
  4. 生活在地球上:网络摘录
  5. 第二章 向量(a)接口与实现
  6. [bzoj2213][Poi2011]Difference_动态规划
  7. Xshell相关优化
  8. NSURLConnection和NSRunLoop
  9. python学习之- 内置函数
  10. boost库在工作(20)线程之五