当前位置:文档之家› 机械优化设计

机械优化设计

黄金分割法
一、优化方法阐述
1.原理阐述:
黄金分割法是用于一元函数f(x)在给定初始区间[a,b]内搜索极小点α*的一种方法.它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化算法的基础,但它只适用于一维区间上的凸函数[6],即只在单峰区间内才能进行一维寻优,其收敛效率较低.其基本原理是:依照“去劣存优”原则、对称原则、以及等比收缩原则来逐步缩小搜索区间[7]。

具体步骤是:在区间[a,b]内取点:a1 ,a2 把[a,b]分为三段。

如果f(a1)〉f(a2),令a=a1,a1=a2,a2=a+r*(b-a);如果f(a1)〈f(a2) ,令b=a2,a2=a1,a1=b-r*(b-a),如果|(b-a)/b|和|(y1—y2)/y2|都大于收敛精度ε重新开始。

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

黄金分割法原理如图所示,
2。

基本步骤:
1)在搜索区间[a,b]内对称地插入两个试点a1和a2,计算下式的函数值
a1=b—0.618(b-a), f1=f(a1)
a2=a+0。

618(b—a),f2=f(a2)
2)比较函数值f1与f2,缩短搜索区间
3)判断迭代终止条件。

如果满足b—a<=ε时,取函数f(a)的近似极小点a*=(b+a)/2。

否则,返回第2步,继续作收缩区间的迭代计算.
3.程序框图:
二、优化程序(源代码、界面、结构、操作等)
f=inline(’x^2-10*x+36',’x');
a=2;b=8;epsilon=0。

0001;
x1=b—0。

618*(b-a);f1=f(x1);
x2=a+0.618*(b—a);f2=f(x2);
x=[];y=[];
for k=1:25
if f1〈=f2
b=x2;x2=x1;f2=f1;
x1=b—0。

618*(b-a);f1=f(x1);
else
a=x1;x1=x2;f1=f2;
x2=a+0。

618*(b-a);f2=f(x2);
end
temp=0.5*(b+a);temp_y=f(temp);
x=[x,temp];y=[y,temp_y];
fprintf(1,'区间中点 x=%3。

4f\n’,x)
end
ezplot(f,[2,8]),hold on
plot(x,y,’r*’);
三、优化问题分析及结果
共轭梯度法
一、优化方法阐述
1. 原理阐述:
共轭梯度法为求解线性方程组而提出。

后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。

共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。

根据共轭方向的基本性质,这种方法具有二次终止性。

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

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

2。

基本步骤:
和维数n,置迭代次数K=0,按照梯度法进行第一次搜索。

1)给定初始点x0,迭代精度
2)计算搜索方向s(k)的修正值,按照公式构造共轭方向s(k+1),进行下一次迭代.
3)当K=n时,置x0=x(n),返回第一步;否则返回第2步。

3. 程序框图:
二、优化程序(源代码、界面、结构、操作等)
function[Xmin,y]=gtidu(x0,e)
x0=[8,9]';
e=0。

000001;
syms a1a2b0;
y=4*(a1—5)^2+(a2-6)^2;
f0=[diff(y,a1);diff(y,a2)];
k=0;
g0=subs(f0,{a1,a2},{x0(1),x0(2)});
d0=-g0;
x1=sve(x0,d0);
g1=subs(f0,{a1,a2},{x1(1),x1(2)});
ezmesh(’4*(a1-5)^2+(a2—6)^2');
while double(sqrt(dot(g1,g1)))>e
b0=dot(g1,g1)/dot(g0,g0);
d1=-g1+b0*d0;
x2=sve(x1,d1);
g2=subs(f0,{a1,a2},{x2(1),x2(2)});
k=k+1;
g0=g1;g1=g2;d0=d1;x1=x2;
end
fprintf('\nThe number is :\n\nk=%d\n\n',k);disp('The result is :');
Xmin=x2;
y=subs(y,{a1,a2},{Xmin(1),Xmin(2)});function xk=sve(x,d)
syms a1a2s;
y=4*(a1—5)^2+(a2—6)^2;
x=x+s*d;
f=subs(y,{a1,a2},{x(1),x(2)});
df=diff(f,s);
s=solve(df);
xk=subs(x,s);
三、优化问题分析及结果。

相关主题