想快速掌握线性规划两阶段求解方法,强烈推荐博文《三言两语讲清楚线性规划单纯形方法》。
百度百科给了下面一个例子,感觉其解法不容易看明白原理,换一种解释方法,应该很容易看明白两阶段法的原理。
问题:
m
a
x
z
=
−
3
x
1
+
x
3
max z = -3x_1+x_3
maxz=−3x1+x3
s.t.
Cannot read property 'type' of undefined
第一阶段,找可行解
首先任意取三个未知数作为基变量,例如
x
3
,
x
4
,
x
5
x_3,x_4,x_5
x3,x4,x5,原问题转化成下面形式:
Cannot read property 'type' of undefined
令非基变量
x
1
,
x
2
=
0
x_1,x_2=0
x1,x2=0,显然
x
4
=
−
5
,
x
5
=
−
10
x_4=-5,x_5=-10
x4=−5,x5=−10 超出了约束条件范围,因此,这一组不是可行解。所以我们决定从
x
4
,
x
5
x_4,x_5
x4,x5 中选取一个从基变量中取出,不妨选择
x
5
x_5
x5 出基。我们得到出基变量的选择原则:等式的常数项为负数的变量不能做基变量。
那么选择哪个变量作为新的基变量呢?在下面等式中,
x
5
=
−
2
x
1
+
4
x
2
−
10
x_5=-2x_1+4x_2-10
x5=−2x1+4x2−10
有两种选择方案:
x
1
=
2
x
2
−
1
2
x
5
−
5
,
x
2
=
1
2
x
1
+
1
4
x
5
+
5
2
x_1=2x_2-\frac12x_5-5,\\ x_2=\frac12x_1+\frac14x_5+\frac52
x1=2x2−21x5−5,x2=21x1+41x5+25
显然,第一种方案中,令非基变量为零,
x
1
x_1
x1非可行解;第二种方案是我们所需要的。这就得到入基变量的选择原则:等式的常数项非负的变量才能做基变量。
OK,置换变量 x 5 , x 2 x_5,x_2 x5,x2 后,得到:
Cannot read property 'type' of undefined
等式中的常数项全部非负,目前已经得到一组可行基变量。
第二阶段,求最优解
我们看一下目标
z
z
z 的值:
z
=
−
3
x
1
+
x
3
=
−
9
2
x
1
−
3
4
x
5
+
3
2
z=-3x_1+x_3=-\frac92x_1-\frac34x_5+\frac32
z=−3x1+x3=−29x1−43x5+23
因为
x
1
,
x
3
x_1,x_3
x1,x3 系数小于零,欲取得最大值,必须令非基变量为零,于是我们得到:
x
1
=
0
,
x
2
=
5
2
,
x
3
=
3
2
,
x
4
=
5
,
x
5
=
0
m
i
n
z
=
3
2
x_1=0,x_2=\frac52,x_3=\frac32,x_4=5,x_5=0\\ min z=\frac32
x1=0,x2=25,x3=23,x4=5,x5=0minz=23
第二阶段正好闯枪口,有些不过瘾。想了解更详细的原理,参见博文:三言两语讲清楚线性规划单纯形方法。