次梯度方法求解拉格朗日对偶问题

次梯度方法求解拉格朗日对偶问题
搬运-拉格朗日对偶问题的次梯度求解方法

clc
clear all
%用次梯度法求解x(1)^2+x(2)^2的最小值,约束条件为:2*x(1)+x(2)<=-4
% 作者:上海交通大学 徐祥
lambda=0;
x0=[0 0];
for n=1:20
warning('off');
f=@(x)x(1)^2+x(2)^2+lambda*(2*x(1)+x(2)+4);
options=optimset('Gradobj','off');
x=fminunc(f,x0,options);
rho=0.8^n;
lambda=lambda+rho*(2*x(1)+x(2)+4);  
n=n+1;
end
[x,f]=fminunc(f,x0,options)

你可能感兴趣的:(matlab)