文章目录

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

在上一篇博客 【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 ) 中 , 讲解到了使用单纯形法求解线性规划问题 , 需要解决以下三个主要问题 :

  • 查找初始基可行解
  • 判定是否是最优解
  • 如何迭代

该博客中已经讲解了如何查找初始基可行解 , 查找初始基可行解时 , 优先选择单位阵作为基矩阵 , 单位阵 III 对应的基解 , 必定是基可行解 ;
( 如果没有单位阵 III , 那么后续在讨论 )

本博客开始讲解 , 如何 判定最优解 ( 最优解是如何确定出来的 ) , 和 如何迭代到下一个基可行解 ;

一、基矩阵 + 非基矩阵 约束条件


目标函数 , 用于判定 111 个基可行解是否是最优解 ;

在 【运筹学】线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | 线性规划表示为 基矩阵 基向量 非基矩阵 非基向量 形式 ) 博客中 , 根据推导 , 线性规划的约束条件 , 可以表示为 :

BXB+NXN=bBX_B + NX_N = bBXB​+NXN​=b

二、基矩阵 + 非基矩阵 线性规划


将上述约束条件代入线性规划标准形式中

maxZ=∑j=1ncjxj{∑j=1naijxj=bi(i=1,2⋯m)xj≥0(i=1,2⋯n)\begin{array}{lcl}max Z = \sum_{j=1}^{n}c_j x_j\\ \\ \begin{cases} \sum_{j=1}^{n} a_{ij}x_j = b_i & (i = 1 , 2 \cdots m) \\ \\x_j \geq 0 & (i = 1 , 2 \cdots n) \end{cases}\end{array}maxZ=∑j=1n​cj​xj​⎩⎪⎨⎪⎧​∑j=1n​aij​xj​=bi​xj​≥0​(i=1,2⋯m)(i=1,2⋯n)​​

得到如下形式 :

maxZ=CBTXB+CNTXN{BXB+NXN=bxj≥0(i=1,2⋯n)\begin{array}{lcl}max Z = C_B^TX_B + C_N^TX_N \\ \\ \begin{cases} BX_B + NX_N = b \\ \\x_j \geq 0 & (i = 1 , 2 \cdots n) \end{cases}\end{array}maxZ=CBT​XB​+CNT​XN​⎩⎪⎨⎪⎧​BXB​+NXN​=bxj​≥0​(i=1,2⋯n)​​

假设得到基解 {XB=B−1bXN=O\begin{cases} X_B = B^{-1}b \\ \\X_N = O \end{cases}⎩⎪⎨⎪⎧​XB​=B−1bXN​=O​ , 其中 OOO 表示零矩阵 , 矩阵张红每个元素的值都是 000 ;

判断该基解 (XBXN)\begin{pmatrix} X_B \\ X_N \\ \end{pmatrix}(XB​XN​​) 是否是最优解 , 需要从目标函数 maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT​XB​+CNT​XN​ 开始分析 ;

三、线性规划 可行解


从现在开始不再讨论基解了 , 回到之前 , 讨论可行解 , XNX_NXN​ 可以取值任意合法值 , 而不是取 OOO 矩阵值 , 查看取值其它值的时候 , 目标函数是否有最大值 , 这里 重新进行解的推导 :

在 【运筹学】线性规划数学模型 ( 线性规划求解 | 根据非基变量的解得到基变量解 | 基解 | 基可行解 | 可行基 ) 二、根据非基变量的解得到可行解 博客章节 , 在 BXB+NXN=bBX_B + NX_N = bBXB​+NXN​=b 两端都乘以 B−1B^{-1}B−1 , 然后移项得到了 :

XB=B−1b−B−1NXNX_B = B^{-1}b - B^{-1}NX_NXB​=B−1b−B−1NXN​

将上述可行解 , 列举出来 :

{XB=B−1b−B−1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}⎩⎪⎨⎪⎧​XB​=B−1b−B−1NXN​XN​​

四、目标函数 推导


此时进行判定线性规划可行解 {XB=B−1b−B−1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}⎩⎪⎨⎪⎧​XB​=B−1b−B−1NXN​XN​​ 中 , XNX_NXN​ 取值 OOO 矩阵 , 是否是最好的情况 , 即目标函数达到最大值 , 目标函数如下 :

maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT​XB​+CNT​XN​

将 XB=B−1b−B−1NXNX_B = B^{-1}b - B^{-1}NX_NXB​=B−1b−B−1NXN​ 代入上述目标函数 :

maxZ=CBT(B−1b−B−1NXN)+CNTXN=CBTB−1b−CBTB−1NXN+CNTXN\begin{array}{lcl} max Z &=& C_B^T ( B^{-1}b - B^{-1}NX_N ) + C_N^TX_N \\\\ &=& C_B^T B^{-1}b - C_B^T B^{-1}NX_N + C_N^TX_N \end{array}maxZ​==​CBT​(B−1b−B−1NXN​)+CNT​XN​CBT​B−1b−CBT​B−1NXN​+CNT​XN​​

CBTB−1bC_B^T B^{-1}bCBT​B−1b 计算结果是一个数值常量 , 可以写成 b0b_0b0​ , 与 XXX ( nnn 个决策变量 ) 无关 ;

=b0+(CNT−CBTB−1N)XN\begin{array}{lcl} &=& b_0 + ( C_N^T - C_B^T B^{-1}N )X_N \\\\ \end{array}​=b0​+(CNT​−CBT​B−1N)XN​

之前的基解的策略是 , 将 XNX_NXN​ 取值为 OOO 零矩阵 , 现在讨论 , 要使上述目标函数 maxZmaxZmaxZ 最大 , 分析 XN=OX_N = OXN​=O 是否是最好的选择 , 即分析 XN=OX_N = OXN​=O 是否是使 maxZmaxZmaxZ 目标函数最大的值 ;

假设 XNX_NXN​ 矩阵中的变量值为 (xm+1xm+2⋮xn)\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}⎝⎜⎜⎜⎛​xm+1​xm+2​⋮xn​​⎠⎟⎟⎟⎞​ , (CNT−CBTB−1N)( C_N^T - C_B^T B^{-1}N )(CNT​−CBT​B−1N) 的计算结果是 (σm+1,σm+2,⋯,σn)\begin{pmatrix} \sigma_{m+1} , \sigma_{m+2} , \cdots , \sigma_n \end{pmatrix}(σm+1​,σm+2​,⋯,σn​​) , (CNT−CBTB−1N)XN( C_N^T - C_B^T B^{-1}N )X_N(CNT​−CBT​B−1N)XN​ 结果是 σm+1xm+1+σm+2xm+2+⋯+σnxn\sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}σm+1​xm+1​+σm+2​xm+2​+⋯+σn​xn​

=b0+(CNT−CBTB−1N)XN=b0+σm+1xm+1+σm+2xm+2+⋯+σnxn\begin{array}{lcl} &=& b_0 + ( C_N^T - C_B^T B^{-1}N )X_N \\\\ &=& b_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n} \\\\ \end{array}​==​b0​+(CNT​−CBT​B−1N)XN​b0​+σm+1​xm+1​+σm+2​xm+2​+⋯+σn​xn​​

五、XN=OX_N = OXN​=O 目标函数最大 分析


当上述 XNX_NXN​ 矩阵中的变量值 (xm+1xm+2⋮xn)\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}⎝⎜⎜⎜⎛​xm+1​xm+2​⋮xn​​⎠⎟⎟⎟⎞​ 都为 000 时 , 假如上述公式取值最大值 , 即

b0+σm+1xm+1+σm+2xm+2+⋯+σnxnb_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}b0​+σm+1​xm+1​+σm+2​xm+2​+⋯+σn​xn​

取值最大值 ;

在线性规划约束条件中 , 所有的变量都是大于等于 000 的 , 每个 xjx_jxj​ 约束变量取值都可以大于等于 000 , 目前是查看当所有的 xjx_jxj​ 变量都取值 000 时 , 目标函数达到最大值的情况 ;

当 XNX_NXN​ 取值等于 OOO 零矩阵时 , 目标函数值等于 b0b_0b0​ , 当 XNX_NXN​ 中有元素取值大于 000 时 , 就会在 b0b_0b0​ 基础上加上一个值 , 如果这个值是 小于等于 000 的 , 那么对应的 xjx_jxj​ 取值越大 , 目标函数值越小 ;

因此这里得到 , 在 XN=(xm+1xm+2⋮xn)X_N=\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}XN​=⎝⎜⎜⎜⎛​xm+1​xm+2​⋮xn​​⎠⎟⎟⎟⎞​ 非基变量前的系数是小于等于 000 时 , 才能满足当 XNX_NXN​ 中的元素取值等于 000 时 , 目标函数是最大值 ;

因此
b0+σm+1xm+1+σm+2xm+2+⋯+σnxnb_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}b0​+σm+1​xm+1​+σm+2​xm+2​+⋯+σn​xn​

中的 σm+1,σm+2,⋯,σn\sigma_{m+1} , \sigma_{m+2} , \cdots , \sigma_{n}σm+1​,σm+2​,⋯,σn​ 系数值小于等于 000 , 其中每个系数对应的变量 xjx_{j}xj​ 必定是大于等于 000 的值 , 那么系数 σm+1\sigma_{m+1}σm+1​ 小于等于 000 时 , 每个变量取值 xj=0x_j = 0xj​=0 , 目标函数达到最小值 ;

六、总结


将线性规划约束条件表示为 BXB+NXN=bBX_B + NX_N = bBXB​+NXN​=b

进行变换后得到 XB=B−1b−B−1NXNX_B = B^{-1}b - B^{-1}NX_NXB​=B−1b−B−1NXN​

这里可以写出如下可行解 {XB=B−1b−B−1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}⎩⎪⎨⎪⎧​XB​=B−1b−B−1NXN​XN​​

将上述可行解代入目标函数 maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT​XB​+CNT​XN​ 中

得到 maxZ=b0+(CNT−CBTB−1N)XNmaxZ = b_0 + ( C_N^T - C_B^T B^{-1}N )X_NmaxZ=b0​+(CNT​−CBT​B−1N)XN​

在该情况下 , 如果 (CNT−CBTB−1N)( C_N^T - C_B^T B^{-1}N )(CNT​−CBT​B−1N) 系数小于等于 000 , 当 XNX_NXN​ 取值为 000 时 , 目标函数得到最大值 ;

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

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

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

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

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

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

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

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

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

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

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

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

    文章目录 一.单纯形法原理 二.单纯形法流程 三.初始的基可行解查找 一.单纯形法原理 单纯形法的理论基础 : 定理 111 ( 可行域是凸集 ) : 如果线性规划的问题 存在可行解 , 其 可行域 ...

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

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

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

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

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

    文章目录 一.第二次迭代 : 进行矩阵变换 二.第二次迭代 : 计算检验数 三.第二次迭代 : 最优解判定 [运筹学]线性规划数学模型 ( 单纯形法 | 第二次迭代 | 方程组同解变换 | 生成新单纯 ...

最新文章

  1. kafka高可用(集群)
  2. oracle控制文件发生坏块,控制文件坏块处理方法
  3. android 自定义view文字不齐,Android 解决TextView排版参差不齐的问题
  4. 结对编程-队友代码欣赏
  5. linux du命令重定向,df命令、du命令 、磁盘分区
  6. php worker,问题 php不支持worker工作模式的报错
  7. python pexpect模块详解_python pexpect模块
  8. EPTP 和 EPT 分页结构条目的格式
  9. git中的Stash Changes和UnStash Changes用法
  10. java获取pdf的属性_Java 文件属性.pdf
  11. tp5 点击刷新验证码
  12. 如何提高国际短信到达率?
  13. 从空城计到阿尔法狗,博弈论如何渗透我们的生活?
  14. webstorm设置黑色背景
  15. 使用HBuilder打包App教程(图文教程)
  16. [Learn Android Studio 汉化教程]Reminders实验:第一部分(续)
  17. Java对接地磅串口工作日志
  18. Matplotlib做动图(基础版)
  19. 微信小程序获取用户当前所在位置
  20. OpenGL中glRotatef()函数究竟对矩阵做了什么

热门文章

  1. AlphaBlend 使用方法
  2. 给你的Flex程序添加深链接和分析-其实比你想象的要简单
  3. 如何正确选择开源数据库?你需要这的5个技巧
  4. 自旋锁spinlock解析
  5. Linux下自带的regex
  6. C#+Mapxtreme 实现一些GIS系统基本的功能
  7. Ant在MyEclipse中的配置总结
  8. 会话、进程组与僵死进程
  9. 从nginx日志原始二进制数据还原文件
  10. IT 需要知道的一些专业名词和解释 (长期更新)