一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx
《一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

斜齿圆柱齿轮减速器是一种使用非常广泛的机械传动装置,它具有结构紧凑、传动平稳和在不变位的情况下可凑配中心距等优点。
我国目前生产的减速器还存在着体积大,重量重、承载能力低、成本高和使用寿命短等问题,对减速器
进行优化设计,选择最佳参数,是提高承载能力、减轻重量和降低成本等完善各项指标的一种重要途径。
二、优化模型
本设计是要在满足零件的强度和刚度的条件下,求出使减速器的体积最小的各项参数。
1、设计变量
如图1所示,选取齿轮宽度b、小齿轮齿数、齿轮模数、两轴轴承之间的支撑跨距、两齿轮的内孔直径、为设计变量。
设计变量:
[]=[b]
2、建立目标函数
由于齿轮和轴的体积是决定减速器体积的依据,因此可按它们的体积最小的原则来建立目标函数。
根据齿轮几何尺寸及齿轮结构尺寸的计算公式,壳体内的齿轮和轴的体积可近似地表示为:
式中,;
;
。
目标函数为:
3、确定约束条件
1)齿数应大于不发生根切的最小齿数
-0
2)齿宽应满足,和为齿宽系数的最大值和最小值,一般取=0.9,=1.4。
3)传递动力的齿轮,模数应大于2mm。
2-0
4)为了限制大齿轮的直径不致于过大,小齿轮的直径要加以限制。
5)齿轮内孔直径的取值范围应在:
6)两轴承之间的支撑跨距按结构关系应满足:
,为箱体内壁距齿轮端面的距离,可取。
7)齿轮应满足强度要求
式中,接触应力和弯曲应力的计算公式分别为:
=
8)齿轮轴的最大挠度应不大于许用值。
9)齿轮轴的弯曲应力应不大于许用值。
这是一个有6个随机变量、16个约束条件的优化设计问题,采用惩罚函数法,用计算机编程,即可求出最优解。
三、选择算法的特点及程序框图
惩罚函数法即序列无约束极小化方法,它的基本原理是将有约束问题化为无约束问题,亦即将原来的目标函数和约束函数,按一定方式构成一个新的函数,当这个新的函数向原目标函数逼近时,它的最优解也就是原问题的最优解。
惩罚函数法又分为:
1、内点惩罚函数法
内点惩罚函数法简称内点法,这种方法将新的目标函数定义于可行域内,序列迭代点在可行域内逐步逼近约束边界上的最优点。
此方法的优点在于计算过程中每一个中间结果都是可行的,但它要求初始点为可行点,只能用来求解具
有不等式约束的优化问题。
内点惩罚函数法如图1所示,其中X(0)为初始惩罚因子;
C为递减系数;
ε为收敛精度:
2、外点惩罚函数法
外点惩罚函数法简称外点法,这种方法和内点法相反,新目标函数定义在可行域之外,序列迭代点从可行域之外逐渐逼近约束边界上的最优点。
此方法的优点在于适用于求解不等式或等式约束问题,并对初始点无要求,但中间结果不满足约束条件。
3、 混合惩罚函数法
混合惩罚函数法简称混合法,这种方法是把内点法和外点法结合起来,用来求解同时具有等式约束和不等式约束函数的优化问题。
四、计算实例
设计以一级斜齿圆柱齿轮减速器,已知输入功率P=58kW,输入转速n1=1000r/min,齿数比u=5,齿轮的许用接触应力=550MPa,许用弯曲应力=400MPa。
以体积最小为目标进行优化设计。
将已知量代入上述各式,其数学模型可表示为:
约束条件为:
17-0
0.9-
=-400
式中,=2.65、=2.226,,分别为主动齿轮和从动齿轮的齿形系数;
=1.58、=1.764,,分别为主动齿轮和从动齿轮的应力校正系数;
以惩罚函数法求解,初始方案为:
[230218420120160],
五、C语言程序
#include<
stdio.h>
stdlib.h>
math.h>
#definePI3.1415926
#definekkg16/*定义约束条件个数*/
doubler0=1;
/*定义罚因子*/
doubleDealPos(doubleAng1,doublex[])
{
inti;
doubleFai;
doubleo4,s4,c4,h1,h2;
o4=(x[3]+Ang1)*PI/180;
s4=sin(o4);
c4=cos(o4);
h1=atan(x[0]*s4/(1-x[0]*c4));
h2=x[0]*x[0]+1-2*x[0]*c4;
h2=(h2-x[1]*x[1]+x[2]*x[2])/(2*x[2]*sqrt(h2));
if(h2>
1e-30)
h2=atan(sqrt(1-h2*h2)/h2);
else
h2=PI/2-atan(h2/sqrt(1-h2*h2));
Fai=h1+h2;
return(Fai);
}
/*输入变量:
x-设计变量数组*/
doubleobjf(doublex[])
doubleb,b1,s,ff;
b=DealPos(0,x);
ff=0;
for(i=1;
i<
=20;
i++)
{b1=b-DealPos(i*9,x);
s=b1-30*sin(i*PI/20)*PI/180;
ff=ff+s*s;
return(ff);
/*约束条件优化子程序*/
x-设计变量数组*/
/*输出变量:
g-约束条件数组*/
voidstrain(doublex[],doubleg[])
g[0]=17-x[1];
g[1]=0.9-x[0]/(x[1]*x[2]);
g[2]=x[0]/(x[1]*x[2])-1.4;
g[3]=2-x[2];
g[4]=x[1]*x[2]-300.;
g[5]=100-x[4];
g[6]=x[4]-150;
g[7]=130-x[5];
g[8]=x[5]-200;
g[9]=x[0]+0.5*x[5]-x[3]-40;
g[10]=1486250/(x[1]*x[2]*sqrt(x[0]))-550;
g[11]=53366522/(x[0]*x[1]*x[2]*x[2])-400;
g[12]=25214684/(x[0]*x[1]*x[2]*x[2])-400;
g[13]=(117.04*x[3]*x[3]*x[3]*x[3])/(x[1]*x[2]*x[4]*x[4])-0.003*x[3];
g[14]=sqrt((2.85*pow(10,6)*x[3])/(x[1]*x[2])+2.4*pow(10,12))/pow(x[4],3)-5.5;
g[15]=sqrt((2.85*pow(10,6)*x[3])/(x[1]*x[2])+6*pow(10,3))/pow(x[5],3)-5.5;
/*构造罚函数*/
doubleldf(double*x)
doubleff,sg;
doubleg[kkg];
sg=0.;
strain(x,g);
for(i=0;
kkg;
{if(g[i]>
0)
sg=sg+r0/g[i];
else
sg=sg-g[i]*1e5;
}
ff=objf(x)+sg;
/*采用进退法进行一维搜索获得可行区间*/
p-初始设计变量数组*/
/*s-搜索方向*/
/*h0-初始搜索步长*/
/*n-模型维数*/
a-可行区间下限数组*/
/*b-可行区间上限数组*/
voidii(double*p,doublea[],doubleb[],doubles[],doubleh0,intn)
double*x[3],h,f1,f2,f3;
3;
x[i]=(double*)malloc(n*sizeof(double));
h=h0;
n;
*(x[0]+i)=*(p+i);
f1=ldf(x[0]);
*(x[1]+i)=*(x[0]+i)+h*s[i];
f2=ldf(x[1]);
if(f2>
=f1)/*如果前进方向函数值变大,则换方向*/
{h=-h0;
for(i=0;
*(x[2]+i)=*(x[0]+i);
f3=f1;
{*(x[0]+i)=*(x[1]+i);
*(x[1]+i)=*(x[2]+i);
f1=f2;
f2=f3;
for(;
;
)/*如果函数值下降,则加大步长*/
{h=2.*h;
*(x[2]+i)=*(x[1]+i)+h*s[i];
f3=ldf(x[2]);
if(f2<
f3)
break;
{for(i=0;
if(h<
0.)/*获取结果,返回*/
{a[i]=*(x[2]+i);
b[i]=*(x[0]+i);
{a[i]=*(x[0]+i);
b[i]=*(x[2]+i);
free(x[i]);
/*罚函数优化*/
p-初始设计变量*/
/*c-递减系数*/
/*eps-总体迭代精度*/
x-最优化设计变量值*/
/*返回值:
最优点处目标函数值*/
doubleempf(double*p,doublex[],doublec,doubleeps,intn)
inti,Tm;
doublefom,fxo;
fom=1e9;
Tm=0;
do{
fxo=powell(p,x,0.0001,n);
if(fabs(fom-fxo)>
eps)
{fom=fxo;
r0=c*r0;
Tm=Tm+1;
printf("
Nowitisthe%dtimeofiteration,currentvaluesofvaria