当前位置:文档之家› 机械优化设计课本中编程实例

机械优化设计课本中编程实例

燕山大学机械优化设计论文专业:12机械工程班级:工学部1班学号:姓名:2012年12月05日摘 要:机械优化设计是将最优化原理和计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法。

机械优化设计包括建立优化设计问题的数学模型和选择恰当的优化方法与程序两方面的内容。

由于机械优化设计是应用数学方法寻求机械设计的最优方案,所以首先要根据实际的机械设计问题建立相应的数学模型,即用数学形式来描述实际设计问题。

在建立数学模型时,需要用专业知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。

机械优化设计问题的数学模型可以是解析式,实验数据或经验公式。

虽然它们给出的形式不同,但都是反应设计变量之间的数量关系的。

MATLAB 是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。

本文用MATLAB 来解决机械设计中的几个常见的问题。

关键词:MATLAB ;优化;机械设计;软件1 引 言近年来发展起来的计算机辅助设计,在引入优化设计方法后,使得在设计过程中既能够不断选择设计参数并评选出最优设计方案,又可以加快设计速度,缩短设计周期。

在科学技术发展要求机械产品更新日益缩短的今天,把优化设计方法与计算机辅助设计结合起来,使设计过程完全自动化,已成为设计方法的一个重要趋势。

2 采用MATLAB 软件进行优化设计2.1.问题描述:求3682+-=t t f 的最优解2.1.1规划模型的建立:目标函数36102+-=t t f约束条件无约束2.1.2对应的程序:clcclearsyms tf=t^2-10*t+36;x1=0;h=2;f1=subs(f,x1);x2=x1+h;f2=subs(f,x2);f3=f2-1;t=1;if (f1-f2)>0while f3<f2f3=subs(f,x2+t*h);t=t+1;endx3=x2+(t-1)*h;elsef3=f2;f2=f1;t=1;f1=f2-1;x3=x2;x2=x1;while f1<f2f1=subs(f,x2-t*h);t=t+1;endx1=x2-(t-1)*h;enda=x1;b=x3;e=1e-05;k=0.618;a1=b-k*(b-a);a2=a+k*(b-a);f1=subs(f,a1);f2=subs(f,a2);c=(b-a)/2;while c>eif f1>f2a=a1;a1=a2;a2=a+k*(b-a);f1=f2;f2=subs(f,a2);t_min=a2;f_min=f2;elseb=a2;a2=a1;a1=b-k*(b-a);f2=f1;f1=subs(f,a1);t_min=a1;f_min=f1;endc=(b-a)/2;endt_minf_min2.1.3运行结果2.1.4 程序基本原理此程序运用的是黄金分割法,黄金分割法适用于〔a ,b 〕区间上的任何单谷函数求极小值问题。

黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间〔a ,b 〕内插入两点并计算其函数值,将区间分成三段。

应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间无限缩小,从而得到极小点的数值近似解。

2.1.5 结 论黄金分割法可以通过最少的试验次数,找到“最佳点”。

它是一个一维的搜索方法,并且比较精确,配合计算机MATLAB 软件更能实现求解的快速性和准确性。

2.2.问题描述:求221212221)6182324844949()112()(min -++++-+=x x x x x x x f 的最优解2.2.1规划模型的建立:目标函数221212221)6182324844949()112()(min -++++-+=x x x x x x x f初始条件:[]Tx 1,10= ()33307690=x f 约束条件无约束2.2.2对应的程序:syms t1 t2f=(t1^2+12*t2-1)^2+(49*t1+49*t2+84*t1+2324*t2-681)^2;x0=[1;1]b=symvar(f);n=size(b,2);g=cell(n,1);G=cell(n,n);H0=eye(n,n);for i=1:ng{i,1}=diff(f,b(i));endfor i=1:n %产生海塞矩阵for j=1:nG{j,i}=diff(g{i},b(j));endendg0=subs(g,b,x0); %产生在x0点的梯度d0=H0*g0;a=buchang(x0,d0,f);x1=x0-a*d0; %产生第一个点xcha=x1-x0; %计算两点之间的距离dis=mo(xcha);k=0;while dis>1e-5 %收敛条件g1=subs(g,b,x1); %判断在迭代点是否梯度为0if g1==0Gy=subs(G,b,x1); %观察海赛矩阵breakendy0=g1-g0;s0=x1-x0;H1=H0+(s0*s0')/(s0'*y0)-(H0*y0*y0'*H0)/(y0'*H0*y0);d1=H1*g1;a=buchang(x1,d1,f);x2=x1-a*d1;g0=g1;x0=x1;x1=x2;H0=H1;xcha=x1-x0;dis=mo(xcha);x1 %输出每次的迭代点subs(f,b,x1) %迭代点的函数值k=k+1 %显示迭代次数end2.2.3运行结果2.1.4 程序基本原理 变量的尺度变换是放大或缩小各个坐标。

通过尺度变换可以把函数的偏心程度降低到最低到最低限制。

尺度变换技巧能显著地改进几乎所有极小化方法的收敛性质。

用最速下降法求22212125),(x x x x f +=的极小值时,需要进行10次迭代才能达到最小值点[]T x 0,0*=。

但是,若变换 11x y =225x y =即把2x 的尺度放大5倍,就可以将等值线为椭圆的函数),(21x x f 变换成等值线为圆的函数222121),(y y y y +=ψ,从而消除了函数的偏心,用最速下降法只需一次迭代即可求得最小值点。

在Newton 法中,基本迭代公式k k k k P t X X +=+1, 其中,1=k t ,)()]([12k k k X f X f P ∇∇-=-,于是有2,1,0,11=-=-+k g G X X k k k k (1)其中0X 是初始点,k g 和k G 分别是目标函数)(X f 在点k X 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵1-k G ,可用某种近似矩阵)(k k X H H =来替换它,即构造一个矩阵序列}{k H 去逼近Hesse 逆矩阵序列}{1-k G此时式(1)变为k k k k g H X X -=+1事实上,式中k k k g H P -=无非是确定了第k 次迭代的搜索方向,为了取得更大的灵活性,我们考虑更一般的的迭代公式k k k k k g H t X X -=+1 (2)其中步长因子k t 通过从k X 出发沿k k k g H P -=作直线搜索来确定.式(2)是代表很长的一类迭代公式.例如,当I H k ≡(单位矩阵)时,它变为最速下降法的迭代公式.为使k H 确实与1-k G 近似并且有容易计算的特点,必须对k H 附加某些条件:第一,为保证迭代公式具有下降性质,要求}{k H 中的每一个矩阵都是对称 正定的.理由是,为使搜索方向k k k g H P -=是下降方向,只要0<-=-k k T k k T k g H g P g成立即可,即0>k k T k g H g成立.当k H 对称正定时,此公式必然成立,从而保证式(2)具有下降性质.第二,要求k H 之间的迭代具有简单形式.显然,k k k E H H +=+1 (3)是最简单的形式了.其中k E 称为校正矩阵,式(3)称为校正公式.第三,必须满足拟Newton 条件.即:)()(111k k k k k X X g g H -=-+++ (4)为了书写方便也记k k k g g y -=+1k k k X X S -=+1于是拟Newton 条件可写为k k k S y H =+1 (5)有式(3)和(5)知,k E 必须满足k k k k S y E H =+)(或k k k k k y H S y E == (6)2.2.5 结 论通过对本题的求解结果[]Tx 2681.0,3363.0*= 4318.5)(*=x f 与精确解[]Tx 27936.0,28581.0*= 9225.5)(*=x f 的比较虽然DFP 变尺度法具有综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快的特点,但是还是会有一定的误差。

2.3.问题描述:求2221)1()2()(min -+-=x x x f 的最优解2.3.1规划模型的建立:目标函数2221)1()2()(m i n -+-=x x x f约束条件02211≤-=x x g022211≤-+=x x g初始条件[]T x 3,30= ()50=x f2.3.2对应的程序:function y=fun1(x)y=(x(1)-2).^2+(x(2)-1).^2;endfunction [c,ceq]=gt1(x)c=x(1).^2-x(2);ceq=[];endA=[1,1];b=2;x0=[1;2];lb=[];ub=[]; [x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun1,x0,A,b,[],[],lb,ub,@gt1);2.3.3运行结果2.3.4 程序基本原理fmincon运行首先检查有无梯度表达提供,如有则选则大规模算法(subspace trust region),由此涉及到Hessian阵的近似计算,由于已提供了梯度的公式,则Hessian阵可以直接通过有限差分计算。

但是如果用户直接提供了Hessian计算公式,则直接计算。

如果没有梯度表达式提供,fmincon选则SQP算法,算法中Hessian阵可以通过BFGS迭代,初始Hessian阵任给。

注意BFGS公式中q项是需要计算目标函数梯度得到的。

所以Hessian矩阵的近似计算是需要用到有限差分法。

2.3.5 结论由以上实例可知,采用基于MATLAB软件的计算方法解决优化设计问题,求解程序简单、编程量小、求解效率高,能满足求解离散优化问题的要求,保证得到符合工程要求的最优解,从而可以获得很好的优化结果。

相关主题