机械最优化设计 - 图文(2)

2019-05-24 10:14

2)流程图如下:

给定x0,e>0,n H=[1,0;0,1],x1=x0; 计算此时点梯度模g,函数值z。 g>=e? 停 Xn=x0; fn=z; H=[1,0;0,1]; 计算x1点的模g,梯度矩阵df,赫森矩阵值dff,函数值f。 p=-H*df; 求出最优步长r qr=-(df'*p)/(p'*dff*p); x2=x1+r*p'; 计算在x2的梯度模g Y g>=e? N xn=x2'; fn=f;输出迭代次数k,结束循环。 k= =n? Y N 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; x1=x2; k=1; k=k+1;

3)M文件如下:

function [xn,fn]=DFP1(x0,e,n) %这是变尺度法

%输入参数是初始点x0,精度e,和n值 %输出值是极值点xn,和极值 if nargin<1

error('请按要求输入参数!') error('变尺度法') elseif nargin==1 e=0.0000001; n=10; elseif nargin==2 n=10; elseif nargin>3

error('参数输多了!') end

[z,df,dff,g]=fun(x0); k=1; H=[1,0;0,1]; x1=x0; if (g>=e)

for i=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;

else

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; end else xn=x2'; fn=f; k break end end else xn=x0'; fn=z; end

4)运行效果图

其中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的最优值。而且通过最优梯度法和变尺寸法减少了迭代次数。


机械最优化设计 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:古诗文默写题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: