DFP变尺度法
- 格式:docx
- 大小:16.14 KB
- 文档页数:6
约束变尺度法Newton 法最突出的优点是收敛速度快,在这一点上其它算法无法比拟的。
因此,建议凡是Hesse 矩阵比较容易求出的问题,尽可能使用Newton 法求解。
但是,Newton 法也有一个严重缺陷,就是每次迭代都要计算目标函数的Hesse 矩阵和它的逆矩阵,当问题的维数较大时,计算量迅速增加,从而就抵消了Newton 法的优点。
为此,人们开始寻找一种算法既可以保持Newton 法收敛速度快的优点,又可以摆脱关于Hesse 矩阵的计算,这就是变尺度算法。
变尺度法是一种非常好的方法,其中DFP 算法和BFGS 算法。
可以说,直到目前为止,在不用Hesse 矩阵的方法中是最好的算法。
一、拟Newton 法为了吸收Newton 法收敛速度快的优点,同时避免Newton 法每次迭代都要计算目标函数的Hesse 矩阵和它的逆矩阵,人们提出了具有超线性收敛的拟Newton 法。
(一)拟Newton 法的基本原理在Newton 法中的基本迭代公式kk k k P t X X +=+1,其中1=k t ,)()]([12kkk Xf Xf P ∇∇-=-令)()(2kkkkXf gXf G∇=∇=,于是有,,,,21011=-=-+k g G X X k k k k其中X0是初始点, gk 和 Gk 分别是目标函数f (X )在点 Xk 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵G-1k ,可用某种近似矩阵Hk=Hk(Xk)来替换它,即构造一矩阵序列{Hk}去逼近Hesse 逆矩阵序列{G-1k},此时kk k k g H X X -=+1事实上,式中 Pk= -Hk gk 无非是确定了第k 次迭代的搜索方向.为了取得更大的灵活性,考虑更一般的迭代公式kk k k k g H t X X -=+1其中步长tk 通过从Xk 出发沿Pk= -Hk gk 作直线搜索来确定.此式代表很广的一类迭代公式.例如,当Hk=I (单位矩阵)时,它变为最速下降法的迭代公式。
【MATLAB与机械设计】多维优化之DFP变尺度法1.程序框图其中E矩阵的求解公式为:2.MATLAB可执⾏程序function [k,x_min,f_min]= variable_metric_algorithm(f,x,exp)%% 程序说明%{该程序应⽤于多维⽆条件优化问题中的变尺度法变量说明:输⼊值部分f为⽬标函数,对于⽬标函数中⾃由变量的个数没有要求x为初值矩阵,要求在调⽤函数是必须为⼀⾏n列的形式,否则会导致后期维度出现错误exp为精度返回值部分k为迭代次数x_min为函数的局部极⼩值数列f_min为函数的局部极⼩值调⽤⽅法:clcclearsyms x1 x2%所有的⾃由变量且必须由x1,x2,x3……表⽰x=[0,0];f=x1^2+x2^2-x1*x2-10*x1-4*x2+60;exp=0.01;[k,x_min,f_min]=variable_metric_algorithm(f,x,exp)%}%% 确定维度x_size=size(x,2);x_i= sym(zeros(1,x_size));%class(x_i)for i=1:x_sizesyms(['x' num2str(i)]);x_i(1,i)=['x' num2str(i)];end%% 迭代主题grad_f=gradient(f,x_i);H=eye(x_size);fz_d=-subs(grad_f,x_i,x);fz_d=double(fz_d);g0=fz_d;k=0;while 1s=-H*g0;syms as=s';f_b=subs(f,x_i,x+a.*s);f_bd=diff(f_b,a);a=solve(f_bd==0,a);a=double(a);x_1=x+a*s;fz_d1=-subs(grad_f,x_i,x_1);fz_d1=double(fz_d1);fz_dm1=norm(fz_d1);g1=fz_d1;if fz_dm1<=expx_min=x_1;f_min=subs(f,x_i,x_min);k=k;break;elseif k==x_sizefz_d=-subs(grad_f,x_i,x_1);fz_d=double(fz_d);k=0;H=eye(x_size);elsedeta_x=x_1-x;deta_f_d=fz_d1-fz_d;A=(deta_x')*(deta_x);sub_A=(deta_x)*deta_f_d;B=H*deta_f_d*(deta_f_d')*H; sub_B=(deta_f_d')*H*deta_f_d; E=A./sub_A-B./sub_B;H=H+E;k=k+1;endx=x_1;g0=g1;endendend。
北方民族大学课程设计报告系(部、中心)信息与计算科学学院专业信息与计算科学班级 09信计(3)班小组成员课程名称最优化方法设计题目名称运用DFP算法解决无约束最优化问题提交时间2012年6月26日成绩指导教师变尺度法是在牛顿法的基础上发展起来的,它和梯度法亦有密切关系.变尺度法避免了Newton法在每次迭代都要计算目标函数的Hesse矩阵和它的逆矩阵而导致随问题的维数增加计算量迅速增加.DFP算法是变尺度法中一个非常好的算法.DFP算法首先是1959年由Davidon提出的后经Fletcher和Powell改进,故名之为DFP算法,它也是求解无约束优化问题最有效的算法之一.DFP变尺度法综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快.本文主要分析DFP算法原理及运用Matalb软件编程解决实际数学问题.最后运算结果符合计算精度且只用了一次迭代,由此可见收敛速度快.关键词:Newton法变尺度法Hesse矩阵Matlab软件一、课程设计目的 (4)二、课程设计要求 (4)三、课程设计原理 (4)(1)变尺度法基本原理 (4)(2)DFP算法 (5)四、实验内容 (6)五、数学建模及求解 (7)1.DFP算法迭代步骤 (7)2.DFP算法的流程图 (7)六、程序实现 (8)七、数值实验的结果与分析 (11)八、实验总结与体会 (12)1.DFP公式恒有确切解 (12)2.DFP算法的稳定性 (12)参考文献 (13)一、 课程设计目的:1、掌握无约束优化问题DFP 算法的数值求解思路;2、训练分析DFP 算法的运算存储量及收敛速度的能力,了解算法的优缺点;3、通过运用DFP 算法求解实际无约束优化问题的意义;4、熟悉应用Matlab 求解无约束最优化问题的编程方法.二、 课程设计要求熟悉了解DFP 算法原理及求解无约束优化问题的步骤,并运用Matlab 件编程实现求解问题.三、 课程设计原理(1)变尺度法基本原理在Newton 法中,基本迭代公式k k k k P t X X +=+1,其中,1=k t ,)()]([12k k k X f X f P ∇∇-=-,于是有2,1,0,11=-=-+k g G X X k k k k (1)其中0X 是初始点,k g 和k G 分别是目标函数)(X f 在点k X 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵1-k G ,可用某种近似矩阵)(k k X H H =来替换它,即构造一个矩阵序列}{k H 去逼近Hesse 逆矩阵序列}{1-k G此时式(1)变为k k k k g H X X -=+1事实上,式中k k k g H P -=无非是确定了第k 次迭代的搜索方向,为了取得更大的灵活性,我们考虑更一般的的迭代公式k k k k k g H t X X -=+1 (2)其中步长因子k t 通过从k X 出发沿k k k g H P -=作直线搜索来确定.式(2)是代表很长的一类迭代公式.例如,当I H k ≡(单位矩阵)时,它变为最速下降法的迭代公式.为使kH确实与1-k G 近似并且有容易计算的特点,必须对k H 附加某些条件:第一,为保证迭代公式具有下降性质,要求}{k H 中的每一个矩阵都是对称正定的.理由是,为使搜索方向k k k g H P -=是下降方向,只要0<-=-k k T k k T k g H g P g成立即可,即0>k k T k g H g成立.当k H 对称正定时,此公式必然成立,从而保证式(2)具有下降性质.第二,要求k H 之间的迭代具有简单形式.显然,k k k E H H +=+1 (3)是最简单的形式了.其中k E 称为校正矩阵,式(3)称为校正公式.第三,必须满足拟Newton 条件.即:)()(111k k k k k X X g g H -=-+++ (4)为了书写方便也记k k k g g y -=+1k k k X X S -=+1于是拟Newton 条件可写为k k k S y H =+1 (5)有式(3)和(5)知,k E 必须满足k k k k S y E H =+)(或k k k k k y H S y E == (6)(2)DFP 算法DFP 校正是第一个拟牛顿校正是1959年由Davidon 提出的后经Fletcher 和Powell 改进故名之为DFP 算法它也是求解无约束优化问题最有效的算法之一.DFP 算法基本原理考虑如下形式的校正公式T k k k T k k k k k V V U U H H βα++=+1 (7)其中k k V U ,是特定n 维向量,k k βα,是待定常数.这时,校正矩阵是T k k k T k k k k V V U U E βα+=.现在来确定k E .根据拟Newton 条件,k E 必须满足(6),于是有k k k k T k k k T k k k y H S y V V U U -=+)(βα或k k k k T k k k k T k k k y H S y V V y U U -=+βα.满足这个方程的待定向量k U 和k V 有无穷多种取法,下面是其中的一种:k k T k k k S y U U =α,k k k T k k k y H y V V -=β注意到k T ky U 和k T k y V 都是数量,不妨取 k k S U =,k k k y H V =,同时定出k T k k y S 1=α,kk T k k y H y 1-=β. 将这两式代回(5.32)得 kk T k k T k k k k T k T k k k k y H y H y y H y S S S H H -+=+1. (8) 这就是DFP 校正公式.四、 实验内容采用课本P102页例5.3和P107页例5.4进行数值计算;1,求22212125),(m in x x x x f +=,取初始点T X ]2,2[0=.2,求2221214),(m in x x x x f +=,取初始点T X ]1,1[0=.五、 数学建模及求解1.DFP 算法迭代步骤在拟Newton 算法中,只要把第五步改为计算式(8)而其他不变,该算法就是DFP 算法了.但是由于计算中舍去误差的影响,特别是直线搜索不精确的影响,可能要破坏迭代矩阵k H 的正定性,从而导致算法失效.为保证k H 的正定性,采取以下重置措施:迭代1+n 次后,重置初始点和迭代矩阵,即I H X X n ==+010,以后重新迭代.已知目标函数)(X f 及其梯度)(X g ,问题的维数n ,终止限ε.(1) 选定初始点.计算)(00X f f =,)(00X g g =.(2) 置I H =0,00g P -=,0=k .(3) 作直线搜索),(1k k k P X ls X =+;计算)(11++=k k X f f ,)(11++=k k X g g .(4) 判别终止准则是否满足:若满足,则打印),(11++k k f X ,结束;否转(5).(5) 若n k =,则置10+=k X X ,10+=k f f ,10+=k g g ,转(2);否则转(6).(6) 计算k k k X X S -=+1,k k k g g y -=+1,kk T k k T k k k k T k T k k k k y H y H y y H y S S S H H -+=+1, 111+++-=k k k g H P ,置1+=k k ,转(3).2.DFP 算法的流程图六、程序实现七、 数值实验的结果与分析由上述运行结果可得出:第一题迭代一次就解得:]0664.0,2220.0[*0150.1---=e X 与精确解]0,0[=X 误差远小于610-=ε,符合要求.第二题同样迭代一次就解得:]0555.0,1110.0[*0150.1--=e X 与精确解]0,0[=X误差远小于610-=ε,符合要求.且所计算的k H 矩阵和梯度与精确计算所得一样,这也表明DFP 算法的matalb 程序完全符合要求.八、 实验总结与体会DFP 变尺度法综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快,这些良好的性能已作阐述。
dfp变尺度法
DFP变尺度法(Davidon-Fletcher-Powell变尺度法)是一种拟牛顿优化算法,用于求解无约束极值问题它综合了梯度法和牛顿法的优点,具有较快的收敛速度和较广的应用范围DFP算法在优化领域中被认为是一种高效的方法,尤其在处理高维问题时具有显著优势。
DFP变尺度法的基本思想是在每次迭代中,用一组线性方程组来近似表示目标函数的Hessian矩阵这样,我们可以用较少的计算代价获得牛顿法类似的收敛速度变尺度法的关键在于选择合适的尺度矩阵,以保证算法的收敛性和稳定性。
DFP算法的步骤如下。
1.初始化:选择一个初始点x0.
2.计算目标函数的梯度g(x)。
f(x)=f(x0)+γ(x-x0).
其中,γ为尺度因子
3.计算Hessian矩阵的近似值H
H=I-γ²g²(x).
4.更新搜索方向。
s=-Hg(x).
5.更新x。
x=x0+αs.
其中,α为线搜索参数。
6.重复步骤2-5,直到满足终止条件(如收敛或达到迭代次数限制)。
DFP变尺度法在实际应用中通常与一维搜索技术和黄金分割法相结合,以提高收敛速度和稳定性此外,还可以根据问题特点对算法进行适当调整,如引入局部搜索、调整线搜索策略等,以适应不同问题的需求总之,DFP变尺度法是一种高效、实用的优化算法,在许多领域都得到了广泛应用。