目录
1. 乘子法
1.1 外罚函数法
下面感谢和借用中山大学谢亮教授的一个最优化理论课程进行说明,链接在文末~


外罚函数主要思想:引入一个罚函数项,当其在可行域范围内时为0,即不影响,但如果超出可行域,则罚函数会很大,使得其倾向于往可行域方向前进。
缺点:如果一开始起点不在可行域内,最终的解也是不在可行域范围内的,这在实际情况不允许。另外,存在的问题就是罚参数 σ \sigma σ的取值问题,它需要取的很大,但是这样会导致增广目标函数 P ( x , σ k ) P(x,\sigma_{k}) P(x,σk)趋于病态,由此,乘子法被提出解决该问题。
1.2 乘子法

2.ADMM乘子法
2.1 定义举例:
考虑以下问题:

其对应的增强拉格朗日函数(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

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





