机械优化设计实验报告.docx
- 文档编号:6403827
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:23
- 大小:444.73KB
机械优化设计实验报告.docx
《机械优化设计实验报告.docx》由会员分享,可在线阅读,更多相关《机械优化设计实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
机械优化设计实验报告
致谢25
摘要
本文主要讲述了机械优化设计中应用到的一些优化方法的原理及其程序。
优化设计是将最优化原理和计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法。
利用这种新的设计方法,人们可以从众多的设计方案中寻找出最佳的设计方案,从而大大提高设计效率和质量。
因而优化设计是现代设计理论和方法的一个重要领域,它已广泛应用于各个工业部门。
主要针对一维优化问题、无约束优化问题、有约束优化问题三类,分别采用黄金分割法、牛顿法(切线法)、牛顿型法、遗传算法、外点惩罚函数法及matlab优化工具箱中的fminbnd、fminsearch、fmincon函数优化。
关键词 优化设计,黄金分割法,牛顿法,牛顿型法,遗传算法,fminbnd,fminsearch,fmincon
1绪论
1.1实验目的
机械优化设计是一门实践性很强的课程,学生通过实验上机计算达到以下目的:
1加深对机械优化设计方法的基本理论和算法步骤的理解。
2培养学生独立编制计算机程序的能力。
3掌握常用优化方法程序的使用方法。
4培养学生灵活运用优化设计方法解决工程实际问题的能力。
1.2实习内容
1一维搜索法程序的编制、调试和考核(0.618法和二次插值发任选一种)。
2无约束优化方法程序的编制、调试和考核。
3阅读理解已在计算机上调试好的约束优化方法程序,了解程序的结构特点,掌握程序的使用方法。
2一维搜索方法
2.1黄金分割法
2.1.1黄金分割法基本思路
黄金分割法适用于[a,b]区间上的任何单股函数求极小值问题,对函数除要求“单谷”外不做其他要求,甚至可以不连续。
因此,这种方法的适应面非常广。
黄金分割法也是建立在区间消去法原理基础上的试探方法,即在搜索区间[a,b]内适当插入两点a1,a2,并计算其函数值。
a1,a2将区间分成三段,应用函数的单谷性质,通过函数值大小的比较,删去其中一段,是搜索区间得以缩小。
然后再在保留下来的区间上作同样的处理,如此迭代下去,是搜索区间无限缩小,从而得到极小点的数值近似解。
2.1.2黄金分割法流程图
黄金分割法流程图如图2-1所示:
图2-1黄金分割法流程图
2.1.3题目
对函数
,试用黄金分割法求其最优解。
2.1.4源程序代码及结果
1源程序代码
tic%启动计时器
f=inline('t^2-10*t+36')%
a=-10;b=10;eps=0.001;
a1=b-0.618*(b-a);y1=f(a1);
a2=a+0.618*(b-a);y2=f(a2);
while(abs(b-a)>eps)
if(y1>=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
end
t1=toc%关闭计时器,并显示解方程所用的时间
x=0.5*(a+b)
fmin=x^2-10*x+36
2结果如图2-2
图2-2黄金分割法计算结果
2.2牛顿型法
2.2.1牛顿型法基本思
在
领域内用一个二次函数
来近似代替原目标函数,并将
的极小点作为目标函数
求优的下一个迭代点
。
经多次迭代,使之逼近目标函数
的极小点。
2.2.2阻尼牛顿法的流程图
阻尼牛顿法流程图如图2-3所示:
图2-3阻尼牛顿流程图
2.2.3题目
对函数
,试用牛顿法求其最优解。
2.2.4源程序代码及结果
1源程序代码
functionf=findmins()
tic%启动秒表计时器
jd=0.001;%精度初始化
cs=0;
a=[1-1036];%生成多项式
b1=polyder(a);%对多项式求一阶导数
b2=polyder(b1);
cs1=10
whileabs(cs-cs1)>=jd%迭代收敛性判断
t1=polyval(b1,cs);%导数赋值
t2=polyval(b2,cs);
cs1=cs;
cs=cs1-t1/t2;
end
f2=poly2str(a,'x')
disp('最优解为:
')%显示最优解
x=cs
f1=polyval(a,cs)
t1=toc%关闭计时器,并显示解方程所用的时间
end
2结果如图2-4
图2-4阻尼牛顿法计算结果
2.3fminbnd法
2.3.1fminbnd法的基本思想
fminbnd函数可以计算一元函数最小值优化问题,它用于求解一维设计变量在固定区间内的目标函数的最小值,即最优化问题的约束条件只有设计变量的上、下界。
其求解的算法是基于黄金分割法和抛物线插值法。
2.3.2源程序代码及结果
1源程序代码
tic;%启动秒表计时器
x1=-10;x2=10;
yx=@(x)(x^2-10*x+36);%采用匿名函数定义被求极小值的函数
[xn0,fval,exitflag,output]=fminbnd(yx,x1,x2)%xn0,fval分别为极值点和极小值
t1=toc%关闭计时器并显示解方程所用的时间
2结果如图2-5
如图2-5fminbnd计算结果
2.4三种一维搜索方法的比较
根据前边三种方法计算的结果统计表如下表2-1及运行时间如柱形图2-6所示。
表2-1三种方法计算结果统计表
优化方法
运行时间(s)
所求极值点
黄金分割法
0.0267
5.0002
阻尼牛顿法
0.0018
5
fminbnd法
0.0037
5.0000
图2-6运行时间柱形图
由上述图2-6可以直观明了的表明阻尼牛顿法的运行所用的时间最短。
通过对比可以表明牛顿法的最大优点是收敛速度快,这是牛顿法所具有的优越性。
从表2-1可以发现fminbnd的计算结果的精度比较高。
3无约束优化方法
3.1牛顿型法
3.1.1牛顿型法的基本思想
为了寻找收敛速度快的无约束最优化方法,我们考虑在每次迭代时,用适当的二次函数去接近目标函数
,并用迭代点指向近似二次函数极小点的方向来构造搜索方向,然后精确地求出近似二次函数的极小点,以该极小点作为
的极小点的近似值。
3.1.2牛顿法的流程图
牛顿法流程图如图3-1所示
图3-1牛顿法的流程图
3.1.3题目
对函数
;初始点:
。
用牛顿型法来求其最优解。
3.1.4源程序代码及结果
1源程序代码
functionff=findmin()
clearall
tic%启动秒表计时器
mt=sym('(x1^2+x2-11)^2+(x1+x2^2-7)^2');
f1=[diff(mt,'x1');diff(mt,'x2')];
qt1=diff(mt,'x1',2);%mt关于x1求二阶导数
qt2=diff(mt,'x2',1);
qt2=diff(qt2,'x1',1);
qt3=diff(mt,'x2',1);
qt3=diff(qt3,'x1',1);
qt4=diff(mt,'x2',2);
f2=[qt1,qt2;qt3,qt4];
xx=[1;1];%³õʼÏòÁ¿
zz=[1;1];
whilenorm(double(zz))>0.001
yy=xx;
f3=subs(f1,'x1',xx
(1));%用xx1置换f1中x1后产生f3
f3=subs(f3,'x2',xx
(2));
f4=subs(f2,'x1',xx
(1));
f4=subs(f4,'x2',xx
(2));
g1=-inv(f4)*f3;%矩阵的逆
b1=sym('b1');
xx=yy+b1*g1;
f5=subs(mt,'x1',xx
(1));
f5=subs(f5,'x2',xx
(2));
sw2=sym2poly(f5);%符号多项式转化为数值多项式系数
sw1=polyder(sw2);%对多项式求导
ifsw1==0
dwj=eval(f5);
else
we=roots(sw1);%求多项式的根
fort=1:
length(we)%确定数组的长度
cc(t)=polyval(sw2,we(t));%求多项式的值
end
hi=find(cc==min(min(cc)));%寻找满足条件的数组元素下标
digits(8);%控制符号数值的有效数字位数
qq=vpa(we(hi));%给出数值型符号结果
end
xx=yy+qq*g1;
zz=xx-yy;
end
disp('最优解为:
')
xx
f6=subs(mt,'x1',xx
(1));
f7=subs(f6,'x2',xx
(2));
f=fix(f7)
t1=toc%关闭计时器并显示解方程所用的时间
end
2结果如图3-2
图3-2牛顿法计算结果
3.2遗传算法
3.2.1遗传算法的基本思想
遗传算法是一种基于自然选择和遗传变异等生物机制的全局性概率搜索算法。
与基于导数的解析方法和其他启发搜索方法一样,遗传算法在形式上也是一种迭代方法。
基本的遗传算法通过对某一代种群经过对生物基因的复制、变换和变异,特产生新一代种群。
再重复此过程,直到群体或最优点的性能达到满意程度。
3.2.2遗传算法的流程图
遗传算法流程图如图3-3所示
图3-3遗传算法流程图
3.2.3题目
对函数
;初始点:
。
用牛顿型法来求其最优解。
3.2.4源程序代码及结果
1源程序代码
functionf=rastrigin(x);
f=(x
(1)^2+x
(2)-11)^2+(x
(1)+x
(2)^2-7)^2
tic;
fitnessFunction=@rastrigin;
nvars=2;
options=gaoptimset;
options=gaoptimset(options,'PopulationSize',500);
options=gaoptimset(options,'PopInitRange',[0,5;0,5]);
options=gaoptimset(options,'CrossoverFraction',0.85);
options=gaoptimset(options,'MigrationFraction',0.15);
options=gaoptimset(options,'Generations',500);
[x,fval,exitflag]=ga(fitnessFunction,nvars,options)
t1=toc;
2结果如图3-4
图3-4遗传算法计算结果
3.3多维无约束优化的MATLAB求解函数fminsearch法
3.3.1fminsearch法的基本思想
fminsearch进行寻优的算法基于不使用梯度的单纯形法。
fminsearch解决的是多维函数的寻优问题,而且在fminsearch中指定的是初始点。
Fminsearch的寻优过程实际上是在初始点附近找到最优化问题目标函数的一个局部极小点。
3.3.2题目
对函数
;初始点:
。
用牛顿型法来求其最优解。
3.3.3源程序代码及结果
1源程序代码
tic;
v0=[1,1];
[x,fval,exitflag,output]=fminsearch(@two_var,v0)
t1=toc;
2结果如图3-5
图3-5fminsearch法计算结果
3.4三种无约束优化方法的比较
根据前边三种方法计算的结果统计表如下表3-1及运行时间如柱形图3-6所示。
表3-1三种方法计算结果统计表
优化方法
运行时间
所求极值点
牛顿型法
2.2290
3.02.0
遗传算法
6.9436
2.99572.0050
fminsearch法
0.0082
3.00002.0000
图3-6运行时间柱形图
由上述图3-6可以直观明了的表明fminsearch法的运行所用的时间最短。
遗传算法所用的时间比较长,这是由于遗传算法并行的方式从问题解的串集开始嫂索,而不是从单个解开始。
这是遗传算法与传统优化算法的极大区别。
传统优化算法从单个初始值迭代求最优解的;容易误入局部最优解。
遗传算法从串集开始搜索,覆盖面大,利于全局择优。
从表3-1可以发现遗传算法的计算精度比较低。
4约束优化方法
4.1外点惩罚函数法
4.1.1外点惩罚函数法的基本思想
外点法将新目标函数Φ(x,r)构筑在可行域D外,随着惩罚因子r(k)的不断递减,生成一系列新目标函数Φ(xk,r(k)),在可行域内逐步迭代,产生的极值点xk*(r(k))序列从可行域内部趋向原目标函数的约束最优点x*。
4.1.2题目
对函数
;
s.t.
初始点:
用外点惩罚函数法来求其最优解。
4.1.3源程序代码及结果
1源程序代码
xx=[1;5];
xxx=[10;10];
r=0.5;
c=2;
f1=sym('(x2^3*((x1-3)^2-9))/(27*sqrt(3))');
f2=sym('(x2-x1/(sqrt(3)))^2+(-x1+x2/(sqrt(3)))^2+(x1+x2/(sqrt(3))-6)^2+(-x1)^2+(-x2)^2');
f3=f1+r*f2;
f4=subs(f3,'x1',xx
(1));
f4=subs(f4,'x2',xx
(2));
f5=subs(f3,'x1',xxx
(1));
f5=subs(f5,'x2',xxx
(2));
while(abs(double((f4-f5)/f5))>0.001)||(norm(double(xx-xxx))>0.001)
xxx=xx;
f5=subs(f3,'x1',xxx
(1));
f5=subs(f5,'x2',xxx
(2));
f3=f1+r*f2;
f4=subs(f3,'x1',xx
(1));
f4=subs(f4,'x2',xx
(2));
de=subs(f3,'x1','x
(1)');
de=subs(de,'x2','x
(2)');
de=char(de);
[se,fr]=fminsearch(de,[1;5]);
xx=[se
(1);se
(2)]
r=c*r;
end
disp('最优解为:
')
xx
fe=subs(f1,'x1',xx
(1));
fe=subs(fe,'x2',xx
(2))
2结果如图4-1
图4-1外点惩罚函数法计算结果
4.2遗传算法
4.2.1遗传算法的基本思想
遗传算法是一种基于自然选择和遗传变异等生物机制的全局性概率搜索算法。
与基于导数的解析方法和其他启发搜索方法一样,遗传算法在形式上也是一种迭代方法。
基本的遗传算法通过对某一代种群经过对生物基因的复制、变换和变异,特产生新一代种群。
再重复此过程,直到群体或最优点的性能达到满意程度。
4.2.2遗传算法的流程图
遗传算法流程图如图4-3所示
图4-3遗传算法流程图
4.2.3题目
对函数
;
s.t.
初始点:
4.2.4源程序代码及结果
1源程序代码
functiony=lincontest6(x)
y=x
(2)^3*((x
(1)-3)^2-9)/(27*sqrt(3));
dy=[2*x
(2)^3*(x
(1)-3)/(27*sqrt(3));3*x
(2)^2*((x
(1)-3)^2-9)/(27*sqrt(3))];
tic;
A=[(-1)/sqrt(3)1;-11/sqrt(3);11/sqrt(3)];
b=[0;0;6];
lb=zeros(2,1);
[x,fval,exitflag]=ga(@lincontest6,2,A,b,[],[],lb)
t1=toc
2计算结果如图4-4
图4-4遗传算法计算结果
4.3两种有约束优化的比较
根据前边两种方法计算的结果统计表如下表3-1。
表3-1两种方法计算结果
优化方法
计算结果
外点惩罚函数法
2.10391.7545
遗传算法
4.50032.5993
通过计算结果与最优解(3,1.73205)比较,发现遗传算法与外点惩罚函数法所求的最优解与标准解有比较大的误差。
外点惩罚函数法计算结果误差大可能是由于惩罚因子和递增系数选取不当。
结论
本文阐述了机械优化设计中应用到的多种优化方法。
在做实验的过程中我们针对一维优化问题、无约束优化问题、有约束优化三类问题,应用了matlab数值计算软件,分别采用黄金分割法、牛顿法(切线法)、牛顿型法、遗传算法及matlab优化工具箱中的fminbnd、fminsearch、fmincon函数优化。
从而使我了解到机械优化设计是以数学规划论为基础,以计算机为工具,一种自动寻优的先进的、现代的设计方法。
根据设计所追求的性能目标,建立目标函数,在满足给定的各种约束条件下,寻求最优的设计方案。
可见它是非常经典的一门学科。
在课程学习过程中我明白了很多工程问题是可以转化为数学模型并可以通过计算机求解。
同时了解了matlab编程相关知识,并将其应用到了一维优化问题、无约束优化问题、有约束优化问题中,收获颇多。
优化设计同时也教会了我如何追求“优”,同时使自己有能力、有办法“化”到优!
参考文献
【1】孙靖民,梁迎春主编.机械优化设计(第四版)机械工业出版社,2012
【2】李明主编.MATLAB在最优化计算中的应用.电子工业出版社,2012
【3】张志涌,杨祖樱主编.MATLAB教程.北京航空航天大学出版社,2010
致谢
首先,我们应感谢在机械优化设计课堂中杨利坡老师的精心指导,在此要向杨老师致以最崇敬的感谢。
在这里,我要一并感谢帮助过我的同学们,谢谢你们。
经过这五周的机械优化课程学习,我基本了解了当代工业设计中所用到的重要的优化设计方法,懂得了在以后的实际应用中该如何对一个实际问题进行化。
首先是将实际模型抽象得到其数学模型,然后选择适合的方法,再利用软件编写相应程序即可求得最优解。
机械优化设计这门课程很重要但是这次学习的时间太短,只基本了解了各种优化算法,在课余时间我会加深对其学习。
同时目前产生了很多新的有效的智能算法,也应该对这些方法加以了解,并真正将它们运用到以后的实际项目中去。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 优化 设计 实验 报告