运筹学基础(四):单纯形法中检验数(reduced cost)的理解

前言

在前文运筹学基础(一)求解线性规划的单纯形法详解
中,我们直观的理解了单纯形法其实是在可行域的顶点上搜索的过程。(这篇文章没有通过列单纯形表来讲述,而是选择了一种更符合直觉的方式,我觉得这对于初学者而言是更好理解的。单纯形表感觉还是有点绕…)

提到单纯形法,就不得不提一下检验数了,前文一带而过了,这篇文章单独拎出来聊一下。因为未来的学习中,很多更高阶的内容还会涉及到检验数的概念。

检验数理解

直观理解

检验数的直观理解就是,减少或增大某个变量的值,会给目标函数值带来多大的影响。

m i n i m i z e minimize minimize问题中,如果存在检验数为负的非基变量,则说明仍然存在变量可以进一步增大,从而使得目标函数值减小。

同理,在 m a x i m i z e maximize maximize问题中,如果存在检验数为正的非基变量,则说明仍然存在变量可以进一步增大,从而使得目标函数值增大。

数学证明

为什么上述理解是对的?我们通过简单的数学推导来证明一下。其实挺简单的,请耐心的看完。

假设我们的问题是一个 m i n i m i z e minimize minimize问题:

m i n c T x s . t . A x = b x ≥ 0 min\quad c^Tx\\ s.t.\quad Ax=b\\ x \geq0 mincTxs.t.Ax=bx0

我们将 x x x表示为基变量(一个基本解的组成部分)和非基变量(不是基本解的组成部分,可以自由改变的):
x = [ x B , x N ] x = [x_B, x_N] x=[xB,xN]
其中 x B x_B xB表示基变量, x N x_N xN表示非基变量。

类似的,我们将成本系数表示为:
c T = [ c B T , c N T ] c^T = [c_B^T, c_N^T] cT=[cBT,cNT]
将资源系数表示为:
A = [ B , N ] A = [B, N] A=[B,N]

开始转化:

  1. 通过 A x = b Ax=b Ax=b推导出 x B x_B xB的表示方式:
    A x = b B x B + N x N = b B x B = b − N x N B − 1 B x B = B − 1 b − B − 1 N x N x B = B − 1 b − B − 1 N x N Ax = b\\ Bx_B+Nx_N=b\\ Bx_B=b-Nx_N\\ B^{-1}B x_B=B^{-1}b-B^{-1}Nx_N\\ x_B=B^{-1}b-B^{-1}Nx_N\\ Ax=bBxB+NxN=bBxB=bNxNB1BxB=B1bB1NxNxB=B1bB1NxN
  2. x B x_B xB带入目标函数:
    m i n c T x = c B T x B + c N T x N = c B T ( B − 1 b − B − 1 N x N ) + c N T x N = c B T B − 1 b + ( c N T − c B T B − 1 N ) x N min c^Tx=\\ c_B^Tx_B+c_N^Tx_N=\\ c_B^T(B^{-1}b-B^{-1}Nx_N)+c_N^Tx_N=\\ c_B^TB^{-1}b+(c_N^T-c_B^TB^{-1}N)x_N mincTx=cBTxB+cNTxN=cBT(B1bB1NxN)+cNTxN=cBTB1b+(cNTcBTB1N)xN

非基变量的系数 c N T − c B T B − 1 N c_N^T-c_B^TB^{-1}N cNTcBTB1N即为检验数(reduced cost)!

可以看到在 m i n i m i z e minimize minimize问题中,如果检验数为负数,则说明通过增加某一个非基变量的值,还可以进一步的减小目标函数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值