线性规划问题是指目标和约束函数都是线性的最简单的约束最优化问题,也是在实际中最长使用的模型之一。其求解算法也是相对成熟,各个代数软件中都会有求解该问题的工具,本节主要介绍:
1. 线性规划的基本形式已经对偶
2. 线性规划两类求解算法:单纯形和内点法
3. 总结
线性规划的标准形式通常表示为
线性规划解的形式,根据约束的不同,该问题可能有唯一解、一条线、一个平面,无解(Infeasible)或者无界(Unbounded)
最后两种情况都可以认为无界,一个可行解为空,一个可行解不可达
线性规划主要考虑 m<n的情况 ,即行满秩,此时可能有多个解,其他都可能唯一解或者无界。
由于线性的关系,该问题满足LICQ时,局部最优解就是全局最优解,因此原始问题和对偶问题的解一致。拉格朗日函数为
1.对于该KKT条件对应的最优解 (x∗,λ∗,s∗) 有如下一个性质,
cTx∗=(ATλ∗+s∗)x∗=(Ax∗)Tλ∗=bTλ∗即目标函数转换为 bTλ ,即对偶问题的目标
2.可以证明满足该KKT条件的可行解,就是全局最优解。
对偶问题
原始问题和对偶问题是对称的,并且满足强对偶条件,因此
- 如果原始或者对偶问题有解,则对应问题也有解
- 如果颜色或者对偶问题是无界的,则对应问题则为无解。
在介绍算法之前,有一个比较重要的概念(基矩阵和基础可行解)介绍一下,在后续的介绍中会频繁应用到。
基础可行点,需要满足如下条件
1. 指示集合 B 包含m个下标
2. 当 i∉B⇒xi=0
3. 基矩阵B定义为 B=[Ai],i∈B
单纯形算法的基本策略遍历线性规划问题所有的基础可行解,直到收敛到一个基础最优解上,并且有定理证明当线性规划有界并且有可行解时,肯定会收敛到基础最优解上
定义 N=(1,2,3...)∉B ,则单纯形算法其中一步如下
单纯形算法需要解决如下几个关键点
- 如何选取初始点,主要有两类算法可以求解得到,都是转换线性规划本身进行求解,一是PhaseI 转换为
min eTz, s.t. Ax+Ez=b; (x,z)≥0二是PhaseII 转换为min cTx s.t Ax+z=b,x≥0, 0≥z≥0
2.如何有效表示 xN- 如何计算离开下标
详细的单纯形算法参考各类参考文献。
对于小规模线性规划问题,单纯形算法能很好的解决,但是大规模问题效率比较低,而内点法能够很好的解决该问题。
内点法每一步骤计算比较昂贵但是能够有效的解决最优解。
内点法的主要思路,逐渐寻找满足KKT条件并且最小化某价值函数的解,根据KKT条件有
中心路径在内点法中是一个非常重要的概念,因为每次迭代点都是中心路径的点,中心路径的选取非常关键,参数选择太大或者太小都会影响计算复杂度。
某个点属于中心路径,即 (xτ,λτ,sτ)∈C 则满足
通过本小节的学习,能够了解到
1. 线性规划的基本形式已经原始问题和对偶问题的关系
2. 单纯形和内点法如何求解线性规划问题
详细的单纯形算法网上介绍的非常多,经典的可以参考wiki