Matlab_机械优化设计.ppt_第1页
Matlab_机械优化设计.ppt_第2页
Matlab_机械优化设计.ppt_第3页
Matlab_机械优化设计.ppt_第4页
Matlab_机械优化设计.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab 机械优化设计,中国石油大学 课件, 最小化问题,一、 单变量最小化,1.相关函数介绍,(1) fminbnd,功能:找到固定区间内单变量函数的最小值。,语法和描述: fminbnd求取固定区间内单变量函数的最小值。 x = fminbnd(fun,x1,x2)返回区间x1,x2上fun参数描述的标量函数的最小值x。 x = fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。,fminbnd,x = fminbnd(fun,x1,x2,options,P1,P2,.)提供另外的参数P1,P2等,传输给目标函数fun。如果没有设置opt

2、ions选项,则令options=。,x,fval = fminbnd(.)返回解x处目标函数的值。,x,fval,exitflag = fminbnd(.)返回exitflag值描述fminbnd函数的退出条件。,x,fval,exitflag,output = fminbnd(.)返回包含优化信息的结构输出。,参数描述表,算法: fminbnd是一个M文件。其算法基于黄金分割法和二次插值法。 局限性: 1目标函数必须是连续的。 2fminbnd函数可能只给出局部最优解。 3当问题的解位于区间边界上时,fminbnd函数的收敛速度常常很慢。此时,fmincon函数的计算速度更快,计算精度更高

3、。 4fminbnd函数只用于实数变量。,应用实例,例1 在区间(0,2)上求函数sin(x)的最小值:, 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; 然

4、后调用fminbnd函数(磁盘中M文件名为opt21_3.m): x = fminbnd(opt21_3o,0,1.5),无约束非线性规划问题,相关函数,fminunc函数,fminsearch函数,fminunc函数 功能: 给定初值,求多变量标量函数的最小值。 常用于无约束非线性最优化问题。 数学模型: 其中,x为一向量,f(x)为一函数,返回标量。,语法格式及描述,x = fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。 x = fminunc(fun,x0,options)用options参数中指定的优化参数进行最小化。 x = fm

5、inunc(fun,x0,options,P1,P2,.)将问题参数p1、p2等直接输给目标函数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,

6、exitflag,output,grad,hessian = fminunc(.)将解x处目标函数的Hessian矩阵信息返回到hessian参数中。,参数描述表,适用于大型和中型算法的参数: l Diagnostics 打印最小化函数的诊断信息。 l Display 显示水平。选择off,不显示输出;选择iter,显示每一步迭代过程的输出;选择final,显示最终结果。打印最小化函数的诊断信息。 l GradObj 用户定义的目标函数的梯度。对于大型问题此参数是必选的,对于中型问题则是可选项。 l MaxFunEvals 函数评价的最大次数。 l MaxIter 最大允许迭代次数。 l To

7、lFun 函数值的终止容限。 l TolX x处的终止容限。,只用于大型算法的参数: l Hessian 用户定义的目标函数的Hessian矩阵。 l HessPattern 用于有限差分的Hessian矩阵的稀疏形式。若不方便求fun函数的稀疏Hessian矩阵H,可以通过用梯度的有限差分获得的H的稀疏结构(如非零值的位置等)来得到近似的Hessian矩阵H。若连矩阵的稀疏结构都不知道,则可以将HessPattern设为密集矩阵,在每一次迭代过程中,都将进行密集矩阵的有限差分近似(这是缺省设置)。这将非常麻烦,所以花一些力气得到Hessian矩阵的稀疏结构还是值得的。,l MaxPCGIte

8、r PCG迭代的最大次数。 l PrecondBandWidth PCG前处理的上带宽,缺省时为零。对于有些问题,增加带宽可以减少迭代次数。 l TolPCG PCG迭代的终止容限。 l TypicalX 典型x值。 只用于中型算法的参数: l DerivativeCheck 对用户提供的导数和有限差分求出的导数进行对比。 l DiffMaxChange 变量有限差分梯度的最大变化。 l DiffMinChange - 变量有限差分梯度的最小变化。 l LineSearchType 一维搜索算法的选择。,习题4-6,%目标函数m文件,保存为xiti4j6.m function f=myfun(

9、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-5,tolx,0.01); x0=2,-1; x,fval,exigflag,hessian=fminunc(xiti4j6,x0,options),x = 1.0000 2.0007 fval = 10.0000 exigflag = 1 hessian = iterations: 6 funcCount: 21 stepsize: 1 firstorderopt: 0.0013 algorith

10、m: 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.m文件 x0=1,1;%取初始点: x,fval,exitflag=fminunc(ff,x0),Optimization terminated successfully: Search direction less than 2*options.TolX x = -4.0000 0.6667 fval = -17.3333 exitflag = 1

11、,注意 1对于求解平方和的问题,fminunc函数不是最好的选择,用lsqnonlin函数效果更佳。 2使用大型方法时,必须通过将options.GradObj设置为on来提供梯度信息,否则将给出警告信息。,局限性 1 目标函数必须是连续的。fminunc函数有时会给出局部最优解。 2 fminunc函数只对实数进行优化,即x必须为实数,而且f(x)必须返回实数。当x为复数时,必须将它分解为实部和虚部。,fminsearch函数,功能:求解多变量无约束函数的最小值。该函数常用于无约束非线性最优化问题。,x = fminsearch(fun,x0) 初值为x0,求fun函数的局部极小点x。x0可

12、以是标量、向量或矩阵。 x = fminsearch(fun,x0,options)用options参数指定的优化参数进行最小化。 x = fminsearch(fun,x0,options,P1,P2,.) 将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。,语法格式及描述:,x,fval = fminsearch(.)将x处的目标函数值返回到fval参数中。 x,fval,exitflag = fminsearch(.)返回exitflag值,描述函数的退出条件。 x,fval,exitflag,output = fminsea

13、rch(.)返回包含优化信息的输出参数output。,参数: 各参数的意义同fminunc。,fminunc与 fminsearch,对于求解二次以上的问题, fminsearch比fminunc更有效,而且当问题为高度非线性时,前者更有效。 fminsearch不适合求解平方和的问题,用lsqnolin更好。,三、约束最小化,相关函数介绍,fmincon函数,功能:求多变量有约束非线性函数的最小值。,fmincon函数,数学模型:,其中,x, b, beq, lb,和ub为向量, A 和 Aeq 为矩阵, c(x) 和 ceq(x)为函数,返回标量。f(x), c(x), 和 ceq(x)可

14、以是非线性函数。,非线性不等式约束 非线性等式约束,线性不等式约束 线性等式约束,设计变量的上下界,语法格式及描述:,x = fmincon(fun,x0,A,b) 给定初值x0,求解fun函数的最小值x。fun函数的约束条件为A*x = b,x0可以是标量、向量或矩阵。,x = fmincon(fun,x0,A,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。若无等

15、式存在,则令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,Aeq,beq,lb,ub,nonlcon,options) 用optiions参数指定的参数进行最小化。,x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,.) 将问题参

16、数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(.) 返回包含优化信息的输出参数output。,x,fval,exitflag,output,lambda = fmincon(.) 返回解x处包含拉格朗日乘子的lambda参数。 x,fv

17、al,exitflag,output,lambda,grad = fmincon(.) 返回解x处fun函数的梯度。 x,fval,exitflag,output,lambda,grad,hessian = fmincon(.) 返回解x处fun函数的Hessian矩阵。,注意: 1 fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。 2 fmincon函数的中型算法使用的是序列二次规划法。在每一步

18、迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。 3 fmincon函数可能会给出局部最优解,这与初值X0的选取有关。,1、写成标准形式: s.t.,2x1+3x2 6 s.t x1+4x2 5 x1,x2 0,例1,2、先建立M-文件 fun3.m: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)2,3、再建立主程序youh2.m: x0=1;1; A=2 3 ;1 4; b=6;5; Aeq=;beq=; VLB=0;0; VUB=; x,fval=fmincon(fun3,x0,A,b,Aeq,b

19、eq,VLB,VUB),4、运算结果为: x = 0.7647 1.0588 fval = -2.0294,1先建立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,例2,2再建立M文件mycon.m定义非线性约束: function c,ceq=mycon(x) c=1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10; ceq=;,3主程序为: x0=

20、-1;1; A=;b=; Aeq=1 1;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定义非线性约束: function c,ceq=mycon2(x) c=x(1)2+x(2)2-25;x(1)2-x(2)2-7; ceq=;%没有非线性等式约束,要设置ceq为空矩阵。,3

21、. 主程序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.0000 fval =-11.0000 exitflag = 1 output = iterations: 4 funcCount: 17 stepsize: 1 algorithm: 1x44 char firstorderopt: cgiterations: ,例4 matlab 工程优化实例,盖板问题,设盖板为铝合金制成,弹性模量E=7x104MPa,泊

22、松比=0.3,许用弯曲应力=70MPa,许用剪切应力=45MPa。,一、问题分析,即确定tf和h,截面惯性矩,最大剪应力,最大弯曲应力,翼板中的屈曲临界稳定应力,最大挠度,盖板单位长度的质量,为材料密度,二、数学模型,设计变量:,目标函数:,单位长度允许挠度,约束条件: 按照强度,刚度和稳定性要求建立如下的约束条件。,三、matlab求解,function f=myfun(x); f=120*x(1)+x(2),目标函数 myfun.m,非线性不等式约束 myfuncon.m,function c,ceq=mycon2(x) c=1-0.25*x(2); 1-7/45*x(1)*x(2); 1

23、-7/45*x(1)3*x(2); 1-1/320*x(1)*x(2)2; ceq=;,注意matlab里不等式约束为0,主函数 myfun_opt.m,options=optimset(MaxFunEvals,5000); %设置函数评价的最大次数5000 x0=0,0; %初始值 VLB=0;0; VUB=; x,fval,exitflag,output=fmincon(myfun,x0,VLB,VUB,myfuncon,options),x = 0.6332 25.3264 fval = 101.3056 exitflag = 1 output = iterations: 66 %迭代次

24、数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 1.3333 fval = -8.2222 exitflag =1,x =0 0 1.0000 -0.0000 fval = 0.0800 exitflag =1,% 目标函数Minf(x)=f=ex

25、p(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,iter); %不使用大模式优化方法 x,fval,exitflag,output=fmincon(f,x0,myfun_con4,options)

26、% 设计变量无线性不等式约束,即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)-1,x = -0.7529 0.4332 fval =1.5093 exitflag =1,x = -0.7529 0.4332 fval =1.5093 exitflag =1 output =

27、 iterations: 7 funcCount: 24 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: 8.1712e-009 cgiterations: message: 1x143 char,x =5.0000 fval =3 exitflag =4,目标函数 Maxf(x)=f=m1*x(1)+m2*x(2)2+m3*x(3) % 约束条件: % a1*x(1)+a2*x(2)+a3*x(3)=c % 上下限约束条件 x(1)=0 x(2)=0 x(3)=0 % m1=

28、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,display,iter); x,fval,exit

29、flag,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 % 约束条件: x(1)2+x

30、(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; % 设计变量下限约束条件 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论