满意答案

kide754861
2013.07.11

采纳率:46% 等级:11
已帮助:5599人
function x=Porjection()
clc
sigama=0.5;
gama=0.8;
x0=[10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 0 0 0 0 0 0 0 0];
x=x0;
fun(x)
z=max_fun(x);
r=(x-z);
t=1;
while norm(r)>1e-3
norm(r)
m=0;
f=fun(x);
xx=x-gama^m*r;
ff=fun(xx);
while sum((f-ff).*r)>sigama*norm(r)^2
m=m+1;
xx=x-gama^m*r;
ff=fun(xx);
if m>200
m;
break;
end
end
yita=gama^m;
y=(1-yita)*x+yita*z;
d=-(yita*r-yita*fun(x)+fun(y));
alfa=yita*sum(r.*(r-fun(x)+fun(y)))/(norm(d)^2);
x=max(0,x+alfa*d);
z=max_fun(x);
r=(x-z);
t=t+1;
end
function z=max_fun(x)
f=fun(x);
xx=x-f;
z=max(xx,0);
10分享举报
本文介绍了一种名为Projection的函数,通过迭代更新和投影操作,求解目标函数的最大值。算法利用梯度下降和投影技巧,逐步逼近最优解,适用于优化问题的求解。关键步骤包括线性搜索、梯度方向调整和目标函数更新。

381

被折叠的 条评论
为什么被折叠?



