MATLAB的优化函数.ppt
1.Matlab1.Matlab优化工具箱简优化工具箱简介介1)MATLAB1)MATLAB求解优化问题的主要函数求解优化问题的主要函数类 型模 型基本函数名一元函数极小Min F(x)s.t.x1xx2x=fminbnd(F,x1,x2)无约束极小Min F(X)X=fminunc(F,X0)X=fminsearch(F,X0)线性规划Min XcTs.t.AX=bX=linprog(c,A,b)二次规划Min 21xTHx+cTxs.t. Ax=bX=quadprog(H,c,A,b)约束极小(非线性规划)Min F(X)s.t. G(X)=0X=fmincon(FG,X0)达到目标问题Min rs.t. F(x)-wr=goalX=fgoalattain(F,x,goal,w)极小极大问题Min max Fi(x)X Fi(x)s.t. G(x)=0X=fminimax(FG,x0)2) 2) 优化函数的输入变量优化函数的输入变量 使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:变量描 述调用函数f线性规划的目标函数f*X 或二次规划的目标函数X*H*X+f*X 中线性项的系数向量linprog,quadprogfun非线性优化的目标函数.fun必须为行命令对象或M文件、嵌入函数、或MEX文件的名称fminbnd,fminsearch,fminunc,fmincon,lsqcurvefit,lsqnonlin,fgoalattain,fminimaxH二次规划的目标函数X*H*X+f*X 中二次项的系数矩阵quadprogA,bA矩阵和b向量分别为线性不等式约束:bAX 中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon, fminimaxAeq,beqAeq矩阵和beq向量分别为线性等式约束:beqXAeq中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon, fminimaxvlb,vubX的下限和上限向量:vlbXvublinprog,quadprog,fgoalattain,fmincon,fminimax,lsqcurvefit,lsqnonlinX0迭代初始点坐标除fminbnd外所有优化函数x1,x2函数最小化的区间fminbndoptions优化选项参数结构,定义用于优化函数的参数所有优化函数3) 3) 优化函数的输出变量下表优化函数的输出变量下表: :用用MatlabMatlab解无约束优化问题解无约束优化问题 1. 一一元元函函数数无无约约束束优优化化问问题题: : min f(x) 21xxx 其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。常用格式如下:常用格式如下:(1)x= fminbnd (x= fminbnd (fun,xfun,x1 1,x,x2 2) )(2)x= fminbnd (x= fminbnd (fun,xfun,x1 1,x,x2 2 ,options)options)(3)xx,fval= fminbndfval= fminbnd(.)(4)xx,fvalfval,exitflag= fminbndexitflag= fminbnd(.)(5)xx,fvalfval,exitflagexitflag,output= fminbndoutput= fminbnd(.)运行结果: xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448 主程序为主程序为wliti1.m:wliti1.m: f=2*exp(-x).*sin(x); fplot(f,0,8); %作图语句 xmin,ymin=fminbnd (f, 0,8) f1=-2*exp(-x).*sin(x); xmax,ymax=fminbnd (f1, 0,8)2、求解多维无约束优化问题的函数fminuncnfminunc是基于梯度搜索法实现的优化工具箱函数,它的语法说明如下:nx,fval,exitflag,output,grad,hessiann =fminunc(fun,x0,options,P1,P2)n其中,输出参数有:nx是返回目标函数的最优解;nfval是返回目标函数在最优解x点的函数值;nexitflag是返回算法的终止标志;noutput是返回优化算法的信息的一个数据结构;ngrad是返回目标函数在最优解x点的梯度;nhessian是返回目标函数在最优解x点的hessian矩阵值。 n输入参数有:nfun是调用目标函数的函数文件名;nx0是初始点;options是设置优化选项参数,包括有18个元素,用以在计算时控制精度要求、输出形式、算法选择、迭代次数、梯度等重要问题。可用空矩阵符号“ ”表示它的默认值;nP1、P2等是传递给fun的附加参数。 例例 已知梯形截面管道的参数是:底边长度为 ,高度为 ,面积 ,斜边与底边的夹角为 .管道内液体的流速与管道截面的周长 的倒数成比例关系 。试按照使液体流速最大确定该管道的参数。 n解:1、建立优化设计的建立优化设计的数学模型数学模型n管道截面周长n由管道截面面积n得到底边长度关系式 ch264516mmA scot64516cot645162hhhhc64516cot2hchAsin2hcsn将它代入式管道截面周长的关系式中,得到n n因此,取与管道截面周长有关的两个独立参数作为设计变量,即n n为使液体流速最大,取管道截面周长最小作为目标函数,即n n这是一个二维无约束非线性优化问题。 sin2cot64516hhhssin2tan64516hhhhxxX2121211sin2tan64516)(minxxxxxXfn2、编制MATLAB目标函数文件nfunction f=sc_wysyh(x)na=64516;nf=a/x(1)-x(1)/tan(x(2)*pi/180)+2*x(1)/sin(x(2)*pi/180);n编制调用无约束优化工具函数fminunc文件nx0=25;45;nx,fval=fminunc(sc_wysyh,x0)n程序运行后得到优化结果:nx =n 192.9983 (梯形截面高度)n 60.0000 (梯形截面斜边与底边夹角)nfval =n 668.5656 (梯形截面周长) n3、编制绘制目标函数等值线和曲面图的程序 nxx1=linspace(100,300,25);nxx2=linspace(30,120,25);nx1,x2=meshgrid(xx1,xx2);nf=64516./x1-x1./tan(x2*pi/180)+2*x1./sin(x2*pi/180);nsubplot(1,2,1);nh=contour(x1,x2,f); % 绘制等高线并标注高程nclabel(h);%等高线高程标志函数naxis(100 300 30 120)nxlabel(高度 h (mm)nylabel(倾斜角 (度)ntitle(目标函数等值线)nsubplot(1,2,2);nsurfc(x1,x2,f);naxis(100 300 30 120 600 1200)ntitle(目标函数曲面图)用Matlab解约束极小值问题fminconnfmincon是求解多维约束优化问题n的优化工具箱函数。)()(0)(0)()()(: . .)(min边界约束非线性等式约束)(非线性不等式约束)(线性等式约束线性不等式约束UbXLbXCeqXCbeqXAeqbAXtsXfn它的语法说明如下:nx,fval,exitflag,output,lambda,grad,hession=nfmincon(fun,x0,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2,)n其中,输入参数有:nx是返回目标函数的最优解;n fval是返回目标函数在最优解x点的函数值;nexitflag是返回算法的终止标志;noutput是返回优化算法的信息的一个数据结构;ngrad是返回目标函数在最优解x点的梯度;nhessian是返回目标函数在最优解x点的hessian矩阵值。 n输出参数有:nfun是调用目标函数的函数文件名;nx0是初始点;n线性不等式约束条件的系数矩阵A和常数向量b;n线性等式约束条件的系数矩阵Aeq和常数向量beq;n设计变量的下界向量Lb和上界向量Ub;nNlc是定义非线性约束条件的函数名;noptions是设置优化选项参数;nP1、P2等是传递给fun的附加参数。n参数A,b,Aeq,beq,Lb,Ub,options如果没有定义,可用空矩阵符号“ ”代替。 例例 某二级斜齿圆柱齿轮减速器,高速级输入功率 ,转速 ;总传动比 ,齿轮宽度系数 ,齿轮材料和热处理:大齿轮45号钢正火187207HB,小齿轮45号钢调质228255HB,工作寿命10年以上。要求按照总中心距 最小来确定齿轮传动方案。n解:将涉及总中心距 齿轮传动方案的六个独立参数作为设计变量设计变量n式中, 分别为高速级和低速级齿轮副的模数;n 分别为高速级和低速级小齿轮齿数;n 为高速级传动比;n 为齿轮副螺旋角。 KWP2 . 61min/14501rn 5 .31i4 . 0aa aTTnnxxxxxxiZZmmX65432113121,21,nnmm31,ZZ1in减速器总中心距 最小的目标函数目标函数 n n性能约束性能约束包括:齿面接触强度条件,齿根弯曲强度条件,高速级大齿轮与低速轴不干涉条件等。根据齿轮材料与热处理规范,得到齿面许用接触应力和齿根许用弯曲应力。根据传递功率和转速,在齿轮强度计算条件中代入有关数据:高速轴转矩,中间轴转矩,高速轴和低速轴载荷系数。n边界约束边界约束包括:根据传递功率与转速估计高速级和低速级齿轮副模数的范围;综合考虑传动平稳、轴向力不能太大、轴齿轮的分度圆直径不能太小与两级传动的大齿轮浸油深度大致相近等因素,估计两级传动大齿轮的齿数范围、高速级传动比范围和齿轮副螺旋角范围等。n因此,建立了如下17个不等式约束条件。 61542531cos2)5 .311 ()1 ()(xxxxxxxXfan高速级齿轮副接触强度条件n低速级齿轮副接触强度条件n高速级大齿轮齿根弯曲强度条件n低速级大齿轮齿根弯曲强度n大齿轮与轴不干涉条件n高速级齿轮副模数的下限 010079. 3cos)(533316631xxxxXg010071. 1cos)(3432463252xxxxXg0)1 (10939. 9cos)(233155623xxxxXg0)5 .31(10076. 1cos)(24325462254xxxxxXg0)5 .31(cos)50(2)(5425316155xxxxxxxxxXg02)(16xXgn高速级齿轮副模数的上限n低速级齿轮副模数的下限n低速级齿轮副模数的上限n高速级小齿轮齿数的下限n高速级小齿轮齿数的上限n低速级小齿轮齿数的下限 05)(17 xXg05 . 3)(28xXg06)(29 xXg014)(310 xXg022)(311 xXg016)(412xXgn低速级小齿轮齿数的上限n高速级传动比的下限n高速级传动比的上限n齿轮副螺旋角的下限n齿轮副螺旋角的上限n这是一个有17个不等式约束的六维非线性优化问题。 022)(413 xXg08 . 5)(514xXg07)(515 xXg08)(616xXg015)(617 xXgn由 共12个线性不等式约束,列出各设计变量系数矩阵A的非零元素为n a( 1,1)=-1;a( 2,1)= 1n a( 3,2)=-1;a( 4,2)= 1n a( 5,3)=-1;a( 6,3)= 1n a( 7,4)=-1;a( 8,4)= 1n a( 9,5)=-1;a(10,5)= 1n a(11,6)=-1;a(12,6)= 1n非线性不等式约束(性能约束)的常数向量n Ceq=0n线性不等式约束(边界约束)的常数向量nb=-2 5,-3.5,6,-14,22,-16,22,-5.8,7,-0.1396,0.26180)(6Xg0)(17Xgn设计变量的上界和下界nlb= 2,3.5, 14,16,5.8,0.1396nub=5, 6, 22, 22, 7, 0.2618n没有等式约束,故对应的系数矩阵参数Aeq和常数向量参数beq定义为空矩阵符号“ ”。n1、编制函数编制函数fmincon要调用的两个函数文件要调用的两个函数文件:n1)目标函数的函数文件jsq_f.mn% 两级斜齿轮减速器总中心距的目标函数nfunction f=jsq_f(x);na1=x(1)*x(3)*(1+x(5);na2=x(2)*x(4)*(1+31.5/x(5);ncb=2*cos(x(6)*pi/180);nf=(a1+a2)/cb;n2)非线性不等式约束的函数文件jsq_y.mn% 非线性不等式约束函数(g1-g5)nfunctionc,ceq=jsq_y(x);nc ( 1 ) = c o s ( x ( 6 ) * p i / 1 8 0 ) . 3 - 3 . 0 7 9 e - 6*x(1).3*x(3).3*x(5);nc(2)=x(5).2*cos(x(6)*pi/180).3-1.701e-4*x(2).3*x(4).3;nc ( 3 ) = c o s ( x ( 6 ) * p i / 1 8 0 ) . 2 - 9 . 9 3 9 e -5*(1+x(5)*x(1).3*x(3).2;nc(4)=x(5).2*cos(x(6)*pi/180).2-1.076e-4*(31.5+x(5)*x(2).3*x(4).2;nc(5)=x(5)*(2*(x(1)+50)*cos(x(6)*pi/180)+x(1)*x(2)*x(3)-x(2)*x(4)*(31.5+x(5);nceq=;n2、编制调用目标函数与非线性约束的函数文件jsq_fy.mn% 调用目标函数文件与非线性约束文件n% 设计变量的初始值nx0=2;4;18;20;6.4;10;n% 设计变量的下界与上界nlb=2;3.5;14;16;5.8;8;nub=5;6;22;22;7;15;n% 线性不等式约束(g6-g17)中设计变量的系数矩阵na=zeros(12,6);na( 1,1)=-1;a( 2,1)= 1;na( 3,2)=-1;a( 4,2)= 1;na( 5,3)=-1;a( 6,3)= 1;na( 7,4)=-1;a( 8,4)= 1;na( 9,5)=-1;a(10,5)= 1;na(11,6)=-1;a(12,6)= 1;n% 线性不等式约束中常数项列阵nb=-2;5;-3.5;6;-14;22;-16;22;-5.8;7;-8;15;n% 调用多维约束优化函数n% 等式约束参数Aeq,beq定义为空矩阵符号“ ”nx,fval=fmincon(jsq_f,x0,a,b,lb,ub,jsq_y) n3、程序运行结果程序运行结果nx =n 2.0456 (高速级齿轮副模数)n 3.6059 (低速级齿轮副模数)n 18.5206 (高速级小齿轮齿数)n 16.0000 (低速级小齿轮齿数)n 5.8000 (高速级传动比)n 8.0000 (齿轮副螺旋角)nfval =n 317.4186 (两级斜齿轮传动总中心距) n4、优化结果处理优化结果处理n经检验,最优点位于性能约束 、 和边界约束 、 、 、 的交集。n高速级和低速级齿轮副模数按照规范圆整为标准值 和 ;n高速级小齿轮齿数圆整为整数 ;n根据高速级传动比 ,则高速级大齿轮齿数为 ;n根据低速级传动比 ,计算出低速级大齿轮齿数为 ;n减速器总中心距n n n如果将减速器总中心距圆整为 ,则齿轮副螺旋角调整为 。 )(1Xg)(2Xg)(6Xg)(12Xg)(14Xg)(16Xgmmmn21mmmn42191Z8 . 51i110112 ZiZ431. 58 . 55 .3112iii87324ZiZmmZZmZZmann292.3388cos2)8716(4)11019(2cos2)()(432211mma340838. 9