拉格朗日乘子法、KKT条件、线性规划对偶理论
来源:互联网 发布:js禁止鼠标点击事件 编辑:程序博客网 时间:2024/05/16 17:13
转自:http://blog.csdn.net/Mr_KkTian/article/details/53750424
本文主要讲述给定一个线性规划,我们为什么能按照对偶规则,机械地并且非常容易地写出其对偶。当然为便于理解,本文先介绍了什么是拉格朗日乘子法、
1.优化问题常见类型
通常我们需要求解的最优化问题有如下3类:
(i) 没有约束条件:
(ii) 有等式约束的优化问题,可以写为:
(iii) 再加入不等式约束的优化问题,可以写为
对于第(i)类的优化问题,我们先求取f(x)的导数,然后令导函数为零,可以求得候选极大值或极小值,再在这些值中选取最优解;如果是凸函数,可以保证是最优解。
2.拉格朗日乘子法
对于上面第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束
我们考虑下面问题:
我们首先画出函数
我们的目标就是要字
我们知道这个目标点的切线与函数
于是我们构造函数:
求解它的最优解就等价于求原带约束的优化问题的最优解。
3. KKT条件(Karush Kuhn Tucker)
KKT条件其实可以看成是拉格朗日乘子法的进一步推广。对于上面第(iii)类的优化问题,如何求取最优值呢?常用的方法是KKT条件。我们看下面带不等式约束的优化问题:
我们的目标是在下图中阴影去或者边界找到一个点使得目标函数值最小。
要求 g(x, y) ≤ 0,也就是是说图中的阴影区我们是要在阴影区或者边界上找一个点,使得 f(x, y) 最小,我们把他分成两种情况:
1. 如果最优解恰好在这条边界上,那么这个就可以通过拉格朗日来求解。
2. 如果最优解在阴影区内部,我们是要找最优解,这个最优解不在边界上,在他内部,如果在内部那这个解一定是单纯考虑 f(x, y) 的最优解,也就是直接求
我们写出拉格朗日函数如下:
我们将上述最优解情况1和2统一表出成,在最优解
4.从广义拉格朗日(KKT)到线性规划对偶(优化对偶理论)
对于给定的一个LP模型:
我们写出其拉格朗日函数:
当
现在我们定义拉格朗日对偶函数如下:
式(1)则可写成:
现在我们给出任意一个
现在我们去求解原问题目标函数
线性规划中的对偶问题写法就是用
4.线性规划原问题与对偶问题
画出原函数、拉格朗日函数、对偶函数图如下:我们可以知道 原先要 min 的目标函数大于等于拉格朗日,拉格朗日大于等于 对偶目标函数,也就是说
对偶性质总结:
(1).对偶的对偶就是原问题
(2).对于一般问题,对偶问题的任意一个可行解总是原问题的一个下界,也叫弱对偶性
(3).对于线性规划,原问题的存在最优解,那对偶问题也存在一个最优解,它们的数值相等,也叫强对偶性
(4).互补松弛性:假如 x 是原问题的可行解, y 为对偶问题的可行解,那么 x 和 y 是最优解时,当且仅当:
•
•
- 拉格朗日乘子法、KKT条件、线性规划对偶理论
- 深度理解拉格朗日乘子法、KKT条件与线性规划对偶理论的微妙关系(未完)
- 拉格朗日乘子法、KKT条件、拉格朗日对偶性
- 拉格朗日乘子法、KKT条件、拉格朗日对偶性
- 对偶和KKT条件
- 线性规划中的对偶理论
- 从对偶问题到KKT条件
- ML—拉格朗日对偶和KKT条件
- 拉格朗日对偶问题与KKT条件
- SVM的kkt条件和对偶问题。
- 人工智能里的数学修炼 | 约束问题的优化求解:拉格朗日乘子法、KKT条件与对偶问题
- 最优化理论与KKT条件
- 最优化理论与KKT条件
- 最优化理论与KKT条件
- 最优化理论与KKT条件
- 最优化理论与KKT条件
- 拉格朗日对偶和KKT条件(Karush-Kuhn-Tucker)
- 拉格朗日乘子法和KKT条件
- Python的绝对路径和相对路径
- 【BZOJ1084】最大子矩阵(动态规划)
- 使用Scanner时的一个注意事项
- 将全志R16平台上的MIPI屏迁移到全志R40平台上(草稿)
- Python的Socket
- 拉格朗日乘子法、KKT条件、线性规划对偶理论
- JAVA内存分配分析/栈内存、堆内存
- [OS] Shell脚本
- Linux下设置环境变量
- LVM原理及PV、VG、LV、PE、LE关系图
- bzoj1567[JSOI2008]Blue Mary的战役地图 二分+矩阵hash
- Lua汇总
- MVP简单登录实现
- ValueError: Input contains NaN, infinity or a value too large for dtype('float32').