摘要本文分析了MATLAB软件在机械优化设计中常用的线性规划、一维优化、无约束非线性优化及约束非线性优化四种优化问题的标准数学模型、调用函数及参数的设置。
并以具体实例对利用MATLAB解决优化问题的具体过程进行了详细的阐述,该过程可以供工程设计人员参考,以提高优化设计效率。
关键词机械优化设计MATLABResearch on Application of MATLAB Software in Mecha-nical Optimization Design//Jiao LiliAbstract Standard mathematical model,function and the para-meter settings of matlab software which used in mechanical optimization design such as linear programming,one-dimensional optimization,unconstrained nonlinear optimization and constrained nonlinear optimization were analyzed.Specific process of solving the optimization problem with Matlab is expounded by concrete examples,the process could be referenced by engineering staff, and then improve the efficiency optimization design.Key words mechanism;optimization design;MatlabAuthor's address Faculty of UG,Yancheng Institute of Techn-ology,224051,Yancheng,Jiangsu,China机械优化设计就是在给定的载荷或环境条件下,在对机械产品的形态、几何尺寸关系以及其他因素的限制(约束)范围内,以机械系统的功能、强度和经济性等为优化对象,选取设计变量,建立目标函数和约束条件,并使目标函数获得最优值的一种现代设计方法。
目前,已有很多成熟的优化方法程序可供选择,但它们各有自己的特点和适用范围,实际应用时必须注意因为优化方法或初始参数选择而带来的收敛性等问题。
而M ATLAB语言的优化工具箱则选用最佳方法求解、初始参数输入简单、语法符合工程设计语言要求、编程工作量小、优越性明显。
1MATLAB优化函数介绍M ATLAB是美国M athWorks公司于20世纪80年代中期推出的数学软件,其优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出。
M ATLAB优化工具箱可以解决线性规划、非线性规划和多目标规划等问题。
具体包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题以及整数规划等问题的求解。
另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中的大型课题的求解方法。
为优化方法在工程中的实际应用提供了更方便快捷的途径。
M ATLAB优化工具箱能解决很多优化问题,但从目标函数、约束条件和设计变量的性质上划分,典型的机械优化问题大致分为线性规划问题、一维优化问题、多维无约束非线性规划问题、约束非线性规划问题几大类型。
表1中列出了几种优化类型的标准数学模型、M ATLAB优化函数及相应的调用形式、函数中的一些参数的详细说明。
当优化问题的目标函数是优化变量的线性函数,且约束条件也是优化变量的线性等式或不等式时,该问题为线性规划问题。
当优化问题中只有一个变量时,无论目标函数是变量的线性关系还是非线性关系都属于一维优化问题,只要调用fminbnd函数即可实现优化目标的求解。
如目标函数和约束函数中存在一个或多个非线性函数时,则为非线性规划问题。
非线性规划问题则又分为无约束和有约束两大类。
求解无约束优化问题的方法有很多,包括直接搜索法的坐标轮换法、鲍威尔法、单形替换法,间接法的梯度法、牛顿法和变尺度法等。
直接搜索法适用于目标函数高度非线性,没有导数或导数很难求的情况,其缺点是收敛速度慢。
在函数的导数可求的情况下,梯度法是一种更优的方法,该法利用函数梯度(一阶导数)和Hessian矩阵(二阶导数)构造算法,可获得更快的收敛速度。
M ATLAB优化工具箱中的fminunc或fminsearch函数其默认实现思想是BFGS(Broy-den-Fletcher-Gold farb-Shanno)变尺度法。
函数fminunc要求目标函数必须连续,函数fminsearch常用来处理不连续的目标函数,对于求解二次以上的问题,fminsearch函数比fmin-unc函数有效。
机械优化设计问题大多是有约束非线性规划问题。
有约束非线性规划问题的解法有很多,但这些算法仅能解决某类特殊的非线性规划问题。
早期的方法通常是通过构造惩罚函数来将有约束的优化问题转化为无约束优化问题进中图分类号:TH122文献标识码:A文章编号:1672-7894(2011)16-090-02优化类型线性规划一维约束优化无约束非线性规划约束非线性规划数学模型min f(x)M ATLAB 优化函数linprog fminbndfminunc、fminsearchfmincon常用调用形式[x,fval,exitflag]=linprog(f,A,b,Aeq,beq,lb,ub,x0)[x,fval,exitflag]=fminbnd(fun,lb,ub)[x,fval,exitflag]=fminunc[/fminsearch](fun,x0)[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)参数解释1.线性规划中f为优化变量x的系数向量,其他类型的f(x)要定义成M ATLAB函数文件(fun);2.Ax≤b为线性不等式约束,A为不等式约束系数矩阵,b为不等式约束右端向量;3.Aeq*x=Beq为线性等式约束,Aeq为等式约束系数矩阵,beq 为等式约束右端向量;4.c(x)≤0和ceq(x)=0分别为非线性不等式约束和等式约束,要定义成M ATLAB函数文件(nonlcon);5.ub,lb,x0分别为优化变量x的上界、下界和初始值;6.x,fval,exitflag分别是返回目标函数的最优解x,在x点的函数值,算法的终止标志(为1时算法收敛)。
表1MATLAB优化函数min f T xs.t.Ax≤bAeq*x=Beqlb≤x≤u≤bs.t.lb≤x≤ubmin f(x)s.t.Ax≤bAeq*x=Beqc(x)≤0ceq(x)=0lb≤x≤u≤≤≤≤≤≤≤≤≤≤≤bmin f(x)90造变尺度矩阵,以保证超线性收敛性,调用fmincon函数求解约束优化问题。
2利用MATLAB优化工具箱的使用流程及实例利用MATLAB优化工具箱解决机械优化问题的大致流程如图1所示。
1)根据设计要求和目的定义优化设计问题,列出目标函数、约束条件建立数学模型;2)根据数学模型中约束条件、设计变量和目标函数的关系分析属于哪类优化问题,分清是线性规划问题、一维优化问题、无约束非线性优化问题还是约束非线性优化问题;3)按照相应优化类型把建立的数学模型写成标准形式;4)根据标准模型中各参数的具体含义及实际的标准数学模型确定各参数的值,有的值是向量形式,有的值是矩阵形式,有的只需要在MATLAB交互命令窗口中直接输入,有的如非线性约束条件及目标函数等要写在MATLAB函数文件中,将优化函数的调用参数准备好;5)在所有的函数调用参数确定好后,调用相应优化函数进行优化计算,如果输出的参数中exitflag=1说明算法收敛,得到的是问题的最优值。
为了对利用MATLAB优化工具箱函数调用中的一些参数的设置进行详细说明,以下面的标准数学模型进行求优为示例。
min f(x)=e x1(4x21+2x22+4x1x2+2x1+1)s.t.x1+x2=0x1-x2≤11.5+x1x2-x1-x2≤0-x1x2-10≤0这个优化问题的目标函数是设计变量[x1x2]的非线性关系,属于约束非线性优化问题,应该调用fmincon函数进行优化计算,其调用形式是:[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)fmincon函数中的调用参数fun、nonlcon其含义分别是目标函数及非线性不等式约束和非线性等式约束,需求分step2:建立concon.m约束函数文件function[c,ceq]=concon2(x)c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];//非线性不等式约束ceq=[];//非线性等式约束(此示例中没有,置为空)step3:按照相应的标准数学模型中确定函数其他的调用参数,可以将这些参数及函数的调用写在MATLAB文本文件中,定义其文件名为con.m,内容如下:x0=[-22];//初始值A=[1-1];//线性不等式约束x1-x2≤1的系数矩阵b=1;//线性不等式约束x1-x2≤1的右端向量Aeq=[11];//线性不等式约束x1+x2=0的系数矩阵beq=0;//线性不等式约束x1+x2=0的右端向量lb=[];ub=[];//没有具体的约束值时可置为空[x,fval,exitflag]=fmincon('confun',x0,A,b,Aeq,beq,lb,ub, 'concon')step4:在MATLAB命令窗口中输入con(文本文件名)后回车,即可输出优化结果如下:x=-1.2247 1.2247fval=0.4556exitflag=1算法结束标志exitflag=1说明算法收敛,在(-1.2247 1.2247)处达到最优,值为0.4556。
3结论实际工程中的优化问题基本上都可以归纳为线性规划、一维优化、无约束非线性优化及约束非线性优化四种优化问题,MATLAB优化工具箱分别提供了相应优化函数,只要建立标准的数学模型,并确定相应函数调用参数的具体的值,按常用的调用格式调用函数即可完成优化分析。
但按照图1所示的流程进行优化分析,其中需要注意的是如目标函数或约束条件的性态比较复杂,则需要多次给出不同的初始点进行优化计算,从几次的结果中选择最优值。