您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 33-MATLAB的优化函数
MATLAB优化工具箱常用函数的应用MATLAB6.5优化工具箱(OptimizationToolbox)中包含有一系列优化算法和模块,可以用于求解约束线性最小二乘优化、约束非线性或无约束非线性极小值问题、非线性最小二乘逼近和曲线拟合、非线性系统方程和复杂结构的大规模优化问题。处理优化设计问题的分析和计算时,根据优化设计的数学模型,按照所选用优化工具函数的要求,输入初始点,与约束条件相应的约束函数和系数矩阵,将优化工具函数作为“黑箱”调用,即可获得与所有条件都相容的优化结果。1、求解多维无约束优化问题的函数fminuncfminunc是基于梯度搜索法实现的优化工具箱函数,它的语法说明如下:[x,fval,exitflag,output,grad,hessian]=fminunc(@fun,x0,options,P1,P2…)其中,输出参数有:x是返回目标函数的最优解;fval是返回目标函数在最优解x点的函数值;exitflag是返回算法的终止标志;output是返回优化算法的信息的一个数据结构;grad是返回目标函数在最优解x点的梯度;hessian是返回目标函数在最优解x点的hessian矩阵值。输入参数有:fun是调用目标函数的函数文件名;x0是初始点;options是设置优化选项参数(参考表8-1),包括有18个元素,用以在计算时控制精度要求、输出形式、算法选择、迭代次数、梯度等重要问题。可用空矩阵符号“[]”表示它的默认值;P1、P2等是传递给fun的附加参数。例8-7已知梯形截面管道的参数是:底边长度为,高度为,面积,斜边与底边的夹角为。管道内液体的流速与管道截面的周长的倒数成比例关系。试按照使液体流速最大确定该管道的参数。解:1、建立优化设计的数学模型管道截面周长由管道截面面积得到底边长度关系式ch264516mmAscot64516cot645162hhhhc64516cot2hchAsin2hcs将它代入式管道截面周长的关系式中,得到因此,取与管道截面周长有关的两个独立参数作为设计变量,即为使液体流速最大,取管道截面周长最小作为目标函数,即这是一个二维无约束非线性优化问题。sin2cot64516hhhssin2tan64516hhhhxxX2121211sin2tan64516)(minxxxxxXf2、编制MATLAB目标函数文件functionf=sc_wysyh(x)a=64516;f=a/x(1)-x(1)/tan(x(2)*pi/180)+2*x(1)/sin(x(2)*pi/180);编制调用无约束优化工具函数fminunc文件x0=[25;45];[x,fval]=fminunc(@sc_wysyh,x0)程序运行后得到优化结果:x=192.9983(梯形截面高度)60.0000(梯形截面斜边与底边夹角)fval=668.5656(梯形截面周长)3、编制绘制目标函数等值线和曲面图的程序xx1=linspace(100,300,25);xx2=linspace(30,120,25);[x1,x2]=meshgrid(xx1,xx2);f1=64516./x1-x1./tan(x2*pi/180)+2*x1./sin(x2*pi/180);subplot(1,2,1);h=contour(x1,x2,f);clabel(h);axis([10030030120])xlabel('高度h(mm)')ylabel('倾斜角(度)')title('目标函数等值线')subplot(1,2,2);surfc(x1,x2,f);axis([100300301206001200])title('目标函数曲面图')2、求解约束极小值问题的函数fminconfmincon是求解多维约束优化问题的优化工具箱函数。)()(0)(0)()()(:..)(min边界约束非线性等式约束)(非线性不等式约束)(线性等式约束线性不等式约束UbXLbXCeqXCbeqXAeqbAXtsXf它的语法说明如下:[x,fval,exitflag,output,hession]=fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub,‘Nlc’,options,P1,P2,…)其中,输入参数有:x是返回目标函数的最优解;fval是返回目标函数在最优解x点的函数值;exitflag是返回算法的终止标志;output是返回优化算法的信息的一个数据结构;grad是返回目标函数在最优解x点的梯度;hessian是是返回目标函数在最优解x点的hessian矩阵值。输出参数有:fun是调用目标函数的函数文件名;x0是初始点;线性不等式约束条件的系数矩阵A和常数向量b;线性等式约束条件的系数矩阵Aeq和常数向量beq;设计变量的下界向量Lb和上界向量Ub;‘Nlc’是定义非线性约束条件的函数名;options是设置优化选项参数,参考表8-1;P1、P2等是传递给fun的附加参数。参数A,b,Aeq,beq,Lb,Ub,options如果没有定义,可用空矩阵符号“[]”代替。例8-8某二级斜齿圆柱齿轮减速器,高速级输入功率,转速;总传动比,齿轮宽度系数,齿轮材料和热处理:大齿轮45号钢正火187~207HB,小齿轮45号钢调质228~255HB,工作寿命10年以上。要求按照总中心距最小来确定齿轮传动方案。解:将涉及总中心距齿轮传动方案的六个独立参数作为设计变量式中,分别为高速级和低速级齿轮副的模数;分别为高速级和低速级小齿轮齿数;为高速级传动比;为齿轮副螺旋角。KWP2.61min/14501rn5.31i4.0aaaTTnnxxxxxxiZZmmX65432113121,,,,,,,,,,21,nnmm31,ZZ1i减速器总中心距最小的目标函数性能约束包括:齿面接触强度条件,齿根弯曲强度条件,高速级大齿轮与低速轴不干涉条件等。根据齿轮材料与热处理规范,得到齿面许用接触应力和齿根许用弯曲应力。根据传递功率和转速,在齿轮强度计算条件中代入有关数据:高速轴转矩,中间轴转矩,高速轴和低速轴载荷系数。边界约束包括:根据传递功率与转速估计高速级和低速级齿轮副模数的范围;综合考虑传动平稳、轴向力不能太大、轴齿轮的分度圆直径不能太小与两级传动的大齿轮浸油深度大致相近等因素,估计两级传动大齿轮的齿数范围、高速级传动比范围和齿轮副螺旋角范围等。因此,建立了如下17个不等式约束条件。61542531cos2)5.311()1()(xxxxxxxXfa高速级齿轮副接触强度条件低速级齿轮副接触强度条件高速级大齿轮齿根弯曲强度条件低速级大齿轮齿根弯曲强度大齿轮与轴不干涉条件高速级齿轮副模数的下限010079.3cos)(533316631xxxxXg010071.1cos)(3432463252xxxxXg0)1(10939.9cos)(233155623xxxxXg0)5.31(10076.1cos)(24325462254xxxxxXg0)5.31(]cos)50(2[)(5425316155xxxxxxxxxXg02)(16xXg高速级齿轮副模数的上限低速级齿轮副模数的下限低速级齿轮副模数的上限高速级小齿轮齿数的下限高速级小齿轮齿数的上限低速级小齿轮齿数的下限05)(17xXg05.3)(28xXg06)(29xXg014)(310xXg022)(311xXg016)(412xXg低速级小齿轮齿数的上限高速级传动比的下限高速级传动比的上限齿轮副螺旋角的下限齿轮副螺旋角的上限这是一个有17个不等式约束的六维非线性优化问题。022)(413xXg08.5)(514xXg07)(515xXg08)(616xXg015)(617xXg由~共12个线性不等式约束,列出各设计变量系数矩阵A的非零元素为a(1,1)=-1;a(2,1)=1a(3,2)=-1;a(4,2)=1a(5,3)=-1;a(6,3)=1a(7,4)=-1;a(8,4)=1a(9,5)=-1;a(10,5)=1a(11,6)=-1;a(12,6)=1非线性不等式约束(性能约束)的常数向量Ceq=0线性不等式约束(边界约束)的常数向量b=[-25,-3.5,6,-14,22,-16,22,-5.8,7,-0.1396,0.2618]0)(6Xg0)(17Xg设计变量的上界和下界lb=[2,3.5,14,16,5.8,0.1396]ub=[5,6,22,22,7,0.2618]没有等式约束,故对应的系数矩阵参数Aeq和常数向量参数beq定义为空矩阵符号“[]”。1、编制函数fmincon要调用的两个函数文件:1)目标函数的函数文件jsq_f.m%两级斜齿轮减速器总中心距的目标函数functionf=jsq_f(x);a1=x(1)*x(3)*(1+x(5));a2=x(2)*x(4)*(1+31.5/x(5));cb=2*cos(x(6)*pi/180);f=(a1+a2)/cb;2)非线性不等式约束的函数文件jsq_y.m%非线性不等式约束函数(g1-g5)function[c,ceq]=jsq_y(x);c(1)=cos(x(6)*pi/180).^3-3.079e-6*x(1).^3*x(3).^3*x(5);c(2)=x(5).^2*cos(x(6)*pi/180).^3-1.701e-4*x(2).^3*x(4).^3;c(3)=cos(x(6)*pi/180).^2-9.939e-5*(1+x(5))*x(1).^3*x(3).^2;c(4)=x(5).^2*cos(x(6)*pi/180).^2-1.076e-4*(31.5+x(5))*x(2).^3*x(4).^2;c(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));ceq=[];2、编制调用目标函数与非线性约束的函数文件jsq_fy.m%调用目标函数文件与非线性约束文件%设计变量的初始值x0=[2;4;18;20;6.4;10];%设计变量的下界与上界lb=[2;3.5;14;16;5.8;8];ub=[5;6;22;22;7;15];%线性不等式约束(g6-g17)中设计变量的系数矩阵a=zeros(12,6);a(1,1)=-1;a(2,1)=1;a(3,2)=-1;a(4,2)=1;a(5,3)=-1;a(6,3)=1;a(7,4)=-1;a(8,4)=1;a(9,5)=-1;a(10,5)=1;a(11,6)=-1;a(12,6)=1;%线性不等式约束中常数项列阵b=[-2;5;-3.5;6;-14;22;-16;22;-5.8;7;-8;15];%调用多维约束优化函数%等式约束参数Aeq,beq定义为空矩阵符号“[]”[x,fval]=fmincon(@jsq_f,x0,a,b,[],[],lb,ub,@jsq_y)3、程序运行结果x=2.0456(高速级齿轮副模数)3.6059(低速级齿轮副模数)18.5206(高速级小齿轮齿数)16.0000(低速级小齿轮齿数)5.8000(高速级传动比)8.0000(齿轮副螺旋角)fval=317.4186(两级斜齿轮传动总中心距)4、优化结果处理经检验,最优点位于性能约
本文标题:33-MATLAB的优化函数
链接地址:https://www.777doc.com/doc-4109751 .html