最优化算法C++实现:ADMM

背景

Alternating Direction Method of Multipliers(ADMM)是这门课老师说的对我们最重要的算法,所以需要特别掌握。
计划使用ADMM算法解决1d Fused LASSO问题。

内容

这个写的最好凸优化|笔记整理(B)——再看交替方向乘子法(ADMM),Frank-Wolfe方法
ADMM优化算法(附MATLAB代码)
分布式计算、统计学习与ADMM算法

ADMM算法解Fused LASSO问题

下面是我自己做的笔记:
----18

----19

C++实现

实现代码链接:
https://github.com/yufeiran/ConvexOptimization/tree/main/ConvexOptimization/1dFussedLassoUseADMM

实现效果

ρ取0.3,λ取0.3时的效果如下图所示,虽然可以拟合一个比较平滑的曲线,但是对比课件中的算法感觉还是有差距,我推测是由于我的数值计算没有经过特殊处理,全都是用C++的double默认计算。

QQ--20221127223325
课件中的效果:
QQ--20221127222926

展示评论