共轭梯度算法分析与实现_第1页
共轭梯度算法分析与实现_第2页
共轭梯度算法分析与实现_第3页
共轭梯度算法分析与实现_第4页
共轭梯度算法分析与实现_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 functio

3、n for the original quadratic function 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.Keywor

4、ds: Conjugate gradient method; Newton method;Unconstrained optimization目目 录录1、引言引言.12、共轭梯度算法的描述共轭梯度算法的描述.12.1 无约束优化问题概述.12.2 共轭方向.12.3 共轭梯度法.22.4 共轭梯度算法的步骤.23、数值实验数值实验.23.1 代码实现.23.2 算法测试.33.3 结果分析.54、算法比较算法比较.54.1 最速下降法描述.64.1.1 最速下降方向.64.1.2 最速下降法.64.2 最速下降法实现.64.3 最速下降法测试.74.4 共轭梯度法与最速下降法比较.85、总结

5、总结.85.1 总结概括.85.2 个人感言.96、参考文献、参考文献:.9最优化方法课程设计11 1、引言引言共轭梯度法最早是由 Hesternes 和 Stiefle(1952)提出来的,用于解正定系数矩阵的线性方程组,在这个基础上,Fletcher 和 Reeves(1964)首先提出了解非线性最优化问题的共轭梯度法。在各种优化算法中,共轭梯度法(Conjugate Gradient)是非常重要的一种。是一种介于最速下降法与牛顿法之间的优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算 Hess

6、e 矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。可微的非二次函数在极小点附近的形态近似于二次函数,因此共轭梯度法也能用于求可微的非二次函数的无约束极小问题。共轭梯度法是一个典型的共轭方向法,它在共轭方向法基础上增加了一些性质:计算当前方向计算当前方向只需用到前一方向,对其他方向则无要求;计算出来的当前方向自动与前面所有方向共轭,因此,不需耗费大量内存存储所有方向,也节省了计算时间。2 2、共轭梯度法的描述共轭梯度法的描述2.1 无约束优化问题概述无约束优化问题概述一个非线性规划问题的自变量 x 没有任何约束,或说可行域既是整个

7、n 维向量空间:,称这样的非线性规划问题为无约束问题:rnx 或)(minxf)(minxfRnx2.2 共轭方向共轭方向无约束问题最优化方法的核心问题是选择搜索方向。以正定二次函数为例,来观察两个方向关于矩阵共轭的几何意义。设有二次函数:f(x) = 1/2 (x - x*)TA(x - x*) ,其中 A 是 nn 对称正定矩阵,x*是一个定点,函数 f(x)的等值面1/2 (x - x*)TA(x - x*) = c是以 x*为中心的椭球面,由于f(x*) = A(x - x*) = 0,A 正定,因此 x*是 f(x)的极小点。设 x(1)是在某个等值面上的一点,该等值面在点 x(1)

8、处的法向量f(x(1) = A(x(1) - x*)。又设 d(1)是这个等值面在 d(1)处的一个切向量。记作最优化方法课程设计2d(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)提出来作为解线性方程组的方法。由于解线性方程组等价于极小化一个正定二次函数,故 1964 年 Fletcher 和 Reeves 提出了无约束极小

9、化的共轭梯度法,它是直接从 Hestenes 和 Stiefel 解线性方程组的共轭梯度法发展而来的。共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭方向的基本性质,这种方法具有二次终止性。共轭梯度法就是使得最速下降方向具有共轭性,从而提高算法的有效性和可靠性。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。2.4 共轭梯度算法的步骤共轭梯度算法的步骤 共轭梯度算法步骤如下:Step1 给定迭代精度和初始点.计算.令.100 x)(00

10、 xfg0 :kStep2 若,停算,输出.kgkxx *Step3 计算搜索方向:kd1, , 0 ,11kdgkgdkkkkk其中当时,确定.1k111kTkkTkkgggg1kStep4 利用精确(或非精确)线搜索方法确定搜索步长.kStep5 令,并计算.kkkkdxx :1)(11kkxfgStep6 令,转步 Step1.1 : kk 3 3、数值实验、数值实验最优化方法课程设计33.1 代码实现代码实现共轭梯度法的共轭梯度法的MatlabMatlab程序如下:程序如下:分别新建Conjugate_Gradient_Method.m、grad_obj.m、line_search.m

11、、obj.m文件Conjugate_Gradient_MethodConjugate_Gradient_Method.m.m文件如下:文件如下:function x,iter,val = Conjugate_Gradient_Method(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

12、; 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_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_searchline_search.m.m

13、文件如下:文件如下:function lambda = line_search(xk,dk)%作线搜索,求步长%phi(lambda) = obj( xk + lambda*dk )%d_phi(lambda) = dk*grad_obj( xk + lambda*dk )syms eqn lambdaeqn = dk*grad_obj(xk+lambda*dk);lambda = solve(eqn); %用符号计算命令solve求方程d_phi(lambda)=0的根lambda = eval(lambda);%将符号计算的结果转化为数值类型end最优化方法课程设计43.2 算法测试算法测

14、试我们通过求解两个无约束优化问题来验证算法的稳定性和准确性。问题一:求解无约束优化问题,该问题的有精确解121222122123)(min2xxxxxxfRx。1)() 1 , 1 (*xfxT,问题二:找出如下方程的极小值点:21222121342)(minxxxxxxxf其中初始点为 01,1Tx obj.mobj.m 文件文件function y = obj(x)%目标函数 y = 3*x(1).2/2+x(2).2/2-x(1).*x(2)-2*x(1);%问题一目标函数 %y = x(1).2-2*x(1).*x(2)+4*x(2).2 + x(1)- 3*x(2);%问题二目标函数

15、endgrad_objgrad_obj.m.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结果如下:结果如下:问题一:问题一:最优化方法课程设计5问题二问题二: : 最优化方法课程设计6 3.3 结果分析结果分析共轭梯度法是一种很有效求解无约束优化的方法,共轭梯度法是根据共轭方向去搜索,可以由较快的收敛速度找到最优解求得极小值,并且计算结果比较稳定,误差

16、在忽略范围内。4 4、算法比较、算法比较4.1 最速下降法的描述最速下降法的描述4.1.1 最速下降方向最速下降方向函数 f(x)在点 x 处沿方向 d 的变化率可用方向导数来表示。对于可微函数,方向导数等于梯度与方向的内积,即:Df(x;d) = f(x)Td,因此,求函数 f(x)在点 x 处的下降最快的方向,可归结为求解下列非线性规划:min f(x)Tds.t. |d| 1当 d = -f(x) / |f(x)| 时等号成立。因此,在点 x 处沿上式所定义的方向变化率最小,即负梯度方向为最速下降方向。4.1.2 最速下降法最速下降法最速下降法又称为梯度法,是 1847 年由著名数学家

17、Cauchy 给出的,它是解析法中最古老的一种,其他解析方法或是它的变形,或是受它的启发而得到的,因此它是最优化方法的基础。作为一种基本的算法,他在最优化方法中占最优化方法课程设计7有重要地位。其优点是工作量少,存储变量较少,初始点要求不高;缺点是收敛慢,效率不高,有时达不到最优解。非线性规划研究的对象是非线性函数的数值最优化问题。它的理论和方法渗透到许多方面,特别是在军事、经济、管理、生产过程自动化、工程设计和产品优化设计等方面都有着重要的应用。而最速下降法正是 n 元函数的无约束非线性规划问题 min f (x)的一种重要解析法,研究最速下降法原理及其算法实现对我们有着极其重要的意义。4.

18、2 最速下降法的步骤最速下降法的步骤最速下降法的迭代公式是x(k+1) = x(k) + kd(k) ,其中 d(k)是从 x(k)出发的搜索方向,这里取在 x(k)处的最速下降方向,即d = -f(x(k).k是从 x(k)出发沿方向 d(k)进行一维搜索的步长,即 k满足f(x(k) + kd(k) = min f(x(k)+d(k) (0).算法步骤如下:Step1::给出初始点,和精度;0 x1;0kStep2:计算,如果,则停止迭代,输出结果;否则转()kf x()kf xstep3;Step3:令下降方向,计算步长因子使得()kkdf x k,令,转 step2。0()min()k

19、kkkkf xdf xd1,1kkkkxxdkk4.3 最少下降法实现最少下降法实现最速下降法的 Matlab 程序如下:新建Steepest_Descent_Method.m文件,并复用grad_obj.m、line_search.m、obj.m文件Steepest_Descent_Method.mSteepest_Descent_Method.m文件如下:文件如下:最优化方法课程设计84.4 最速下降法算法测试最速下降法算法测试使用此最速下降法算法求解此前的问题一和问题二,取不同的起始点的数值结果分别如下:问题一:问题一:最优化方法课程设计9问题二问题二: : 4.5 共轭梯度法与最速下降

20、法比较共轭梯度法与最速下降法比较通过分别用两种算法求解问题一和问题二所得的结果可以看出,共轭梯度法的收敛速度是比较最速下降快,在相同初始点处开始求解,使用共轭梯度法所需要的迭代次数比最速下降法的迭代次数的少得很多,并且也比最速下降法稳定得多。虽然在算法设计上比较相似,但是微小的改进,使得共轭梯度法无最优化方法课程设计10论是准确性上还是效率上都优于牛顿法。5 5、总结、总结5.15.1 总结概括总结概括最优化理论研究在如今的研究领域发展得如火如荼,共轭梯度法是一种很有效求解无约束优化的方法,共轭梯度法是根据共轭方向搜索,可以由较快的收敛速度找到最优解。该算法最早是由 Hesternes 和 Stiefle(1952)提出来的,用于解正定系数矩阵的线性方程组,在这个基础上,Fletcher 和 Reeves(1964)首先提出了解非线性最优化问题的共轭梯度法。当然该算法发展到现在已经发展出了 FR,PR,HS,CD,DY 等算法,在搜索方法上有了较大的改进,迭代次数减少,收敛速

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论