在介绍线性规划之前,我们先来回顾一下在线性代数中的“凸”的概念,这些概念在我们以后的求解过程中,会提供很多的帮助。
我们首先从一个例子开始:
某个工厂利用原材料来生成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
总结:
上述形式的问题,其有如下几个基本的组成部分。包括
目标函数:
上一个小结的问题是非常常见的线性规划问题,我们通过其最后的总结,可以来总结一下线性规划的一般形式:首先,我们有需要求解的目标函数,目标函数对应着我们问题的需求,例如上面描述的最大化利润,同时在其他的问题中,我们的目标函数可能是获得一个最小的值。所以,这里对于目标函数的描述为:
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
对于线性规划问题,最简单的思路就是采用图解法,这种方法简单的来讲就是将各个约束条件画出来,按照不等式的各个约束条件来确定各个变量的可行区域。最终寻找各个可行域之间的交集,最后确定解。
我们下面举一个例子来说明这种方法:
首先,我们可以根据各个约束条件来确定可行域的交集,如下图所示:
根据各个约束条件,我们可以确定最终的可行域就是ABCO组成的四边形。然后,做出关于 4 x 1 + 3 x 2 = z 4x_1+3x_2=z 4x1+3x2=z的等值线,最终可以确定B为极大值点。
进一步,我们可以做出 4 x 1 + 3 x 2 = z 4x_1+3x_2=z 4x1+3x2=z的等值线,最终可以发现,在可行区域内不存在最大值。
通过上面的例子,我们可以总结一下LP问题的解是否存在的特点。
1.最优化方法——BIliBIli