【学界】运筹学之线性规划

【学界】运筹学之线性规划

本文首发于数学放映室

作者 @惨绿青年 一个对数学各个方向感兴趣的普通大学生。

欢迎原链接转发,付费转载请前往 @留德华叫兽的主页获取信息,盗版必究。
敬请关注和扩散本专栏及同名公众号,会邀请全球知名学者陆续发布运筹学、人工智能中优化理论等相关干货、知乎Live及行业动态:
『运筹OR帷幄』大数据人工智能时代的运筹学

INTRODUCTION

运筹学(operational research)是一门解决一定约束条件下最优解的学科,应用现有的科学技术知识与数学手段,来解决实际生活之中的各种问题,是一门应用学科。在运筹学之下又发展出了许多的分支,如规划论,排队论,图论,决策论等等。


第一讲主要来讨论运筹学的重要分支线性规划。


1.1 Example

在高中时我们已经接触过最简单的线性规划,如A,B两件商品的利润分别为2元与3元。同时满足商品A个数加商品B的个数不超过8个,A的个数不小于四个,B的个数不大于五个。我们可以设商品A的个数为x商品B的个数为 y 。所以上述问题可以表述为:

目标函数: max Z=3 x1+2 x2

约束条件: \begin{equation} \left\{ \begin{aligned}x1+x2\leq8\\x1\geq4\\x2\leq5\\x1,x2\geq0 \end{aligned} \right. \end{equation}

解决这类问题的方法是根据约束条件画出可行域,一般可在可行域的顶点处取到最优解,这种方法叫做图解法。

但上述例子中Z的值可以随着x的增大不断增大,若是画出约束条件的可行域会发现可行域是无界的。出现这种情况时,往往是因为约束条件考虑不全导致。



1.2 Example

细心的同学可能注意到了,在传统的线性规划中约束条件为一系列不等式,可行域为不等式所围成的区域。但上述定义之中约束条件的式子显然是一个个等式并无不等式。造成它原因是什么呢?二者其实是等价的,可以相互转换。不等式围成的可行域等价于约束矩阵的解空间。(证明从略,可以从矩阵秩的角度不变考虑),而用到的转换方法称为——松弛变量法。


基本思路:约束方程若为≥,则在方程左边减去一个非负的松弛变量,约束方程若为≤,则在方程左边加上一个非负的松弛变量。例如上例中的方程

max z=2x_1+3x_2

\begin{equation} \left\{ \begin{aligned}x_1+x_2\leq8\\x_1\ \ \ \ \ \ \ \ \ \geq4\\x_2\leq5\\x_1,x_2\geq0 \end{aligned} \right. \end{equation}


加入松弛变量x3,x4,x5为:

max z=2*x_1+3*x_2+0*x_3+0*x_4+0*x_5

\begin{equation} \left\{ \begin{aligned}x_1+x_2+x_3 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =8\\x_1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -x_4 \ \ \ \ \ \ \ \ \ \ \ =4\\x_1+ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ + x_5=5\\x_1,x_2,x_3,x_4,x_5\geq0 \end{aligned} \right. \end{equation}

可见此时方程被划为了标准型,同时目标函数之中新加入的松弛变量的系数均为零,实际意义中可理解松弛变量为没有被利用的资源,当然其利润为零,故系数为零。

故我们可以用这个办法将不等式可行域转为标准形式。

注意:max到min的转换时,只需要讲z变为-z即可。


1.3 Definitions:

数学需要更简明与普通适用的表达形式,我们从上述例子之中抽象出下模型。定义线性规划问题的标准形式为:

max z=\sum_{j=1}^{n}{c_{j}x_{j}}

\begin{equation} \left\{ \begin{aligned}\sum_{j=1}^{n}c_{ij}{x_{j}}=b_{i},i=1,2,..,m\\x_{j}\geq0,j=1,2,..,n \end{aligned} \right. \end{equation}

运用矩阵可以写为

max z=CX

\begin{equation} \left\{ \begin{aligned}AX=b\\X\geq0 \end{aligned} \right. \end{equation}

其中:C=(c_{1},c_{2},c_{3},c_{4}) , A= \begin{equation} \left(\begin{array}{ccc} a_{11} & ... & a_{1n}\\... &... & ...\\ a_{m1} &...&a_{mn}\end{array}\right) \end{equation}

我们可以认为A矩阵是由约束条件构成的m*n维矩阵。且一般情况下m \leq n,表示未知元的个数大于约束条件的个数,而且只有这种情况下才会构成多维解空间,而我们的最优解就在这多为解空间内。

我们称b为资源向量,C为价值向量,X为决策价值变量向量。(联系实例可理解名称的由来)



1.4 definitions

可行解:满足约束条件的解称为可行解,使目标函数达到最大(小)值的解称为最优解。

基:约束矩阵A为m*n维矩阵,其rank(A)=m(在线性代数中,一个矩阵A的秩是A的线性独立的向量的极大数目,记为rank(A)),设B为A之中的m*m阶非奇异的子矩阵。那么称B为线性规划问题的一个基。(显然rank(B)=m,非奇异意思是: \left| B\right| ≠0),

基可行解:由矩阵知识可知,一个基(满秩矩阵)一定会求出一个相应的基解。若一个解既为基解又为可行解,则称为基可行解。可知满足非负条件的基解均为基可行解。


1.5 Geometric interpretation

几何看来有时候要领先於分析,但事实上,几何的先行於分析,只不过像一个仆人走在主人的前面一样,是为主人开路的。——西尔维斯特

在使用图解法时,我们理所当然地认为最优解是在可行域的顶点之上,但其中的原因恐怕大部分人没有思考过,更没有去证明过。这一节更像是从几何的角度给出图解法的原理(其实更像是代数的角度),同时得出一些有趣的结论。首先我们需要明确这么几个定义:

definition 1.5.1

凸集(convex set): 设K为n维欧式空间的一个点集,若任意两点的连线上的一点X∈K;则称K为凸集。

凸集的概念很好理解,直观地可以理解为集合没有凹进去的地方,像下图二有凹进去的地方,所以两点的连线之上存在不属于K上的点,故不是凸集。

且凸集的交集仍然为凸集。

另一个注意的地方就是前提必须是在欧氏空间内。(欧氏空间可以不严谨地解释为平坦的空间。)

一个例子

definition 1.5.2

凸组合:设有向量 \left( x_{i} \right) ,i=1,2,...,n,如有实数 \lambda_{i}\geq0 ,且 \sum\lambda=1,则 \sum\lambda_{i}x_{i}\left( x_{i} \right)凸组合。0\ <\lambda<1 时,称为严格凸组合。


definition 1.5.3

凸集上无法用不同两点的线性表示的点为顶点


这两个定义都比较好理解,不做多余解释。有了这些定义与知识,我们可以试着去推出一些定理。


Theorem 1.5.1

若线性规划存在可行域,则可行域为凸集。

(证明只写思路与关键步骤,有兴趣的读者可以试着写出完整的证明)

证明:根据的凸集的定义,每两点连线上的点都在集合内,我们只需证明这一点即可。即证明任意 x_{1},x_{2} ,满足 x_{3}=(1-\alpha)x_{1}+\alpha x_{2}\in K ,把 x_{3} 代入可行域的方程 AX=b 之中 \Rightarrow A x_{3}=A[\alpha x_{1}+(1-\alpha)x_{2}]=ab+b-ab=b,即说明连线任一点满足方程,故可行域一定为凸集。

引理1:可行解X为基可行解的充要条件为X的正分量对应的系数矩阵非奇异。(系数列向量线性独立

Theorem 1.5.2

线性规划问题的基可行解X对应于可行域D的顶点。

证明:凸集的顶点不可以用两点的线性组合表示,故能用两线性表示的都不是顶点,若基可行解对应顶点,则基可行解不可以用两点的线性表示,出于这个思路我们可以用反证法证明:①若X不是顶点,则它一定不是基可行解。不失一般性我们还要证明②若X不是基可行解,则X一定不是顶点。

先证明①,因为X不是顶点,故可以找两点X1,X2,使X可以被X1与X2线性表示。其中X1= (x_{1}^{1}x_{2}^{1}x_{3}^{1}....x_{n}^{1})^{T} ,X2= (x_{1}^{2}x_{2}^{2}x_{3}^{2}....x_{n}^{2})^{T}

设X为基可行解,且X对应一基矩阵A(m*m维),且|A|≠0,当j>m时,故 x_{j}=x_{j}^{1}=x_{j}^{2}=0 ;j<m时,对应X1,X2两点来说均满足 AX_{1}=b;AX_{2}=b ,让这两式相减 \Rightarrow A(X_{1}-X_{2})=0,因为X1与X2为不同两点;故j<m时,不可能有 x_{j}^{1}=x_{j}^{2}\Rightarrow |A|=0,与假设矛盾,所以X不是基可行解。

再证明②,若X不是基可行解,则对于对应的系数矩阵|A|=0,即对应的系数列向量P1,P2,P3...Pm线性相关,即存在一组线性相关的数:

\sum^{m}_{j=1}P_{j}\alpha_{j}=0 ,又在基可行解之中有 \sum^{m}_{j=1}P_{j}x_{j}=b ,用 \mu 乘以 \sum^{m}_{j=1}P_{j}\alpha_{j}=0 的每一项,然后再分别加上或减去 \sum^{m}_{j=1}P_{j}x_{j}=b

可得 \sum^{m}_{j=1}P_{j}(x_{j}-\mu\alpha_{j})=b ,\sum^{m}_{j=1}P_{j}(x_{j}+\mu\alpha_{j})=b

分别取X1= (x_{j}-\mu\alpha_{j}) ,j=1,2...m

X2= (x_{j}+\mu\alpha_{j}) ,j=1,2,..,m

故X=1/2*X1+1/2*X2,即X为X1与X2的中点。说明在X不是基可行解时,X不对应中点。

故可说明基可行解X对应可行域D的顶点。


引理2:有界凸集K之中,任何一点可以表示为顶点的凸组合。


Theorem 1.5.3

若可行域有界,线性规划问题的目标函数一定可以在可行域的顶点上达到最优。

证明:X_{1},X_{2},X_{3}...X_{k} 为可行域的几个顶点,设有一点 \ X_{0} 不为顶点,且目标函数在该点达到最优。则由引理2可知, \ X_{0} 可以由顶点线性表出,即 \ X_{0}=\sum_{i=1}^{k}a_{i}X_{i},a_{i}>0,\sum_{i=1}^{k} a_{i}=1

CX_{0}=C\sum a_{i}X_{i}=\sum a_{i}CX_{i} ,设顶点之中有最大值 \ X_{m} ,在上式之中用 \ X_{m} 代替每一个X,有 CX_{0}=C\sum a_{i}X_{i}=\sum a_{i}CX_{i}\le\sum a_{i}CX_{m}=CX_{m} (因为 \sum_{i=1}^{k} a_{i}=1 )

所以得出结论  X_{0}=X{m} ,所以最大值在顶点上,定理得证。


1.6 summary:

本节介绍了线性规划的概念与标准形式,讨论了加松弛变量将不等式划为标准形式的办法。最后讨论了凸集的性质,得出了几条结论:线性规划的可行解构成的集合为凸集或无界域。基可行解对应凸集的顶点,且线性规划可在凸集的顶点上取到最优解。虽然顶点的个数有限,我们可以用暴力破解法一一求得,再对其进行排序从而找到最优解。但在顶点数目个数较多的时候,这种办法是不太有效的,如何有效地找到最优解,请点击这里运筹学S01E02——单纯形法


在此感谢『运筹OR帷幄』审稿人对本文提出了宝贵的意见。

『运筹OR帷幄』审稿人 孙卓,大连海事大学物流系教授,博士生导师,从事交通物流网络优化、计算机仿真等研究。曾获由阿里巴巴、香港科技大学、美国INFORMS协会举办的菜鸟网络全球算法大赛季军。开源空间建模框架MicroCity。


以上『运筹OR帷幄』专栏所有文章都会同步发送至 留德华叫兽的头条主页, 以及同名微信公众号,目前预计受众10w +


如果你是运筹学/人工智能硕博或在读,请在下图的公众号后台留言:“加微信群”。系统会自动辨认你的关键字,并提示您进一步的加群要求和步骤,邀请您进全球运筹或AI学者群(群内学界、业界大佬云集)。

同时我们有:【运筹学|优化爱好者】【供应链|物流】【人工智能】【数据科学|分析】千人QQ群,想入群的小伙伴可以关注下方公众号点击“加入社区”按钮,获得入群传送门。

学术界|工业界招聘、征稿等信息免费发布,请见下图:

编辑于 2018-04-09

文章被以下专栏收录