1 对单纯形法的理解
假设线性规划问题存在可行域;
1.1 预备知识点
(1)线性规划问题的标准化【运筹学】线性规划问题的标准化及其意义(针对单纯形法)
(2)线性规划问题的可行域是凸集;
(3)如果一个线性规划问题存在唯一最优解,那么最优解一定落在可行域的顶点上;
(4)如果一个点是线性规划可行域的顶点,那么一定有多个不等约束,只在这个点同时成为紧约束(刚好等于)。
1.2 单纯形法的本质
搜索就像狩猎,搜索算法就像猎人。
单纯形法是针对线性规划问题的一种搜索算法,将搜索空间限定在可行域的顶点集合内。
从几何上理解单纯形法:从可行域的一个顶点迭代到相邻顶点(可能迭代到相同顶点)的过程。
从代数上理解单纯形法:决定顶点的紧约束集变化(某个紧约束变宽松,某个宽松的约束变为紧约束,不同紧约束集可能对应相同顶点)。
2 单纯形法的内容
一个搜索算法的组成要素无非是确定初始可行解、确定迭代方式(搜索方向)、设置终止条件三个步骤,接下来针对单纯形法对这三个步骤进行说明。
2.1 单纯形法的初始可行解(可行域的顶点)
2.1.1 如何确定初始可行解
首先需要明白:如果一个点是线性规划可行域的顶点,那么一定有多个不等约束,只在这个点同时成为紧约束(刚好等于)。
那么我们如何找出顶点或者是确定紧约束集呢?如例题:我们相当于有6个约束(三个主要约束,三个非负约束),令其中任意三个约束(存在三个变量)成为紧约束,然后判断该解是否可行,若该解可行,那么便成为一个顶点;
①令x1,x2,x3=0,则使三个变量非负约束成为紧约束,但是这样便不满足第二个和第三个主要约束,不是顶点;
②令x1=0,则x3=-2,不满足非负约束,不是顶点;
③令x2=0,x3=5(x3=5),x1=2/7(x1=34),则x2的非负约束、第二个和第三个(第一个)主要约束为紧约束,因此对应一个顶点;
④令x3=0,x1=1,x2=17(x2=5),则x3的非负约束、第一(三)个和第二个主要约束为紧约束,因此对应一个顶点。
⑤令三个主要约束为紧约束,则x1=43/7,x2=83/7,x3=72/7,因此对应一个顶点。(此处可以手动计算一次,加深印象,后续大有作为)
这便是确定第一个顶点(初始基可行解)的过程了,为更加快捷地找出初始可行解,便有了两阶段法和大M法。
2.1.2 线性模型的标准化
紧接着我们思考,一个解是否满足不等式比较难观察,那我们把是否满足不等式约束转化为观察一个变量的值是否满足约束呢?
假设不等式约束如下:
标准化后的结果:
这样我们就把观察原来的不等式约束是否成立转换到观察x5是否满足非负约束了。
因此线性规划问题标准化【运筹学】线性规划问题的标准化及其意义(针对单纯形法),如例题:
总结就是,转化为标准型的本质是引入松弛变量改变原有线性规划问题的表达形式,意义就是在单纯形法迭代过程中便于观察。
现在相当于我们一共有8个约束、5个变量,想要确定顶点,我们就需要5个紧约束,因为已经有3个等式约束,我们就需要选择两个变量(也就是非基变量,后续再详细说明),让其的值等于0,然后我们就可以解出来其他三个变量的值,观察其是否可行,如果可行,那么这就是一个顶点。
2.2 单纯形法是怎样迭代的(怎样寻找顶点或者确定约束集)
那么我们有疑问了,我们是否可以直接列举出所有可能的顶点情况呢?当然是可以的,枚举后计算出目标函数值,这样便可以求出最优解了。但是这样的话,当遇到约束非常多的时候,计算量就会剧增,并且这样便成了穷举算法,便不是搜索算法了。
那么单纯形法是怎么迭代的(相当于怎样寻找下一个顶点或者确定下一个约束集)呢?
2.1.2例题中我们提到,只需要选择2个变量的值等于0,便可以得出第一个顶点,这里我们选择x4=0,x5=0(检验可行),得到第一个解(x1=43/7,x2=83/7,x3=72/7,x4=0,x5=0)。迭代第一次:我们令x3=0,x4=0(检验可行),得到第二个解(x1=1,x2=17,x3=0,x4=0,x5=36),这样便完成了一次迭代过程,并且只有一个约束变化,因此对应的是相邻的顶点。
那么我们该放宽谁,收紧谁呢?因为有可能变化后得到的解可能不可行(不满足某些约束),这就是单纯形法迭代过程中的核心所在了。到这里便需要用到可行改进方向的概念了,我们下一章再诠释。假设我们现在已经明白了怎样选择哪个变量为0(即确定改进方向),那么就只剩下计算出解的过程了。
假设我们已经确定了初始基可行解,单纯形法迭代过程的本质就是确认改进方向,求解结果,判断是否最优,确认是继续迭代还是停止计算。
标签:可行,迭代,深刻反思,单纯形法,x3,约束,顶点,温习 From: https://blog.csdn.net/TuTuTuhong/article/details/140769642