有约束的优化问题求解——Karush-Kuhn-Tucker (KKT)条件
前言:由于本科学习的数理知识较为基础,没有涉及到优化问题相关知识,在遇到优化问题时,满脸问号这是个啥子嘞?相信很多小伙伴也有和我一样的感受。在网上一顿神搜索,又查阅了相关的书籍,终于有了一点感悟。由于网上相关的知识较为零碎,我将其整理了一下,一是作为学习笔记,二是方便后面的小伙伴们学习。
Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将Lagrange乘数法(Lagrange multipliers)所处理涉及等式的约束优化问题推广至不等式。在实际应用上,KKT条件(方程组)一般不存在代数解,许多优化算法可供数值计算选用。
1.等式约束优化问题
给定一个目标函数,在满足约束条件的前提下,使得目标函数有最小值。这个约束优化问题记为:
此时Lagrange乘数法是等式约束优化问题的典型解法,定义Lagrangian函数为
Lagrange乘数法将原本的约束优化问题转换成等价的无约束优化问题:
最优解的必要条件:
求解以上n+1个方程组,可得到在约束条件下的目标函数的最优解以及乘子的值。
2.不等式约束优化问题
接下来我们将约束等式推广到不等式的条件下,可得到新的问题:
约束不等式称为原始可行性(primal feasibility),为满足约束条件的最佳解,分开两种情况讨论:
这两种情况的最佳解具有不同的必要条件。
整合上述两种情况,最佳解的必要条件包括Lagrangian函数的定常方程式、原始可行性、对偶可行性,以及互补松弛性。
KKT条件包括:
3.不等式约束与等式约束的优化问题
对于上面的等式约束结果与不等式约束结果可推广至多个约束等式与约束不等式的情况。考虑标准约束优化问题(或称非线性规划):
定义Lagrangian 函数:
则KKT条件包括:
4.对于求最大值的情况补充
由于最优化问题的标准形式是以目标函数的最小值形式,如果要求目标函数的最大值时,需要做一点变换。
无论求最大值和最小值都需要引入拉格朗日乘子,求最小值时把约束条件写成小于等于0的形式,求最大值时把约束条件写成大于等于0的形式。在对于求解约束条件是变量的正负数约束的一类问题,可以不需要引入拉格朗日乘子,直接用KKT条件进行求解。例如:
求解目标函数最大值,即KKT条件为:
5.具体算例
考虑这个问题:
经过以上的整理以及算例分析,相信小伙伴们都可以很好的理解KKT条件啦。
6.参考
部分内容转载来自:https://zhuanlan.zhihu.com/p/38163970
李学文 闫桂峰 李庆娜:《最优化方法》
有约束的优化问题求解——Karush-Kuhn-Tucker (KKT)条件相关推荐
- KKT条件(Karush–Kuhn–Tucker conditions)
在约束最优化问题中,常常利用有条件的拉格朗日乘子法,进而一步步推导KKT条件. 1.最优化条件和下降搜索 给定一个多变量可微函数 ,是的局部最小值,这时有 如果,就存在使得 (对这边做个解释:因为是局 ...
- KKT condition --- Karush–Kuhn–Tucker conditions
有关KKT条件,一直都看的云里雾里,但是还是很好奇其内在的逻辑,最后花时间整理了一下,有不足之处请指正. 有关原问题和对偶问题的转化知乎回答解释的更详细. 正文开始之前,介绍一些概念 Duality, ...
- 数学基础(五)最优化理论(最优化,无约束,有约束,拉格朗日乘子的意义,KKT条件)
目录 一.无约束优化 1.梯度下降法 2.牛顿法 二.有约束优化 1.约束为等式 2.约束为不等式 一.无约束优化 无约束优化问题十分普遍,如梯度下降法.牛顿法就是无约束的优化算法. 像最小二乘法.极 ...
- SLAM Cartographer(18)后端优化问题求解器
SLAM Cartographer(18)后端优化问题求解器 1. 全局优化 2. 提供数据 3. 后端优化器 4. 求解过程 4.1. 定义优化问题 4.1.1. 子图全局位姿 4.1.2. 节点全 ...
- UA MATH575B 数值分析下IV 带约束的优化
UA MATH575B 数值分析下IV 带约束的优化问题 带等式约束的优化问题 带不等式约束的优化问题 同时带等式约束与不等式约束的优化问题 今天不想敲公式,就不写理论了,反正方法也就是前面的Newt ...
- 交通物流模型 | Python建模实现动态交通分配优化问题求解
文章目录 效果一览 文章概述 研究内容 程序设计 参考资料 效果一览 文章概述 交通物流模型 | Pyomo建模框架实现动态交通分配优化问题求解,DTA 交通分配问题通常需要考虑许多因素,例如道路容量 ...
- SLAM编程:优化问题求解(1)_程序设计
SLAM编程:优化问题求解(1)_程序设计 前言 一.大量的问题都是优化问题 二.如何以朴素理论手写优化问题的程序 1.程序总体设计 2.编写大循环:更新参数并输出信息 3.编写小循环:前向传播,计算 ...
- KKT条件和二阶条件和凸度优化(六)
KKT要点和备注 KKT条件是一般约束优化问题的一阶必要条件(FONC). KKT条件统一了所有以前研究过的FONC. 满足KKT条件的IA(可行)点称为KKT点,无论它是否满足CQ. KKT点是局部 ...
- 【凸优化】关于 KKT 条件 及其最优性
拉格朗日对偶 对于一个标准形式的优化问题, 我们可以写为: minimize f 0 ( x ) subject to f i ( x ) ⩽ 0 , i = 1 , ⋯ , m h i ( x ...
最新文章
- 论文返修与校对的经验教训
- linux avahi-daemon进程 网络服务 简介
- python 函数参数类型检查
- 微服务实战(四):服务发现的可行方案以及实践案例
- Automatic Judge 模拟
- 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
- 国内企业应如何实施ITSM
- 理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤
- linux 下的gettimeofday 函数在windows上的替换方案
- 【Java从入门到天黑|06】高质量男性SpringBoot入门及原理(基础总结版,强烈建议收藏)
- select into from和insert into select
- 【分享】WeX5的正确打开方式(5)——绑定机制
- 权限细粒度管理(转)
- DFN-LOW算法---割点、桥、强连通分量
- hive窗口函数和hive基础使用
- 台式计算机不用鼠标怎么关机,没有鼠标怎么关机
- 212.样本量和测序深度的Alpha多样性稀释曲线
- 【Spark】Graphx用例(Java)
- 阿里云轻量级云服务器部署Java项目
- Android开发常用代码
热门文章
- JupyterLab 格式化代码插件
- Robotaxi卡位战背后:滴滴的资本焦虑与技术沟壑
- Java微服务学习路线,启发学习思路,不要死磕
- hdu 3509 Buge's Fibonacci Number Problem(矩阵乘法+二项式)
- 浅析P2P:两个没有公网IP的终端如何进行通信?
- 六度分离 ——最短路
- [附源码]Java计算机毕业设计SSM房地产销售系统
- Excel如何直接应用主题效果美化工作表
- 浅析区块链应用系统——区块链追踪溯源应用
- 深圳大学计算机科学,深圳大学计算机科学与技术-深圳大学计算机与软件学院.PDF...