一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx

上传人:b****2 文档编号:14877538 上传时间:2022-10-25 格式:DOCX 页数:14 大小:374.47KB
下载 相关 举报
一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx_第1页
第1页 / 共14页
一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx_第2页
第2页 / 共14页
一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx_第3页
第3页 / 共14页
一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx_第4页
第4页 / 共14页
一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx

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

一级斜齿圆柱齿轮减速器的优化设计Word格式文档下载.docx

斜齿圆柱齿轮减速器是一种使用非常广泛的机械传动装置,它具有结构紧凑、传动平稳和在不变位的情况下可凑配中心距等优点。

我国目前生产的减速器还存在着体积大,重量重、承载能力低、成本高和使用寿命短等问题,对减速器

进行优化设计,选择最佳参数,是提高承载能力、减轻重量和降低成本等完善各项指标的一种重要途径。

二、优化模型

本设计是要在满足零件的强度和刚度的条件下,求出使减速器的体积最小的各项参数。

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1