最优化理论与方法-第十一讲-线性规划-单纯形法


B站非常厉害的老师教学视频

1. 概述

  1. 线性规划的标准形式
  2. 可行集的特点
  3. 线性规划最优解的特点
  4. 单纯形法

2. 线性规划的标准形式

     min ⁡    c T x s t .      A x = b , x ≥ 0 \begin{equation}\begin{aligned} &\; \;\min\; c^Tx\\ &st.\;\;Ax=b,x\ge 0\\ \end{aligned}\end{equation} mincTxst.Ax=b,x0
– 假设定义域不是标准形,我们可以通过添加变量的方式进行转换
– 原约束为不等式----> 添加变量 -----> 等式
x 1 + 2 x 2 ≤ 5 → x 1 + 2 x 2 + x 3 = 5 , x 3 ≥ 0 \begin{equation} x_1+2x_2\le5\to x_1+2x_2+x_3=5,x_3\ge0 \end{equation} x1+2x25x1+2x2+x3=5,x30
x 1 , x 2 x_1,x_2 x1,x2不符合正数,引进变量 x 1 + ≥ 0 , x 1 − ≥ 0 x_1^+\ge0,x_1^-\ge0 x1+0,x10
x 1 = x 1 + − x 1 − , x 1 + ≥ 0 , x 1 − ≥ 0 ; x 2 = x 2 + − x 2 − , x 2 + ≥ 0 , x 2 − ≥ 0 ; \begin{equation}\begin{aligned} &x_1=x_1^+-x_1^-,x_1^+\ge0,x_1^-\ge0;\\ &x_2=x_2^+-x_2^-,x_2^+\ge0,x_2^-\ge0;\\ \end{aligned}\end{equation} x1=x1+x1,x1+0,x10;x2=x2+x2,x2+0,x20;
– 综上所述: 原问题转换成如下:
     min ⁡    c T x x 1 + 2 x 2 + x 3 = 5 , x 3 ≥ 0 x 1 = x 1 + − x 1 − , x 1 + ≥ 0 , x 1 − ≥ 0 ; x 2 = x 2 + − x 2 − , x 2 + ≥ 0 , x 2 − ≥ 0 ; \begin{equation}\begin{aligned} &\; \;\min\; c^Tx\\ &x_1+2x_2+x_3=5,x_3\ge0\\ &x_1=x_1^+-x_1^-,x_1^+\ge0,x_1^-\ge0;\\ &x_2=x_2^+-x_2^-,x_2^+\ge0,x_2^-\ge0;\\ \end{aligned}\end{equation} mincTxx1+2x2+x3=5,x30x1=x1+x1,x1+0,x10;x2=x2+x2,x2+0,x20;

3. 多面体可行集

  • 可行集 S = { x ∣ A x = b , x ≥ 0 } S=\{x\big|Ax=b,x\ge0\} S={x Ax=b,x0},多面体可行集, A m × n A_{m\times n} Am×n行满秩,根据上节可得多面体是由极点和极方向组合而成
  • 极点:指凸集中无法通过集合内其他两点的凸组合得到的点。即在凸集中不可再分的点;
    – 数学表达式:
    x = ( B − 1 b 0 ) , A = ( B , N ) , B 可逆 \begin{equation} x=\begin{pmatrix}B^{-1}b\\\\0\end{pmatrix},A=(B,N),B可逆 \end{equation} x= B1b0 ,A=(B,N),B可逆
    -定义一个矩阵A表示如下:
    A = ( 1 2 3 4 0 5 6 7 0 0 8 9 ) , a 1 = ( 1 , 0 , 0 ) T , a 2 = ( 2 , 5 , 0 ) T , a 3 = ( 3 , 6 , 8 ) T , a 4 = ( 4 , 7 , 9 ) T \begin{equation} A=\begin{pmatrix} 1&2&3&4\\\\ 0&5&6&7\\\\ 0&0&8&9 \end{pmatrix},a_1=(1,0,0)^T,a_2=(2,5,0)^T,a_3=(3,6,8)^T,a_4=(4,7,9)^T \end{equation} A= 100250368479 ,a1=(1,0,0)T,a2=(2,5,0)T,a3=(3,6,8)T,a4=(4,7,9)T
  • 可观察,矩阵A是行满秩,可以按列取出极大线性无关组, a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3
    B = ( a 1 , a 2 , a 3 ) , N = ( a 4 ) , A = ( B , N ) , X = ( x B 1 x B 2 x B 3 x N 1 ) = ( x B x N ) \begin{equation} B=(a_1,a_2,a_3),N=(a_4),A=(B,N),X=\begin{pmatrix}x_{B1}\\\\x_{B2}\\\\x_{B3}\\\\x_{N1}\end{pmatrix}=\begin{pmatrix}x_{B}\\\\x_{N}\end{pmatrix} \end{equation} B=(a1,a2,a3),N=(a4),A=(B,N),X= xB1xB2xB3xN1 = xBxN
  • 因为AX=b,展开后可得:
    A X = b → ( B , N ) ( x B x N ) = B x B + N x N \begin{equation} AX=b\to (B,N)\begin{pmatrix}x_{B}\\\\x_{N}\end{pmatrix}=Bx_B+Nx_N \end{equation} AX=b(B,N) xBxN =BxB+NxN
  • 因为B为极大线性无关组,所以 N为零空间解,必然可得 N x N = 0 Nx_N=0 NxN=0,因为N为非零向量,所以必得 X N = 0 X_N=0 XN=0
    B x B + N x N = B x B = b → x B = B − 1 b → X = ( x B x N ) = ( B − 1 b 0 ) \begin{equation} Bx_B+Nx_N=Bx_B=b\to x_B=B^{-1}b\to X=\begin{pmatrix}x_B\\\\x_{N}\end{pmatrix}=\begin{pmatrix}B^{-1}b\\\\0\end{pmatrix} \end{equation} BxB+NxN=BxB=bxB=B1bX= xBxN = B1b0
  • 极方向:指在凸锥中,除了零向量外,无法通过锥内其他向量的正组合得到的向量方向
    d = t ( − B − 1 a j e j ) ; t > 0 , B − 1 a j ≤ 0 , e j ∈ R n − m \begin{equation} d=t\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix};t>0,B^{-1}a_j\le0,e_j\in R^{n-m} \end{equation} d=t B1ajej ;t>0,B1aj0,ejRnm
  • 多面体分割定理可得: 原来定义的为
    S = { x ∣ A x = b , x ≥ 0 } \begin{equation} S=\{x\big|Ax=b,x\ge0\} \end{equation} S={x Ax=b,x0}
    – 如果得到所有的S极点为 x 1 , x 2 , ⋯   , x k x_1,x_2,\cdots,x_k x1,x2,,xk,所有的极方向 d 1 , d 2 , ⋯   , d l d_1,d_2,\cdots,d_l d1,d2,,dl,那么集合S可以表示为如下:
    x = ∑ i = 1 k λ i x i + ∑ j = 1 l μ j d j ∑ i = 1 k λ i = 1 , λ i ≥ 0 ; i = 1 , ⋯   , k μ j ≥ 0 , j = 1 , ⋯   , l \begin{equation}\begin{aligned} &x=\sum_{i=1}^k\lambda_ix_i+\sum_{j=1}^l\mu_jd_j\\ &\sum_{i=1}^k\lambda_i=1,\lambda_i\ge0;i=1,\cdots,k\\ &\mu_j\ge0,j=1,\cdots,l \end{aligned}\end{equation} x=i=1kλixi+j=1lμjdji=1kλi=1,λi0;i=1,,kμj0,j=1,,l
  • 那么目标函数可以转换如下:
    min ⁡ c T x , s t : x ∈ S = min ⁡ c T x = ∑ i = 1 k λ i c T x i + ∑ j = 1 l μ j c T d j ∑ i = 1 k λ i = 1 , λ i ≥ 0 ; i = 1 , ⋯   , k μ j ≥ 0 , j = 1 , ⋯   , l \begin{equation}\begin{aligned} &\min c^Tx,st:x\in S\\ &=\min c^Tx=\sum_{i=1}^k\lambda_ic^Tx_i+\sum_{j=1}^l\mu_jc^Td_j\\ &\sum_{i=1}^k\lambda_i=1,\lambda_i\ge0;i=1,\cdots,k\\ &\mu_j\ge0,j=1,\cdots,l \end{aligned}\end{equation} mincTx,st:xS=mincTx=i=1kλicTxi+j=1lμjcTdji=1kλi=1,λi0;i=1,,kμj0,j=1,,l
  • 分析(LP)的最优解的情况:
  • 如果 c T d j < 0 c^Td_j<0 cTdj<0,因为 μ j \mu_j μj为任意值,那么肯定存在 μ j \mu_j μj,使得目标值 L ( λ , μ ) = − ∞ L(\lambda,\mu)=-\infty L(λ,μ)=
  • 如果 c T d j ≥ 0 , ∀ j = 1 , ⋯   , l c^Td_j\ge0,\forall j=1,\cdots,l cTdj0,j=1,,l,则(LP)问题转换为
    min ⁡ ∑ i = 1 k λ i c T x i , s t : x ∈ S λ i ≥ 0 , ∑ i = 1 k λ i = 1 \begin{equation}\begin{aligned} &\min \sum_{i=1}^k\lambda_ic^Tx_i,st:x\in S\\ &\lambda_i\ge0,\sum_{i=1}^k\lambda_i=1 \end{aligned}\end{equation} mini=1kλicTxi,st:xSλi0,i=1kλi=1
  • 由上面可知,只要令 λ i = 1 \lambda_i=1 λi=1其他为0,求得 c T x i c^Tx_i cTxi,并在K个中找到最小即可,换句话来说,我们只要将每个极点上的值代入进去即可得到k个值,并且在k个值中找到最小那个就是所求的最小值最优解
    min ⁡ i = 1 , ⋯   , k { c T x i } \begin{equation} \min\limits_{i=1,\cdots,k}\{c^Tx_i\} \end{equation} i=1,,kmin{cTxi}

4. 单纯形法

4.1 概述

单纯形法Simplex method,Dantzig

  • 理论依据:若LP有最优解,则最优解可在极点取到
  • 基本思想:
  1. 找到一个极点 x ˉ \bar{x} xˉ,判断 x ˉ \bar{x} xˉ是否最优
  2. x ˉ \bar{x} xˉ不是最优,寻找一个更优(值更小)的极点

4.2 步骤

假设 A = ( B , N ) A=(B,N) A=(B,N),B可逆, B − 1 b ≥ 0 B^{-1}b\ge0 B1b0,可知 x i ˉ = ( B − 1 b 0 ) \bar{x_i}=\begin{pmatrix}B^{-1}b\\\\0\end{pmatrix} xiˉ= B1b0 是S的一个极点

  • 判断 x ˉ \bar{x} xˉ 是否为最优解,?
    x ∈ S , x = ( x B x N ) x\in S,x=\begin{pmatrix}x_B\\\\x_N\end{pmatrix} xS,x= xBxN ,目标函数中的c分解为 C = ( C B C N ) C=\begin{pmatrix}C_B\\\\C_N\end{pmatrix} C= CBCN
    因为 x ∈ S x\in S xS可得, A x = b Ax=b Ax=b,整理可得:
    ( B , N ) ( x B x N ) = B x B + N x N = b → x B = B − 1 b − B − 1 N x N \begin{equation} (B,N)\begin{pmatrix}x_B\\\\x_N\end{pmatrix}=Bx_B+Nx_N=b\to x_B=B^{-1}b-B^{-1}Nx_N \end{equation} (B,N) xBxN =BxB+NxN=bxB=B1bB1NxN
    如果对于任意 x ∈ S x\in S xS来说,都满足 c T x − c T x ˉ ≥ 0 , ∀ x ∈ S c^Tx-c^T\bar{x}\ge0,\forall x\in S cTxcTxˉ0xS
    代入可得:
               c T x − c T x ˉ = ( c B T , c N T ) ( x B x N ) − ( c B T , c N T ) ( B − 1 b 0 ) = c B T x B + c N T x N − c B T B − 1 b = 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 , x N ≥ 0 \begin{equation}\begin{aligned} &\;\;\;\;\;c^Tx-c^T\bar{x}\\ &\\ &=(c_B^T,c_N^T)\begin{pmatrix}x_B\\\\x_N\end{pmatrix}-(c_B^T,c_N^T)\begin{pmatrix}B^{-1}b\\\\0\end{pmatrix}\\ &\\ &=c_B^Tx_B+c_N^Tx_N-c_B^TB^{-1}b\\ &\\ &=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,x_N\ge0 \end{aligned}\end{equation} cTxcTxˉ=(cBT,cNT) xBxN (cBT,cNT) B1b0 =cBTxB+cNTxNcBTB1b=cBT{B1bB1NxN}+cNTxNcBTB1b=(cNTcBTB1N)xN,xN0
  • 那么我们只需要判断 ( c N T − c B T B − 1 N ) (c_N^T-c_B^TB^{-1}N) (cNTcBTB1N)与0之间的关系。
  • case1:若 ( c N T − c B T B − 1 N ) ≥ 0 (c_N^T-c_B^TB^{-1}N)\ge0 (cNTcBTB1N)0,则可得: c T x − c T x ˉ ≥ 0 c^Tx-c^T\bar{x}\ge0 cTxcTxˉ0,即可得 x ˉ \bar{x} xˉ为最小值,也就是最优解
  • case2:若 ( c N T − c B T B − 1 N ) ≱ 0 (c_N^T-c_B^TB^{-1}N) \ngeqslant0 (cNTcBTB1N)0,则存在一个分量小于0,假设第j个分量小于0, c j − c B T B − 1 a j < 0 c_j-c_B^TB^{-1}a_j<0 cjcBTB1aj<0
    d j = ( − B − 1 a j e j ) d_j=\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix} dj= B1ajej ,则可得 c T d j c^Td_j cTdj
    c T d j = ( c B T , c N T ) ( − B − 1 a j e j ) = c N T e j − c B T B − 1 a j = c j − c B T B − 1 a j < 0 \begin{equation} c^Td_j=(c_B^T,c_N^T)\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix}=c_N^Te_j-c_B^TB^{-1}a_j=c_j-c_B^TB^{-1}a_j<0 \end{equation} cTdj=(cBT,cNT) B1ajej =cNTejcBTB1aj=cjcBTB1aj<0
  • 也就是说这个第j分量的正负与极方向相关
    ---- case2.1 r j ≤ 0 r_j\le0 rj0
  • r j = B − 1 a j r_j=B^{-1}a_j rj=B1aj,我们知道 d j = ( − B − 1 a j e j ) d_j=\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix} dj= B1ajej ,如果 B − 1 a j ≤ 0 B^{-1}a_j\le 0 B1aj0,可得 d j ≥ 0 d_j\ge0 dj0,则可得 d j d_j dj极方向,如果是极方向,那么可得 x ˉ + λ d j \bar{x}+\lambda d_j xˉ+λdj仍然属于 S当中,且 λ ≥ 0 \lambda\ge0 λ0,同时我们知道假设中 c T d j < 0 c^Td_j<0 cTdj<0,可得 c T ( x ˉ + λ d j ) c^T(\bar{x}+\lambda d_j) cT(xˉ+λdj)无界
    c T ( x ˉ + λ d j ) = c T x ˉ + λ c T d j , λ ≥ 0 , ∃ λ i , lim ⁡ λ → ∞ λ i c T d j = − ∞ , \begin{equation} c^T(\bar{x}+\lambda d_j)=c^T\bar{x}+\lambda c^Td_j,\lambda\ge0,\exist \lambda_i,\lim_{\lambda\to\infty }\lambda_i c^Td_j=-\infty,\end{equation} cT(xˉ+λdj)=cTxˉ+λcTdj,λ0,λi,λlimλicTdj=,
    ---- case2.2 r j ≰ 0 r_j\nleqslant0 rj0,则 d j ≱ 0 d_j\ngeqslant 0 dj0,所以可得 d j d_j dj不是极方向,也就是说无法像极方向那样一直走下去,因为 λ ≥ 0 , c T d j < 0 \lambda\ge0,c^Td_j<0 λ0,cTdj<0,那么随着 λ \lambda λ增大,值越小,也就是说可以走到S的边界上为最小,那么值有下界
    c T ( x ˉ + λ d j ) = c T x ˉ + λ c T d j , λ ≥ 0 , ∃ λ i , lim ⁡ λ → ∞ λ i c T d j = − ∞ , \begin{equation} c^T(\bar{x}+\lambda d_j)=c^T\bar{x}+\lambda c^Td_j,\lambda\ge0,\exist \lambda_i,\lim_{\lambda\to\infty }\lambda_i c^Td_j=-\infty,\end{equation} cT(xˉ+λdj)=cTxˉ+λcTdj,λ0,λi,λlimλicTdj=,
  • 即可得假设有一个点 x ∗ = x ˉ + λ d j x^*=\bar{x}+\lambda d_j x=xˉ+λdj,要满足 x ∗ ∈ S x^*\in S xS,即 x ˉ + λ d j ∈ s \bar{x}+\lambda d_j\in s xˉ+λdjs
    x ˉ + λ d j = ( B − 1 0 ) + λ ( − B − 1 a j e j ) = ( B − 1 b − λ B − 1 a j λ e j ) \begin{equation} \bar{x}+\lambda d_j=\begin{pmatrix}B^{-1}\\\\0\end{pmatrix}+\lambda\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix}=\begin{pmatrix}B^{-1}b-\lambda B^{-1}a_j\\\\\lambda e_j\end{pmatrix} \end{equation} xˉ+λdj= B10 +λ B1ajej = B1bλB1ajλej
  • 因为 λ e j ≥ 0 \lambda e_j\ge0 λej0,所以此项不考虑,那么就只考虑第一项,且我们记 r j = B − 1 a j r_j=B^{-1}a_j rj=B1aj, r j ≰ 0 r_j\nleqslant0 rj0, r j r_j rj中有分量大于0,所以 λ \lambda λ不能太大,会使得整体小于零,与定义 x ≥ 0 x\ge0 x0矛盾,所以可得 λ \lambda λ的范围:
    B − 1 b − λ B − 1 a j = B − 1 b − λ r j ≥ 0 → B − 1 b − λ r j i ≥ 0 , i = 1 , ⋯   , m \begin{equation} B^{-1}b-\lambda B^{-1}a_j=B^{-1}b-\lambda r_j\ge 0 \to B^{-1}b-\lambda r_{ji}\ge0,i=1,\cdots,m \end{equation} B1bλB1aj=B1bλrj0B1bλrji0,i=1,,m
  • 整理可得:
    λ ≤ B − 1 b r j i , i = 1 , ⋯   , m , r j i > 0 \begin{equation} \lambda\le \frac{B^{-1}b}{r_{ji}},i=1,\cdots,m,r_{ji}>0 \end{equation} λrjiB1b,i=1,,m,rji>0
  • 整理可得:
    λ ≤ min ⁡ { B − 1 b r j i ∣ r j i > 0 } → λ ∗ = min ⁡ { B − 1 b r j i ∣ r j i > 0 } \begin{equation} \lambda\le \min\{\frac{B^{-1}b}{r_{ji}}\big|r_{ji}>0\}\to \lambda^*= \min\{\frac{B^{-1}b}{r_{ji}}\big|r_{ji}>0\} \end{equation} λmin{rjiB1b rji>0}λ=min{rjiB1b rji>0}
  • 可得新的极点: x ~ = x ˉ + λ ∗ d j \tilde{x}=\bar{x}+\lambda^*d_j x~=xˉ+λdj

5. 单纯形表法

详细参见其他大佬

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值