B站非常厉害的老师教学视频
1. 概述
- 线性规划的标准形式
- 可行集的特点
- 线性规划最优解的特点
- 单纯形法
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,x≥0
– 假设定义域不是标准形,我们可以通过添加变量的方式进行转换
– 原约束为不等式----> 添加变量 -----> 等式
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+2x2≤5→x1+2x2+x3=5,x3≥0
–
x
1
,
x
2
x_1,x_2
x1,x2不符合正数,引进变量
x
1
+
≥
0
,
x
1
−
≥
0
x_1^+\ge0,x_1^-\ge0
x1+≥0,x1−≥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} &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,x1−≥0;x2=x2+−x2−,x2+≥0,x2−≥0;
– 综上所述: 原问题转换成如下:
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,x3≥0x1=x1+−x1−,x1+≥0,x1−≥0;x2=x2+−x2−,x2+≥0,x2−≥0;
3. 多面体可行集
- 可行集 S = { x ∣ A x = b , x ≥ 0 } S=\{x\big|Ax=b,x\ge0\} S={x Ax=b,x≥0},多面体可行集, 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= B−1b0 ,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=b→xB=B−1b→X= xBxN = B−1b0 - 极方向:指在凸锥中,除了零向量外,无法通过锥内其他向量的正组合得到的向量方向
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 −B−1ajej ;t>0,B−1aj≤0,ej∈Rn−m - 多面体分割定理可得: 原来定义的为
S = { x ∣ A x = b , x ≥ 0 } \begin{equation} S=\{x\big|Ax=b,x\ge0\} \end{equation} S={x Ax=b,x≥0}
– 如果得到所有的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=1∑kλixi+j=1∑lμjdji=1∑kλi=1,λi≥0;i=1,⋯,kμj≥0,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:x∈S=mincTx=i=1∑kλicTxi+j=1∑lμjcTdji=1∑kλi=1,λi≥0;i=1,⋯,kμj≥0,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
cTdj≥0,∀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=1∑kλicTxi,st:x∈Sλi≥0,i=1∑kλ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有最优解,则最优解可在极点取到
- 基本思想:
- 找到一个极点 x ˉ \bar{x} xˉ,判断 x ˉ \bar{x} xˉ是否最优
- 若 x ˉ \bar{x} xˉ不是最优,寻找一个更优(值更小)的极点
4.2 步骤
假设 A = ( B , N ) A=(B,N) A=(B,N),B可逆, B − 1 b ≥ 0 B^{-1}b\ge0 B−1b≥0,可知 x i ˉ = ( B − 1 b 0 ) \bar{x_i}=\begin{pmatrix}B^{-1}b\\\\0\end{pmatrix} xiˉ= B−1b0 是S的一个极点
- 判断
x
ˉ
\bar{x}
xˉ 是否为最优解,?
取 x ∈ S , x = ( x B x N ) x\in S,x=\begin{pmatrix}x_B\\\\x_N\end{pmatrix} x∈S,x= xBxN ,目标函数中的c分解为 C = ( C B C N ) C=\begin{pmatrix}C_B\\\\C_N\end{pmatrix} C= CBCN
因为 x ∈ S x\in S x∈S可得, 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=b→xB=B−1b−B−1NxN
如果对于任意 x ∈ S x\in S x∈S来说,都满足 c T x − c T x ˉ ≥ 0 , ∀ x ∈ S c^Tx-c^T\bar{x}\ge0,\forall x\in S cTx−cTxˉ≥0,∀x∈S
代入可得:
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} cTx−cTxˉ=(cBT,cNT) xBxN −(cBT,cNT) B−1b0 =cBTxB+cNTxN−cBTB−1b=cBT{B−1b−B−1NxN}+cNTxN−cBTB−1b=(cNT−cBTB−1N)xN,xN≥0 - 那么我们只需要判断 ( c N T − c B T B − 1 N ) (c_N^T-c_B^TB^{-1}N) (cNT−cBTB−1N)与0之间的关系。
case1
:若 ( c N T − c B T B − 1 N ) ≥ 0 (c_N^T-c_B^TB^{-1}N)\ge0 (cNT−cBTB−1N)≥0,则可得: c T x − c T x ˉ ≥ 0 c^Tx-c^T\bar{x}\ge0 cTx−cTxˉ≥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 (cNT−cBTB−1N)0,则存在一个分量小于0,假设第j个分量小于0, c j − c B T B − 1 a j < 0 c_j-c_B^TB^{-1}a_j<0 cj−cBTB−1aj<0
记 d j = ( − B − 1 a j e j ) d_j=\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix} dj= −B−1ajej ,则可得 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) −B−1ajej =cNTej−cBTB−1aj=cj−cBTB−1aj<0- 也就是说这个第j分量的正负与极方向相关
---- case2.1 r j ≤ 0 r_j\le0 rj≤0 - 记
r
j
=
B
−
1
a
j
r_j=B^{-1}a_j
rj=B−1aj,我们知道
d
j
=
(
−
B
−
1
a
j
e
j
)
d_j=\begin{pmatrix}-B^{-1}a_j\\\\e_j\end{pmatrix}
dj=
−B−1ajej
,如果
B
−
1
a
j
≤
0
B^{-1}a_j\le 0
B−1aj≤0,可得
d
j
≥
0
d_j\ge0
dj≥0,则可得
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
x∗∈S,即
x
ˉ
+
λ
d
j
∈
s
\bar{x}+\lambda d_j\in s
xˉ+λdj∈s
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= B−10 +λ −B−1ajej = B−1b−λB−1ajλej - 因为
λ
e
j
≥
0
\lambda e_j\ge0
λej≥0,所以此项不考虑,那么就只考虑第一项,且我们记
r
j
=
B
−
1
a
j
r_j=B^{-1}a_j
rj=B−1aj,
r
j
≰
0
r_j\nleqslant0
rj0,
r
j
r_j
rj中有分量大于0,所以
λ
\lambda
λ不能太大,会使得整体小于零,与定义
x
≥
0
x\ge0
x≥0矛盾,所以可得
λ
\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} B−1b−λB−1aj=B−1b−λrj≥0→B−1b−λrji≥0,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} λ≤rjiB−1b,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{rjiB−1b rji>0}→λ∗=min{rjiB−1b rji>0} - 可得新的极点: x ~ = x ˉ + λ ∗ d j \tilde{x}=\bar{x}+\lambda^*d_j x~=xˉ+λ∗dj