共轭梯度算法分析与实现

上传人:cl****1 文档编号:464314742 上传时间:2022-09-26 格式:DOC 页数:12 大小:286KB
返回 下载 相关 举报
共轭梯度算法分析与实现_第1页
第1页 / 共12页
共轭梯度算法分析与实现_第2页
第2页 / 共12页
共轭梯度算法分析与实现_第3页
第3页 / 共12页
共轭梯度算法分析与实现_第4页
第4页 / 共12页
共轭梯度算法分析与实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《共轭梯度算法分析与实现》由会员分享,可在线阅读,更多相关《共轭梯度算法分析与实现(12页珍藏版)》请在金锄头文库上搜索。

1、编号:_ 09 最 优 化 方 法课 程 设 计题 目: 共轭梯度算法分析与实现 院 系: 数学与计算科学学院 专 业: 数学与应用数学 姓名学号: 指导教师: 日 期: 2013 年 12 月 23 日摘 要在最优化计算中,共轭梯度法是非常重要的一种方法。共轭梯度法是一种改进的最速下降法,介于最速下降法与牛顿法之间的一种无约束优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它利用目标函数的梯度逐步产生共轭方向并将其作为搜索方向的方法,收敛速度快。共轭梯度法仅需利用一阶导数信息,避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,具有二次终止性。关键词:共轭梯度法;牛顿法;二次函

2、数;无约束优化 AbstractIn the calculation of optimization method, conjugate gradient method is a very important one. The conjugate gradient method is a unconstrained optimization method between the steepest descent method and Newton method, and sove the objective function for the original quadratic functio

3、n problems and design for a class of algorithm. Conjugate gradient method using only first derivative information, to avoid the Newton method requires storage and computing the inverse Hesse matrix and shortcomings, this method has the quadratic termination.Keywords: Conjugate gradient method; Newto

4、n method;Unconstrained optimization目 录1、引言12、共轭梯度算法的描述12.1 无约束优化问题概述12.2 共轭方向12.3 共轭梯度法22.4 共轭梯度算法的步骤23、数值实验23.1 代码实现23.2 算法测试33.3 结果分析54、算法比较54.1 最速下降法描述64. 最速下降方向64.1.2 最速下降法64.2 最速下降法实现64.3 最速下降法测试7共轭梯度法与最速下降法比较85、总结85.1 总结概括85.2 个人感言96、参考文献:91、引言共轭梯度法最早是由Hesternes和Stiefle(1952)提出来的,用于解正定系数矩阵的线性方

5、程组,在这个基础上,Fletcher和Reeves(1964)首先提出了解非线性最优化问题的共轭梯度法。在各种优化算法中,共轭梯度法(Conjugate Gradient)是非常重要的一种。是一种介于最速下降法与牛顿法之间的优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。可微的非二次函数在极小点附近的形态近似于二次函数,因此共轭梯度法也能用于求可微的非二次函数的无约束极小问题。共轭

6、梯度法是一个典型的共轭方向法,它在共轭方向法基础上增加了一些性质:计算当前方向计算当前方向只需用到前一方向,对其他方向则无要求;计算出来的当前方向自动与前面所有方向共轭,因此,不需耗费大量内存存储所有方向,也节省了计算时间。2、共轭梯度法的描述 无约束优化问题概述一个非线性规划问题的自变量x没有任何约束,或说可行域既是整个n维向量空间:,称这样的非线性规划问题为无约束问题:或共轭方向无约束问题最优化方法的核心问题是选择搜索方向。以正定二次函数为例,来观察两个方向关于矩阵共轭的几何意义。设有二次函数:f(x)=1/2(x-x*)TA(x-x*),其中A是nn对称正定矩阵,x*是一个定点,函数f(

7、x)的等值面1/2(x-x*)TA(x-x*)=c是以x*为中心的椭球面,由于f(x*)=A(x-x*)=0,A正定,因此x*是f(x)的极小点。设x(1)是在某个等值面上的一点,该等值面在点x(1)处的法向量f(x(1)=A(x(1)-x*)。又设d(1)是这个等值面在d(1)处的一个切向量。记作d(2)=x*-x(1)。自然,d(1)与f(x(1)正交,即d(1)Tf(x(1)=0,因此有d(1)TAd(2)=0,即等值面上一点处的切向量与由这一点指向极小点的向量关于A共轭。2.3共轭梯度法共轭梯度法是最著名的共轭方向法,它首先由Hestenes和Stiefel(1952)提出来作为解线性

8、方程组的方法。由于解线性方程组等价于极小化一个正定二次函数,故1964年Fletcher和Reeves提出了无约束极小化的共轭梯度法,它是直接从Hestenes和Stiefel解线性方程组的共轭梯度法发展而来的。共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭方向的基本性质,这种方法具有二次终止性。共轭梯度法就是使得最速下降方向具有共轭性,从而提高算法的有效性和可靠性。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。2.4 共轭梯度算法

9、的步骤 共轭梯度算法步骤如下:Step1 给定迭代精度和初始点.计算.令.Step2 若,停算,输出.Step3 计算搜索方向:其中当时,确定.Step4 利用精确(或非精确)线搜索方法确定搜索步长.Step5 令,并计算.Step6 令,转步Step1. 3、数值实验 代码实现共轭梯度法的Matlab程序如下:分别新建Conjugate_Gradient_Method.m、grad_obj.m、line_search.m、obj.m文件Conjugate_Gradient_Method.m文件如下:function x,iter,val = Conjugate_Gradient_Method

10、(x,eps)k = 0;x_mat(:,1) = x;%存储每一次迭代得到的点xx_old = x;dy_old = grad_obj(x_old);d_old = -dy_old;while norm(dy_old)eps lambda = line_search(x_old,d_old);%步长 x_new = x_old + lambda*d_old; dy_new = grad_obj(x_new); coef = norm(dy_new)/norm(dy_old); d_new = -dy_new + coef2*d_old; % 搜索方向 k = k + 1; x_old = x

11、_new; dy_old = dy_new; d_old = d_new; x_mat(:,k) = x_new; %防止死循环 if k 100 break; endend x = x_new;%目标函数极值点iter = k;%迭代次数val = obj(x_new);%目标函数在极值点处的函数值endline_search.m文件如下:function lambda = line_search(xk,dk)%作线搜索,求步长%phi(lambda) = obj( xk + lambda*dk )%d_phi(lambda) = dk*grad_obj( xk + lambda*dk )s

12、yms eqn lambdaeqn = dk*grad_obj(xk+lambda*dk);lambda = solve(eqn); %用符号计算命令solve求方程d_phi(lambda)=0的根lambda = eval(lambda);%将符号计算的结果转化为数值类型end 算法测试我们通过求解两个无约束优化问题来验证算法的稳定性和准确性。问题一:求解无约束优化问题,该问题的有精确解。问题二:找出如下方程的极小值点:其中初始点为obj.m文件function y = obj(x)%目标函数 y = 3*x(1).2/2+x(2).2/2-x(1).*x(2)-2*x(1);%问题一目标

13、函数 %y = x(1).2-2*x(1).*x(2)+4*x(2).2 + x(1)- 3*x(2);%问题二目标函数endgrad_obj.m文件如下function dy = grad_obj(x)%目标函数的梯度dy = 3*x(1)-x(2)-2; x(2)-x(1);%问题一目标函数的梯度%dy = 2*x(1) - 2*x(2) + 1; -2*x(1) + 8*x(2) - 3;%问题二目标函数的梯度end结果如下:问题一:问题二: 结果分析共轭梯度法是一种很有效求解无约束优化的方法,共轭梯度法是根据共轭方向去搜索,可以由较快的收敛速度找到最优解求得极小值,并且计算结果比较稳定

14、,误差在忽略范围内。4、算法比较 最速下降法的描述 最速下降方向函数f(x)在点x处沿方向d的变化率可用方向导数来表示。对于可微函数,方向导数等于梯度与方向的内积,即:Df(x;d)=f(x)Td,因此,求函数f(x)在点x处的下降最快的方向,可归结为求解下列非线性规划:minf(x)Tds.t.|d|1当d=-f(x)/|f(x)|时等号成立。因此,在点x处沿上式所定义的方向变化率最小,即负梯度方向为最速下降方向。最速下降法最速下降法又称为梯度法,是1847 年由著名数学家Cauchy 给出的,它是解析法中最古老的一种,其他解析方法或是它的变形,或是受它的启发而得到的,因此它是最优化方法的基础。作为一种基本的算法,他在最优化方法中占有重要地位。其优点是工作量少,存储变量较少,初始点要求不高;缺点是收敛慢,效率不高,有时达不到最优解。非线性规划研究的对象是非线性函数的数值最优化问题。它的理论和方法渗透到许多方面,特别是在军事、经济、管理、生产过程自动化、工程设计和产品优化设计等方面都有着重要的应用。而最速下降法正是n元函

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号