文档详情

非线性无约束 F-R共轭梯度法.docx

发布:2021-02-05约1.08千字共4页下载文档
文本预览下载声明
PAGE 1 海风与甜橙 非线性无约束 F-R共轭梯度法 海风与甜橙 针对非线性约束问题进行优化,此次用例题来展示F-R共轭剃度法的使用。 目标函数为:f=(x(1))^2+4*(x(2))^2+(x(3))^2-2*(x(1)); 给定初始点为:(1,0,0),终止误差10-4. function [x,val,k]=frcg %功能: 用FR共轭梯度法求解无约束问题: min f(x) %x0是初始点, fun, gfun分别是目标函数和梯度 %输出: x, val分别是近似最优点和最优值, k是迭代次数. x0 =[1,0,0]; maxk=5000; %最大迭代次数 rho=0.6;sigma=0.4; k=0; epsilon=1e-4; n=length(x0); while(kmaxk) g=feval(gfun,x0); %计算梯度 itern=k-(n+1)*floor(k/(n+1)); itern=itern+1; %计算搜索方向 if(itern==1) d=-g; else beta=(g*g)/(g0*g0); d=-g+beta*d0; gd=g*d; if(gd=0.0) d=-g; end end if(norm(g)epsilon), break; end %检验终止条件 m=0; mk=0; while(m20) %Armijo搜索 if(feval(fun,x0+rho^m*d)feval(fun,x0)+sigma*rho^m*g*d) mk=m; break; end m=m+1; end x0=x0+rho^mk*d; val=feval(fun,x0); g0=g; d0=d; k=k+1; end x=x0; val=feval(fun,x); function f=fun(x) f=(x(1))^2+4*(x(2))^2+(x(3))^2-2*(x(1)); function gf=gfun(x) gf=[2*x(1)-2,8*(x(2)), 2*x(3)];
显示全部
相似文档