主题:化标准型,基的概念
线性规划问题的一般形式
一般情况:
z
=
f
(
x
1
x
2
x
3
.
.
.
x
n
)
=
c
1
x
1
+
c
2
x
2
+
.
.
.
+
c
n
x
n
(
C
i
∈
R
)
z=f\left( x_1x_2x_3... x_{n\,\,} \right) =c_1x_1+c_2x_2+...+c_nx_n\,\, \left( C_i\in R \right)
z=f(x1x2x3...xn)=c1x1+c2x2+...+cnxn(Ci∈R)
{
a
11
x
1
+
a
12
x
2
+
.
.
.
+
a
1
n
x
n
=
(
≤
,
≥
)
b
1
.
.
.
a
n
1
x
1
+
a
n
2
x
2
+
.
.
.
+
a
n
n
x
n
=
(
≤
,
≥
)
b
n
\begin{cases} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=\left( \le ,\ge \right) b_1\\ ...\\ a_{n1}x_1+a_{n2}x_2+...+a_{nn}x_n=\left( \le ,\ge \right) b_n\\ \end{cases}
⎩⎪⎨⎪⎧a11x1+a12x2+...+a1nxn=(≤,≥)b1...an1x1+an2x2+...+annxn=(≤,≥)bn
我们一定会求最值(大或小),显然不等式没有等式好求解
改标准型的目的:
方便求方程,升维,同时在目标函数中新增变量设定为0,升高维的目的是方便用线性代数求解,枚举,单纯形法也行
标准型具体转化:
{ A x = b max Z = c x \begin{cases} Ax=b\\ \max Z\,\,=\,\,cx\\ \end{cases} {Ax=bmaxZ=cx
- 目标函数:
max Z o r max Z ′ [ i f Z ′ = − Z , w e w a n t min Z ] \max Z\,\,or\,\, \max Z^{\prime}\,\,\left[ if\,\,Z^{\prime}=-Z,we\,\,want\,\,\min Z \right] maxZormaxZ′[ifZ′=−Z,wewantminZ] - 对b:
b i ∈ R { b i > 0 b i ≤ 0 → 等式两边同时取负数 b i = 0 → 出现退化 b_i\in R\begin{cases} b_i>0\\ b_{\mathrm{i}}\le 0 \rightarrow \text{等式两边同时取负数}\\ b_{\mathrm{i}}=0 \rightarrow \text{出现退化}\\ \end{cases} bi∈R⎩⎪⎨⎪⎧bi>0bi≤0→等式两边同时取负数bi=0→出现退化 - 等号的符号 { = 不变 ≤ 加入新变量,松弛变量 ≥ 减去新变量,剩余变量 \text{等号的符号}\begin{cases} =\,\,\text{不变}\\ \le \,\,\text{加入新变量,松弛变量 }\\ \ge \,\,\text{减去新变量,剩余变量}\\ \end{cases} 等号的符号⎩⎪⎨⎪⎧=不变≤加入新变量,松弛变量 ≥减去新变量,剩余变量
-
x
i
≥
0
x_{\mathrm{i}}\,\,\ge \,\,0
xi≥0
{ x 3 = x 3 ′ − x 3 ′ ′ x 3 ∈ R , x 3 ′ , x 3 ′ ′ ≥ 0 \begin{cases} x_3=x_{3}^{\prime}-x_{3}^{''}\\ x_3\in \mathrm{R},x_{3}^{\prime},x_{3}^{''}\ge 0\\ \end{cases} {x3=x3′−x3′′x3∈R,x3′,x3′′≥0 - 形式上调整函数,将添加的变量写回去 \text{形式上调整函数,将添加的变量写回去} 形式上调整函数,将添加的变量写回去
例子:
min
Z
=
−
x
1
+
2
x
2
−
3
x
3
\min \mathrm{Z} =-x_1+2x_2-3x_3
minZ=−x1+2x2−3x3
{
x
1
+
x
2
+
x
3
≤
7
x
1
−
x
2
+
x
3
≥
2
−
3
x
1
+
x
2
+
2
x
3
=
5
x
1
,
x
2
≥
0
,
x
3
∈
R
\begin{cases} x_1+x_2+x_3\le 7\\ x_1-x_2+x_3\ge 2\\ -3x_1+x_2+2x_3=5\\ x_1,x_2\ge 0,x_3\in \mathrm{R}\\ \end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧x1+x2+x3≤7x1−x2+x3≥2−3x1+x2+2x3=5x1,x2≥0,x3∈R
1.
max
Z
′
→
−
Z
=
x
1
−
2
x
2
+
3
x
3
\max \mathrm{Z}\prime \rightarrow \,\, -\mathrm{Z}=x_1-2x_2+3x_3
maxZ′→−Z=x1−2x2+3x3
2.
s
.
t
.
{
x
1
+
x
2
+
(
x
3
′
−
x
3
′
′
)
+
x
4
=
7
x
1
−
x
2
+
(
x
3
′
−
x
3
′
′
)
−
x
5
≥
2
−
3
x
1
+
x
2
+
2
(
x
3
′
−
x
3
′
′
)
=
5
x
1
,
x
2
≥
0
,
x
3
∈
R
,
x
3
′
,
x
3
′
′
≥
0
s.t.\begin{cases} x_1+x_2+\left( x_{3}^{\prime}-x_{3}^{''} \right) +x_4=7\\ x_1-x_2+\left( x_{3}^{\prime}-x_{3}^{''} \right) -x_5\ge 2\\ -3x_1+x_2+2\left( x_{3}^{\prime}-x_{3}^{''} \right) =5\\ x_1,x_2\ge 0,x_3\in \mathrm{R},x_{3}^{\prime},x_{3}^{''}\ge 0\\ \end{cases}
s.t.⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧x1+x2+(x3′−x3′′)+x4=7x1−x2+(x3′−x3′′)−x5≥2−3x1+x2+2(x3′−x3′′)=5x1,x2≥0,x3∈R,x3′,x3′′≥0
max Z ′ = x 1 − 2 x 2 + 3 ( x 3 ′ − x 3 ′ ′ ) + 0 x 4 + 0 x 5 \max \mathrm{Z}\prime =x_1-2x_2+3\left( x_{3}^{\prime}-x_{3}^{''} \right) +0x_4+0x_5 maxZ′=x1−2x2+3(x3′−x3′′)+0x4+0x5
方程矩阵化(方便解)
{ a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 . . . a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m → [ a 11 . . . a 1 n ⋮ ⋱ ⋮ a m 1 . . . a m n ] m × n → [ p 1 p 2 p 3 . . . p 4 ] → A \begin{cases} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1\\ ...\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m\\ \end{cases}\rightarrow \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1n}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mn}\\ \end{matrix}\\ \end{array} \right] _{m\times n}\rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_4 \right] \,\,\rightarrow \,\,A ⎩⎪⎨⎪⎧a11x1+a12x2+...+a1nxn=b1...am1x1+am2x2+...+amnxn=bm→⎣⎢⎡a11⋮am1...⋱...a1n⋮amn⎦⎥⎤m×n→[p1p2p3...p4]→A
A × x = b → 从中提取更多信息 → 根据秩求得最大子式(基) , 秩为 m → [ a 11 . . . a 1 m ⋮ ⋱ ⋮ a m 1 . . . a m m ] m × m \,\,A\times x=b\rightarrow \text{从中提取更多信息} \rightarrow \text{根据秩求得最大子式(基)},\text{秩为}m\rightarrow \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1m}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mm}\\ \end{matrix}\\ \end{array} \right] _{m\times m} A×x=b→从中提取更多信息→根据秩求得最大子式(基),秩为m→⎣⎢⎡a11⋮am1...⋱...a1m⋮amm⎦⎥⎤m×m
得出基解过程:
{
[
a
11
.
.
.
a
1
n
⋮
⋱
⋮
a
m
1
.
.
.
a
m
n
]
m
×
n
[
x
1
⋮
x
n
]
→
[
p
1
p
2
p
3
.
.
.
p
n
]
[
x
1
⋮
x
n
]
=
b
→
[
p
1
p
2
p
3
.
.
.
p
m
]
[
x
1
⋮
x
m
]
+
[
p
m
+
1
p
m
+
2
p
m
+
3
.
.
.
p
n
]
[
x
m
+
1
⋮
x
n
]
=
b
→
令
x
m
+
1
,
.
.
.
,
x
n
为
0
简化为
[
p
1
p
2
p
3
.
.
.
p
m
]
[
x
1
⋮
x
m
]
=
b
[
p
1
p
2
p
3
.
.
.
p
m
]
就是基,而
[
x
1
⋮
x
m
0
0
⋮
0
]
n
×
1
为基解
\begin{cases} \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1n}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mn}\\ \end{matrix}\\ \end{array} \right] _{m\times n}\left[ \begin{array}{l} x_1\\ \vdots\\ x_n\\ \end{array} \right] \rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_n \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_n\\ \end{array} \right] =b\\ \rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ \end{array} \right] +\left[ p_{m+1}\,\,p_{m+2}\,\,p_{m+3}\,\,... p_n \right] \left[ \begin{array}{l} x_{m+1}\\ \vdots\\ x_n\\ \end{array} \right] =b\\ \overset{\text{令}x_{m+1},...,x_n\text{为}0}{\rightarrow}\text{简化为}\left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ \end{array} \right] =b\,\,\\ \left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \text{就是基,而}\left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ 0\\ 0\\ \vdots\\ 0\\ \end{array} \right] _{n\times 1}\text{为基解}\\ \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧⎣⎢⎡a11⋮am1...⋱...a1n⋮amn⎦⎥⎤m×n⎣⎢⎡x1⋮xn⎦⎥⎤→[p1p2p3...pn]⎣⎢⎡x1⋮xn⎦⎥⎤=b→[p1p2p3...pm]⎣⎢⎡x1⋮xm⎦⎥⎤+[pm+1pm+2pm+3...pn]⎣⎢⎡xm+1⋮xn⎦⎥⎤=b→令xm+1,...,xn为0简化为[p1p2p3...pm]⎣⎢⎡x1⋮xm⎦⎥⎤=b[p1p2p3...pm]就是基,而⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x1⋮xm00⋮0⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤n×1为基解
几何角度
当
x
i
为非负数,那么
[
x
1
⋮
x
m
0
0
⋮
0
]
n
×
1
为基可行解(几何
:
方程式的交点,同时可行域的顶点
\text{当}x_i\text{为非负数,那么}\left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ 0\\ 0\\ \vdots\\ 0\\ \end{array} \right] _{n\times 1}\text{为基可行解(几何}:\text{方程式的交点,同时可行域的顶点}
当xi为非负数,那么⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x1⋮xm00⋮0⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤n×1为基可行解(几何:方程式的交点,同时可行域的顶点
可行解:方程式的交点,同时在可行域内
\text{可行解:方程式的交点,同时在可行域内}
可行解:方程式的交点,同时在可行域内
换基:就是用不用的顶点进行比较,想办法得到最优解
\text{换基:就是用不用的顶点进行比较,想办法得到最优解}
换基:就是用不用的顶点进行比较,想办法得到最优解
单纯刑法:按照标准型:算出所有基可行解(枚举法)、按照既定顺序(单纯刑法)
单纯刑法
目的
- 找出基
- 目标函数达到最优
化成标准形式
找到基变量
方法:
- 直接看出来
- 初等行变换变个出来
- 试试(不推荐)
如何最优
检验数(后续更新)
实例
max
z
=
2
x
1
+
3
x
2
+
0
x
3
+
0
x
4
+
0
x
5
\max z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5
maxz=2x1+3x2+0x3+0x4+0x5
{
x
1
+
2
x
2
+
x
3
=
8
4
x
1
+
x
4
=
16
4
x
2
+
x
5
=
12
\left\{ \begin{array}{c} x_1+2x_2+x_3\,\,=8\\ 4x_1+x_4=16\\ 4x_2+x_5=12\\ \end{array} \right.
⎩⎨⎧x1+2x2+x3=84x1+x4=164x2+x5=12
A
=
[
l
1
2
1
0
0
4
0
0
1
0
0
4
0
0
1
]
A\,\,=\,\,\left[ \begin{matrix}{l} 1& 2& 1& 0& 0\\ 4& 0& 0& 1& 0\\ 0& 4& 0& 0& 1\\ \end{matrix} \right]
A=⎣⎡l140204100010001⎦⎤
直接找到基,
B
=
[
P
3
P
4
P
5
]
=
(
1
0
0
0
1
0
0
0
1
)
\text{直接找到基,}B\,\,=\left[ \begin{matrix} P_3& P_4& P_5\\ \end{matrix} \right] =\left( \begin{matrix} 1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\\ \end{matrix} \right)
直接找到基,B=[P3P4P5]=⎝⎛100010001⎠⎞
基:
[
1
0
0
0
1
0
0
0
1
]
基解:
[
x
3
x
4
x
5
]
非基:
[
1
4
0
2
0
4
]
非基解:
[
x
1
x
2
]
\text{基:}\left[ \begin{matrix} 1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\\ \end{matrix} \right] \text{基解:}\left[ \begin{array}{l} x_3\\ x_4\\ x_5\\ \end{array} \right] \,\,\text{非基:}\left[ \begin{array}{c} 1\\ 4\\ 0\\ \end{array}\begin{array}{c} 2\\ 0\\ 4\\ \end{array} \right] \,\,\text{非基解:}\left[ \begin{array}{l} x_1\\ x_2\\ \end{array} \right]
基:⎣⎡100010001⎦⎤基解:⎣⎡x3x4x5⎦⎤非基:⎣⎡140204⎦⎤非基解:[x1x2]
B
[
x
3
x
4
x
5
]
=
[
8
16
12
]
−
[
1
4
0
2
0
4
]
[
x
1
x
2
]
(非基为
0
)
B\left[ \begin{array}{l} x_3\\ x_4\\ x_5\\ \end{array} \right] \,\,=\left[ \begin{array}{l} 8\\ 16\\ 12\\ \end{array} \right] -\left[ \begin{array}{c} 1\\ 4\\ 0\\ \end{array}\begin{array}{c} 2\\ 0\\ 4\\ \end{array} \right] \left[ \begin{array}{l} x_1\\ x_2\\ \end{array} \right] \text{(非基为}0\text{)}
B⎣⎡x3x4x5⎦⎤=⎣⎡81612⎦⎤−⎣⎡140204⎦⎤[x1x2](非基为0)
{
x
3
=
8
−
x
1
−
2
x
2
x
4
=
16
−
4
x
1
x
5
=
12
−
4
x
2
x
3
=
8
,
x
4
=
16
,
x
5
=
12
\left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right. \,\, x_3=8,x_4=16,x_5=12
⎩⎨⎧x3=8−x1−2x2x4=16−4x1x5=12−4x2x3=8,x4=16,x5=12
将这次的基变量记为
x
(
1
)
=
(
0
0
8
16
12
)
T
(
1
指的是第
1
次求得的基可行解
)
\text{将这次的基变量记为}x^{\left( 1 \right)}=\left( 0 \quad0 \quad8 \quad16\quad 12 \right) ^T\left( 1\text{指的是第}1\text{次求得的基可行解} \right)
将这次的基变量记为x(1)=(0081612)T(1指的是第1次求得的基可行解)
z
=
2
x
1
+
3
x
2
+
0
(
8
−
x
1
−
2
x
2
)
+
0
(
16
−
4
x
1
)
+
0
(
12
−
4
x
2
)
第一次迭代完成
判断:目标函数
z
=
2
x
1
+
3
x
2
+
0
x
3
+
0
x
4
+
0
x
5
=
0
是否达到了最优
\,\,z\,\,=\,\,2x_1+3x_2+0\left( 8-x_1-2x_2 \right) +0\left( 16-4x_1 \right) +0\left( 12-4x_2 \right) \\ \text{第一次迭代完成} \\ \text{判断:目标函数} z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5=0\text{是否达到了最优}
z=2x1+3x2+0(8−x1−2x2)+0(16−4x1)+0(12−4x2)第一次迭代完成判断:目标函数z=2x1+3x2+0x3+0x4+0x5=0是否达到了最优
由于
x
1
和
x
2
的系数为
2
和
3
,因此目标函数还有变大空间
因此需要第二次迭代
\text{由于}x_1\text{和}x_2\text{的系数为}2\text{和}3\text{,因此目标函数还有变大空间} \\ \text{因此需要第二次迭代}
由于x1和x2的系数为2和3,因此目标函数还有变大空间因此需要第二次迭代
进行第二次迭代
z = 2 x 1 + 3 x 2 + 0 x 3 + 0 x 4 + 0 x 5 z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5 z=2x1+3x2+0x3+0x4+0x5、
{
x
3
=
8
−
x
1
−
2
x
2
x
4
=
16
−
4
x
1
x
5
=
12
−
4
x
2
\left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right.
⎩⎨⎧x3=8−x1−2x2x4=16−4x1x5=12−4x2
x
(
1
)
=
(
0
0
8
16
12
)
T
x^{\left( 1 \right)}=\left( 0\quad 0\quad 8\quad 16\quad 12 \right) ^T
x(1)=(0081612)T
2
x
1
+
3
x
2
比较
c
1
,
c
2
,
c
2
比较大,考虑让
x
2
进基,此时
x
1
=
0
2x_1+3x_2\text{比较}c_1,c_2\text{,}c_2\text{比较大,考虑让}x_2\text{进基,此时}x_1=0
2x1+3x2比较c1,c2,c2比较大,考虑让x2进基,此时x1=0
对于谁出基:
{
x
3
=
8
−
x
1
−
2
x
2
x
4
=
16
−
4
x
1
x
5
=
12
−
4
x
2
\left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right.
⎩⎨⎧x3=8−x1−2x2x4=16−4x1x5=12−4x2
{
x
3
=
8
−
2
x
2
x
4
=
16
x
5
=
12
−
4
x
2
\left\{ \begin{array}{l} x_3=8-2x_2\\ x_4=16\\ x_5=12-4x_2\\ \end{array} \right.
⎩⎨⎧x3=8−2x2x4=16x5=12−4x2
考虑条件
x
i
≥
0
\text{考虑条件}x_i\ge 0
考虑条件xi≥0
{
x
3
=
8
−
2
x
2
≥
0
x
4
=
16
≥
0
x
5
=
12
−
4
x
2
≥
0
\left\{ \begin{array}{l} x_3=8-2x_2\ge 0\\ x_4=16\ge 0\\ x_5=12-4x_2\ge 0\\ \end{array} \right.
⎩⎨⎧x3=8−2x2≥0x4=16≥0x5=12−4x2≥0
我们要尽可能保证他们始终为正数
我们进行以下的转换:
{
x
3
=
1
−
2
8
x
2
≥
0
x
4
=
16
≥
0
x
5
=
1
−
4
12
x
2
≥
0
→
{
x
3
=
1
−
1
4
x
2
≥
0
x
4
=
16
≥
0
x
5
=
1
−
1
3
x
2
≥
0
\left\{ \begin{array}{l} x_3=1-\frac{2}{8}x_2\ge 0\\ x_4=16\ge 0\\ x_5=1-\frac{4}{12}x_2\ge 0\\ \end{array} \right. \rightarrow \left\{ \begin{array}{l} x_3=1-\frac{1}{4}x_2\ge 0\\ x_4=16\ge 0\\ x_5=1-\frac{1}{3}x_2\ge 0\\ \end{array} \right.
⎩⎨⎧x3=1−82x2≥0x4=16≥0x5=1−124x2≥0→⎩⎨⎧x3=1−41x2≥0x4=16≥0x5=1−31x2≥0
−
1
4
>
−
1
3
,因此
x
5
比
x
3
更容易小于
0
,所以
x
5
出基
-\frac{1}{4}>-\frac{1}{3}\text{,因此}x_5\text{比}x_3\text{更容易小于}0\text{,所以}x_5\text{出基}
−41>−31,因此x5比x3更容易小于0,所以x5出基
因此在第二次迭代时,
x
2
进基,
x
5
出基
\text{因此在第二次迭代时,}x_2\text{进基,}x_5\text{出基}
因此在第二次迭代时,x2进基,x5出基
{
x
3
=
2
−
x
1
+
1
3
x
5
x
4
=
16
−
4
x
1
x
2
=
3
−
1
4
x
5
\left\{ \begin{array}{l} x_3=2-x_1+\frac{1}{3}x_5\\ x_4=16-4x_1\\ x_2=3-\frac{1}{4}x_5\\ \end{array} \right.
⎩⎨⎧x3=2−x1+31x5x4=16−4x1x2=3−41x5
z
=
2
x
1
−
3
4
x
5
+
9
z=2x_1-\frac{3}{4}x_5+9
z=2x1−43x5+9
基变量记为
x
(
2
)
=
(
0
3
2
16
0
)
T
(
2
指的是第
2
次求得的基可行解
)
\text{基变量记为}x^{\left( 2 \right)}=\left( 0\quad 3 \quad2 \quad16\quad 0 \right) ^T\left( 2\text{指的是第}2\text{次求得的基可行解} \right)
基变量记为x(2)=(032160)T(2指的是第2次求得的基可行解)
下一步的迭代…
接下来的迭代和之上的迭代是一样的,判断出是否达到最优即可