基于matlab的机械优化设计
摘要:本文统筹概括了MATLAB在优化设计中的应用。同时,通过实例直齿圆柱齿轮减速器的优化设计,详细介绍了MATLAB优化工具箱在机械优化设计中的应用。 关键词:MATLAB;直齿圆柱齿轮减速器;优化设计 中图分类号:TH122
The mechanic optimization design Based on MATLAB
Abstract: the application of MATLAB optimal toobox in mechanic optimization design is introduced in sum and in detail by the example the optimization design of spur gear reducer. Key words: MATLAB; spur gear reducer; optimization design
1.引言
机械优化设计,就是在给定的在合伙环境条件下,在对机械产品的形态、几何尺寸关系以及其他因素的约束范围内,以机械系统的功能、强度和经济性等为优化对象,选取设计变量,建立目标函数和约束条件,并使目标函数获得最优值的一种现代设计方法。机械优化设计广泛的应用于齿轮、轴承、连杆、凸轮、机床等产品的设计中。处理优化问题,主要有两个步骤:首先要针对工程实际问题,建立数学模型;然后根据数学模型的特点选择优化方法及其计算程序,作必要的简化和加工,用计算机求得最优设计方案。
目前,已有很多成熟的优化方法程序可供选择,但它们各有自己的特点和适用范围;实际应用中必须注意优化方法或初始参数选择而带来的收敛性问题等。而MATLAB的优化工具箱则选用最佳方法求解、初始参数输入简单、语法符合工程设计语言要求,编程工作量少,优越性明显。
2. MATLAB优化工具箱
矩阵实验室(Matrix Laboratory)简称MATLAB,是由美国Mathworks公司开发的商业数学软件,用于算术开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
2.1 matlab优化工具箱算法
Matlab优化工具箱包含一系列优化算法和模块,用于解决工程实际问题: [1]求解无约束条件非线性极小值;
[2]求解约束条件下非线性极小值,包括目标逼近问题、极大—极小值问题; [3]求解二次规划和线性规划问题; [4]非线性最小二乘逼近和曲线拟合; [5]求解复杂结构的大规模优化问题。
2.2 matlab解决优化问题的步骤
利用MATLAB解决工程中的优化问题,其具体步骤如下:
1
[1]根据设计要求和目的定义优化设计问题,判断优化问题的类型。分析时要区分:单目标与多目标;线性与非线性问题;是否为线性规划问题等。 [2]根据优化问题的类型建立数学模型,选定优化函数。 [3]确定必要的数据和设计初始点。
[4]根据目标函数的性态,预设优化选项。
[5]在所有的输入参数定义后,调用优化函数进行优化程序调试。
[6]根据优化过程的具体提示信息,修改优化选项的设置,直到达到满足优化函数所需的优化条件为止。
[7]对所得优化数据和设计方案进行合理性和适应性分析。
2.3 优化工具箱的结构
优化工具箱的结构如下图所示;
3.优化函数简介
3.1 线性规划问题
线性规划问题是目标函数和约束条件均为线性函数的问题。 线性规划问题的数学模型为:
min fxxRn
s.t.:A*xb
Aeq*xbeq lbxub
其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。
其它形式的线性规划问题都可经过适当变换化为此标准形式。 函数 linprog调用格式如下:
x = linprog(f,A,b) %求min f ' *x sub.to Axb线性规划的最优解。
2
x = linprog(f,A,b,Aeq,beq) %等式约束Aeqxbeq,若没有不等式约束 Axb,则A=[ ],b=[ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围lbxub,若没有等式约束
Aeqxbeq ,则Aeq=[ ],beq=[ ]
x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数 [x,fval] = linprog(…) % 返回目标函数最优值,即fval= f ' *x。
[x,lambda,exitflag] = linprog(…) % lambda为解x的Lagrange乘子。 [x, lambda,fval,exitflag] = linprog(…) % exitflag为终止迭代的错误条件。 [x,fval, lambda,exitflag,output] = linprog(…) % output为关于优化的一些信息
3.2 非线性规划问题
3.2.1 无约束非线性规划问题
多元函数最小值的数学模型为:
minf(x)x
其中:x为向量,如x[x1,x2,,xn]
可以使用函数fminbnd、fminsearch和fminunc。 函数 fminbnd
格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间x1xx2上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。 x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项 [x,fval] = fminbnd(…) % fval为目标函数的最小值
[x,fval,exitflag] = fminbnd(…) %xitflag为终止迭代的条件 [x,fval,exitflag,output] = fminbnd(…) % output为优化信息 函数 fminsearch
格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。
x = fminsearch(fun,x0,options) % options查optimset [x,fval] = fminsearch(…) %最优点的函数值
[x,fval,exitflag] =fminsearch(…)% exitflag与单变量情形一致
[x,fval,exitflag,output] = fminsearch(…) %output与单变量情形一致 函数 fminunc
格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点 x = fminunc(fun,x0,options) % options为指定优化参数 [x,fval] = fminunc(…) %fval最优点x处的函数值
[x,fval,exitflag] = fminunc(…) % exitflag为终止迭代的条件。 [x,fval,exitflag,output] = fminunc(…) %output为输出优化信息
3
[x,fval,exitflag,output,grad] = fminunc(…) % grad为函数在解x处的梯度值
[x,fval,exitflag,output,grad,hessian] = fminunc(…) %目标函数在解x处的海赛(Hessian)值
3.2.2 约束非线性规划问题
非线性有约束的多元函数的数学模型为:
minf(x)
s.t. C(x)0
Ceq(x)0
lbxub
Axb Aeqxbeq
其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。 函数 fmincon
格式 x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval] = fmincon(…)
[x,fval,exitflag] = fmincon(…)
[x,fval,exitflag,output] = fmincon(…)
[x,fval,exitflag,output,lambda] = fmincon(…)
[x,fval,exitflag,output,lambda,grad] = fmincon(…)
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(…) 3.2.3 二次规划问题
二次规划问题的数学模型为:
1xHxfx2
s.t. Axb
xbeq Aeq
lbxub min其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量 其它形式的二次规划问题都可转化为标准形式。 函数 quadprog
格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小值。
x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件Aeqxbeq。 x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x的下界与上界。 x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0为设置的初值
4
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数 [x,fval] = quadprog(…) %fval为目标函数最优值
[x,fval,exitflag] = quadprog(…) % exitflag与线性规划中参数意义相同
[x,fval,exitflag,output] = quadprog(…) % output与线性规划中参数意义相同
[x,fval,exitflag,output,lambda] = quadprog(…) % lambda与线性规划中参数意义相同
3.3 最小、最大化问题
最小、最大化问题的数学模型为:
minmaxx{Fi}{Fi(x)}
s.t. C(x)0
Ceq(x)0
lbxub
Axb Aeqxbeq
其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的函数,F(x)、C(x)、Ceq(x)可以是非线性函数。
优化函数 fminimax
格式 x = fminimax(fun,x0) x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval,maxfval] = fminimax(…)
[x,fval,maxfval,exitflag] = fminimax(…)
[x,fval,maxfval,exitflag,output] = fminimax(…)
[x,fval,maxfval,exitflag,output,lambda] = fminimax(…)
3.4 多目标规划问题
多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为
min[f1(x),f2(x),,fm(x)]
sub.to
gj(x)0j1,2,,p
其中:x(x1,x2,,xn)。
在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到
*最优。此时,我们使用有效解,即如果不存在xS,使得fi(x)fi(x),i=1,2,…m, 则称x*
为有效解。
在MATLAB中,多目标问题的数学模型为:
minimizex,
5
s.t. F(x)weightgoal
C(x)0 Ceq(x)0
lbxub
Axb Aeqxbeq
其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。
函数 fgoalattain
格式 x = fgoalattain(fun,x0,goal,weight) x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval] = fgoalattain(…)
[x,fval,attainfactor] = fgoalattain(…)
[x,fval,attainfactor,exitflag] = fgoalattain(…)
[x,fval,attainfactor,exitflag,output] = fgoalattain(…) [x,fval,attainfactor,exitflag,output,lambda]=fgoalattain()
4.实例
已知一对单级圆柱齿轮减速器,输入功p=58kw,输入转速n1=1000r/min,齿数
比u=5,齿轮的许用应力[]H=550Mpa,许用弯曲应力[]F=400Mpa。以体积最小为目标对单级直齿圆柱齿轮减速器进行优化设计。
4.1 建立优化模型
4.1.1 问题分析及设计变量的确定
由已知条件得求在满足零件刚度和强度条件下,通过优化设计确定减速器体积最小的各项设计参数。由于齿轮和轴的尺寸是决定减速器体积的依据,所以是体积优化重点。
6
(b)大齿轮传动件图
图1 单级圆柱齿轮结构图
7
单机圆柱齿轮减速器的齿轮和轴的体积可近似的表示为:
222v0.25b(d12dz21)0.25b(d2dz22)0.25(bc)(Dg2dg2)d02c0.25l(dz21dz22)7dz218dz220.25[m2z12bdz21bm2z12u2bdz22b0.8b(mz1u10m)22.05bdz220.05b(mz1u10m1.6dz2)dz22l28dz2132dz22] 式中符号意义由结构图给出,其计算公式为
d1mz1,d2mz2Dg2umz110mdg21.6dz2,d00.25(umz110m1.6dz2) c0.2b
由上式知,齿数比给定之后,体积取决于b、z1 、m、l、dz1 和dz2 六个参数,则设计变量可取为
x[x1
4.1.2目标函数为
x2x3x4x5x6]T[bz1mldz1dz2]T
222222f(x)0.785398(4.75x1x2x385x1x2x385x1x30.92x1x6x1x52222220.8x1x2x3x61.6x1x3x6x4x5x4x628x532x6)min
4.1.3约束条件的建立
(1) 为避免发生根切,应有zzmin17,得
g1(x)17x2
(2) 齿宽应满足取min=0.9,
minbmaxd,min和max为齿宽系数d的最小值和最大值,一般
max=1.4,得
g2(x)0.9x1(x2x3)0
g3(x)x1(x2x3)1.40
g4(x)2x30
(3) 动力传递的齿轮模数应大于2mm,得
(4) 为了限制大齿轮的直径不至过大,小齿轮的直径不能大于
d1max,得
g5(x)x2x33000
8
(5) 齿轮轴直径的范围:
dzmindzdzmax得
g6(x)100x50g7(x)x51500g8(x)130x600 g9(x)x6200 (6) 轴的支撑距离l按结构关系,应满足条件:lb2min0.5dz2(可取箱体内壁距齿轮端面的最小距离min=20),得
g10(x)x10.5x6x4400
(7) 齿轮的接触应力和弯曲应力应不大于许用值,得
g11(x)1468250(x2x3x1)5500g12(x)7098g13(x)7098(8) 齿轮轴的最大挠度
22x1x2x3(0.1690.6666102x20.854104x2)22x1x2x3(0.28240.177102x20.394104x2)40004000
max不大于许用值[],得
44g(x)117.04x(xxxx40 4235)0.003 14(9) 齿轮轴的弯曲应力
w不大于许用值[]w,得
2.85106x42()2.410125.50x2x32.85106x42()610125.50x2x31g15(x)3x51g16(x)3x6
4.2优化方法的选择
由于该问题有6个设计变量,16个约束条件的优化设计问题,采用传统的优化设计方
法比较繁琐,比较复杂,所以选用Matlab优化工具箱中的fmincon函数来求解此非线性优化问题,避免了较为繁重的计算过程。
4.3 数学模型的求解
4.3.1将已知及数据代入上式,该优化设计的数学优化模型表示为:
2222minf(x)0.785398(4.75x1x2x385x1x2x385x1x32220.92x1x6x1x50.8x1x2x3x61.6x1x3x6x4x5222x4x628x532x6)
Subject to:
9
g1(x)17x20g2(x)0.9x1(x2x3)0g3(x)x1(x2x3)1.40g4(x)2x30g5(x)x2x33000g6(x)100x50g7(x)x51500g8(x)130x60
g9(x)x62000g10(x)x10.5x6x4400g11(x)1468250(x2x3x1)5500g12(x)7098224000x1x2x3(0.1690.6666102x20.854104x2)g13(x)7098224000x1x2x3(0.28240.177102x20.394104x2)44g14(x)117.04x4(x2x3x5)0.003x40
1g15(x)3x51g16(x)3x62.85106x42()2.410125.50x2x32.85106x42()610125.50x2x3
4.3.2运用Matlab优化工具箱对数学模型进行程序求解 首先在Matlab中编写目标函数:
funf=’f=0.785398*(4.75*x(1)*x(2)^2*x(3)^2+85*x(1)*x(2)*x(3)^2-85*x(1)*x(3)^2+0.92*x(1)*x(6)^2-x(1)*x(5)^2+0.8*x(1)*x(2)*x(3)*x(6)-1.6*x(1)*x(3)*x(6)+x(4)*x(5)^2+x(4)*x(6)^2+28*x(5)^2+32*x(6)^2);
由于约束条件中有非线性约束,故需要描述非线性约束条件:
fung=’g=[17-x(2);0.9-x(1)/(x(2)*x(3));x(1)/(x(2)*x(3))-1.4;2-x(3);x(2)*x(3)-300;100-x(5);x(5)-150;130-x(6);x(6)-200;x(1)+0.5*x(6)-x(4)-40;1486250/(x(2)*x(3)*sqrt(x(1)))-550;7098/(x(1)*x(2)*x(3)^2*(0.169+0.006666*x(2)-0.0000854*x(2)^2))-400;7098/(x(1)*x(2)*x(3)^2*(0.2824+0.00177*x(2)-0.0000394*x(2)^2))-400;117.04*x(4)^4/(x(2)*x(3)*x(5)^4)-0.003*x(4);(1/(x(5)^3))*sqrt((2850000*x(4)/(x(2)*x(3)))^2+2.4*10^12)-5.5;(1/(x(6)^3))*sqrt((2850000*x(4)/(x(2)*x(3)))^2+6*10^13)-5.5];
fun=[funf fung]; 给定初始值:
x0=[230;21;8;420;120;160];
通过constr功能函数来找多变量函数的强约束最小值:
options=[];
[x.options]= constr(fun, x0, options); 通过options(8)查看解处函数值:
10
options(8)
4.3.3最优解以及结果分析
运行结果:由图可知,优化后的最终结果为
x=[123.3565 99.8517 1.7561 147.3157 150.4904 129.5096] f(x)=2.36e*107
由于齿轮模数应为标准值,齿数必须为整数,其它参数也要进行圆整,所以最优解不能直接采用,按设计规范,经标准化和圆整后:
x=[124 100 2 148 150 130] f(x)=6.16 *107
4.4 结果对比分析
若按初始值减速器的体积V大约为6.32×107mm3,而优化后的体积V则为6.16×107mm3,优化结果比初始值体积减少为: Δν=1-(6.16×107/6.32×107)×100%=2.5%
所以优化后的体积比未优化前减少了2.5%,说明优化结果相对比较成功。
5. 结束语
应用MATLAB优化工具箱进行优化设计问题求解,编程工作量小,初始参数输入简单,符合工程设计语言,提高了设计效率。尤其是对于某些工程问题,用一种预先选定的方法很可能得不到最优解,运用MATLAB语言优化工具箱来求解优化问题就显得简单方便。
11
参考文献
[1] 孙靖民,梁迎春. 机械优化设计. 北京:机械工业出版社,2006. [2] 濮良贵,纪名刚. 机械设计. 8版. 北京:高等教育出版社,2006. [3] 孙桓,陈作模,葛文杰. 机械原理. 7版. 北京:高等教育出版社,2006.
[4] 李涛,贺勇军,刘志俭. MATLAB工具箱应用指南—应用数学篇[M].北京:电子工业出版社,2000. [5] 马兴义,杨立群,林敏,等.matlab61x应用开发指南[M].北京:机械工业出版社,2002:120-146 [6] 孙靖民.机械优化设计[M].北京:机械工业出版社,1994:65-79
[7] 王的睿,郭卫.用MATLAB优化工具箱求解最优化问题[J].煤矿机械,2000(7):6-8
12
因篇幅问题不能全部显示,请点此查看更多更全内容