《Matlab_机械优化设计.ppt》由会员分享,可在线阅读,更多相关《Matlab_机械优化设计.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Matlab Matlab 机械优化设计机械优化设计中国石油大学中国石油大学课件课件 最小化问题一、一、单变量最小化单变量最小化 1.相关函数介绍相关函数介绍(1)fminbnd功能功能:找到固定区间内单变量函数的最小值。语法和描述语法和描述:fminbnd求取固定区间内单变量函数的最小值。x=fminbnd(fun,x1,x2)返回区间x1,x2上fun参数描述的标量函数的最小值x。x=fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。fminbndx=fminbnd(fun,x1,x2,options,P1,P2,.)提供另外的参数P1,P2
2、等,传输给目标函数fun。如果没有设置options选项,则令options=。x,fval=fminbnd(.)返回解x处目标函数的值。x,fval,exitflag=fminbnd(.)返回exitflag值描述fminbnd函数的退出条件。x,fval,exitflag,output=fminbnd(.)返回包含优化信息的结构输出。参数描述表参数描述表参参 数数描描 述述fun需要最小化的目标函数。fun函数需要输入标量参数x,返回x处的目标函数标量值f。可以将fun函数指定为命令行,如 x=fminbnd(inline(sin(x*x),x0)同样,fun参数可以是一个包含函数名的字符
3、串。对应的函数可以是M文件、内部函数或MEX文件。若fun=myfun,则M文件函数myfun.m必须右下面的形式。function f=myfun(x)f=.%计算x处的函数值。options优化参数选项。你可以用optimset函数设置或改变这些参数的值。options参数有以下几个选项:Display 显示的水平。选择off,不显示输出;选择iter,显示每一步迭代过程的输出;选择final,显示最终结果。MaxFunEvals 函数评价的最大允许次数。lMaxIter 最大允许迭代次数。lTolX x处的终止容限。exitflag描述退出条件:l0 表示目标函数收敛于解x处。l0 表示
4、已经达到函数评价或迭代的最大次数。l x=fminbnd(sin,0,2*pi)x=4.7124例例2.对边长为3m的正方形铁板,在四个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?模型建立:假设剪去的正方形的边长为x,则水槽的容积为现在要求在区间(0,1.5)上确定一个x,使 最大化。因为优化工具箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求 最小化。首先编写M文件opt21_3o.m:function f=myfun(x)f=-(3-2*x).2*x;然后调用fminbnd函数(磁盘中M文件名为opt21_3.m):x=fminbnd(opt21_3o,0
5、,1.5)无约束非线性规划问题无约束非线性规划问题相关函数相关函数fminunc函数函数 fminsearch函数函数 fminunc函数 功能功能:给定初值,求多变量标量函数的最小值。常用于无约束非线性最优化问题。数学模型数学模型:其中,x为一向量,f(x)为一函数,返回标量。语法格式及描述语法格式及描述 x=fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。x=fminunc(fun,x0,options)用options参数中指定的优化参数进行最小化。x=fminunc(fun,x0,options,P1,P2,.)将问题参数p1、p2等
6、直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。x,fval=fminunc(.)将解x处目标函数的值返回到fval参数中。x,fval,exitflag=fminunc(.)返回exitflag值,描述函数的输出条件。x,fval,exitflag,output=fminunc(.)返回包含优化信息的结构输出。x,fval,exitflag,output,grad=fminunc(.)将解x处fun函数的梯度值返回到grad参数中。x,fval,exitflag,output,grad,hessian=fminunc(.)将解x处目标函数的Hessi
7、an矩阵信息返回到hessian参数中。参数描述表参数描述表变 量描 述fun为目标函数。需要最小化的目标函数。fun函数需要输入标量参数x,返回x处的目标函数标量值f。若fun=myfun,则M文件函数myfun.m必须有下面的形式:function f=myfun(x)f=.%计算x处的函数值。options优化参数选项。可以通过optimset函数设置或改变这些参数。其中有的参数适用于所有的优化算法,有的则只适用于大型优化问题,另外一些则只适用于中型问题。首先描述适用于大型问题的选项。这仅仅是一个参考,因为使用大型问题算法有一些条件。对于fminunc函数来说,必须提供梯度信息。lLar
8、geScale 当设为on时使用大型算法,若设为off则使用中型问题的算法。适用于大型和中型算法的参数:l Diagnostics 打印最小化函数的诊断信息。l Display 显示水平。选择off,不显示输出;选择iter,显示每一步迭代过程的输出;选择final,显示最终结果。打印最小化函数的诊断信息。l GradObj 用户定义的目标函数的梯度。对于大型问题此参数是必选的,对于中型问题则是可选项。l MaxFunEvals 函数评价的最大次数。l MaxIter 最大允许迭代次数。l TolFun 函数值的终止容限。l TolX x处的终止容限。只用于大型算法的参数:l Hessian
9、用户定义的目标函数的Hessian矩阵。l HessPattern 用于有限差分的Hessian矩阵的稀疏形式。若不方便求fun函数的稀疏Hessian矩阵H,可以通过用梯度的有限差分获得的H的稀疏结构(如非零值的位置等)来得到近似的Hessian矩阵H。若连矩阵的稀疏结构都不知道,则可以将HessPattern设为密集矩阵,在每一次迭代过程中,都将进行密集矩阵的有限差分近似(这是缺省设置)。这将非常麻烦,所以花一些力气得到Hessian矩阵的稀疏结构还是值得的。l MaxPCGIter PCG迭代的最大次数。l PrecondBandWidth PCG前处理的上带宽,缺省时为零。对于有些问题
10、,增加带宽可以减少迭代次数。l TolPCG PCG迭代的终止容限。l TypicalX 典型x值。只用于中型算法的参数:l DerivativeCheck 对用户提供的导数和有限差分求出的导数进行对比。l DiffMaxChange 变量有限差分梯度的最大变化。l DiffMinChange-变量有限差分梯度的最小变化。l LineSearchType 一维搜索算法的选择。exitflag描述退出条件:l0 表示目标函数收敛于解x处。l0 表示已经达到函数评价或迭代的最大次数。l0 表示目标函数不收敛。output该参数包含下列优化信息:loutput.iterations 迭代次数。lou
11、tput.algorithm 所采用的算法。loutput.funcCount 函数评价次数。loutput.cgiterations PCG迭代次数(只适用于大型规划问题)。loutput.stepsize 最终步长的大小(只用于中型问题)。loutput.firstorderopt 一阶优化的度量:解x处梯度的范数。习题4-6%目标函数m文件,保存为xiti4j6.mfunction f=myfun(x);f=10*x(1)2+x(2)2-20*x(1)-4*x(2)+24;%求解m文件options=optimset(display,on,maxiter,10e5,tolfun,10e-
12、5,tolx,0.01);x0=2,-1;x,fval,exigflag,hessian=fminunc(xiti4j6,x0,options)x=1.0000 2.0007fval=10.0000exigflag=1hessian=iterations:6 funcCount:21 stepsize:1 firstorderopt:0.0013 algorithm:medium-scale:Quasi-Newton line search 例:初始点1,1程序:编辑ff2.m文件:function f=ff(x)f=8*x(1)-4*x(2)+x(1)2+3*x(2)2;编辑command.
13、m文件x0=1,1;%取初始点:x,fval,exitflag=fminunc(ff,x0)Optimization terminated successfully:Search direction less than 2*options.TolXx=-4.0000 0.6667fval=-17.3333exitflag=1注意注意1对于求解平方和的问题,fminunc函数不是最好的选择,用lsqnonlin函数效果更佳。2使用大型方法时,必须通过将options.GradObj设置为on来提供梯度信息,否则将给出警告信息。局限性局限性1 目标函数必须是连续的。fminunc函数有时会给出局部
14、最优解。2 fminunc函数只对实数进行优化,即x必须为实数,而且f(x)必须返回实数。当x为复数时,必须将它分解为实部和虚部。fminsearch函数函数功能功能:求解多变量无约束函数的最小值。该函数常用于无约束非线性最优化问题。x=fminsearch(fun,x0)初值为x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。x=fminsearch(fun,x0,options)用options参数指定的优化参数进行最小化。x=fminsearch(fun,x0,options,P1,P2,.)将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为
15、options参数的缺省值。语法格式及描述:语法格式及描述:x,fval=fminsearch(.)将x处的目标函数值返回到fval参数中。x,fval,exitflag=fminsearch(.)返回exitflag值,描述函数的退出条件。x,fval,exitflag,output=fminsearch(.)返回包含优化信息的输出参数output。参数参数:各参数的意义同fminunc。fminunc与fminsearch对于求解二次以上的问题,fminsearch比fminunc更有效,而且当问题为高度非线性时,前者更有效。fminsearch不适合求解平方和的问题,用lsqnolin更
16、好。三、约束最小化三、约束最小化 相关函数介绍 fmincon函数 功能功能:求多变量有约束非线性函数的最小值。fmincon函数 数学模型数学模型:其中,x,b,beq,lb,和ub为向量,A 和 Aeq 为矩阵,c(x)和 ceq(x)为函数,返回标量。f(x),c(x),和 ceq(x)可以是非线性函数。非线性不等式约束非线性等式约束线性不等式约束 线性等式约束 设计变量的上下界语法格式及描述:语法格式及描述:x=fmincon(fun,x0,A,b)给定初值x0,求解fun函数的最小值x。fun函数的约束条件为A*x=b,x0可以是标量、向量或矩阵。x=fmincon(fun,x0,A
17、,b,Aeq,beq)最小化fun函数,约束条件为Aeq*x=beq 和 A*x=b。若没有不等式存在,则设置A=、b=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得总是有lb=x=ub。若无等式存在,则令Aeq=、beq=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)在上面的基础上,在nonlcon参数中提供非线性不等式c(x)或等式ceq(x)。fmincon函数要求c(x)=0且ceq(x)=0。当无边界存在时,令lb=和(或)ub=。x=fmincon(fun,x0,A,b,Ae
18、q,beq,lb,ub,nonlcon,options)用optiions参数指定的参数进行最小化。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,.)将问题参数P1,P2等直接传递给函数fun和nonlin。若不需要这些变量,则传递空矩阵到A,b,Aeq,beq,lb,ub,nonlcon和 options。x,fval=fmincon(.)返回解x处的目标函数值。x,fval,exitflag=fmincon(.)返回exitflag参数,描述函数计算的退出条件。x,fval,exitflag,output=fmincon(
19、.)返回包含优化信息的输出参数output。x,fval,exitflag,output,lambda=fmincon(.)返回解x处包含拉格朗日乘子的lambda参数。x,fval,exitflag,output,lambda,grad=fmincon(.)返回解x处fun函数的梯度。x,fval,exitflag,output,lambda,grad,hessian=fmincon(.)返回解x处fun函数的Hessian矩阵。注意:注意:1 fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下
20、界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。2 fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。3 fmincon函数可能会给出局部最优解,这与初值X0的选取有关。1、写成标准形式写成标准形式:s.t.2x1+3x2 6 s.t x1+4x2 5 x1,x2 0例例12、先建立先建立M-文件文件 fun3.m:functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)23、再建立主程序youh2.m:x0
21、=1;1;A=23;14;b=6;5;Aeq=;beq=;VLB=0;0;VUB=;x,fval=fmincon(fun3,x0,A,b,Aeq,beq,VLB,VUB)4、运算结果为:运算结果为:x=0.76471.0588fval=-2.02941先建立先建立M文件文件 fun4.m,定义目标函数定义目标函数:function f=fun4(x);f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)x1+x2=0 s.t.1.5+x1x2-x1-x2 0 -x1x2 10 0例例22再建立再建立M文件文件mycon.m定义非线性约束:定义非线性
22、约束:functionc,ceq=mycon(x)c=1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;ceq=;3主程序为主程序为:x0=-1;1;A=;b=;Aeq=11;beq=0;vlb=;vub=;x,fval=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,mycon)3.运算结果为运算结果为:x=-1.2250 1.2250 fval=1.8951 例3 1先建立先建立M-文件文件fun.m定义目标函数定义目标函数:function f=fun(x);f=-2*x(1)-x(2)2再建立再建立M文件文件mycon2.m定义非线性约
23、束:定义非线性约束:function c,ceq=mycon2(x)c=x(1)2+x(2)2-25;x(1)2-x(2)2-7;ceq=;%没有非线性等式约束,要设置没有非线性等式约束,要设置ceq为空矩阵。为空矩阵。3.主程序主程序fxx.m为为:x0=3;2.5;VLB=0 0;VUB=5 10;x,fval,exitflag,output=fmincon(fun,x0,VLB,VUB,mycon2)4.运算结果为运算结果为:x=4.0000 3.0000fval=-11.0000exitflag=1output=iterations:4 funcCount:17 stepsize:1
24、algorithm:1x44 char firstorderopt:cgiterations:例4 matlab 工程优化实例盖板问题1.设有一箱形盖板,已知长度,宽度,厚度。翼板厚度为,它承受最大的单位载荷 ,要求在满足强度刚度和稳定性等条件下,设计一个重量最轻的结构方案。设盖板为铝合金制成,弹性模量E=7x104MPa,泊松比=0.3,许用弯曲应力=70MPa,许用剪切应力=45MPa。一、问题分析即确定tf和h截面惯性矩最大剪应力最大弯曲应力翼板中的屈曲临界稳定应力最大挠度盖板单位长度的质量为材料密度二、数学模型设计变量:目标函数:单位长度允许挠度约束条件:按照强度,刚度和稳定性要求建立
25、如下的约束条件。三、matlab求解function f=myfun(x);f=120*x(1)+x(2)目标函数 myfun.m非线性不等式约束 myfuncon.mfunction c,ceq=mycon2(x)c=1-0.25*x(2);1-7/45*x(1)*x(2);1-7/45*x(1)3*x(2);1-1/320*x(1)*x(2)2;ceq=;注意matlab里不等式约束为0主函数 myfun_opt.moptions=optimset(MaxFunEvals,5000);%设置函数评价的最大次数5000 x0=0,0;%初始值VLB=0;0;VUB=;x,fval,exitf
26、lag,output=fmincon(myfun,x0,VLB,VUB,myfuncon,options)x=0.6332 25.3264fval=101.3056exitflag=1output=iterations:66%迭代次数66 funcCount:514%函数评价次数514 stepsize:1%最终步长1 algorithm:medium-scale:SQP,Quasi-Newton,line-search%中型算法 firstorderopt:1.0050e-005%解x处梯度的范数 cgiterations:%PCG迭代次数(只适用于大型规划问题)。优化结果x=0.6667
27、1.3333 fval=-8.2222 exitflag=1x=0 0 1.0000 -0.0000fval=0.0800exitflag=1%目标函数Minf(x)=f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)%不等式约束条件:-x(1)*x(2)=10%等式约束条件:x(1)2+x(2)=1 clear%清工作空间clc%清屏x0=-1,1;%初值f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);%目标函数options=optimset(LargeScale,off,display,i
28、ter);%不使用大模式优化方法x,fval,exitflag,output=fmincon(f,x0,myfun_con4,options)%设计变量无线性不等式约束,即A=,b=设计变量无线性等式约束,即Aeq=,beq=%设计变量无上下限约束,即lb=,ub=function c,ceq=myfun_con4(x)c=-x(1)*x(2)-10;%不等式约束 或写成:c=-x(1)*x(2)-10;ceq=x(1)2+x(2)-1;%等式约束 或写成:ceq=x(1)2+x(2)-1%ceq=x(1)2+x(2)-1x=-0.7529 0.4332 fval=1.5093 exitfla
29、g=1x=-0.7529 0.4332fval=1.5093exitflag=1output=iterations:7 funcCount:24 stepsize:1 algorithm:medium-scale:SQP,Quasi-Newton,line-search firstorderopt:8.1712e-009 cgiterations:message:1x143 charx=5.0000fval=3exitflag=4目标函数 Maxf(x)=f=m1*x(1)+m2*x(2)2+m3*x(3)%约束条件:%a1*x(1)+a2*x(2)+a3*x(3)=a%b1*x(1)+b2*
30、x(2)+b3*x(3)=c%上下限约束条件 x(1)=0 x(2)=0 x(3)=0%m1=10;m2=4.4;m3=2;%a1=1;a2=4;a3=5;a=32%b1=1;b2=3;b3=2;b=29%c1=1;c2=0.5;c=3;clear%清工作空间clc%清屏m1=10;m2=4.4;m3=2;a1=1;a2=4;a3=5;a=32;b1=1;b2=3;b3=2;b=29;c1=1;c2=0.5;c=3;A=a1,a2,a3;b1,b2,b3;b=a;b;x0=1;1;1;%初值lb=0,0,0;%设计变量下限约束条件 options=optimset(LargeScale,off
31、,display,iter);x,fval,exitflag,output=fmincon(x)myfun9(x,m1,m2,m3),x0,A,b,lb,(x)myfun_con9(x,c1,c2,c),options)%注意:含有带参数目标函数,不能x,fval,exitflag,output=fmincon(myfun9(x,m1,m2,m3),x0,A,b,lb,myfun_con9(x,c1,c2,c),options)%设计变量无线性不等式约束,即A=,b=%设计变量无线性等式约束,即Aeq=,beq=%设计变量无上限约束,ub=目标函数min f(x)=x(1)2+x(2)2%约束
32、条件:x(1)2+x(2)25%x(1)+2*x(2)=4%x(1)0,x(2)0%目标函数Min f(x)=f=m1*x(1)2+m2*x(2)2%约束条件:a1*x(1)2+a2*x(2)2=0 x(2)=0%m1=1;m2=1;%a1=1;a2=1;a=5%b1=1;b2=2;b=4%c1=1;c2=0.5;c=3;clear%清工作空间clc%清屏m1=1;m2=1;a1=1;a2=1;a=5;b1=1;b2=2;b=4;c1=1;c2=0.5;c=3;Aeq=b1,b2;%设计变量线性等式约束beq=b;%设计变量线性等式约束x0=1;1;%设计变量初值lb=0,0;%设计变量下限约
33、束条件 options=optimset(LargeScale,off,display,iter);x,fval,exitflag,output=fmincon(x)myfun10(x,m1,m2),x0,Aeq,beq,lb,(x)myfun_con10(x,a1,a2,a),options)%注意:含有带参数目标函数,不能x,fval,exitflag,output=fmincon(myfun10(x,m1,m2),x0,Aeq,beq,lb,myfun_con10(x,a1,a2,a),options)%设计变量无线性不等式约束,即A=,b=%设计变量无上限约束,ub=x=0.8000,
34、1.6000fval=3.2000exitflag=1机床主轴结构优化设计 机床主轴是机床中重要零件之一,一般为多支承空心阶梯轴。为了便于使用材料力学公式进行结构分析,常将阶梯轴简化成以当量直径表示的等截面轴。下图所示的为一根简化的机床主轴。要求以主轴的自重为目标,对该主轴进行优化设计。机械优化设计大作业 已知条件:主轴材料为45#,内径d=30mm,外力F=15000N,许用挠度y0=0.05mm,材料的弹性模量E=210GPa,许用应力=180MPa。300 l650,60D110,90a150。dDE-EABCFlaEE 作业要求:(1)对该问题进行分析,写出该问题的物理模型;(2)将物
35、理模型转化为优化模型(包括设计变量、目标函数、约束条件);(3)将优化模型转化为matlab程序(m文件);(4)利用matlab软件求解该优化问题,写出最优解。(5)用毕业论文纸作业,要求手写,写出问题和上述4个过程,条理清晰。1.问题分析2.优化模型3.matlab程序4.最优解和结果分析作业一、人字架结构优化设计作业一、人字架结构优化设计 受力分析图圆杆截面图桁杆示意图d由两根空心圆杆组成对称的两杆桁架,其顶点承受负载为由两根空心圆杆组成对称的两杆桁架,其顶点承受负载为由两根空心圆杆组成对称的两杆桁架,其顶点承受负载为由两根空心圆杆组成对称的两杆桁架,其顶点承受负载为2p2p2p2p,两
36、支座之间的水平距离为两支座之间的水平距离为两支座之间的水平距离为两支座之间的水平距离为2L2L2L2L,圆杆的壁厚为圆杆的壁厚为圆杆的壁厚为圆杆的壁厚为B B B B,杆的比重为杆的比重为杆的比重为杆的比重为,弹性模量为弹性模量为弹性模量为弹性模量为E E E E,屈服强度为屈服强度为屈服强度为屈服强度为。求在桁架不被破坏的情况。求在桁架不被破坏的情况。求在桁架不被破坏的情况。求在桁架不被破坏的情况下使桁架重量最轻的桁架高度下使桁架重量最轻的桁架高度下使桁架重量最轻的桁架高度下使桁架重量最轻的桁架高度h h h h及圆杆平均直径及圆杆平均直径及圆杆平均直径及圆杆平均直径d d d d。作业三、
37、作业三、作业三、作业三、圆形等截面销轴的优化设计的数学模型圆形等截面销轴的优化设计的数学模型已知:已知:轴的一端作用载荷轴的一端作用载荷 P=1000NP=1000N,扭矩扭矩 M=100NM=100Nm m;轴轴长不得小于长不得小于8cm8cm;材料的许用弯曲应力材料的许用弯曲应力 w w=120MPa=120MPa,许用扭剪应力许用扭剪应力 =80MPa=80MPa,许用挠度许用挠度 f=0.01cmf=0.01cm;密度密度=7.8t/m=7.8t/m,弹性模量弹性模量E=2E=210105 5MPaMPa。分析:分析:设计目标是轴的质量最轻设计目标是轴的质量最轻 Q=1/4 dQ=1/4 d2 2 l min.l min.;要求:要求:设计销轴,在满足上述条件的同时,轴的质量应为最轻。设计销轴,在满足上述条件的同时,轴的质量应为最轻。设计限制条件有设计限制条件有5 5个:个:弯曲强度:弯曲强度:maxmax w w 扭转强度:扭转强度:刚度:刚度:f ff f 结构尺寸:结构尺寸:l 8l 8 d 0 d 0设计参数中的未定变量:设计参数中的未定变量:d d、l l
限制150内