資源簡介
我的這個程序是基于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
評論
共有 條評論