考虑约束最优化问题:
minf(x)s.t.ci(x)≤0,i=1,2,...,l,hi(x)=0,i=l+1,l+2,...,n
拉格朗日化后为:
ΔL(x,→λ)=ΔL(x,λ1,λ2,⋯,λn)=Δ(f(x,y)+l∑i=1λici(x)+n∑i=l+1λihi(x))=0,s.t.∀i∈{1,2,...,l},λi≥0
该拉格朗日函数为:
L(x,→λ)=f(x)+l∑i=1λici(x)+n∑i=l+1λihi(x),∀i∈{1,2,...,l},λi≥0
因为∀i∈{1,2,⋯,l},ci(x)≤0,λi≥0;∀i∈{l+1,l+2,⋯,n},hi(x)=0,所以:
L(x,→λ)=f(x)+l∑i=1λici(x)+n∑i=l+1λihi(x)≤f(x)
就是说:对任意的x,
拉格朗日函数都不大于原函数
那么,
拉格朗日函数的最小值肯定不大于原函数的最小值
则有:
min(L(x,→λ))≤min(f(x))
于是,我们把拉格朗日的对偶函数定义为:
g(→λ)=min(L(x,→λ))=min(f(x)+l∑i=1λici(x)+n∑i=l+1λihi(x))
函数
g的意义为:
对于每一个→λ,找到一个x,使得函数L(x,→λ)最小
现在,让我们看看拉格朗日对偶函数的凹性质:
函数
g(→λ)可以写成如下形式:
g(→λ)=min(f(x)+l∑i=1λici(x)+n∑i=l+1λihi(x))=min(f(x)+[c1(x)c2(x)⋯cl(x)hl+1(x)hl+2(x)⋯hn(x)]⋅[λ1λ2⋯λn])
其中,
f(x)∈R,∀i∈{1,2,⋯,l},ci(x)≤R,∀i∈{l+1,l+2,⋯,n},hi(x)=0
就是说,
k(→λ)=[→c(x);→h(x)]⋅→λ是一个超平面(类似于
2⋅x,前面的‘;’表示拼接两个向量),
[→c(x);→h(x)]就是一个超平面的系数。那么说明:
对于任意的x,[→c(x);→h(x)]⋅→λ对应一个不同的超平面。
让我们来看二维平面中的几个'超平面':(在下图中,
[→c(x);→h(x)]分别对应‘超平面’的系数,
→λ为点
(x,y))
三维空间中的几个‘超平面’
|
左图在点(-5-5)处往上掰看的视图
|
从图中可以看到,不同的超平面相交后,如果我们对于一个→λ,取,使函数k(→λ),最小的值,那么可以看到:
最终的取值面接近一个倒扣着的碗
也就是说:
min([→c(x);→h(x)]⋅→λ)是凹的。
从而:
g(→λ)=min(f(x)+l∑i=1λici(x)+n∑i=l+1λihi(x))=min(f(x)+[c1(x)c2(x)⋯cl(x)hl+1(x)hl+2(x)⋯hn(x)]⋅[λ1λ2⋯λn])是凹的。
以下是上述图形的matlab代码:
x = linspace(-5,5,100);
y = linspace(-5,5,100);
[x,y]=meshgrid(x,y);
z1 = x.*2+y.*3;
z2 = x.*4+y.*2;
z3 = x.*(-2)+y.*6;
z4 = x.*(-3)+y.*(-3);
surf(x,y,z1);hold on;surf(x,y,z2);hold on;surf(x,y,z3);surf(x,y,z4);
hold on; legend('z=2x+3y','z=4x+2y','z=-2x+6y','z=-3x-3y');
参考文献:
如何理解拉格朗日对偶函数_PandaRELEASE的博客(上图的工作源自此文章的对对偶函数的解释)
凸优化中的对偶问题与共轭函数(对对偶函数的定义来自此文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话