线性规划的定义
线性规划可以从以下特征进行判断
- 决策变量一般为非负且连续
- 约束条件是一组线性等式或者线性不等式
- 目标函数由决策变量与常系数组合成的表达式
满足上述条件可以判定为是一个线性约束问题。
求解线性规划问题的常用方法一般是图解法和单纯形法,图解法一般适用于低维问题,单纯性法则更加常规,应用更加广泛。
- 图解法:构建坐标系,将约束条件绘制在坐标系中;寻找目标函数的等值线,通过等值线的移动寻找最优解。
- 单纯形法:手工利用单纯形法求解问题时基本都是通过单纯性表进行求解,因此先通过例子来说明一下单纯形法,之后在简单总结一下操作步骤。
e.g.
m
a
x
z
=
2
x
1
+
3
x
2
s
.
t
.
x
1
+
2
x
2
≤
8
4
x
1
≤
16
4
x
2
≤
12
x
1
,
x
2
≥
0
\begin{aligned} &max&z = 2x_1 +3x_2\\ &s.t. &x_1 +2x_2 \leq8\\ & &4x_1 \leq16\\ & &4x_2 \leq12\\ & &x_1,x_2 \geq0\\ \end{aligned}
maxs.t.z=2x1+3x2x1+2x2≤84x1≤164x2≤12x1,x2≥0
1. 引入人工变量转化为标准形式:max问题、等式约束、非负决策变量
m
a
x
z
=
2
x
1
+
3
x
2
+
0
∗
x
3
+
0
∗
x
4
+
0
∗
x
5
s
.
t
.
x
1
+
2
x
2
+
x
3
=
8
4
x
1
+
x
4
=
16
4
x
2
+
x
5
=
12
x
1
,
x
2
,
x
3
,
x
4
,
x
5
≥
0
\begin{aligned} &max&z = 2x_1 +3x_2+0*x_3+0*x_4+0*x_5\\ &s.t. &x_1 +2x_2+x_3=8\\ & &4x_1 +x_4 =16\\ & &4x_2 + x_5 = 12\\ & &x_1,x_2,x_3,x_4,x_5 \geq0\\ \end{aligned}
maxs.t.z=2x1+3x2+0∗x3+0∗x4+0∗x5x1+2x2+x3=84x1+x4=164x2+x5=12x1,x2,x3,x4,x5≥0
2. 选取基变量与基解,列出初始的单纯形表
基变量的个数与约束的矩阵秩相等,基变量对应取值的解为基解(非基变量为0)
选取
x
3
,
x
4
,
x
5
x_3,x_4,x_5
x3,x4,x5为基变量,对应的基解为
(
0
,
0
,
8
,
16
,
12
)
(0,0,8,16,12)
(0,0,8,16,12)
写出简化的单纯性表:
x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | x 5 x_5 x5 |
---|---|---|---|---|
1 | 2 | 1 | 0 | 0 |
4 | 0 | 0 | 1 | 0 |
0 | 4 | 0 | 0 | 1 |
计算非基变量的检验数:
σ
j
=
c
j
−
∑
i
=
1
m
c
i
a
i
j
\sigma _j=c_j-\sum_{i=1}^m c_ia_{ij}
σj=cj−∑i=1mciaij
利用上述公式可以计算非基变量
x
1
,
x
2
x_1 ,x_2
x1,x2对应的检验数为2,3。
检验数的理解首先是从正负开始,检验数为正,代表将该变量换入基变量之后会使得目标函数增加,而大小则是代表增加的程度;负数刚好反过来。对于max问题如果全部检验数为负则说明已经无法继续进行优化。
3. 最大的检验数对应的变量
x
k
x_k
xk换入基中,并计算
θ
\theta
θ
θ
\theta
θ代表的其实是原基变量对换入的基变量的容忍度,想要换出的就是容忍度最低的,对应计算公式为
b
i
/
A
i
k
b_i/A_{ik}
bi/Aik
分别计算基变量的
θ
\theta
θ为(4,-,3),选取容忍度最低的为换出变量,因此可以更新基同时更新单纯形表:
x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | x 5 x_5 x5 |
---|---|---|---|---|
1 | 0 | 1 | 0 | -1/2 |
4 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 1/4 |
对应的基变量为: x 3 , x 4 , x 2 x_3,x_4,x_2 x3,x4,x2,对应的基解为 ( 0 , 3 , 2 , 16 , 0 ) (0,3,2,16,0) (0,3,2,16,0)
4. 重复计算非基变量的检验数与
θ
\theta
θ,重复出基与入基的操作
计算结果如下:
x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | x 5 x_5 x5 |
---|---|---|---|---|
1 | 0 | 1 | 0 | -1/2 |
0 | 0 | -4 | 1 | 2 |
0 | 1 | 0 | 0 | 1/4 |
对应的基变量为: x 1 , x 4 , x 2 x_1,x_4,x_2 x1,x4,x2,对应的基解为 ( 8 , 3 , 0 , − 16 , 0 ) (8,3,0,-16,0) (8,3,0,−16,0)
x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | x 4 x_4 x4 | x 5 x_5 x5 |
---|---|---|---|---|
1 | 0 | 0 | 1/4 | 0 |
0 | 0 | -2 | 1/2 | 1 |
0 | 1 | 1/2 | -1/8 | 0 |
对应的基变量为:
x
1
,
x
3
,
x
2
x_1,x_3,x_2
x1,x3,x2,对应的基解为
(
4
,
2
,
0
,
0
,
4
)
(4,2,0,0,4)
(4,2,0,0,4)
此时非基变量的检验数均为负数,因此已经找到了最优解。
重点
单纯形法的重点其实是在于入基出基的操作,上述的简化的单纯性表其实是在原有的系数矩阵的基础上将基变量对应的系数矩阵经过初等变换变为单位阵。
预告:下一部分想要进一步的讨论一下单纯性法。