📄 wolfe.m
字号:
function [alphak]=Wolfe(X_k,dk,Fml,G,S,Lambda_Y,Lambda_X,Beta,Gamma,Phi,Psi,Theta_epsilon,Theta_delta)
rho=0.2;deta=0.4; alpha1=0;alpha2=3; alpha=1.2;
xk1=X_k;
d=dk;
fk1=Fml;
gk1=G;
i=0;
while 1
i=i+1;
xk2=xk1+alpha*d;
[Lambda_Y1,Lambda_X1,Beta1,Gamma1,Phi1,Psi1,Theta_epsilon1,Theta_delta1]=X_Update(xk2,Lambda_Y,Lambda_X,Beta,Gamma,Phi,Psi,Theta_epsilon,Theta_delta);
fk2=FunValue(S,Lambda_Y1,Lambda_X1,Beta1,Gamma1,Phi1,Psi1,Theta_epsilon1,Theta_delta1);
gk2=G_Update(S,Lambda_Y1,Lambda_X1,Beta1,Gamma1,Phi1,Psi1,Theta_epsilon1,Theta_delta1);
if fk2-fk1>rho*alpha*(gk1'*d)
alphap=alpha1+0.5*(alpha-alpha1)/(1+(fk1-fk2)/((alpha-alpha1)*gk1'*d));
alpha2=alpha;
alpha=alphap;
elseif gk2'*d>=deta*gk1'*d
alphak=alpha;
break;
else
alphap=alpha+(alpha-alpha1)*gk2'*d/(gk1'*d-gk2'*d);
alpha1=alpha;
fk1=fk2;
gk1=gk2;
alpha=alphap;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -