一、标准形式
线性规划的标准形式如下:
min
c
T
x
s
.
t
.
A
x
=
b
,
(
L
P
)
x
≥
0
\begin{equation} \begin{aligned} &\min \mathbf{c^T}x\\ & s.t. \quad \boldsymbol{Ax = b}, \qquad (LP) \\ & \qquad \quad \boldsymbol{x\geq 0} \end{aligned} \end{equation}
mincTxs.t.Ax=b,(LP)x≥0
其中
A
\boldsymbol{A}
A是
m
×
n
m\times n
m×n的矩阵,
c
\boldsymbol{c}
c是n为列向量,
b
\boldsymbol{b}
b是m维列向量。当变量有上下界,不满足标准形式时,需要引入松弛变量将问题转化为标准形式。
二、极点、极方向
定义(极点)
对于任意凸集 S S S, S S S内一向量 x \pmb{x} x如果是 S S S的极点,那么不存在不同于 x \pmb{x} x的两个向量 y , z \pmb{y},\pmb{z} y,z,使得 x = λ y + ( 1 − λ ) z , 0 ≤ λ ≤ 1 \pmb{x}=\lambda \pmb{y}+(1-\lambda)\pmb{z},0\le \lambda \le 1 x=λy+(1−λ)z,0≤λ≤1。
Note:
- 极点不能表示成两个不同点的组合;
- 极点不在 S S S中任何线段的内部;
- 显然,多边形的顶点和圆周上的任意一点都是极点;
定义(方向)
设 S S S 为 R n \mathbb{R}^n Rn 中的闭凸集, d \boldsymbol{d} d 为非零向量, 如果对 S S S 中的每一个 x \boldsymbol{x} x, 都有
{ x + λ d ∣ λ ⩾ 0 } ⊂ S , \{\boldsymbol{x}+\lambda \boldsymbol{d} \mid \lambda \geqslant 0\} \subset S, {x+λd∣λ⩾0}⊂S,
则称向量 d \boldsymbol{d} d 为 S S S 的方向.
定义(极方向)
设 d ( 1 ) \boldsymbol{d}^{(1)} d(1) 和 d ( 2 ) \boldsymbol{d}^{(2)} d(2) 是 S S S 的两个方向, 若对任何正数 λ \lambda λ, 有 d ( 1 ) ≠ λ d ( 2 ) \boldsymbol{d}^{(1)} \neq \lambda \boldsymbol{d}^{(2)} d(1)=λd(2), 则称 d ( 1 ) \boldsymbol{d}^{(1)} d(1) 和 d ( 2 ) \boldsymbol{d}^{(2)} d(2) 是两个不同的方向. 若 S S S 的方向 d \boldsymbol{d} d 不能表示成该集合的两个不同方向的正 的线性组合,则称 d \boldsymbol{d} d 为 S S S 的极方向.
显然,有界集不存在方向, 因而也不存在极方向. 对于无界集才有方向的概念.
例
设 S = { x ∣ A x = b , x ⩾ 0 } S=\{\boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0}\} S={x∣Ax=b,x⩾0} 为非空集合, d \boldsymbol{d} d 是非零向量. 证明 d \boldsymbol{d} d 为 S S S 的方向的充要条件是 d ⩾ 0 \boldsymbol{d} \geqslant \boldsymbol{0} d⩾0 且 A d = 0 \boldsymbol{A d}=\mathbf{0} Ad=0.
证明 :
按照定义, d d d 为 S S S 的方向的充要条件是: 对每一个 x ∈ S x \in S x∈S, 有
{ x + λ d ∣ λ ⩾ 0 } ⊂ S . ( 1 ) \{\boldsymbol{x}+\lambda \boldsymbol{d} \mid \lambda \geqslant 0\} \subset S . \quad (1) {x+λd∣λ⩾0}⊂S.(1)
根据集合 S S S 的定义, (1)式即
A ( x + λ d ) = b , x + λ d ⩾ 0. ( 2 ) \begin{aligned} & \boldsymbol{A}(\boldsymbol{x}+\lambda \boldsymbol{d})=\boldsymbol{b}, \\ & \boldsymbol{x}+\lambda \boldsymbol{d} \geqslant \mathbf{0} . \end{aligned} \quad (2) A(x+λd)=b,x+λd⩾0.(2)
由于 A x = b , x ⩾ 0 \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0} Ax=b,x⩾0 及 λ \lambda λ 可取任意非负数, 因此由 (2)式知 A d = 0 \boldsymbol{A} \boldsymbol{d}=\mathbf{0} Ad=0 及 d ⩾ 0 \boldsymbol{d} \geqslant \mathbf{0} d⩾0.
下面给出多面集的一个重要性质, 这就是所谓的表示定理.
定理(表示定理)
设 S = { x ∣ A x = b , x ⩾ 0 } S=\{\boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0}\} S={x∣Ax=b,x⩾0} 为非空多面集,则有:
(1) 极点集非空, 且存在有限个极点 x ( 1 ) , ⋯ , x ( k ) x^{(1)}, \cdots, x^{(k)} x(1),⋯,x(k).
(2) 极方向集合为空集的充要条件是 S S S 有界. 若 S S S 无界, 则存在有限个极方向 d ( 1 ) , ⋯ , d ( n ) \boldsymbol{d}^{(1)}, \cdots, \boldsymbol{d}^{(n)} d(1),⋯,d(n).
(3) x ∈ S x \in S x∈S 的充要条件是:
x = ∑ j = 1 k λ j x ( j ) + ∑ j = 1 l μ j d ( j ) , ∑ j = 1 k λ j = 1 , λ j ⩾ 0 , j = 1 , ⋯ , k , μ j ⩾ 0 , j = 1 , ⋯ , l . \begin{aligned} & x=\sum_{j=1}^k \lambda_j x^{(j)}+\sum_{j=1}^l \mu_j d^{(j)}, \\ & \sum_{j=1}^k \lambda_j=1, \\ & \lambda_j \geqslant 0, \quad j=1, \cdots, k, \\ & \mu_j \geqslant 0, \quad j=1, \cdots, l . \end{aligned} x=j=1∑kλjx(j)+j=1∑lμjd(j),j=1∑kλj=1,λj⩾0,j=1,⋯,k,μj⩾0,j=1,⋯,l.
三、 线性规划基本性质
(1)最优解会在极点处取得
由表示定理可以推出如下的定理,具体的证明见《最优化理论与算法(陈宝林)》
定理
设线性规划(LP)的可行域非空, 则有下列结论:
- 若线性规划存在有限最优解, 则目标函数的最优值可在某个极点上达到.
Note:
- 也就是说一定会在某个极点上取得最优解
(2)基本可行解
在线性规划(LP)中, 设矩阵
A
\boldsymbol{A}
A 的秩为
m
m
m(m<=n), 又假设
A
=
[
B
,
N
]
\boldsymbol{A}=[\boldsymbol{B}, \boldsymbol{N}]
A=[B,N], 其中
B
\boldsymbol{B}
B 是
m
m
m 阶可逆矩阵(如果
r
a
n
k
(
A
)
<
m
rank(A)<m
rank(A)<m,说明有冗余行,可以消去). 如果
A
\boldsymbol{A}
A 的前
m
m
m 列是线性相关的, 可以通过列调换, 使前
m
m
m 列成为线性无关的, 因此关于
B
\boldsymbol{B}
B 可逆的假设不失一般性. 同时记作
x
=
[
x
B
x
N
]
,
x=\left[\begin{array}{l} x_B \\ x_N \end{array}\right],
x=[xBxN],
其中
x
B
x_B
xB 的分量与
B
B
B 中的列对应,
x
N
x_N
xN 的分量与
N
N
N 的列对应. 这样, 可把
A
x
=
b
A x=b
Ax=b 写成
(
B
,
N
)
[
x
B
x
N
]
=
b
,
(B, N)\left[\begin{array}{l} x_B \\ x_N \end{array}\right]=b,
(B,N)[xBxN]=b,
即
B
x
B
+
N
x
N
=
b
.
B x_B+N x_N=b .
BxB+NxN=b.
上式两端左乘
B
−
1
\boldsymbol{B}^{-1}
B−1, 并移项, 得到
x
B
=
B
−
1
b
−
B
−
1
N
x
N
,
\boldsymbol{x}_{\boldsymbol{B}}=\boldsymbol{B}^{-1} \boldsymbol{b}-\boldsymbol{B}^{-1} \boldsymbol{N} \boldsymbol{x}_N,
xB=B−1b−B−1NxN,
x
N
x_N
xN 的分量就是线性代数中所谓的自由末知量,它们取不同的值, 就会得到方程组的不同的解. 特别地, 令
x
N
=
0
x_N=\mathbf{0}
xN=0, 则得到解
x
=
[
x
B
x
N
]
=
[
B
−
1
b
0
]
.
x=\left[\begin{array}{l} x_B \\ x_N \end{array}\right]=\left[\begin{array}{c} B^{-1} b \\ 0 \end{array}\right] .
x=[xBxN]=[B−1b0].
定义(基本解)
- 将
x = [ x B x N ] = [ B − 1 b 0 ] x=\left[\begin{array}{l} x_B \\ x_N \end{array}\right]=\left[\begin{array}{c} B^{-1} b \\ 0 \end{array}\right] x=[xBxN]=[B−1b0]称为方程组 A x = b \boldsymbol{A x}=\boldsymbol{b} Ax=b 的一个基本解;- B \boldsymbol{B} B 称为基矩阵,简称为基;
- x B \boldsymbol{x}_{\boldsymbol{B}} xB 的各分量称为基变量, 基变量的全体 x B 1 , x B 2 , ⋯ , x B m x_{B_1}, x_{B_2}, \cdots, x_{B_m} xB1,xB2,⋯,xBm 称为一组基;
- x N x_N xN 的各分量称为非基变量.
又若
B
−
1
b
⩾
0
\boldsymbol{B}^{-1} \boldsymbol{b} \geqslant \boldsymbol{0}
B−1b⩾0, 则称
x
=
[
x
B
x
N
]
=
[
B
−
1
b
0
]
\boldsymbol{x}=\left[\begin{array}{c} x_B \\ x_N \end{array}\right]=\left[\begin{array}{c} B^{-1} b \\ 0 \end{array}\right]
x=[xBxN]=[B−1b0]为约束条件
A
x
=
b
,
x
⩾
0
\boldsymbol{A x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0}
Ax=b,x⩾0 的基本可行解. 相应地, 称
B
\boldsymbol{B}
B 为可行基矩阵,
x
B
1
,
x
B
2
,
⋯
,
x
B
m
x_{\boldsymbol{B}_1}, x_{\boldsymbol{B}_2}, \cdots, x_{\boldsymbol{B}_m}
xB1,xB2,⋯,xBm 为 一组可行基. 若
B
1
b
>
0
\boldsymbol{B}{ }^1 \boldsymbol{b}>\mathbf{0}
B1b>0, 即基变量的取值均为正数, 则称基本可行解是非退化的. 如果满 足
B
−
1
b
⩾
0
\boldsymbol{B}^{-1} \boldsymbol{b} \geqslant 0
B−1b⩾0 且至少有一个分量是零, 则称基本可行解是退化的基本可行解.
每一组基对应一个基本解, 一般地, 当
A
\boldsymbol{A}
A 是
m
×
n
m \times n
m×n 矩阵,
A
\boldsymbol{A}
A 的秩为
m
m
m 时, 基本可行解的个数不会超过:
(
n
m
)
=
n
!
m
!
(
n
−
m
)
!
.
\left(\begin{array}{l} n \\ m \end{array}\right)=\frac{n !}{m !(n-m) !} .
(nm)=m!(n−m)!n!.
定理(极点和基本可行解等价)
令 K = { x ∣ A x = b , x ⩾ 0 } , A K=\{\boldsymbol{x} \mid \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0}\}, \boldsymbol{A} K={x∣Ax=b,x⩾0},A 是 m × n m \times n m×n 矩阵, A \boldsymbol{A} A 的秩为 m m m, 则 K K K 的极点集与 A x = b , x ⩾ 0 \boldsymbol{A x}=\boldsymbol{b}, \boldsymbol{x} \geqslant \boldsymbol{0} Ax=b,x⩾0 的基本可行解集等价.
证明见《最优化理论与算法(陈宝林)》第二章。
Note:
- 线性规划的最优解会在某个极点达到;
- 极点和基本可行解等价;
- 所以线性规划问题的求解,可以归结为求最优基本可行解;
- 这个思想是单纯形法的主要出发点。
四、单纯形法
由上节的介绍我们知道线性规划的最优解会出现在某个顶点,而单纯形法的主要思想是从一个顶点出发,去找下一个能让目标函数变小(或者变大)的顶点。而如何去寻找这样的顶点,从数学上来说其实就是基本可行解的转换。
(1)数学理论
考虑问题
min
f
=
def
c
x
s. t.
A
x
=
b
,
x
⩾
0
,
\begin{array}{ll} \min \quad f \stackrel{\text { def }}{=} \boldsymbol{c} \boldsymbol{x} \\ \text { s. t. } \quad A \boldsymbol{x}=\boldsymbol{b}, \\ & \boldsymbol{x} \geqslant \boldsymbol{0}, \end{array}
minf= def cx s. t. Ax=b,x⩾0,其中
A
\boldsymbol{A}
A 是
m
×
n
m \times n
m×n 矩阵,秩为
m
,
c
m, \boldsymbol{c}
m,c 是
n
n
n 维行向量,
x
\boldsymbol{x}
x 是
n
n
n 维列向量,
b
⩾
0
\boldsymbol{b} \geqslant \boldsymbol{0}
b⩾0 是
m
m
m 维列向量. 记:
A
=
(
p
1
,
p
2
,
⋯
,
p
n
)
.
\boldsymbol{A}=\left(\boldsymbol{p}_1, \boldsymbol{p}_2, \cdots, \boldsymbol{p}_n\right) .
A=(p1,p2,⋯,pn).现将
A
\boldsymbol{A}
A 分解成
(
B
,
N
)
(\boldsymbol{B}, \boldsymbol{N})
(B,N) (可能经列调换), 使得其中
B
\boldsymbol{B}
B 是基矩阵,
N
\boldsymbol{N}
N 是非基矩阵, 设
x
(
0
)
=
[
B
−
1
b
0
]
\boldsymbol{x}^{(0)}=\left[\begin{array}{c} \boldsymbol{B}^{-1} \boldsymbol{b} \\ \mathbf{0} \end{array}\right]
x(0)=[B−1b0]是基本可行解,在
x
(
0
)
\boldsymbol{x}^{(0)}
x(0) 处的目标函数值
f
0
=
c
x
(
0
)
=
(
c
B
,
c
N
)
[
B
−
1
b
0
]
=
c
B
B
1
b
,
\begin{aligned} f_0 & =\boldsymbol{c x}^{(0)}=\left(\boldsymbol{c}_{\boldsymbol{B}}, \boldsymbol{c}_N\right)\left[\begin{array}{c} \boldsymbol{B}^{-1} \boldsymbol{b} \\ \mathbf{0} \end{array}\right] \\ & =\boldsymbol{c}_{\boldsymbol{B}} \boldsymbol{B}{ }^1 \boldsymbol{b}, \end{aligned}
f0=cx(0)=(cB,cN)[B−1b0]=cBB1b,其中
c
B
\boldsymbol{c}_B
cB 是
c
\boldsymbol{c}
c 中与基变量对应的分量组成的
m
m
m 维行向量.
c
N
\boldsymbol{c}_N
cN 是
c
c
c 中与非基变量对应的分量 组成的
n
−
m
n-m
n−m 维行向量。现在分析怎样从基本可行解
x
(
0
)
\boldsymbol{x}^{(0)}
x(0) 出发, 求一个改进的基本可行解.
设
x
=
[
x
B
x
N
]
x=\left[\begin{array}{l} x_B \\ x_N \end{array}\right]
x=[xBxN]是任一个可行解, 则由
A
x
=
b
\boldsymbol{A x}=\boldsymbol{b}
Ax=b 得到
x
B
=
B
−
1
b
−
B
−
1
N
x
N
,
\boldsymbol{x}_{\boldsymbol{B}}=\boldsymbol{B}^{-1} \boldsymbol{b}-\boldsymbol{B}^{-1} \boldsymbol{N} \boldsymbol{x}_N,
xB=B−1b−B−1NxN,在点
x
\boldsymbol{x}
x 处的目标函数值
f
=
c
x
=
(
c
B
,
c
N
)
[
x
B
x
N
]
=
c
B
x
B
+
c
N
x
N
=
c
B
(
B
−
1
b
−
B
−
1
N
x
N
)
+
c
N
x
N
=
c
B
B
−
1
b
−
(
c
B
B
−
1
N
−
c
N
)
x
N
=
f
0
−
∑
j
∈
R
(
c
B
B
−
1
p
j
−
c
j
)
x
j
=
f
0
−
∑
j
∈
R
(
z
j
−
c
j
)
x
j
,
(
1
)
\begin{aligned} f & =\boldsymbol{c} \boldsymbol{x}=\left(c_B, c_N\right)\left[\begin{array}{l} x_B \\ x_N \end{array}\right] \\ & =c_B x_B+c_N x_N \\ & =c_B\left(\boldsymbol{B}^{-1} \boldsymbol{b}-\boldsymbol{B}^{-1} \boldsymbol{N} x_N\right)+c_N x_N \\ & =c_B \boldsymbol{B}^{-1} \boldsymbol{b}-\left(\boldsymbol{c}_B \boldsymbol{B}^{-1} \boldsymbol{N}-\boldsymbol{c}_N\right) \boldsymbol{x}_N \\ & =f_0-\sum_{j \in R}\left(\boldsymbol{c}_B \boldsymbol{B}^{-1} \boldsymbol{p}_j-c_j\right) x_j \\ & =f_0-\sum_{j \in \mathbb{R}}\left(z_j-c_j\right) x_j, \end{aligned} \qquad (1)
f=cx=(cB,cN)[xBxN]=cBxB+cNxN=cB(B−1b−B−1NxN)+cNxN=cBB−1b−(cBB−1N−cN)xN=f0−j∈R∑(cBB−1pj−cj)xj=f0−j∈R∑(zj−cj)xj,(1)其中
R
R
R 是非基变量下标集,
z
j
=
c
B
B
−
1
p
j
.
z_j=\boldsymbol{c}_{\boldsymbol{B}} \boldsymbol{B}^{-1} \boldsymbol{p}_j .
zj=cBB−1pj.由 (1) 式可知, 适当选取自由末知量
x
j
(
j
∈
R
)
x_j(j \in R)
xj(j∈R) 的数值就有可能使得
∑
j
∈
R
(
z
j
−
c
j
)
x
j
>
0
,
\sum_{j \in R}\left(z_j-c_j\right) x_j>0,
j∈R∑(zj−cj)xj>0,从而得到使目标函数值减少的新的基本可行解. 为此, 在原来的
n
−
m
n-m
n−m 个非基变量中, 使 得
n
−
m
−
1
n-m-1
n−m−1 个变量仍然取零值, 而令一个非基变量, 比如
x
k
x_k
xk 增大, 即取正值, 以便实现我们的目的. 那么怎样确定下标
k
k
k 呢? 根据 (1) 式, 当
x
j
(
j
∈
R
)
x_j(j \in R)
xj(j∈R) 取值相同时,
z
j
−
c
j
z_j-c_j
zj−cj (正 数)越大, 目标函数值下降越多, 因此选择
x
k
x_k
xk, 使
z
k
−
c
k
=
max
j
∈
R
{
z
j
−
c
j
}
,
z_k-c_k=\max _{j \in R}\left\{z_j-c_j\right\},
zk−ck=j∈Rmax{zj−cj},这里假设
z
k
−
c
k
>
0.
x
k
z_k-c_k>0 . x_k
zk−ck>0.xk 由零变为正数后, 得到方程组
A
x
=
b
\boldsymbol{A x}=\boldsymbol{b}
Ax=b 的解
x
B
=
B
−
1
b
−
B
−
1
p
k
x
k
=
b
‾
−
y
k
x
k
,
\boldsymbol{x}_{\boldsymbol{B}}=\boldsymbol{B}^{-1} \boldsymbol{b}-\boldsymbol{B}^{-1} \boldsymbol{p}_k x_k=\overline{\boldsymbol{b}}-\boldsymbol{y}_k x_k,
xB=B−1b−B−1pkxk=b−ykxk,其中
b
ˉ
\bar{b}
bˉ 和
y
k
\boldsymbol{y}_k
yk 是
m
m
m 维列向量,
b
ˉ
=
B
−
1
b
,
y
k
=
B
−
1
p
k
\bar{b}=\boldsymbol{B}^{-1} \boldsymbol{b}, \boldsymbol{y}_k=\boldsymbol{B}^{-1} \boldsymbol{p}_k
bˉ=B−1b,yk=B−1pk, 把
x
B
\boldsymbol{x}_{\boldsymbol{B}}
xB 按分量写出, 即
x
B
=
[
x
B
1
x
B
2
⋮
x
B
m
]
=
[
b
ˉ
1
b
ˉ
2
⋮
b
ˉ
m
]
−
[
y
1
k
y
2
k
⋮
y
m
k
]
x
k
,
(
2
)
\boldsymbol{x}_B=\left[\begin{array}{c} x_{B_1} \\ x_{B_2} \\ \vdots \\ x_{B_m} \end{array}\right]=\left[\begin{array}{c} \bar{b}_1 \\ \bar{b}_2 \\ \vdots \\ \bar{b}_m \end{array}\right]-\left[\begin{array}{c} y_{1 k} \\ y_{2 k} \\ \vdots \\ y_{m k} \end{array}\right] x_k, \qquad (2)
xB=
xB1xB2⋮xBm
=
bˉ1bˉ2⋮bˉm
−
y1ky2k⋮ymk
xk,(2)
x N = ( 0 , ⋯ , 0 , x k , 0 , ⋯ , 0 ) T , \boldsymbol{x}_N=\left(0, \cdots, 0, x_k, 0, \cdots, 0\right)^{\mathrm{T}}, xN=(0,⋯,0,xk,0,⋯,0)T,
在新得到的点, 目标函数值是
f
=
f
0
−
(
z
k
−
c
k
)
x
k
.
(
3
)
f=f_0-\left(z_k-c_k\right) x_k .\qquad (3)
f=f0−(zk−ck)xk.(3)
再来分析怎样确定
x
k
x_k
xk 的取值. 一方面, 根据(3) 式,
x
k
x_k
xk 取值越大函数值下降越多; 另一方面, 根据 (2) 式,
x
k
x_k
xk 的取值受到可行性的限制, 它不能无限增大 (当
y
k
⩽
0
\boldsymbol{y}_k \leqslant 0
yk⩽0 时). 对 某个
i
i
i, 当
y
i
k
⩽
0
y_{i k} \leqslant 0
yik⩽0 时,
x
k
x_k
xk 取任何正值时, 总成立
x
B
i
⩾
0
x_{B_i} \geqslant 0
xBi⩾0, 而当
y
i
k
>
0
y_{i k}>0
yik>0 时, 为保证
x
B
i
=
b
ˉ
i
−
y
i
k
x
k
⩾
0
,
x_{B_i}=\bar{b}_i-y_{i k} x_k \geqslant 0 \text {, }
xBi=bˉi−yikxk⩾0,
就必须取值
x
k
⩽
b
ˉ
i
y
i
k
x_k \leqslant \frac{\bar{b}_i}{y_{i k}}
xk⩽yikbˉi
因此, 为使
x
B
⩾
0
x_B \geqslant 0
xB⩾0, 应令
x
k
=
min
{
b
ˉ
i
y
i
k
∣
y
i
k
>
0
}
=
b
ˉ
r
y
r
k
,
x_k=\operatorname{min}\left\{\frac{\bar{b}_i}{y_{i k}} \mid y_{i k}>0\right\}=\frac{\bar{b}_r}{y_{r k}},
xk=min{yikbˉi∣yik>0}=yrkbˉr,
x
k
x_k
xk 取值
b
ˉ
r
/
y
r
k
\bar{b}_r / y_{r k}
bˉr/yrk 后, 原来的基变量
x
b
=
0
x_b=0
xb=0, 得到新的可行解这个解一定是基本可行解. 因为原来的基
B
=
(
p
B
1
,
⋯
,
p
B
r
,
⋯
,
p
B
m
)
\boldsymbol{B}=\left(\boldsymbol{p}_{\boldsymbol{B}_1}, \cdots, \boldsymbol{p}_{\boldsymbol{B}_r}, \cdots, \boldsymbol{p}_{\boldsymbol{B}_m}\right)
B=(pB1,⋯,pBr,⋯,pBm)
中的
m
m
m 个列是线性无关的, 其中不包含
p
k
\boldsymbol{p}_k
pk. 由于
y
k
=
B
−
1
p
k
\boldsymbol{y}_k=\boldsymbol{B}^{-1} \boldsymbol{p}_k
yk=B−1pk, 故
p
k
=
B
y
k
=
∑
i
=
1
m
y
i
k
p
B
t
,
\boldsymbol{p}_k=\boldsymbol{B} y_k=\sum_{i=1}^m y_{i k} \boldsymbol{p}_{\boldsymbol{B}_t},
pk=Byk=i=1∑myikpBt,
即
p
k
\boldsymbol{p}_k
pk 是向量组
p
B
1
,
⋯
,
p
B
r
,
⋯
,
p
B
m
\boldsymbol{p}_{\boldsymbol{B}_1}, \cdots, \boldsymbol{p}_{\boldsymbol{B}_r}, \cdots, \boldsymbol{p}_{\boldsymbol{B}_m}
pB1,⋯,pBr,⋯,pBm 的线性组合, 且系数
y
r
k
≠
0
y_{r k} \neq 0
yrk=0. 因此用
p
k
\boldsymbol{p}_k
pk 取代
p
B
r
\boldsymbol{p}_{\boldsymbol{B}_r}
pBr 后, 得到的向量组
p
B
1
,
⋯
,
p
k
,
⋯
,
p
B
m
,
p_{B_1}, \cdots, p_k, \cdots, p_{B_m},
pB1,⋯,pk,⋯,pBm,
也是线性无关的. 因此新的可行解
x
\boldsymbol{x}
x 的正分量对应的列线性无关,故
x
\boldsymbol{x}
x 为基本可行解.
经上述转换,
x
k
x_k
xk 由原来的非基变量变成基变量,而原来的基变量
x
B
r
x_{B_r}
xBr 变成非基变量. 在新的基本可行解处, 目标函数值比原来减少了
(
z
k
−
c
k
)
x
k
\left(z_k-c_k\right) x_k
(zk−ck)xk. 重复以上过程, 可以进一步 改进基本可行解, 直到在 (1) 式中所有
z
j
−
c
j
z_j-c_j
zj−cj 均非正数, 以致任何一个非基变量取正值都不能使目标函数值减少时为止.
定理 (单纯形法判别数)
- 若在极小化问题中, 对于某个基本可行解, 所有 z j − c j ⩽ 0 z_j-c_j \leqslant 0 zj−cj⩽0, 则这个基本可行解是最优解;
- 若在极大化问题中, 对于某个基本可行解, 所有 z j − c j ⩾ 0 z_j-c_j \geqslant 0 zj−cj⩾0, 则这个基本可行解是最优解.
其中:
z j − c j = c B B − 1 p j − c j , j = 1 , ⋯ , n . z_j-c_j=\boldsymbol{c}_{\boldsymbol{B}} \boldsymbol{B}^{-1} \boldsymbol{p}_j-c_j, \quad j=1, \cdots, n . zj−cj=cBB−1pj−cj,j=1,⋯,n.
在线性规划中, 通常称 z j − c j z_j-c_j zj−cj 为判别数或检验数.
(2)实例
Reference
- 陈宝林.《最优化理论与算法》第二版