凸优化问题

一、无约束优化

对于无约束的优化问题,直接令梯度等于0求解。

如果一个函数f是凸函数,那么可以直接通过f(x)的梯度等于0来求得全局极小值点。

 

二、有约束优化

 

 

  • f(x)h(x)g(x)三个函数都是线性函数,则该优化问题称为线性规划。若任意一个是非线性函数,则称为非线性规划
  • 若目标函数为二次函数,约束条件全为线性函数,称为二次规划
  • f(x)为凸函数,g(x)为凸函数,h(x)为线性函数,则该问题称为凸优化。注意这里不等式约束g(x)<=0则要求g(x)为凸函数,若g(x)>=0则要求g(x)为凹函数。

1.只含有等式约束

对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。

(1)优化问题是凸优化

通过下图两个条件求得的解就是极小值点(而且是全局极小)

(2)优化问题不是凸优化

上面两个条件只是极小值点的必要条件,还需要附加多一个正定的条件才能变成充要条件

 

2.只含有不等式约束

对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解。

对于不等式约束g(x)<=0,和等式约束h(x)=0不一样,h(x)=0可以在平面上画出一条等高线,而g(x)<=0是一个区域,很多个等高线堆叠而成的一块区域,我们把这块区域称为可行域。

  • (不考虑可行域限制时的)极小值点落在可行域内(不包含边界)

这个时候可行域的限制不起作用,相当于没有约束,直接f(x)的梯度等于0求解,这个时候g(x)<0(因为落在可行域内)。

  • (不考虑可行域限制时的)极小值点落在可行域外(包含边界)

可行域的限制起作用,极小值点应该落在可行域边界上即g(x)=0,类似于等值约束,此时有g(x)的梯度和f(x)的负梯度同向。

总结以上两种情况,可以构造拉格朗日函数来转换求解问题。

(1)优化问题是凸优化

对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x*就是极小值点。

这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。

特别注意:优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。

 

(2)优化问题不是凸优化

约束问题不是凸优化,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。

不是凸优化的话,还需要附加多一个正定的条件才能变成充要条件,如下图所示

 

 

 3.既有等式约束也有不等式约束

 

 

 4.凸优化的应用

 

 

 

 

 

 

 

参考文献:

【1】Lagrange Multipliers and the Karush-Kuhn-Tucker conditions

【2】拉格朗日对偶性

posted @   nxf_rabbit75  阅读(3285)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
一、无约束优化二、有约束优化1.只含有等式约束(1)优化问题是凸优化(2)优化问题不是凸优化2.只含有不等式约束(1)优化问题是凸优化(2)优化问题不是凸优化 3.既有等式约束也有不等式约束 4.凸优化的应用
点击右上角即可分享
微信分享提示