机械最优化设计

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

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

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

资源描述

《机械最优化设计》作业姓名:陈辉学号:405928914106专业:机械工程6-4用最优梯度法和变尺度法对习题2-5F(x)=100(x2-x1^2)^2+(1-x1)^2寻优(设取初始点X0=[-1.2,1.0]’)。注:1.该函数式1960年由Rosenbrock提出的一个检验各种算法的标准函数,称为试验函数。这个函数的特点是:每个等值面是一个窄长弯曲的谷道,外形像香蕉,又称香蕉函数,其最优点Xn=[1,1]’,最优值F(Xn)=0。2.此题不能用手工计算,必须借助计算机才能求解。一、最优梯度法最优梯度法师应用目标函数的负梯度方向作为每一步迭代的搜索方向。因为每一步都取负梯度方向的最优步长,故称为最优梯度法。应用最优梯度法会使目标函数值在开头几步下降最快,故又称之为最优下降法。1)解题步骤:step1:任意选择初始点X0(-1.2,1.0),给出收敛精度e0,迭代次数k=1;step2:计算Xk点的梯度df及梯度的模g,确定在Xk的搜索方向,s=-df/g;step3:判断是否满足收敛准则ge。若满足,则输出最优解Xn=Xk,最优值Fn=z(Xk);否则继续下一步迭代。step4:从Xk点出发,沿s方向进行一维搜索,求最优步长a,即a=-(df'*s)/(s'*dff*s);step5:计算x2=x1+a*s';k=k+1;x1=x2;回到step2继续迭代。2)流程图如下:3)M文件:function[fn,xn]=OGM(x0,e)if(e=0)k=1停xn=xkge?计算df,g,s=-df/g;给出x0,e0a=-(df'*s)/(s'*dff*s);x2=x1+a*s';k=k+1;x1=x2;YNerror('e要大于0')error('这是最优梯度法')elsek=1;x1=x0;fori=1:10000[z,df,dff,g]=fun1(x1);s=-df/g;if(ge)xn=x1;fn=z;kbreakelsea=-(df'*s)/(s'*dff*s);x2=x1+a*s';k=k+1;x1=x2;endendend4)运行效果图如下:图中e为精度,k为迭代次数,fn为满足精度条件的最优值,xn为最优解5)评估沿负梯度方向的最优梯度法,其搜索路径实际上是成直角的锯齿形前进的,开始步长较大,越接近极小点,步长越小,收敛速度越慢。所以最优梯度法主要特点为能较快的接近于最优解的临近区域范围,一般更适用于求解问题的开局,而用作收局往往是不利的。在本题最优梯度法在编程中,将其e定为0.01,从运行效果图可以看出,为达到最优值迭代次数为15次,相对较多。而且寻得的最优值和精确解有一定的误差。所以本程序把最优梯度法用于前期开局,并且将其迭代精度e定为10,以使其减少迭代次数。二、变尺度法变尺度法是由Dovidon,Fletcher和Powell于1959年提出,后经Broyden,Fletcher,Goldstein和Shanno等人于1970年进一步完善和发展的。其主要思想是充分发挥最优化梯度法和牛顿法的优点并综合而成的一种算法;或者说是为了克服这两种方法的缺点而提出的一种修正的方法。变尺度法在国内工程技术研究领域目前用得较多。也有把变尺度法划归为修正牛顿法和拟牛顿法的。1)解题步骤:Step1.给定x0,e0,nStep2.计算初始点的梯度模g,梯度矩阵df,赫森矩阵值dff,函数值f,令x1=x0;Step3.判断梯度模与迭代精度的大小,g=e执行Step4,否则结束迭代,并且Xn=x0;fn=z;Step4.令H=[1,0;0,1];计算x1点的模g,梯度矩阵df,赫森矩阵值dff,函数值f。Step5.计算p=-H*df;求出最优步长rqr=-(df'*p)/(p'*dff*p);x2=x1+r*p';计算在x2的梯度模g。Step6.判断判断梯度模与迭代精度的大小,g=e,是执行Step7,否则xn=x2';fn=f;输出迭代次数k,结束循环。Step7.判断k与给定n值是否相等,若不等执行第Step8,否则x1=x2;k=1;回到Step4。Step8.计算detx=(x2-x1)';detg=df1-df;Z=H*detg;beta=1/(detx'*detg);miu=1/(Z'*detg);B=beta*detx*detx';C=miu*Z*Z';H=H+B-C;x1=x2;k=k+1;回到Step5;2)流程图如下:给定x0,e0,ng=e?停Xn=x0;fn=z;H=[1,0;0,1],x1=x0;计算此时点梯度模g,函数值z。p=-H*df;求出最优步长rqr=-(df'*p)/(p'*dff*p);x2=x1+r*p';计算在x2的梯度模gg=e?k==n?xn=x2';fn=f;输出迭代次数k,结束循环。x1=x2;k=1;detx=(x2-x1)';detg=df1-df;Z=H*detg;beta=1/(detx'*detg);miu=1/(Z'*detg);B=beta*detx*detx';C=miu*Z*Z';H=H+B-C;x1=x2;k=k+1;H=[1,0;0,1];计算x1点的模g,梯度矩阵df,赫森矩阵值dff,函数值f。YNYN3)M文件如下:function[xn,fn]=DFP1(x0,e,n)%这是变尺度法%输入参数是初始点x0,精度e,和n值%输出值是极值点xn,和极值ifnargin1error('请按要求输入参数!')error('变尺度法')elseifnargin==1e=0.0000001;n=10;elseifnargin==2n=10;elseifnargin3error('参数输多了!')end[z,df,dff,g]=fun(x0);k=1;H=[1,0;0,1];x1=x0;if(g=e)fori=1:100000[f,df,dff,g]=fun(x1);p=-H*df;r=-(df'*p)/(p'*dff*p);x2=x1+r*p';[f,df1,dff,g]=fun(x2);if(g=e)if(k==n)x1=x2;%H=[1,0;0,1];k=1;elsedetx=(x2-x1)';detg=df1-df;Z=H*detg;beta=1/(detx'*detg);miu=1/(Z'*detg);B=beta*detx*detx';C=miu*Z*Z';H=H+B-C;x1=x2;k=k+1;endelsexn=x2';fn=f;kbreakendendelsexn=x0';fn=z;end4)运行效果图其中x0为迭代初始点,e为迭代精度,k为迭代次数,xn为满足迭代精度的最优解,yn为函数带入最优解后得到的最优值。5)评估从运行效果图可以得到,变尺寸法能非常快地得到满足精度的最优点,获得最优值!三、fun()函数为了编程方便将函数表达式,梯度,赫森矩阵和梯度模写在同一个M文件当中。输入的参数是x的值,输出对应的函数表达式,梯度,赫森矩阵和梯度模的值。该M文件如下:function[z,df,dff,g]=fun(x)z=100*(x(2)-x(1)^2)^2+(1-x(1))^2;df=[-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1)),200*(x(2)-x(1)^2)]';dff=[-400*x(2)+1200*x(1)^2+2,-400*x(1);-400*x(1),200];g=sqrt((-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1)))^2+(200*(x(2)-x(1)^2))^2);四、合并两个方法为了利用最优梯度法的开局和变尺度的收局优势,减少迭代次数,将这两种方法结合起来使用。下面是该函数的M文件:function[xn,fn]=GHM(x0,e1,e2,n)x1=OGM(e1,x0)[x2,f2]=DFP1(x1,e2,n);xn=x2;fn=f2;运行效果图:为了使最优梯度法发挥作用,因此任意取得一个初始值,令x0=[-1000,899]得到运行效果图如下:经多次试验,本程序从任意初始点收敛于最优点[1,1]得到趋于0的最优值。而且通过最优梯度法和变尺寸法减少了迭代次数。

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

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

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

×
保存成功