线性规划和对偶规划学习总结

在学习列生成和分解算法的时候,会频繁用到线性规划和对偶的知识,可以说LP和DP是基础。因此理解线性规划和对偶的本质是很重要的。

目录

1 基础知识——超平面,多面体

1.1超平面(hyperplane)

1.2 多面体(polyhedron)

2 单纯形法的由来

3 单纯形法

3.1 基、基解在几何中的对应关系

3.2 单纯形法的原理,对应几何运动过程

3.3 解的3种情况(界的角度)

3.4 极点与极射线

3.5 极点、极射线的性质

4 对偶理论

4.1 LP与DP图示

4.2 对偶性质

4.3 对偶性质的运用


单纯形法是纯代数运算,从一个顶点跳到另一个顶点;且我们知道最优解一定在顶点取得,可是为什么在顶点一定会取得最优解?为什么从一个顶点跳到另一顶点,通过进基出基就可以实现,它俩为什么是一一对应的?除此以外,在分解算法中的极点和极射线和LP的解是什么样的对应关系?

这些问题,应该说必须了解了线性规划和对偶的本质才能够深刻理解,而不至于陷入机械无脑的计算。大概看了慕课的课程,感觉山东大学的王明强老师的授课思路清晰,可以一看。

单纯形法表面看是代数计算,本质是几何问题。当涉及高维空间时,我们没办法直观想象,因此化为代数运算可以简化求解过程,但是对于理解不易,也就是说为了更好的理解,我们最好从几何的角度来加深理解。

本文通篇写的LP是max问题,对偶是min问题。

1 基础知识——超平面,多面体

比较重要的基础知识是,超平面和多面体这两个概念。因为在后续的推导中会反复用到。

1.1超平面(hyperplane)

线性规划和对偶规划学习总结_第1张图片

我们可以理解为:超平面是一个n维/高维的平面,比如2维的超平面是一条直线;3维的超平面是一个平面,当然,直线和平面都属于超平面的范畴,或者我们说超平面是二维平面向多维的拓展。超平面用数学式来表达其实就是一个线性等式。

线性规划和对偶规划学习总结_第2张图片

附带说一句,(n维)超平面将n维实数空间分为两个半空间(halfspace),也就是ax<=b和ax>=b两部分。

更直接的说,超平面就是LP问题的约束。一个超平面对应一个约束,m个约束形成的多个半空间的公共部分就是LP的可行域。

1.2 多面体(polyhedron)

上述多个超平面围起来的公共部分其实就是多面体(对应着LP的可行域)。用数学表达式表示为:

另外,我们可以发现多面体一定属于凸集,因此有时我们称为凸多面体。

再者,我们看到一般表达式中是<=。其实>=或者=也都属于多面体。因为可以通过变换,比如*(-1)或者连立<=和>=,很容易证明的。

除此以外,我们可以从表达式中发现,多面体的边一定是刚性的,因为是严格的线性约束,所以柔和变化的弧线就不属于多面体等等。

注:对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内,那么该集合是凸集。数学表达为:

线性规划和对偶规划学习总结_第3张图片

与凸集有关的知识还有顶点,不能用相异的两个点的线性表达来表示的点叫做顶点。

2 单纯形法的由来

完整的脉络应该是(从图解法到)穷举法到单纯形法。

从图解法的例子可以看出多面体的形状,而且还可以观察到确实最优解会在顶点处取到。这是直观感觉,真正的原因是多面体是多个超平面的公共部分,多面体是带有凸点的几何形状,那么把目标函数也看做是一个超平面,不断移动来接近(或者移出)可行域,最先碰触的一定是多面体的某个顶点,因此,最优解一定在顶点取到

线性规划和对偶规划学习总结_第4张图片

假如(多面体的)顶点个数已知,我们穷举出所有的顶点,然后在其中找最好的顶点,那么必定就是最优解。那么首要问题是怎么找顶点,因为顶点往往是交点,所以我们可以利用交点(也就是连立方程组)求解,但是要注意的是,交点不一定是顶点,所以我们还要判定交点的可行性,满足可行性的交点才是真正的顶点。总结一下:先找交点——再找顶点(即可行的交点)——比较所有顶点找最优的那个即最优解。——这就是穷举法的思路。

但是,图解法有以下问题:

1)需要把所有约束化为等式约束;

2)交点需要连立约束的方程组,也就是组合问题,当约束很多的时候计算量很大,即当约束数量为m个(包括变量取值约束),变量为n维,那么需要求解C_{m}^{n}次;

3)需要一一判别交点是否是可行的,也有一定的工作量;

4)需要找到所有的交点,然后对比,与1)是对应的,工作量也不小。

因此,我们提出单纯形法,即通过巧妙的设计,取穷举法的精华(思想),同时避免穷举法的弊病。

同时,我们用第一部分的知识再来阐述下顶点和交点的本质。假如是Ax<=b,其中A是m*n维,也就是说变量是n维的,多面体是n维多面体。

(1)一个约束对应一个超平面,当约束是等号约束时,意味着该超平面被固定;当约束是不等号约束时,意味着该超平面可以移动。总而言之,一个约束对应一个超平面。

(2)顶点即为n个超平面的公共部分,那么n-1个超平面的公共部分是一条边。

3 单纯形法

(1)由于LP的可行域是凸多面体,因此可知,当一个顶点比周围的顶点都优时,说明它就是最优解。所以只对比它周围节点的优劣性即可——这个可以避免找到并对比所有的交点(可行解),减少了计算量。

同时,当用单纯形法计算时,化标准型后:

1)松弛变量的引入直接把约束变成了等式——不必专门取等号了,且有以下好处;

2)松弛变量的引入可以直接对应着一个初始可行解,因为约束右端项b为正,即可行;同时在迭代过程中,每一次都化成单位阵,那么对应的b列就是解本身,且在这个过程中始终保持b为正,因此解始终是可行的——避免了可行性验证,同时可以直接看出下一个解;

3)松弛变量的取值情况对应着原约束Ax<=b的满足,违背或取等。

线性规划和对偶规划学习总结_第5张图片

上述x_{i}即松弛变量,Ax+x'=b。

当取值为负,即Ax>b,原约束被违背;当取值为正,即Ax

简而言之,添加松弛变量有很多好处!

可以看到,单纯形法通过以上关键设计,使得求解更为简单且直观。

线性规划和对偶规划学习总结_第6张图片

那么接下来只剩下一个关键问题,怎么从一个点跳到相邻的最好点呢?这里涉及到两个问题,一个是跳到相邻,其实是最好的相邻。这部分内容其实运筹教材都讲过了,我简单提一下,为了保证跳到相邻最好点,其实就是我们精心选择\theta,也就是通过精心选择主元,或者出基和进基变量决定的。

接下来我会用几何概念,也就是超平面和多面体的概念解释单纯形的步骤,以及每步对应到几何中的运动过程。

3.1 基、基解在几何中的对应关系

线性规划和对偶规划学习总结_第7张图片

(1)首先,可行解对应多面体可行域内的点,这个比较容易理解;

(2)基解,即化为标准型后,此时包含所有松弛变量的总变量为n维,其中松弛变量数和约束个数相等为m维,那么很容易知道原来的变量/解空间为n-m维。将n-m个非基变量置为0,同时去除这些非基变量对应的列,剩余的m列(松弛变量的维度)构成的新约束连立求解;或者可以认为是将n-m个非基变量置为0,同时抽取剩余的m列进行求解,得到基变量的取值。注意,从这个求解中,我们可以看到,这m列必须线性无关,或者说满秩,因为只有满秩,才有解;否则有效约束数<变量维数,无解。这也是我们为啥把基阵化为单位阵的原因,即始终保证满秩,有解,避免无解情况。

我们再来说一下:基解,即非基变量为0,求得基变量,合并基变量和非基变量得到基解。注意非基变量为0是我们硬性规定的。基解是n个约束同时求解的,即n个超平面的交点,汇总一下就是围成可行域的n个超平面的交点。注意,这里的n是解空间的维数,即上一段的n-m。

(3)基可行解对应着可行域的顶点。

基解不一定可行,当基解是顶点+可行(所有变量>0),即基可行解,才对应着可行域的交点。

3.2 单纯形法的原理,对应几何运动过程

(1)一开始标准化,有以下好处:

a)出现一个基即单位阵,且b列为正,即有一个初始可行解;

b)之后行变换很容易;

(2)迭代,即一进基,一出基。

a)其实对应着超平面的变化过程,当进基时,即非基变量取值不再为0,即可以自由取值(该约束不再满足,剩余n-1维超平面),那么对应的那个约束或者说超平面开始移动;出基变量意味着截断移动,即超平面不断移动,一直到碰到下一超平面,新的一组n维超平面形成了一个新的交点,同时因为单纯形表一直保持着b'列为正,也就是说到达了相邻的顶点。

从这个过程中,我们可以看到,当开始自由移动时,原来的n-1维超平面的公共区域是边,即沿着边移动;当碰触到新的超平面时,原来的n-1维超平面+碰触到的超平面=新的n维超平面,形成一个新的交点,因为是沿着边移动的,且一直保证可行,所以一进基一出基保证了是从一顶点跳到相邻的顶点。也就是说去除一个超平面,添加一个新的超平面,能够实现从一顶点到相邻顶点的跳动;再换句话说,相邻顶点只有一个非基变量不同,一个基变量不同。

b)我们知道,相邻顶点有很多个,同时这里没有局部最优,因此迭代是希望走向更好的方向。因此我们希望走到相邻的最好顶点,根据推导我们知道,当c_{j}-\sum ^{m}_{i=1}a_{ij}大于0,意味着可以改善当前解;那么我们找最大的增量当然改善最大,也就是往最好的临点跳动。(注意,这里通篇是max问题。)——这个决定了入基列。

c)同时为了保证在迭代过程中解始终可行,我们也精心选择了\theta\theta的选择考虑两方面的因素,一个是可行,也就是所有变量>=0,所以\theta要往小的方向取;同时因为出基的原因,新非基变量要=0,因此只能取到某一顶点。——这个决定了出基变量。

线性规划和对偶规划学习总结_第8张图片

线性规划和对偶规划学习总结_第9张图片

线性规划和对偶规划学习总结_第10张图片

线性规划和对偶规划学习总结_第11张图片

线性规划和对偶规划学习总结_第12张图片

总结一下:

入基决定了迭代的寻优方向,出基决定了迭代的前进步长。 此时我们再来回想一下上面提到的:一个超平面移动,往哪个方向移动寻优方向如何确定,即入基的那个方向移动;一直移动到新超平面和原来的n-1维超平面的交点,停止,即前进的步长。这么一回想,就会发现二者的联系和对应性。

3.3 解的3种情况(界的角度)

最初我们学习LP,常见的是4种情况:无解;唯一最优解;多个最优解;无穷最优解。

现在我们换个角度,来阐述下解的情形。

线性规划和对偶规划学习总结_第13张图片

(1)无解——即对应无解,无可行域的情形

  • 若可行域为空集,其对偶问题无界,则原问题也无界,模型目标值可以取到无穷小,失去求解意义。

(2)有界解(唯一解,多解和无穷多解)

  • 若可行域非空且有界,最优解一定在可行域的某个极点上。

(3)无界解(唯一解,多解和无穷多解)

  • 若可行域非空且无界,最优解一定可以由可行域的某个极方向表示。

其中,无界指的是可以取到正/负无穷。

转换思路的好处是,可以从极点和极射线的角度来对解的情况进行阐释。也就是说后两种有界解和无界解的情形,分别对应着极点和极射线。极点可以理解成多面体的顶点,多面体就是LP的可行域围成的部分;极射线与无界相联系。

3.4 极点与极射线

我们用数学表达式再来叙述下极点和极射线:

(1)极点(extrame point)
多面体的顶点也被称为极点(extreme point),它的定义为:对于多面体P, 若在多面体内找不到任意两个不同于x 的点x1和x2, 以及一个标量 λ∈[0,1], 使得x = λx1+(1−λ) x2,则x为极点。这个定义和顶点的定义很类似,感觉可以理解成一个东西。(即 x 不在多面体内任何两点的连线里)。

极点可以通过求解这个线性规划,得出的最优解即为一个极点。因为线性规划的最优解总存在于极点上。或者令 n 个线性无关的约束条件取等号,解方程得出,其中 n 为多面体的维度。

(2)极射线(extrame ray)

多面体的射线定义为:对于一个向量d, 若对于多面体P的任何一点x以及任意非负标量λ,都有x+λd∈P,则称d为多面体P的射线。
多面体的极射线定义为:对于多面体P中任何两个线性无关的射线d1,d2。若射线d不能表示为d=λ1d1+λ2d2,其中d1和d2为大于零的标量,则d为多面体的极射线。几何意义:多面体边界上的射线是极射线。

要求出极射线,要用到它的另一个定义:对于一个多面体 {x∣Ax≥b},它的多面锥(又称退化锥,因为是从多面体退化的)为 {x∣Ax≥0},假设x有n 个维度,则n-1个线性无关的约束条件取等号,同时满足剩下的那个条件,则可以求出一个极射线。

注:极射线是一个向量,因此极射线可以有多个解,可以通过求解一个带辅助变量的线性规划问题得出(辅助变量为一个0-1变量,目标函数为这个辅助变量值最大,约束条件中:随便选取 n-1 个约束取等号放进去,剩下那个约束也放进去,随便让其中一个变量等于 1)。

线性规划和对偶规划学习总结_第14张图片

例如,下面这个多面体中的箭头,都是该多面体的射线。其中,红色的线表示极射线。或者我们可以直观的认为极射线是多面锥的棱边,多面锥是多个超平面围成的锥

3.5 极点、极射线的性质

(1)一个多面体若存在极射线,则该多面体无界。——极射线性质1

线性规划和对偶规划学习总结_第15张图片

(3)Ad=0。——极射线性质2

因为x是极方向上的点,则x+λd亦是极方向上的点,d是极方向,λ控制着在极方向上的移动步长。那么有A(x+λd)=b,Ax+λAd=0,因为Ax=b,因此Ad=0。

(4)c'd<0则无界——极射线性质3

若有c'(x+λd)

线性规划和对偶规划学习总结_第16张图片

上面两个性质指的是(1)和(2)。这一部分,即多面体内的任意一点都可以用极点和极射线的凸组合来表示,也即Minkowski定理,没有做过多的整理,但是在实际中会比较经常用到。 

4 对偶理论

如果说原问题是在保证可行的基础上,让可行解变得更好。即在保证b'为正(可行)的条件下,使得所有检验数都<0,不再有改善的余地/或者说让对偶问题可行,此时最优。

那么对偶问题与之类似,在保证可行(检验数非正)的基础上,改进解的质量。即在保证检验数非正的情况,因为检验数=负的对偶变量,检验数非正意味着对偶变量非负,也就是对偶问题可行;在此基础上让原问题可行,即b'为正。

线性规划和对偶规划学习总结_第17张图片

上述描述中,我其实已经用到了对偶定理。即强对偶性,即当原问题和对偶问题都存在可行解且相等时,同时达到最优。同样的,对偶单纯形表默认原问题和对偶问题解相等,那么只需要考虑另一方可行即可;如在求解LP时在LP可行的条件下,使DP可行;如在求解DP时在DP可行的条件下,使LP可行。

线性规划和对偶规划学习总结_第18张图片

其实,LP通常会进行矩阵描述,它的目的其实是为了最终推出,检验数是负的对偶变量;最终单纯形表中原单位阵中的位置为B的逆;还有为了后续的灵敏度分析。

书中已有的不再赘述,下面介绍对偶性质。

4.1 LP与DP图示

线性规划和对偶规划学习总结_第19张图片

假如原问题,即LP问题是关于x的max问题;对偶问题是关于y的min问题。那么可以推导出如下性质(因为max和min互为对偶(直观理解是对称),因此反过来也可以用同样的逻辑推导的,但是需要注意上下界问题)。

4.2 对偶性质

原问题maxc'x,对偶问题b'y

(1)弱对偶性

若x和y分别是原、对偶问题可行解,则有c'x<=b'y。注意这里c'和b'分别表示c和b的转置(我不会承认自己懒而没使用公式。)

也就是说:

原问题任一可行解的目标函数是对偶问题的下界;

对偶问题任一可行解的目标函数是原问题的上界。

我们可以直观的感受下,原问题是最大化obj,对偶问题是最小化obj,最终两者会达到同一归处,那么原问题永远比对偶问题小,直到二者碰到,同时最优。回顾4.1的图,即原问题在对偶问题下边;对偶问题在原问题上边。

(2)无界性

线性规划和对偶规划学习总结_第20张图片

 直观理解下,根据弱对偶性,原问题为对偶问题提供下界,对偶问题为原问题提供上界。

a)当原问题无界时,最大化无界,即取到正无穷了,无法为对偶问题提供下界了(或者说把所有解空间占据,上边没有对偶问题的领地了),那么对偶问题无可行解。

如果对偶问题无界,最小化无界,即取到负无穷,无法为原问题提供上界(或者说把所有解空间占据,下边没有原问题的领地了),那么原问题无可行解。

b)若原问题有可行解,而对偶问题无可行解,则原问题无界。直观理解是:原问题有可行解,即在解空间上占据了某区域,但是对偶问题无可行解即不占据任何区域,那么原问题只能是无界了即占据了所有区域。

c)若原问题无解,即在解空间不占据任何区域,要么对偶问题无解,即在解空间不占据任何区域;或者无界,占据了所有解空间,一直取到负无穷。

(3)最优性

线性规划和对偶规划学习总结_第21张图片

上面对偶单纯形法,其实用到的就是这个。除此以外,当二者不等时,两者之间的差值,叫做对偶间隙,也就是说当对偶间隙=0时,松弛问题等同于原问题;否则,只能为其提供一个界。这个在松弛问题,比如后面的拉格朗日松弛也会用到。

(4)强对偶性

线性规划和对偶规划学习总结_第22张图片

这个没啥解释的。

值得解释的是上面这个表。这个表我个人感觉比较重要。

4.3 对偶性质的运用

其实上述的对偶性质大家都知道,但是未必会用。

线性规划和对偶规划学习总结_第23张图片

 比如:

(1)同时求解原问题和对偶问题,可以快速判断原问题是否有界,也就是说可以以快速得出更多的信息。判断问题是否有解其实很容易,找到满足约束的解就是可行解了;但是判断问题是否有界会很难,对偶问题可以很容易让我们知道问题是否有界,它的求解难度和判断问题是否有解一样。

(2)可以将复杂度在约束和目标函数之间转化。比如,在Benders分解中,我们看到因为y取值变化,导致约束变量始终在变化,也就是可行域在变化;而通过对偶,y被转移到目标函数上了,那么可行域保持不变,只是目标函数在不断变化。

(3)对偶问题为原问题提供了一个界,可以随时知道解的质量。

这三点比较重要,但书中直接点明的不多。

你可能感兴趣的:(运筹优化理论,优化算法,学习思考总结,动态规划,算法,最优化算法,笔记)