资源简介
我的这个程序是基于MATLAB的乘子法程序,大家可以相互学习一下
代码片段和文件信息
function [xmulambdaoutput]=multphr(funhfgfdfundhfdgfx0)
maxk=500;
sigma=2.0;
eta=2.0;theta=0.8;
k=0;ink=0;
epsilon=1e-5;
x=x0;
he=feval(hfx);
gi=feval(gfx);
n=length(x);
l=length(he);
m=length(gi);
mu=0.1*ones(11);
lambda=0.1*ones(m1);
btak=10;
btaold=10;
while(btak>epsilon & k [xvik]=bfgs(‘mpsi‘‘dmpsi‘x0funhfgfdfundhfdgfmulambdasigma);
ink=ink+ik;
he=feval(hfx);
gi=feval(gfx);
btak=0.0;
for(i=1:1)btak=btak+he(i)^2;
end
for(i=1:m)
temp=min(gi(i)lambda(i)/sigma);
btak=btak+temp^2;
end
btak=sqrt(btak);
if btak>epsilon
if(k>=2&btak>theta*btaold)
sigma=eta*sigma;
end
for(i=1:1)mu(i)=mu(i)-sigma*he(i);
end
for(i=1
评论
共有 条评论