《机械最优化设计》作业
姓名: 陈辉 学号: 405928914106 专业: 机械工程
6-4 用最优梯度法和变尺度法对习题2-5
F(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),给出收敛精度e>0,迭代次数k=1;
step2:计算Xk点的梯度df及梯度的模g,确定在Xk的搜索方
向,s=-df/g;
step3:判断是否满足收敛准则g 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) 流程图如下: 给出x0,e>0 k=1 计算df,g,s=-df/g; Y g 3)M文件: function [fn,xn]=OGM(x0,e) if (e<=0) error('e要大于0') error('这是最优梯度法') else k=1; x1=x0; for i=1:10000 [z,df,dff,g]=fun1(x1); s=-df/g; if (g a=-(df'*s)/(s'*dff*s); x2=x1+a*s'; k=k+1; x1=x2; end end end 4)运行效果图如下: 图中e为精度,k为迭代次数,fn为满足精度条件的最优值,xn为最优解 5)评估 沿负梯度方向的最优梯度法,其搜索路径实际上是成直角的锯齿形前进的,开始步长较大,越接近极小点,步长越小,收敛速度越慢。所以最优梯度法主要特点为能较快的接近于最优解的临近区域范围,一般更适用于求解问题的开局,而用作收局往往是不利的。在本题最优梯度法在编程中,将其e定为0.01,从运行效果图可以看出,为达到最优值迭代次数为15次,相对较多。而且寻得的最优值和精确解有一定的误差。所以本程序把最优梯度法用于前期开局,并且将其迭代精度e定为10,以使其减少迭代次数。 二、变尺度法 变尺度法是由Dovidon,Fletcher和Powell于1959年提出,后经Broyden,Fletcher,Goldstein和Shanno等人于1970年进一步完善和发展的。其主要思想是充分发挥最优化梯度法和牛顿法的优点并综合而成的一种算法;或者说是为了克服这两种方法的缺点而提出的一种修正的方法。变尺度法在国内工程技术研究领域目前用得较多。也有把变尺度法划归为修正牛顿法和拟牛顿法的。 1)解题步骤: Step 1. 给定x0,e>0,n Step 2. 计算初始点的梯度模g,梯度矩阵df,赫森矩阵值dff,函数 值f,令x1=x0; Step 3.判断梯度模与迭代精度的大小,g>=e执行Step 4,否则结束迭 代,并且Xn=x0; fn=z; Step 4.令H =[1,0;0,1]; 计算x1点的模g,梯度矩阵df,赫森矩阵值 dff,函数值f。 Step 5.计算p=-H*df; 求出最优步长rqr=-(df'*p)/(p'*dff*p); x2=x1+r*p'; 计算在x2的梯度模g。 Step 6.判断判断梯度模与迭代精度的大小,g>=e,是执行Step7, 否则xn=x2'; fn=f;输出迭代次数k,结束循环。 Step 7.判断k与给定n值是否相等,若不等执行第Step8,否则x1=x2; k=1;回到Step4。 Step 8.计算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;