最优化方法Armijo非精确搜索+DFP

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数学与计算科学学院实验报告实验项目名称Armijo非精确搜索+DFP所属课程名称最优化方法实验类型算法编程实验日期班级学号姓名成绩一、实验概述:【实验目的】1(1)掌握Matlab数值计算的基本方法;(2)掌握DFP算法;(3)在Armijo非精确搜索下使用DFP算法并进行MATLAB编程实现;(4)进行数值实验并对数值结果进行分析。【实验原理】Armijo条件是一种一维搜索的停止条件。不精确的一维搜索条件规定ak首先应该保证使目标函数充分减小,这个条件使用以下不等式描述:1f()()xkapkfxkcafTpk其中1(0,1)c的常数。也就是说,目标函数f的下降要与步长和下降方向成一定的比例。1c是一个很小的值。DFP算法又称为变尺度法。其公式为:1TTkkkkkkkkTTkkkkkppHqqHHHpqqHqDEP算法的计算步骤如下:1.给定初始点1nx¡,允许误差0;2.置1nHI(单位矩阵),计算出在1x处的梯度11()kkgfx,置1k。3.令kkkdHg;4.从kx出发,沿方向kd搜索,求步长k,使其满足0()min()kkkkkfxdfxd令1kkkkxxd;5.检验是否满足收敛准则,若1()kfx,则停止迭代,得到点_1kxx;否则,进行步骤6;6.若kn,则令11kxx,返回步骤2;否则,进行步骤7;7.令11()kkgfx,1kkkpxx,1qkkkgg,利用DFP公式计算,置:1kk,返回步骤3.【实验环境】MicrosoftWindows7Matlab二、实验内容:【实验方案】21.选定题目,解121()(1)^25*(^2)^2fxxxx的极小点,取初始点0[2,0]Tx。2.在Armijo非精确线性搜索下,使用DFP算法,利用Matlab编写程序解决问题。3.运行程序并调拭,得出结果。4.分析结果。【实验过程】(实验步骤、记录、数据、分析)1.编写出Armijo非精确线性搜索的主程序:clc;clear;Functionmk=armijo(fun,xk,rho,sigma,gk)assert(rho0&&rho1);assert(sigma0&&sigma0.5);mk=0;max_mk=100;whilemk=max_mkx=xk-rho^mk*gk;iffeval(fun,x)=feval(fun,xk)-sigma*rho^mk*norm(gk)^2break;endmk=mk+1;endreturn;2.编写出使用拟牛顿法中的DFP算法来求解的Matlab程序(详细程序见附录源程序)。3.运行程序,得出结果如图所示:3从上述运行结果可以得出:最优解为x=1.0000,最小值约为f=0。【实验结论】(结果)拟牛顿法是无约束最优化方法中的最有效的一类算法。使用拟牛顿法中的DFP算法,不需要计算Hesse矩阵。当k0H时,算法产生的方向均为下降方向,具有二次终止性,且对于数据的存储量相对较大。【实验小结】(收获体会)通过这个实验,我对于拟牛顿法的了解更深更加透彻,我们学习的算法使用编程语言实现时,仍然会有很多问题无法独立解决,求助了组员和同学们,自己还要多学习Matlab编程,这样在解决问题时才能更得心应手。三、指导教师评语及成绩:评语评语等级优良中及格不及格1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.4成绩:指导教师签名:批阅日期:附录1:源程序clc;clear;symsx1,x2;f=(x1-1)^2+5*(x2-x1^2)^2;v=[x1,x2];df=jacobian(f,v);df=df';x0=[2,0]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});k=0;H0=[1,0;0,1];while(norm(g1)0.001&k300)ifk==0p=H0*g1;elsevk=sk/(sk'*yk)-(H0*yk)/(yk'*H0*yk);w1=(yk'*H0*yk)*vk*vk';H1=H0-(H0*yk*yk'*H0)/(yk'*H0*yk)+(sk*sk')/(sk'*yk)+w1;p=H1*g1;H0=H1;endx00=x0;result=Usearch1(f,x1,x2,df,x0,p);arf=result(1);x0=x0+arf*p;g0=g1;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});p0=p;yk=g1-g0;sk=x0-x00;k=k+1;endFunctionresult=Usearch1(f,x1,x2,df,x0,p)mu=0.001;sgma=0.99;a=0;b=inf;arf=1;pk=p;x3=x0;x4=x3+arf*pk;5f1=subs(f,{x1,x2},{x3(1,1),x3(2,1)});f2=subs(f,{x1,x2},{x4(1,1),x4(2,1)});gk1=subs(df,{x1,x2},{x3(1,1),x3(2,1)});gk1=subs(df,{x1,x2},{x4(1,1),x4(2,1)});while(f1-f2=-mu*arf*gk1'*pk)b=arf;arf=(a+arf)/2;x4=x3+arf*pk;f2=subs(f,{x1,x2},{x4(1,1),x4(2,1)});gk2=subs(df,{x1,x2},{x4(1,1),x4(2,1)});endwhile(10)if(gk2'*pksgma*gk1'*pk)a=arf;a=min(2*arf,(a+b)/2);x4=x3+arf*pk;f2=subs(f,{x1,x2},{x4(1,1),x4(2,1)});gk2=subs(df,{x1,x2},{x4(1,1),x4(2,1)});while(f1-f2=-mu*arf*gk1'*pk)b=arf;arf=(a+arf)/2;x4=x3+arf*pk;f2=subs(f,{x1,x2},{x4(1,1),x4(2,1)});gk2=subs(df,{x1,x2},{x4(1,1),x4(2,1)});endelsebreak;endendresult=[arf];附录2:实验报告填写说明1.实验项目名称:要求与实验教学大纲一致。2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。3.实验原理:简要说明本实验项目所涉及的理论知识。4.实验环境:实验用的软、硬件环境。5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。6对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。对于创新性实验,还应注明其创新点、特色。6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。7.实验结论(结果):根据实验过程中得到的结果,做出结论。8.实验小结:本次实验心得体会、思考和建议。9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功