osqp的原理ADMM(交替方向乘子法)理解

本文介绍了乘子法,先阐述外罚函数法的思想、缺点,引出乘子法。接着重点讲解ADMM乘子法,包括定义举例、具体例子及Matlab求解代码和结果,还介绍了ADMM的缩放形式,最后探讨其作为分布式优化算法解耦合决策变量的方案。

1. 乘子法

1.1 外罚函数法

下面感谢和借用中山大学谢亮教授的一个最优化理论课程进行说明,链接在文末~
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述外罚函数主要思想:引入一个罚函数项,当其在可行域范围内时为0,即不影响,但如果超出可行域,则罚函数会很大,使得其倾向于往可行域方向前进。
缺点:如果一开始起点不在可行域内,最终的解也是不在可行域范围内的,这在实际情况不允许。另外,存在的问题就是罚参数 σ \sigma σ的取值问题,它需要取的很大,但是这样会导致增广目标函数 P ( x , σ k ) P(x,\sigma_{k}) P(x,σk)趋于病态,由此,乘子法被提出解决该问题。

1.2 乘子法

在这里插入图片描述

2.ADMM乘子法

2.1 定义举例:

考虑以下问题:
Reference:
其对应的增强拉格朗日函数(augmented Lagrangian)为:
在这里插入图片描述
重点来了,交替求解原始变量 x 1 , x 2 x_{1},x{2} x1,x2和对偶变量 ν \nu ν.
在这里插入图片描述
要注意的是对偶变量要在原始变量更新后更新。

2.2 具体例子和求解代码

下面感谢和参考一篇博客的例子和代码,链接放在文末~

2.2.1 具体例子

在这里插入图片描述

2.2.2 Matlab求解代码

其中关于 x 和 y的更新过程需要结合具体的下降类算法,如梯度下降算法等,这里采用matlab自带的quadprog算法,而对于不等式的处理,用到了内点法。

% 求解下面的最小化问题:
% min_{
   
   x,y} (x-1)^2 + (y-2)^2
% s.t. 0 \leq x \leq 3
%      1 \leq y \leq 4
%      2x + 3y = 5

% augumented lagrangian function:
% L_{
   
   rho}(x,y,lambda) = (x-1)^2 + (y-2)^2 + lambda*(2x + 3y -5) + rho/2(2x + 3y -5)^2
% solve x  min f(x) = (x-1)^2 +  lambda*(2x + 3y -5) + rho/2(2x + 3y -5)^2,s.t. 0<= x <=3
% solve y  min f(y) = (y-2)^2 + lambda*(2x + 3y -5) + rho/2(2x + 3y -5)^2, s.t. 1<= y 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值