分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
最优化:拟牛顿法、最速下降法、共轭梯度法、信赖域法、协同优化

最优化理论与算法是一个重要的数学分支,它所研究的问题是讨论在众多的方案中什么样的方案最优以及怎样找出最优方案。这类问题普遍存在。例如,工程设计中怎样选择设计参数,使得设计方案既满足设计要求又能降低成本;资源分配中,怎样分配有限资源,使得分配方案既能满足各方面的基本要求,又能获得好的经济效益;生产计划安排中,选择怎样的计划方案才能提高产值和利润;原料配比问题中,怎样确定各种成分的比例,才能提高质量,降低成本;城建规划中,怎样安排工厂、机关、学校、商店、医院;住户和其他单位的合理布局;才能方便群众;有利于城市各行各业的发展;农田规划中,怎样安排各种农作物的合理布局,才能保持高产稳产,发挥地区优势;军事指挥中,怎样确定最佳作战方案,才能有效地消灭敌人,保存自己,有利于战争的全风在人类活动的各个领域中,诸如此类,不胜枚举。最优化这一数学分文,正是为这些问题的解决,提供理论基础和求解方法,它是一门应用广泛、实用性强的学科。
20世纪40年代以来,由于生产和科学研究突飞猛进地发展,特别是电子计算机日益广泛应用,使最优化问题的研究不仅成为一种迫切需要,而且有了求解的有力工具。因此最优化理论和算法迅速发展起来,形成一个新的学科。至今已出现线性规划、整数规划、非线性规划、几何规划、动态规划、随机规划、网络流等许多分文。
最优化理论和算法在实际应用中正在发挥越来越大的作用。课程内容:最优化理论与算法包括线性规划单纯形方法、对偶理论、灵敏度分析、运输问题、内点算法、非线性规划K-T条件、无约束最优化方法、约束最优化方法、参数线性规划、运输问题、线性规划路径跟踪法、信赖域方法、二次规划路径跟踪法、整数规划和动态规划等内容。本课程有大量经典的和新近的算法,有比较系统的理论分析,实用性比较强;定理的证明和算法的推导主要以数学分析和线性代数为基础,学习比较容易。
线性和非线性最优化理论、方法、软件及应用
最优化在航空航天、生命科学、水利科学、地球科学、工程技术等自然科学领域和经济金融等社会科学领域有着广泛和重要的应用, 它的研究和发展一直得到广泛的关注. 最优化的研究包含理论、方法和应用.最优化理论主要研究问题解的最优性条件、灵敏度分析、解的存在性和一般复杂性等.而最优化方法研究包括构造新算法、证明解的收敛性、算法的比较和复杂性等.最优化的应用研究则包括算法的实现、算法的程序、软件包及商业化、在实际问题的应用. 这里简介一下线性和非线性最优化理论、方法及应用研究的发展状况.
6 d% u0 g, \# e8 z6 _! t1. 线性最优化
线性最优化, 又称线性规划, 是运筹学中应用最广泛的一个分支.这是因为自然科学和社会科学中许多问题都可以近似地化成线性规划问题. 线性规划理论和算法的研究及发展共经历了三个高潮, 每个高潮都引起了社会的极大关注. 线性规划研究的第一高潮是著名的单纯形法的研究. 这一方法是Dantzig在1947年提出的,它以成熟的算法理论和完善的算法及软件统治线性规划达三十多年. 随着60年代发展起来的计算复杂性理论的研究, 单纯形法在七十年代末受到了挑战. 1979年前苏联数学家Khachiyan提出了第一个理论上优于单纯形法的所谓多项式时间算法--椭球法, 曾成为轰动一时的新闻, 并掀起了研究线性规划的第二个高潮. 但遗憾的是广泛的数值试验表明, 椭球算法的计算比单纯形方法差.
1984年Karmarkar提出了求解线性规划的另一个多项式时间算法. 这个算法从理论和数值上都优于椭球法, 因而引起学术界的极大关注, 并由此掀起了研究线性规划的第三个高潮. 从那以后, 许多学者致力于改进和完善这一算法,得到了许多改进算法.这些算法运用不同的思想方法均获得通过可行区域内部的迭代点列, 因此统称为解线性规划问题的内点算法. 目前内点算法正以不可抗拒的趋势将超越和替代单纯形法.
线性规划的软件, 特别是由单纯形法所形成的软件比较成熟和完善.这些软件不仅可以解一般线性规划问题, 而且可以解整数线性规划问题、进行灵敏度分析, 同时可以解具有稀疏结构的大规模问题.CPLEX是Bixby基于单纯形法研制的解线性和整数规划的软件, CPLEX的网址是http://www.cplex.com/. 此外,这个软件也可以用来解凸二次规划问题, 且特别适合解大规模问题. PROC LP是SAS软件公司研制的SAS商业软件中OR模块的一个程序.
这个程序是根据两阶段单纯形法研制的,可以用来解线性和整数规划问题并可进行灵敏度分析, 是一个比较完善的程序.用户可以根据需要选择不同的参数来满足不同的要求。关于内点法的软件也在研制之中.BPMPD是Cs.Mzos基于原始对偶内点法研制的解线性和整数规划的软件,其FTP地址是ftp://ftp.sztaki.hu/pub/oplab/SOFTWARE/BPMPD/,可以自由下载.此外,在互联网上能访问到的解线性和整数规划问题的软件还有:EQPS(线性,整数和非线性规划),FMP(线性和混合整数规划),HS/LPLO(线性规划),KORBX(线性规划),LAMPS(线性和整数规划),LPBLP(线性规划),MILP(混合整数规划),MINTO(混合整数规划), MPSIII(线性和混合整数规划),OML(线性和混合整数规划), OSL(线性,二次和混合整数规划),PROCLP(线性和整数规划),WB(线性和混合整数规划),WHIZARD(线性和混合整数规划),XPRESSMP(线性和混合整数规划)等.
; y% U! U$ Y. e2 D) E+ Z" n0 `2.非线性最优化
在实际研究工作和生产实践中存在大量非线性最优化问题, 把它们完全简化成线性问题来处理是不妥当的.随着科学技术和计算机的发展, 这些实际问题具有这样一些特点.一是问题的变量比较多, 因为问题涉及的因素越来越多; 二是问题的规模越来越大;三是问题越来越复杂, 问题的非线性程度越来越高. 这类问题通常描述成在一组非线性约束条件下寻求某一非线性目标函数的最小或最大值。
非线性规划的一个重要理论是1951年Kuhn-Tucker最优条件(简称KT条件)的建立.此后的50年代主要是对梯度法和牛顿法的研究.以Davidon(1959), Fletcher和Powell(1963)提出的DFP方法为起点, 60年代是研究拟牛顿方法活跃时期, 同时对共轭梯度法也有较好的研究. 在1970年由Broyden,Fletcher,Goldfarb 和Shanno从不同的角度共同提出的BFGS方法是目前为止最有效的拟牛顿方法. 由于Broyden, Dennis 和More的工作使得拟牛顿方法的理论变得很完善. 70年代是非线性规划飞速发展时期, 约束变尺度(SQP)方法(Han和Powell为代表)和Lagrange乘子法(代表人物是Powell 和Hestenes)是这一时期主要研究成果.计算机的飞速发展使非线性规划的研究如虎添翼.80年代开始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计算, 90年代研究解非线性规划问题的内点法和有限储存法. 可以毫不夸张的说, 这半个世纪是最优化发展的黄金时期.
与线性规划相比,非线性规划软件还不够完善. 但是已有大量解非线性规划问题的软件, 其中有相当一部分可从互联网上免费下载.BTN是利用线搜索技术的块截断牛顿方法解无约束问题的软件,近似牛顿方向是通过块共轭梯度法解牛顿方程得到. 块状结构比较方便对线性代数方程和函数计算进行并行化处理. BTN有两个版本: 简本和用户版本. 简本不需并行化技术, 而用户版本允许多种复杂运算, 包含并行化处理. 此软件可以通过
ftp://netlib2.cs.utk.edu/opt获得。BQPD是Fletcher研制的解二次规划的软件, 所使用的基本方法是零空间积极集法. DONLP2是Spellucci研制的用SQP方法解一般非线性约束问题的软件,适合解小规模优化问题, 可以从网址ftp://netlib2.cs.utk.edu/opt/donlp2/上免费下载。HOOKE是解无约束最优化问题的一个直接方法的软件,可以通过 ftp: //netlib2.cs.utk.edu /opt /hooke.c获得。LANCELOT是由Conn,Gould和Toint研制的解大规模最优化问题的软件包,适合解无约束最优化、非线性最小二乘、边界约束最优化和一般约束最优化问题.这个软件的基本思想是利用增广Lagrange函数来处理约束条件, 在每步迭代中解一个边界约束优化子问题, 其所用的方法结合信赖域和投影梯度等技术.MINPACK是美国Argonne国家实验室研制的软件包,适合求解非线性方程组和非线性最小二乘问题, 所用的基本方法是阻尼最小二乘法, 此软件可以从网上图书馆获得. PROC NLP是SAS软件公司研制的SAS商业软件中OR模块的一个程序,这个程序适合解无约束最优化、非线性最小二乘、线性约束最优化、二次规划和一般约束最优化问题.TENMIN是Schnabel等研制的解中小规模问题($n<100$)的张量方法软件。在互联网上能访问到的解非线性最优化问题的软件还有:CONOPT(非线性规划),DOT(优化设计工具箱),Excel and Quattro Pro Solvers(线性,整数和非线性规划),FSQP(非线性规划和极小极大问题),GRG2(非线性规划), LBFGS(有限储存法),LINDO(线性、二次和混合整数规划),LSSOL(最小二乘和二次规划),MINOS(线性和非线性规划),NLPJOB(非线性多目标规划), OPTPACK(约束和无约束最优化),PETS(解非线性方程组和无约束问题的并行算法),QPOPT(线性和二次规划),SQOPT(大规模线性和凸二次规划),SNOPT(大规模线性、二次和非线性规划),SPRNLP(稀疏最小二乘,稀疏和稠密非线性规划),SYSFIT(非线性方程组的参数估计),TENSOLVE(非线性方程组和最小二乘), VE10(非线性最小二乘)等.
3.最优化的应用
最优化的应用是非常广泛的, 下面仅就最优化在金融和航空方面的应用作一点介绍.
3.1金融和最优化
随着世界经济的发展和知识经济的到来, 金融数学已变成一个热门研究课题,普遍得到各国政府的重视和支持. 而金融数学的一个重要方面是与优化理论及算法相联系的. 诺贝尔经济学奖得主马尔柯维茨提出证券组合选择的均值--方差模型(MV模型)便是一个二次规划问题. 这个模型使得证券组合选择方法实现了从定性描述到定量描述质的飞跃,使得人们可以科学而准确地分析与选择投资策略.s4 a2 Z% [5 F M; Y% ?* `5 V
3.2 航空和最优化
最优化在航空方面的应用也很多.从90年代引起国际学术界重视的"气动数值优化设计"是计算流体力学和优化设计技术相结合来研究飞行器气动性能及其它流动问题的方法. 这一方法的研究包含了大量的最优化算法和应用研究.
在航空航天广泛应用的结构优化设计是最近三十多年来发展起来的一门新兴的现代化科学技术. 它的发展是与最优化理论和方法的发展是密不可分的. 从60年代起, 结构设计问题开始用一般非线性规划问题来处理. 此后, 一种新的优化理论和方法一出现并被用到结构设计问题上来, 从而推动了结构优化设计的快速发展.目前处于优化研究热点的信赖域法被用于解飞机设计中颤振问题模型, 收到了良好效果.
最优化
最优化,是应用数学的一个分支,主要研究以下形式的问题:
-
给定一个
函数
,寻找一个元素
使得对于所有A中的
,
(最小化);或者
(最大化)。
这类定式有时还称为“数学规划”(譬如,线性规划)。许多现实和理论问题都可以建模成这样的一般性框架。
典型的,A一般为欧几里得空间中的子集,通常由一个A必须满足的约束等式或者不等式来规定。 A的元素被称为是可行解。函数f被称为目标函数,或者费用函数。一个最小化(或者最大化)目标函数的可行解被称为最优解。
一般情况下,会存在若干个局部的极小值或者极大值。局部极小值x * 定义为对于一些δ > 0,以及所有的x 满足
-
;
公式
成立。这就是说,在周围的一些闭球上,所有的函数值都大于或者等于在该点的函数值。一般的,求局部极小值是容易的,但是要确保其为全域性的最小值,则需要一些附加性的条件,例如,该函数必须是凸函数。
符号表示
最优化问题通常有一些较特别的符号标示方法。例如:
这是要求表达式x2 + 1的最小值,这里x取值为全体实数,。这个问题的最小值应该是1,当x = 0。
这是要求表达式2x的最大值,同样地,x在全体实数上取值。对于这个问题,由于该表达式不是有上界的,因此不存在最大值,因此,答案应该是无限大,或者是不可定义的。
这是求使表达式x2+1 达到最小值时x的值。在这里x被限定在区间[-∞ ,-1]之间,所以上式的值是-1。
主要分支
-
线性规划
- 当目标函数f是线性函数而且集合A是由线性等式函数和线性不等式函数来确定的, 我们称这一类问题为线性规划 整数规划
- 当线性规划问题的部分或所有的变量局限于 整数 值时,我们称这一类问题为整数规划问题 二次规划
- 目标函数是二次函数,而且集合A必须是由线性等式函数和线性不等式函数来确定的。 非线性规划
- 研究的是目标函数或是限制函数中含有非线性函数的问题。 随机规划
- 研究的是某些变量是 随机变量 的问题。 动态规划
- 研究的是最优策略基于将问题分解成若干个较小的子问题的优化问题。 组合最优化
- 研究的是可行解是离散或是可转化为 离散 的问题。 无限维最优化
- 研究的是可行解的集合是无限维空间的子集的问题,一个无限维空间的例子是函数空间。
手法
对于无约束的优化问题, 如果函数是二次可微的话,可以通过找到目标函数梯度为0(也就是鞍点)的那些点来解决此优化问题。我们需要用黑塞矩阵来确定此点的类型。如果黑塞矩阵是正定的话,该点是一个局部最小解,如果是负定的话,该点是一个局部最大解,如果黑塞矩阵是不定的话,该点是某种鞍点。
要找到那些拐点,我们可以通过猜测一个初始点,然后用比如以下的迭代的方法来找到。
如果目标函数在我们所关心的区域中是凸函数的话,那么任何局部最小解也是全局最优解。现在已经有稳定,快速的数值计算方法来求二次可微地凸函数的最小值。
有约束条件的约束问题常常可以通过拉格朗日乘数转化为非约束问题。
其他一些流行的方法有:
人工智能和最优化
现代的计算机科学技术和人工智能科学把最优化作为一个重要的领域来研究。我们也可以认为人工智能的一些算法,就是模拟了人类寻求实际问题最优解的过程。例如,利用人工智能方法设计软件,配合外部的电子设备例如摄像头识别人脸;利用数据采矿和神经网络算法来寻找投资的最佳时机等等。
参见
参考
- Stephen Boyd and Lieven Vandenberghe (2004). Convex Optimization,Cambridge University Press. ISBN 0-521-83378-7.
外部链接
最 优 化 牛 顿 法
这是一套最优化课件,包括:牛顿法、线性规划、梯度法、共轭梯度法、搜索法、单纯形调优法、单纯形替换法、对偶单纯形、约束优化、无约束最优化、一维最优化。
拟牛顿法
概述
拟牛顿法(Quasi-Newton Methods)是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne国家实验室的物理学家W. C. Davidon所提出来。Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher和M. J. D. Powell证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。在之后的20年里,拟牛顿方法得到了蓬勃发展,出现了大量的变形公式以及数以百计的相关论文。 拟牛顿法和最速下降法(Steepest Descent Methods)一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法(Newton's Method)更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。 拟牛顿法的基本思想如下。首先构造目标函数在当前迭代$x_k$的二次模型:m_k(p)=f_k+g_k^T p+p^T B_k p/2,这里f_k=f(x_k),g_k=▽f(x_k),B_k是一个对称正定矩阵。于是我们取这个二次模型的最优解p_k=-B_k^{-1} g_k作为搜索方向,并且得到新的迭代点x_{k+1}=x_k+a_k p_k,其中我们要求步长a_k满足Wolfe条件。这样的迭代类似与牛顿法,区别就在于用近似的Hesse矩阵B_k代替真实的Hesse矩阵。所以拟牛顿法最关键的地方就是每一步迭代中矩阵B_k的更新。现在假设得到一个新的迭代x_{k+1},并得到一个新的二次模型:m_{k+1}(p)=f_{k+1}+g_{k+1}^T p + p^T B_{k+1} p/2。我们尽可能地利用上一步的信息来选取B_{k+1}。具体地,我们要求g_{k+1}-g_k=a_k B_{k+1} p_k,从而得到B_{k+1}s_k=y_k,其中s_k=x_{k+1}-x_k,y_k=g_{k+1}-g_k。这个公式被称为割线方程。下面主要介绍这几种方法:DFP方法,BFGS方法,SR1方法,Broyden族方法。DFP方法
记H_k=B_k^{-1},DFP公式为H_{k+1}=H_k-(H_ky_ky_k^TH_k)/(y_k^T H_k y_k)+(s_ks_k^T)/(y_k^Ts_k)。该公式最初由Davidon于1959年提出,随后被Fletcher和Powell研究和推广。DFP方法是秩-2更新的一种,由它产生的矩阵B_k是正定的,而且满足这样的极小性:min ||B-B_k|| s.t. B=B^T, Bs_k=y_k。BFGS方法
DFP更新公式非常有效,但很快就被BFGS公式取代。BFGS与DFP十分类似,是另一种秩-2更新,以其发明者Boyden, Fletcher, Goldfarb和Shanno的姓氏首字母命名。BFGS公式为B_{k+1}=B_k-(B_ks_ks_k^TB_k)/(s_k^T B_k s_k)+(y_ky_k^T)/(y_k^Ts_k)。由他产生的矩阵B_k同样保持正定性,而且也满足一个极小性:min ||H-H_k|| s.t. H=H^T, Hy_k=s_k。BFGS和DFP公式在形式上是对称的:B_k与H_k对称,s_k与y_k对称。但是BFGS比DFP更加有效。SR1方法
有别于DFP和BFG方法,SR1是一种秩-1更新。它的公式是:B_{k+1}=(y_k-B_ks_k)(y_k-B_ks_k)^T/((y_k-B_ks_k)^Ts_k)。SR1公式不要求矩阵B_k保持正定性,从而更逼近真实的Hesse矩阵,所以适用于信赖域方法(Trust Region Methods)。Broyden族
Boyden族是更广泛的一类更新公式,其形式为:B_{k+1}=(1-c_k)B_{k+1}^{BFGS}+c_k B_{k+1}^{DFP}。当c_k=0时,Broyden族公式就变成了BFGS公式;当c_k=1时,Broyden族公式就变成了DFP公式。因此BFGS和DFP均可看成Broyden族的特殊形式或者其中一员。
拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
什么?牛顿法是什么?本文是基于你已经知道牛顿法的原理的假设,如果你不清楚,那么可以看我这篇文章,里面非常简单而又清晰地描述了牛顿法的原理。
了解了牛顿法的原理,我们就知道了:在每一次要得到新的搜索方向的时候,都需要计算Hesse矩阵(二阶导数矩阵)。在自变量维数非常大的时候,这个计算工作是非常耗时的,因此,拟牛顿法的诞生就有意义了:它采用了一定的方法来构造与Hesse矩阵相似的正定矩阵,而这个构造方法计算量比牛顿法小。这就是对它”有什么用“的回答了。
(1)DFP算法
下面,就从DFP算法来看看“拟牛顿”是如何实现的(DFP算法是以Davidon、Fletcher、Powell三位牛人的名字的首字母命名的)。
前面说了,Hesse矩阵在拟牛顿法中是不计算的,拟牛顿法是构造与Hesse矩阵相似的正定矩阵,这个构造方法,使用了目标函数的梯度(一阶导数)信息和两个点的“位移”(Xk-Xk-1)来实现。有人会说,是不是用Hesse矩阵的近似矩阵来代替Hesse矩阵,会导致求解效果变差呢?事实上,效果反而通常会变好。有人又会问为什么?那么就简要地说一下——
由牛顿法的原理可知如下几个等式:
若最后一个等式子的最左边 < 0,即,就是直观概念上的“沿方向d上,目标函数值下降”的表达。而在逐步寻找最优解的过程中,我们是要求目标函数值下降的,因此,应该有-(X-Xi)A(X-Xi) < 0,也即
由于涉及到Hesse矩阵(二阶导数矩阵),我们当然要从目标函数 f(X) 的泰勒展开式说开去。与最优化理论中的很多问题一样,在这里,我们依然要假设目标函数可以用二次函数进行近似(实际上很多函数都可以用二次函数很好地近似):
忽略高阶无穷小部分,只看前面的3项,其中A为目标函数的Hesse矩阵(二阶导数矩阵)。此式两边对X求导得:
于是,当 X=Xi 时,将[2]式两边均左乘(Ai+1)-1,有:
上式左右两边近似相等,但如果我们把它换成等号,并且用另一个矩阵H来代替上式中的A-1,则得到:
这个方程,就是拟牛顿方程,其中的矩阵H,就是Hesse矩阵的逆矩阵的一个近似矩阵。但是,从初始的H0开始,如何得到每一步迭代过程中需要的H1,H2,……呢?在迭代过程中生成的矩阵序列H0,H1,H2,……中,每一个矩阵Hi+1,都是由前一个矩阵Hi修正得到的,这个修正方法有很多种,这里只说DFP算法的修正方法。设:
然后又有问题:矩阵E怎么求?再设:
其中,m和n均为实数,v和w均为N维向量。将[6]代入[5]式,再将[5]式代入[4]式,可得:
[8]式与[7]式完全相同,只不过用简化的记号重写了一下。如果求出了m,n,v,w,就可以知道[6]式怎么求,从而进一步知道[5]式怎么求,从而我们的问题就彻底解决了。符合[7]这个方程的v,w可能有很多,但是我们有没有可能找到v,w的一个“特例”,使之符合这个等式呢?仔细观察一下,是可以找到的:[7]式的右边两个向量相减的结果,是一个n×1的向量,因此,等式左边的计算结果当然也是一个n×1的向量(每一项都是一个n×1的向量),所以我们把[7]式写成了[8]式的样子,可以看到,其中的第二、第三项中的括号里的向量的点积均为实数,这里,可以使第一个括号中的mvTqi值为1,使第二个括号中的nwTqi值为-1,这样的话,v只要取si,w只要取Hiqi,就可以使[8]式成立了。的确,这种带有一点猜测性质的做法,确实可以让我们找到一组适合的m,n,v,w值。
所以,我们得到的m,n,v,w值如下:
现在我们几乎大功告成了:将[8]~[11]代入[6]式,然后再将[6]代入[5]式,就得到了Hesse矩阵的逆矩阵的近似阵H的计算方法:
在上面的推导过程中,有人可能觉得有点无厘头:为什么[6]式要那样假设,是怎么想到的?我能给出的答案是:这一点我也没想明白。如果你知道,请告诉我,非常感谢。某些书上经常写类似于“很显然,XXX”之类的话,从一个定理直接得出了一个让人摸不着头脑的结论,而作为我这样比较笨的人来说,我觉得写书的很多专家们认为“很显然”的东西一点也不“显然”,甚至于有时候,我觉得那就像凤姐突然变成了范冰冰一样——一下子变出来了一个漂亮的结论,难以相信。所以这也是为什么我花费了很多时间,来把一些“很显然”的东西记下来,写明白的原因了。对于大多数牛人,他们需要的当然不是这种思维跨度这么小的文章,而是那种从地球可以一下子飞到火星的文章。所以,我写的东西不适合于水平高的人看,我只期望能帮助一小部分人就知足了。
说到这里,那么到底什么是DFP算法呢?上面的矩阵H的计算方法就是其核心,下面再用简单的几句话描述一下DFP算法的流程:
已知初始正定矩阵H0,从一个初始点开始(迭代),用式子
有人会说,上面那些乱七八糟的都是搞什么啊,猜来猜去的就折腾出了一个公式,然后就确定这公式能用了?就不怕它在迭代的时候根本无法寻找到目标函数的极小值?正因为有这些疑问,所以在这里,还要提及一个非常重要的问题:我们通过带有猜测性质的做法,得到了矩阵H的计算公式,但是,这个修正过的矩阵,能否保持正定呢?前面已经说了,矩阵H正定是使目标函数值下降的条件,所以,它保持正定性很重要。可以证明,矩阵H保持正定的充分必要条件是: