资源简介
ADMM算法是机器学习中比较广泛使用的约束问题最优化方法。本程序实现了ADMM求解优化问题的代码。
代码片段和文件信息
function []=ADMM(x0)%x0 is an initial vector
maxk=100;
k=0;
yita=1;
A=[20.25;0.250.2];
hl=plotfun(x0);
%x0=zeros(12);
y=zeros(21);
z=zeros(21);
x1=[x0(1)]; x2=[x0(2)];
eps=1e-10;
while(k x0=f(yitayz);
z=proximalfun(x0yitay);
y=y+yita*(x0-z);
x1=[x1;x0(1)];
x2=[x2;x0(2)];
set(hl‘xdata‘x1‘ydata‘x2);
if k~=0 && norm(fun1(x0)-fun1(xpre)) break;
end;
xpre=x0;
k=k+1;
end
plotobj(x1x2);
val=fun1(x0)
x0
k
end
%%
function [xnew]=f(yitayz)
A=[20.25;0.250.2];
b=[0.5;0.5];
c=-1.5;
x=(zeros(12)-y‘+z‘/yita-b‘)*inv(A+(1/yita)*eye(2));
xnew=x‘;
end
%%
function [znew]=proximalfun(xyitay)
n=length(x);
znew=[];
for i=1:n
if yita*y(i)+x(i)-0.2*yita>0
z(i)=yita*y(i)+x(i)-0.2*yi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1760 2016-07-06 00:12 ADMM.m
----------- --------- ---------- ----- ----
1760 1
评论
共有 条评论