最优化问题——线性规划(一)
1、 “凸”概念
在介绍线性规划之前,我们先来回顾一下在线性代数中的“凸”的概念,这些概念在我们以后的求解过程中,会提供很多的帮助。
1.1 基本概念
- 凸组合: 点 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn的凸组合指的是 x + ∑ i = 1 n a i x i , a i ≥ 0 x+∑_{i=1}^na_ix_i,a_i≥0 x+∑i=1naixi,ai≥0且 ∑ a i = 1 ∑a_i=1 ∑ai=1。
- 凸集: 令 A 是 实 数 集 R n 的 子 集 A是实数集R^n的子集 A是实数集Rn的子集,如果 x , y ∈ A x,y∈A x,y∈A,则 a x + ( 1 − a ) y ∈ A , a ∈ ( 0 , 1 ) ax+(1-a)y∈A,a∈(0,1) ax+(1−a)y∈A,a∈(0,1)。
- 极点: 点x∈A如果不能表示为非空凸集A中的任意两个的凸组合的形式,则称x为极点。
- 顶点: 如果x是两个或者多个线段,边缘,表面的交点,则称为顶点。
- 注意:凸集中的顶点都是极点,同时如果两个极点通过一条边(线,面)所连接,这称为相邻的极点。
- 超平面: 集合 H = { a x = b } , a ≠ 0 H=\{ax=b\},a≠0 H={ax=b},a=0,超平面将 R n R^n Rn空间分成两个半空间 H + = { x ∣ a x < b } , H − = { x ∣ a x > b } H^+=\{x|ax<b\},H^-=\{x|ax>b\} H+={x∣ax<b},H−={x∣ax>b}
- 多面体: 有限个半空间的交集称为多面体。
- 凸函数和凹函数: 如果函数f是凸函数(严格凸函数),则任意 0 < λ < 1 0<λ<1 0<λ<1,有 f ( λ x + ( 1 − λ ) y ) ≤ ( < ) λ f ( x ) + ( 1 − λ ) f ( y ) f(λx+(1-λ)y)≤(<)λf(x)+(1-λ)f(y) f(λx+(1−λ)y)≤(<)λf(x)+(1−λ)f(y)
- 对于函数f(x),x∈ R n R^n Rn,其海瑟矩阵H(f(x)),其中H(x)对称矩阵,同时 f ( x ) f(x) f(x)的梯度向量矩阵为 G ( x ) G(x) G(x)
- 如果f(x)的H矩阵是半正定的,则函数f(x)是凸的。
- 如果函数f(x)是凸函数,则满足梯度值为0的点为极小点。如果函数f(x)是凹函数,则梯度为0的点为极大值点。
- 我们可以通过梯度值为0 的点来找到临界点,如果其H矩阵为半正定的,则为极小值点,如果H(x)是半负定的,则为极大值。如果H(x)是不定的,则为拐点。
2、线性规划问题的基本概念
2.1 线性规划问题的引入
我们首先从一个例子开始:
某个工厂利用原材料来生成A、B、C三种产品,它们的单位产品所需要的数量和耗费的加工时间各不相同,如下表所示。A、B、C单位产品的利润分别为4、5、7千元,问:应该如何安排生产计划,才能使得获得利润最大?
对于这个问题,我们首先整理一下题目中的变量,目标函数,以及约束条件。
变量:
根据题目的描述,可以知道变量为ABC三种产品的产量,假设用 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3来表示。
目标函数:
根据题目的描述可知,我们的目标是希望利润最大,我们用变量来表示利润,最终确定目标函数为:
S = 4 x 1 + 5 x 2 + 7 x 3 S=4x_1+5x_2+7x_3 S=4x1+5x2+7x3
约束条件:
根据题目的描述,可以知道,变量的取值不是任意的,其取值需要满足资源总量和总的工时的约束。所以,根据这两个方面的约束,和变量自身的特性,我们可以确定约束条件为:
2
x
1
+
1.5
x
2
+
3
x
3
≤
100
x
1
+
2
x
2
+
2
x
3
≤
150
x
i
≥
0
,
i
=
1
,
2
,
3
2x_1+1.5x_2+3x_3≤100\\ \frac{}{}\\ x_1+2x_2+2x_3≤150\\ \frac{}{}\\ x_i≥0,i=1,2,3
2x1+1.5x2+3x3≤100x1+2x2+2x3≤150xi≥0,i=1,2,3
在确定目标,变量和约束条件之后,我们进一步将该问题抽象成一个数学模型,用如下的公式进行描述:
m
i
n
S
=
4
x
1
+
5
x
2
+
7
x
3
min S=4x_1+5x_2+7x_3
minS=4x1+5x2+7x3
s
.
t
.
{
2
x
1
+
1.5
x
2
+
3
x
3
≤
100
x
1
+
2
x
2
+
2
x
3
≤
150
x
i
≥
0
,
i
=
1
,
2
,
3
s.t. \begin{cases}2x_1+1.5x_2+3x_3≤100\\ x_1+2x_2+2x_3≤150\\ x_i≥0,i=1,2,3\end{cases}
s.t.⎩⎪⎨⎪⎧2x1+1.5x2+3x3≤100x1+2x2+2x3≤150xi≥0,i=1,2,3
总结:
上述形式的问题,其有如下几个基本的组成部分。包括
- 一组决策变量,在例子中就是A,B,C的产量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3。
- 一个目标函数,在例子中就是利润S。
- 一组线性的约束条件。
2.2 线性规划的基本形式
目标函数:
上一个小结的问题是非常常见的线性规划问题,我们通过其最后的总结,可以来总结一下线性规划的一般形式:首先,我们有需要求解的目标函数,目标函数对应着我们问题的需求,例如上面描述的最大化利润,同时在其他的问题中,我们的目标函数可能是获得一个最小的值。所以,这里对于目标函数的描述为:
M
i
n
(
M
a
x
)
Z
=
c
1
x
1
+
c
2
x
2
+
,
.
.
+
c
n
x
n
Min(Max)Z=c_1x_1+c_2x_2+,..+c_nx_n
Min(Max)Z=c1x1+c2x2+,..+cnxn
其中x表示的是在目标函数中的系数,也就是我们在对于问题建模的时候能够发生变化的自变量。c表示的是各个自变量的系数。
约束条件:
对于线性规划中的自变量,其取值是可以变化的,但是这种变化的范围不是无限的,否则我们很难对于复杂的问题进行建模求解。其变量一般是在一定的范围进行变化,这种范围的确定,不仅仅是直接对于变量取值范围的约束,还会通过将各个自变量相结合来满足一定的不等式来进行控制取值范围。我们将上述的所有的不等式统一称为约束条件。
以上的目标函数和约束条件的定义可以称为线性规划问题的“一般形式”。进一步,我们可以将线性规划的一般形式整理成标准的线性规划问题的定义形式:
在LP的标准形式中,我们将目标函数统一转换为求最小值的形式,对于由不等式所组成的约束条件,我们也统一将其转换为等式的形式。下面,我们来讲述一下这个求解的过程。
在上面的转换过程中,需要着重注意的是松弛变量的引入。同时,对于变量
x
i
x_i
xi,如果其没有有非负的条件约束,就引入
u
i
,
v
i
u_i,v_i
ui,vi,同时对
u
i
,
v
i
u_i,v_i
ui,vi进行非负数约束。最后,我们需要保证的是约束条件中右侧变量的值是非负的。
下面,我们举一个具体例子来计算一下这种转换的过程。
首先,我们对目标函数进行转换的过程,对于目标函数,将其转换成求最小值的过程:
m
i
n
(
−
2
x
1
+
3
x
2
−
x
3
−
3
x
4
)
min(-2x_1+3x_2-x_3-3x_4)
min(−2x1+3x2−x3−3x4)
进一步,对于约束条件,引入松弛变量进行转换有:
2 x 1 − x 2 + 3 x 3 + x 4 − x 5 = 3 3 x 1 + 2 x 2 + 2 x 4 = 7 − x 1 + 4 x 2 − 3 x 3 − x 4 + x 6 = 6 x 1 , x 3 , x 4 , x 6 , x 5 ≥ 0 , x 2 无 约 束 2x_1-x_2+3x_3+x_4-x_5=3\\ 3x_1+2x_2+2x_4=7\\ -x_1+4x_2-3x_3-x_4+x_6=6\\ x_1,x_3,x_4,x_6,x_5≥0,x_2无约束 2x1−x2+3x3+x4−x5=33x1+2x2+2x4=7−x1+4x2−3x3−x4+x6=6x1,x3,x4,x6,x5≥0,x2无约束
由于
x
2
x_2
x2不存在非负约束,所以引入变量u,v来生成一个新的约束,令
x
2
=
u
2
−
v
2
x_2=u_2-v_2
x2=u2−v2,综上所述,转换成一个标准的LP形式为:
2
x
1
−
u
2
+
v
2
+
3
x
3
+
x
4
−
x
5
=
3
3
x
1
+
2
u
2
−
2
v
2
+
2
x
4
=
7
−
x
1
+
4
u
2
−
4
v
2
−
3
x
3
−
x
4
+
x
6
=
6
x
1
,
x
3
,
x
4
,
x
5
,
x
6
,
u
2
,
v
2
≥
0
2x_1-u_2+v_2+3x_3+x_4-x_5=3\\ 3x_1+2u_2-2v_2+2x_4=7\\ -x_1+4u_2-4v_2-3x_3-x_4+x_6=6\\ x_1,x_3,x_4,x_5,x_6,u_2,v_2≥0
2x1−u2+v2+3x3+x4−x5=33x1+2u2−2v2+2x4=7−x1+4u2−4v2−3x3−x4+x6=6x1,x3,x4,x5,x6,u2,v2≥0
3、线性规划求解方法
3.1 线性规划解的相关概念
3.1 图解法
对于线性规划问题,最简单的思路就是采用图解法,这种方法简单的来讲就是将各个约束条件画出来,按照不等式的各个约束条件来确定各个变量的可行区域。最终寻找各个可行域之间的交集,最后确定解。
我们下面举一个例子来说明这种方法:
首先,我们可以根据各个约束条件来确定可行域的交集,如下图所示:
根据各个约束条件,我们可以确定最终的可行域就是ABCO组成的四边形。然后,做出关于
4
x
1
+
3
x
2
=
z
4x_1+3x_2=z
4x1+3x2=z的等值线,最终可以确定B为极大值点。
例子2:
根据上面的约束条件,我们可以确定变量的可行区域为下图所示:
进一步,我们可以做出 4 x 1 + 3 x 2 = z 4x_1+3x_2=z 4x1+3x2=z的等值线,最终可以发现,在可行区域内不存在最大值。
3.2 图解法总结
- 图解法适合变量比较少的情况,因为能够作图,变量较多,作图很困难。
- 图解法的思想比较简单。
3.3 线性规划问题的求解
通过上面的例子,我们可以总结一下LP问题的解是否存在的特点。