1 线性规划问题概述
写成矩阵&向量的形式,有:
1.1 线性规划举例
这也是本小节所使用的例子
比如我们要使用corn、hops和malt来制作ale和beer,每种饮品所需要的原材料、可以带来的收益、以及各种原料材料的数量如下图所示
我们现在需要求得最大的收益
1.1.1 线性规划方程
但是上式和1中的标准型还是有一定的区别的
标准型:
我们记n为变量的数量;m为限制条件的数量;L为编码输入的位数
1.1.2 标准型线性规划方程 的转化
- 对于小于等于0的式子:
- 对于大于等于0的式子
- min 到 max
- 无限制到非负性
2 几个n维空间上的概念
2.1 超平面 Hyperplane
由一个线性方程决定的n-1维子空间(在2D空间中,超平面就是一条分界线)
2.2 半空间 halfspace
满足一个线性不等式的点集合
类比到2D空间。就是某一条直线以上/以下的区域
2.3 凸集 convex set
如果点x和点y在一个凸集内,那么 对于所有 λ∈[0,1]的λ,λx+(1-λ)y也在这个凸集内
比如这就是一个凸集
比如这就不是凸集
2.4 极点 extreme point
如果一个凸集中的点不能被写成 (x和y是凸集中两个不同的点),那么这个点就是凸集的极点
以这张图为例,只有五个顶点是极点,其他点都不是绩点
2.4.1 并不是所有的凸集都有极点
这个是凸集,但是没有极点
3 可视化线性规划
回到那个线性规划的问题
- 每一个constraint相当于一个半空间
- 半空间的交集是一个convex set——更进一步说,convex的交集是convex set
- 蓝色的区域就是feasible region
线性规划的目标函数可以写成以上形式,找最“晚”和凸集相交的地方
4 线性规划类型
4.1 目标函数没有边界
比如目标函数还是13A+23B,但是我们的feasible region只是x>0且y>0
4.2 没有解
比如此时,一个限制条件是绿色部分,另一个是灰色部分
4.3 最优解集的非空集合
如前面所述
5 极点定理
如果最优解集非空,那么存在一个最优解是极点
说明:如果u不是极点,那么u可以写成的形式,我们沿着x或者y中一个方向走,这条路径使得结果不减,直到到达边界为止
6 单纯形法 Simplex Algorithm
6.1 Basic Feasible Solution (BFS)
基 (basis):n个变量中的m个变量组成的子集
6.2 Simplex Algorithm举例
还是以
为例
首先转化为标准型,此时的基是新增的几个变量
然后我们用第一个约束式的B替换Sc成为新的基中元素(原因后面会讲)
替换后的结果如下:
然后我们用第一个约束式的A替换SH成为新的基中元素(原因后面会讲)
替换后的结果如下:
6.3 抉择原因
1)第一步为什么选择B?
因为B的系数大,我们选择B之后,B将不再为0,而是一个大于0的数,那么相比于A,先修改B对于Z的提升更大一些,那么能更快地找到最优点
2)第一步为什么替换Sc?
如果说1)的原因只是能够更快地到达最优点的话,那么2)则是必须的条件了。
我们看三个式子等号右边的值/B的系数之后的结果:32、40、59.5。我们这里选择的是结果最小的那个。
比如我们这一步替换了Sh,那我我们Sc那一行变成:10A+15/4 Sh-Sc=120
基是{Sc,H,Sm},非基的元素为0,基的元素大于等于0,此时我们会得到Sc为120,矛盾。
所以只能替换Sc
3) 为什么结束了
到这一步,就结束了,因为Z所在这一行的系数都已经是非正的了,表明Z已经是最优情况
7 Unboundness
此时,Z没有边界。
我们可以这么设置值:
此时Z就和x5成正比,但是x5是没有边界的
这个就是前面线性规划分类的第一种情况
8 degenerate
在Simplex Algorithm中,每次目标函数都会不减,但是不一定增加。
目标函数不增的情况我们称为degenerate iteration
当我们有n+1或者更多的超平面相交在一个点的时候,我们每次迭代得到的新的基可能会移动到相同的顶点上。在这种情况下,算法可能会陷入一个死循环,就是看起来在不断迭代,但是目标值不增不减,因为始终停留在这个点上
解决方法: