最优化——单纯形法
一般性线性规划标准型为对象总结其基本步骤
max
z
s.t.
P
1
x
1
+
P
2
x
2
+
⋯
+
P
n
x
n
=
b
⃗
−
−
−
(
1
)
c
1
x
1
+
c
2
x
2
+
⋯
+
c
n
x
n
=
z
−
−
−
(
2
)
x
j
≥
0
,
∀
1
≤
j
≤
n
\begin{array}{ll} \max & z \\ \text { s.t. } & P_{1} x_{1}+P_{2} x_{2}+\cdots+P_{n} x_{n}=\vec{b}---(1) \\ & c_{1} x_{1}+c_{2} x_{2}+\cdots+c_{n} x_{n}=z ---(2)\\ & x_{j} \geq 0, \forall 1 \leq j \leq n \end{array}
max s.t. zP1x1+P2x2+⋯+Pnxn=b−−−(1)c1x1+c2x2+⋯+cnxn=z−−−(2)xj≥0,∀1≤j≤n
步骤一:求广义基本可行解
已知一个可逆方阵
B
=
(
P
j
(
1
)
,
P
j
(
2
)
,
⋯
,
P
j
(
m
)
)
B=\left(P_{j(1)}, P_{j(2)}, \cdots, P_{j(m)}\right)
B=(Pj(1),Pj(2),⋯,Pj(m)) 满足
B
−
1
b
⃗
≥
0
B^{-1} \vec{b} \geq 0
B−1b≥0
其中
1
≤
j
(
i
)
≤
n
,
∀
1
≤
i
≤
m
,
1 \leq j(i) \leq n, \forall 1 \leq i \leq m,
1≤j(i)≤n,∀1≤i≤m, 即
B
B
B 是线性规划标准型 的可行基阵
由
B
B
B可以把线性约束(1)
P
1
x
1
+
P
2
x
2
+
⋯
+
P
n
x
n
=
b
⃗
P_{1} x_{1}+P_{2} x_{2}+\cdots+P_{n} x_{n}=\vec{b}
P1x1+P2x2+⋯+Pnxn=b改写为
⇔
(
P
j
(
1
)
,
⋯
,
P
j
(
m
)
)
(
x
j
(
1
)
⋮
x
j
(
m
)
)
+
P
j
(
m
+
1
)
x
j
(
m
+
1
)
+
⋯
+
P
j
(
n
)
x
j
(
n
)
=
b
⃗
⇔
(
x
j
(
1
)
⋮
x
j
(
m
)
)
+
(
B
−
1
P
j
(
m
+
1
)
)
x
j
(
m
+
1
)
+
⋯
+
(
B
−
1
P
j
(
n
)
)
x
j
(
n
)
=
B
−
1
b
⃗
\begin{array}{l} \Leftrightarrow\left(P_{j(1)}, \cdots, P_{j(m)}\right)\left(\begin{array}{c} x_{j(1)} \\ \vdots \\ x_{j(m)} \end{array}\right)+P_{j(m+1)} x_{j(m+1)}+\cdots+P_{j(n)} x_{j(n)}=\vec{b} \\ \Leftrightarrow \quad\left(\begin{array}{c} x_{j(1)} \\ \vdots \\ x_{j(m)} \end{array}\right)+\left(B^{-1} P_{j(m+1)}\right) x_{j(m+1)}+\cdots+\left(B^{-1} P_{j(n)}\right) x_{j(n)}=B^{-1} \vec{b} \end{array}
⇔(Pj(1),⋯,Pj(m))⎝⎜⎛xj(1)⋮xj(m)⎠⎟⎞+Pj(m+1)xj(m+1)+⋯+Pj(n)xj(n)=b⇔⎝⎜⎛xj(1)⋮xj(m)⎠⎟⎞+(B−1Pj(m+1))xj(m+1)+⋯+(B−1Pj(n))xj(n)=B−1b
可以得到一个基本可行解
X
=
(
x
1
.
.
.
x
n
)
T
X=(x_1...x_n)^T
X=(x1...xn)T的表达式:
X B = ( x j ( 1 ) ⋮ x j ( m ) ) , ( x j ( m + 1 ) . . . x j ( n ) ) = 0 X_{B}=\left(\begin{array}{c}x_{j(1)} \\ \vdots \\ x_{j(m)}\end{array}\right),(x_{j(m+1)}...x_{j(n)})=0 XB=⎝⎜⎛xj(1)⋮xj(m)⎠⎟⎞,(xj(m+1)...xj(n))=0
对应线性约束的表达式变为如下:
X
B
+
P
^
j
(
m
+
1
)
x
j
(
m
+
1
)
+
⋯
+
P
^
j
(
n
)
x
j
(
n
)
=
P
^
n
+
1
−
−
−
(
3
)
X_{B}+\hat{P}_{j(m+1)} x_{j(m+1)}+\cdots+\hat{P}_{j(n)} x_{j(n)}=\hat{P}_{n+1}---(3)
XB+P^j(m+1)xj(m+1)+⋯+P^j(n)xj(n)=P^n+1−−−(3)
其中
P
^
j
=
B
−
1
P
j
=
(
p
^
1
j
⋮
p
^
m
j
)
,
∀
1
≤
j
≤
n
,
P
^
n
+
1
=
B
−
1
b
⃗
\hat P_j=B^{-1}P_j=\left(\begin{array}{c}\hat{p}_{1 j} \\ \vdots \\ \hat{p}_{m j}\end{array}\right), \forall 1 \leq j \leq n,\hat{P}_{n+1}=B^{-1} \vec{b}
P^j=B−1Pj=⎝⎜⎛p^1j⋮p^mj⎠⎟⎞,∀1≤j≤n,P^n+1=B−1b
步骤二:求检验数
记 C B = ( c j ( 1 ) , ⋯ , c j ( m ) ) T , C_{B}=\left(c_{j(1)}, \cdots, c_{j(m)}\right)^{T}, CB=(cj(1),⋯,cj(m))T,
用 C B C_{B} CB左乘(3) 得 C B T X B + C B T P ^ j ( m + 1 ) x j ( m + 1 ) + ⋯ + C B T P ^ j ( n ) x j ( n ) = C B T P ^ n + 1 − − − ( 4 ) C_{B}^{T} X_{B}+C_{B}^{T} \hat{P}_{j(m+1)} x_{j(m+1)}+\cdots+C_{B}^{T} \hat{P}_{j(n)} x_{j(n)}=C_{B}^{T} \hat{P}_{n+1}---(4) CBTXB+CBTP^j(m+1)xj(m+1)+⋯+CBTP^j(n)xj(n)=CBTP^n+1−−−(4)
目标函数(2)用 C B C_{B} CB可以写成: C B T X B + c j ( m + 1 ) x j ( m + 1 ) + ⋯ + c j ( n ) x j ( n ) = z − − − ( 5 ) C_{B}^{T} X_{B}+c_{j(m+1)} x_{j(m+1)}+\cdots+c_{j(n)} x_{j(n)}=z---(5) CBTXB+cj(m+1)xj(m+1)+⋯+cj(n)xj(n)=z−−−(5)
用(5)-(4)得:
z
−
C
B
T
P
^
n
+
1
=
(
c
j
(
m
+
1
)
−
C
B
T
P
^
j
(
m
+
1
)
)
x
j
(
m
+
1
)
+
⋯
+
(
c
j
(
n
)
−
C
B
T
P
^
j
(
n
)
)
x
j
(
n
)
−
−
−
(
6
)
z
−
z
^
=
σ
j
(
m
+
1
)
x
j
(
m
+
1
)
+
⋯
+
σ
j
(
n
)
x
j
(
n
)
−
−
−
(
7
)
\begin{array}{c} z-C_{B}^{T} \hat{P}_{n+1}=\left(c_{j(m+1)}-C_{B}^{T} \hat{P}_{j(m+1)}\right) x_{j(m+1)}+\cdots+\left(c_{j(n)}-C_{B}^{T} \hat{P}_{j(n)}\right) x_{j(n)}---(6) \\ z-\hat{z}=\sigma_{j(m+1)} x_{j(m+1)}+\cdots+\sigma_{j(n)} x_{j(n)}---(7) \end{array}
z−CBTP^n+1=(cj(m+1)−CBTP^j(m+1))xj(m+1)+⋯+(cj(n)−CBTP^j(n))xj(n)−−−(6)z−z^=σj(m+1)xj(m+1)+⋯+σj(n)xj(n)−−−(7)
C
B
T
P
^
n
+
1
C_{B}^{T} \hat{P}_{n+1}
CBTP^n+1就是第一步中
X
X
X所求得的一个可行基本解的目标函数值
z
^
\hat{z}
z^,这个可以把
X
B
=
(
x
j
(
1
)
⋮
x
j
(
m
)
)
,
(
x
j
(
m
+
1
)
.
.
.
x
j
(
n
)
)
=
0
X_{B}=\left(\begin{array}{c}x_{j(1)} \\ \vdots \\ x_{j(m)}\end{array}\right),(x_{j(m+1)}...x_{j(n)})=0
XB=⎝⎜⎛xj(1)⋮xj(m)⎠⎟⎞,(xj(m+1)...xj(n))=0带入(4)和(5)就可以看出来。
步骤三:得到单纯形表
其中 ( P ^ j ( 1 ) , ⋯ , P ^ j ( m ) ) = I m , z ^ = C B T P ^ n + 1 = C B T B − 1 b ⃗ \left(\hat{P}_{j(1)}, \cdots, \hat{P}_{j(m)}\right)=I_{m}, \hat{z}=C_{B}^{T} \hat{P}_{n+1}=C_{B}^{T} B^{-1} \vec{b} (P^j(1),⋯,P^j(m))=Im,z^=CBTP^n+1=CBTB−1b
σ j = c j − C B T P ^ j = c j − C B T B − 1 P j , ∀ 1 ≤ j ≤ n \sigma_{j}=c_{j}-C_{B}^{T} \hat{P}_{j}=c_{j}-C_{B}^{T} B^{-1} P_{j}, \quad \forall 1 \leq j \leq n σj=cj−CBTP^j=cj−CBTB−1Pj,∀1≤j≤n
称 σ 1 , ⋯ , σ n \sigma_{1}, \cdots, \sigma_{n} σ1,⋯,σn 为检验数,可看出基变量检验数等于0