线性规划(Linear Programming):单纯形

基本思路

单纯形:指0维中的点,1维中的线段,2维中的三角形,3维中的四面体,nn维空间中的有n+1n+1个顶点的多面体。

一般线性规划问题具有线性方程组的变量数大于方程个数,这时有不定的解。但可以从线性方程组中找出一个个的单纯形,每一个单纯形可以求得一组解,然后再判断该解使目标函数值是增大还是变小,决定下一步选择的单纯形。进行迭代,直到目标函数实现最大值或最小值为止。

st=>start: 开始 op1=>operation: 确定初始基 cond=>condition: 最优解? op2=>operation: 基变换、迭代 op3=>operation: 计算max或min ed=>end: 结束 st->op1->cond cond(no)->op2->cond cond(yes)[sd]->op3->ed

单纯形表

A=[Bm×n+Im×m]A = \left[\begin{array}{c} B_{m×n} + I_{m×m} \end{array}\right],明显II满足作为一个基的条件,我们一般选为初始基,故基变量系数初始值一般为0。

解法

maxz=2x1+3x2\max \,\,\, z = 2x_1 + 3x_2
{x1+2x2804x11604x2120x1,x20\begin{cases} x_1 + 2x_2 ≤ 80 \\ 4x_1 ≤ 160 \\ 4x_2 ≤ 120 \\ x_1, x_2 ≥ 0 \end{cases}

maxz=2x1+3x2+0x3+0x4+0x5\max \,\,\, z = 2x_1 + 3x_2 + 0x_3 + 0x_4 + 0x_5
{x1+2x2+x3=804x1+x4=1604x2+x5=120x1,x2,x3,x4,x50\begin{cases} x_1 + 2x_2 + x_3 = 80 \\ 4x_1 + x_4 = 160 \\ 4x_2 + x_5 = 120 \\ x_1, x_2, x_3, x_4, x_5 ≥ 0 \end{cases}

cjc_j 2 3 0 0 0
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 bb
0 x3x_3 1 2 1 0 0 80
0 x4x_4 4 0 0 1 0 160
0 x5x_5 0 4 0 0 1 120
σjσ_j 2 3 0 0 0
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5
0 x3x_3 1 0 1 0 12-\frac{1}{2} 20
0 x4x_4 4 0 0 1 0 160
3 x2x_2 0 1 0 0 14\frac{1}{4} 30
σjσ_j 2 0 0 0 34-\frac{3}{4}
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5
2 x1x_1 1 0 1 0 12-\frac{1}{2} 20
0 x4x_4 0 0 -4 1 2 80
3 x2x_2 0 1 0 0 14\frac{1}{4} 30
σjσ_j 0 0 -2 0 14\frac{1}{4}
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5
2 x1x_1 1 0 0 14\frac{1}{4} 0 40
0 x5x_5 0 0 -2 12\frac{1}{2} 1 40
3 x2x_2 0 1 12\frac{1}{2} 18-\frac{1}{8} 0 20
σjσ_j 0 0 32-\frac{3}{2} 18-\frac{1}{8} 0

取最优解时x1=40x_1=40x2=20x_2=20x5=40x_5=40

z=2x1+3x2+0x3+0x4+0x5=80+60=140z = 2x_1 + 3x_2 + 0x_3 + 0x_4 + 0x_5 = 80 + 60 = 140

人工变量法

当化为标准型后,可能无法找到单位矩阵作为初始基。
在引入人工变量前,已是等式,所以人工变量的最终取值必须为0,否则原问题无最优解。

大M法

在目标函数中,给人工变量赋一个充分大的系数——MM。由于人工变量为基变量,对目标函数来讲是不经济的,所以应尽快地用非人工变量人工变量从基中替换出来。这个充分大的系数无须赋予一个特定的值。

MM是一个充分大的正数。

minω=3x1+x2+x3\min \,\,\, ω = -3x_1 + x_2 + x_3
{x12x2+x3114x1+x2+2x332x1x3=1x1,x2,x30\begin{cases} x_1 - 2x_2 + x_3 ≤ 11 \\ -4x_1 + x_2 + 2x_3 ≥ 3 \\ 2x_1 - x_3 = -1 \\ x_1, x_2, x_3 ≥ 0 \end{cases}

maxz=3x1x2x3+0x4+0x5\max \,\,\, z = 3x_1 - x_2 - x_3 + 0x_4 + 0x_5
{:x12x2+x3+x4=11:4x1+x2+2x3x5=3:2x1+x3=1x1,x2,x3,x4,x50\begin{cases} ①: x_1 - 2x_2 + x_3 + x_4 = 11 \\ ②: -4x_1 + x_2 + 2x_3 - x_5 = 3 \\ ③: -2x_1 + x_3 = 1 \\ x_1, x_2, x_3, x_4, x_5 ≥ 0 \end{cases}

maxz=3x1x2x3+0x4+0x5Mx6Mx7\max \,\,\, z = 3x_1 - x_2 - x_3 + 0x_4 + 0x_5 - Mx_6 -Mx_7
{:x12x2+x3+x4=11:4x1+x2+2x3x5+x6=3:2x1+x3+x7=1x1,x2,x3,x4,x50\begin{cases} ①: x_1 - 2x_2 + x_3 + x_4 = 11 \\ ②: -4x_1 + x_2 + 2x_3 - x_5 + x_6 = 3 \\ ③: -2x_1 + x_3 + x_7 = 1 \\ x_1, x_2, x_3, x_4, x_5 ≥ 0 \end{cases}

cjc_j 3 -1 -1 0 0 M-M M-M
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 x6x_6 x7x_7 bb
0 x4x_4 1 -2 1 1 0 0 0 11
M-M x6x_6 -4 1 2 0 -1 1 0 3
M-M x7x_7 -2 0 1 0 0 0 1 1
σjσ_j 3-6MM -1+MM -1+3MM 0 M-M 0 0
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 x6x_6 x7x_7 bb
0 x4x_4 3 -2 0 1 0 0 -1 10
M-M x6x_6 0 1 0 0 -1 1 -2 1
-1 x3x_3 -2 0 1 0 0 0 1 1
σjσ_j 1 -1+MM 0 0 M-M 0 1-3MM
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 x6x_6 x7x_7 bb
0 x4x_4 3 0 0 1 -2 2 -5 12
-1 x2x_2 0 1 0 0 -1 1 -2 1
-1 x3x_3 -2 0 1 0 0 0 1 1
σjσ_j 1 0 0 0 -1 1-MM -1-MM
CBC_B XBX_B x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 x6x_6 x7x_7 bb
3 x1x_1 1 0 0 13\frac{1}{3} 23-\frac{2}{3} 23\frac{2}{3} 53-\frac{5}{3} 4
-1 x2x_2 0 1 0 0 -1 1 -2 1
-1 x3x_3 0 0 1 23\frac{2}{3} 43-\frac{4}{3} 43\frac{4}{3} 73-\frac{7}{3} 9
σjσ_j 0 0 0 13-\frac{1}{3} 13-\frac{1}{3} M+13-M+\frac{1}{3} M+23-M+\frac{2}{3} z=2z=2

两阶段法

运用计算机计算时,为避免MM可能带来的麻烦,把LP问题的求解分为两个阶段来进行。