机电产品优化设计 课程设计报告Word格式.docx

上传人:b****6 文档编号:16228272 上传时间:2022-11-21 格式:DOCX 页数:9 大小:163.52KB
下载 相关 举报
机电产品优化设计 课程设计报告Word格式.docx_第1页
第1页 / 共9页
机电产品优化设计 课程设计报告Word格式.docx_第2页
第2页 / 共9页
机电产品优化设计 课程设计报告Word格式.docx_第3页
第3页 / 共9页
机电产品优化设计 课程设计报告Word格式.docx_第4页
第4页 / 共9页
机电产品优化设计 课程设计报告Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

机电产品优化设计 课程设计报告Word格式.docx

《机电产品优化设计 课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《机电产品优化设计 课程设计报告Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

机电产品优化设计 课程设计报告Word格式.docx

其基本原理是:

依照“去劣存优”原则、对称原则、以及等比收缩原则来逐步缩小搜索区间。

具体步骤是:

在区间[a,b]内取点:

a1,a2把[a,b]分为三段。

如果f(a1)>

f(a2),令a=a1,a1=a2,a2=a+0.618*(b-a);

如果f(a1)<

f(a2),令b=a2,a2=a1,a1=b-0.618*(b-a);

如果|(b-a)/b|和|(y1-y2)/y2|都大于收敛精度ε重新开始循环。

因为[a,b]为单峰区间,这样每次可将搜索区间缩小0.618倍,处理后的区间都将包含极小点的区间缩小,然后在保留下来的区间上作同样的处理,如此迭代下去,将使搜索区[a,b]逐步缩小,直到满足预先给定的精度时,即获得一维优化问题的近似最优解。

插入点原理图如下:

1.2算法流程图

1.3matlab源程序

编写程序,并且输出每次的搜索区间。

则源程序如下:

golden1程序

function[x,fval]=golden1(f,a,b,eps)

k=0;

a1=a+0.382*(b-a);

%插入点的值

a2=a+0.618*(b-a);

y1=f(a1);

y2=f(a2);

whileabs(b-a)>

=eps%循环条件,eps为收敛精度

ify1>

=y2%比较插入点的函数值的大小

a=a1;

%缩短搜索区间

a1=a2;

y1=y2;

a2=a+0.618*(b-a);

y2=f(a2);

else

b=a2;

a2=a1;

y2=y1;

a1=b-0.618*(b-a);

y1=f(a1);

end

k=k+1;

end%停止迭代

x=(a+b)/2;

%取最后两点的平均值作为极小点的数值近似解

fval=f(x);

fprintf('

k=\n'

);

%显示迭代次数

disp(k);

1.4黄金分割法应用举例

根据0.618算法编写程序,求函数

在区间

上的极大值。

解:

程序为:

>

z=@(t)t^2-10*t+36;

[x,fval]=golden1(z,0,10,10^-6)

运行结果:

说明最小值点为

,最小值为

,迭代次数为34

2.1共轭梯度法的基本原理与步骤

共轭梯度法(ConjugateGradient)是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。

在各种优化算法中,共轭梯度法是非常重要的一种。

其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。

共轭梯度法是共轭方向法中的一种,因为在该方法中每一个共轭向量都是依赖于迭代点处的负梯度而构造出来的,所以称作共轭梯度法。

其基本步骤为:

1)设初始点,第一个搜索方向取点的负梯度,即

沿进行一维搜索,得,并算出点处的梯度。

是以为切线和某等值曲线的切点。

根据梯度和该点等值面的切面相垂直的性质,因此和正交,有,从而和正交,即,和组成平面正交系。

2)在和所构成的平面正交系中求的共轭方向,作为下一步的搜索方向。

把取成与两个方向的线性组合,即

式中——待定系数,它可以根据共轭方向与梯度的关系求得。

3)再沿方向进行一维搜索。

4)以上面的方式一直搜索下去,直到最后迭代点处梯度的模小于给定允许值为止。

若目标函数为非二次函数,经n次搜索还未达到最优点时,则以最后得到的点作为初始值,重新计算共轭方向,一直到满足精度要求为止。

主程序:

function[x,output]=cg(fun,dfun,x0)

epsi=1.0e-3;

funcN=0;

rho=0.01;

l=0.15;

u=0.85;

x=x0;

f=feval(fun,x);

funcN=funcN+1;

n=length(x0);

g=feval(dfun,x);

whilenorm(g)>

epsi&

k<

=150

iterm=k-floor(k/(n+1))*(1+n);

iterm=iterm+1;

k=k+1;

ifiterm==1

d=-g;

gd=g'

*d;

beta=g'

*g/(gold'

*gold);

d=-g+beta*dold;

ifgd>

=0.0

gd=g'

alpha_0=1;

[alpha,funcNk,exitflag]=lines(fun,rho,l,u,alpha_0,f,gd,x,d);

funcN=funcN+funcNk;

ifexitflag==-1

break

s=alpha*d;

x=x+s;

f=feval(fun,x);

funcN=funcN+1;

gold=g;

dold=d;

g=feval(dfun,x);

end

output.fval=f;

output.iteration=k;

output.funcount=funcN;

output.gnorm=norm(g);

编译程序:

function[alpha,funcN,exitflag]=lines(funct,rho,l,u,alpha_0,f,gd,x,d,varargin);

alpha=alpha_0;

i=0;

imax=30;

whilei<

=imax

fn=feval(funct,x+alpha*d,varargin{:

});

i=i+1;

iffn<

f+alpha*rho*gd

exitflag=0;

return;

alphan=-gd*alpha^2*0.5/(fn-f-alpha*gd);

alphan=max(l*alpha,alphan);

alpha=min(u*alpha,alphan);

exitflag=0;

ifi>

=imax&

fn>

=f

exitflag=-1;

2.4共轭梯度法应用举例

方程程序:

functionf=fangcheng(x)

f=4*(x

(1)-5)^2+(x

(2)-6)^2

导数方程矩阵:

functiong=dfangcheng(x)

g=[2*(x

(1)-5);

2*(x

(2)-6)];

结果:

说明最优解为x=[5;

6],f(x)=0。

与书上结果一致。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1