首页 > 编程知识 正文

常用的拟牛顿算法,最优化牛顿法实验报告

时间:2023-05-06 19:51:58 阅读:162946 作者:2820

优化理论——衰减醉熏的芒果法算法思想算法步骤代码示例

算法思想

由于实际问题的精确极小点一般不为人所知,初始点的选取给算法的实际操作带来了很大的困难。 为了克服这一困难,引入线搜索技术可以得到大范围收敛的算法,即所谓衰减熏的芒果法。

算法步骤为基于Armijo搜索的阻尼醉熏的芒果法为以下:

代码Matlab代码如下所示。

function [x,val,k]=dampnm(fun,gfun,Hess,x0 ) %功能:减振熏的芒果法求解无约束问题:minf(x ) %输入: x0为初始点,fun,gfun sigma=0.4; k=0; epsilon=1e-5; while(kmaxk ) GK=feval ) gfun,x0 ); %计算梯度GK=feval(hess,x0 ); %计算Hesse阵列dk=-Gkgk; 求解%方程的Gk*dk=-gk、搜索方向if(Norm(GK ) epsilon )、break; end %检测终止标准m=0; mk=0; while(m20 ) %在Armijo搜索中进入步骤if(feval(fun,x0 rho^m*dk ) feval ) fun,x0 ) sigma*rho^m*gk'*dk ) mk=m; 黑; end m=m 1; end x0=x0 rho^mk*dk; k=k 1; endx=x0; val=feval(fun,x ); %gval=Norm(gfun ) x ); 例考虑无约束最优化问题

mInf(x ) 100(x12x2)2) x1 )2 minf(x ) x )=100 ) x_1) x_2) )2 minf(x ) x ) 100(x12x2) ) x1)

此问题还可以正确地求解x=(1,1 ) t,f ) x )=0f ) x )=0f ) x )=0。

fun函数文件:

%目标函数functionf=fun(x ) f=100*(x )1) )2-x ) )2) x )1) )2); gun函数文件:

%梯度functiongf=gfun(x ) gf=[400*x(1)1]*(x )1) ^2-x ) ) (x )-1 )、-200*(x ) (x ) ) ) )

函数he=Hess (x ) n=length(x ) x; he=Zeros(n,n ); he=[1200*x(1) ^2-400*x(1(2) 2,-400*x )1); -400*x(1),200; 接口输入:

x0=[-1.21 ]’; [x,val,k ]=damp nm’fun’,’gfun’,’Hess’,x0]结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。