机械优化设计.docx
- 文档编号:30149145
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:17
- 大小:147.05KB
机械优化设计.docx
《机械优化设计.docx》由会员分享,可在线阅读,更多相关《机械优化设计.docx(17页珍藏版)》请在冰豆网上搜索。
机械优化设计
《机械优化设计》课程
任务说明书
课程名称:
机械优化设计
任课教师:
学生姓名:
班级:
学号:
完成日期:
目录:
一小组成员:
2
二优化题目:
3
三建立数学模型:
3
1.选取设计变量3
2.建立目标函数4
3.确定约束条件4
四有关数据输入及优化结果:
6
1.输入数据:
6
2.输出结果:
7
3.结果比较:
7
五C语言程序:
7
六致谢词:
11
七参考文献:
12
最小体积二级圆柱齿轮减速器的优化设计
一小组成员:
职务
班级
姓名
学号
自评成绩
组长
组员1
组员2
组员3
组员4
组员5
组员6
二优化题目:
如图所示的二级斜圆柱齿轮减速器,高速轴输入功率P1=31kw,高速轴转速n1=1450rpm,总传动比iΣ=31.5,此轮的齿宽系数ψa=0.4;齿轮材料和热处理大齿轮45号钢正火HB=187-207,小齿轮45号钢调质HB=228-255。
总工作时间不少于10年。
要求按总中心距a∑最小来确定总体方案中的各个主要参数。
三建立数学模型:
该减速器的总中心距计算式为
1.选取设计变量
由涉及的独立参数,取
2.建立目标函数
3.确定约束条件
(1)确定各参数上、下限
从传递功率于转速可估计
标准值(3.5,4,5,6,7,8)
标准值(4,5,6,8,10)
综合考虑传动平稳等等各种因素,取:
由此建立12个不等式约束条件式
(2)按齿面接触强度公式
得到高速级和低速级齿面接触强度条件分别为
[1]
[2]
(3)按轮齿弯曲强度计算公式
得到高速级和低速级大小齿轮的弯曲强度条件分别为
[3]
[4]
[5]
[6]
(4)按高速级大齿轮与低速轴不干涉相碰条件
得
[7]
对式[1]至式[7]代入有关数据:
(注:
查相关《机械设计手册》,得相关公式:
许用接触应力
许用弯曲应力
因螺旋角、材料、要求等与例题相同,各类系数(如K,y,E之类)与例题相同,因材料与例题选取相同,则
、
等参数相同。
所以由以上公式可推出本设计与例题的
、
只与
的比有关。
所以本设计在原有例题的数据基础上,对一些数据进行推算。
当然第二种方法是也可以通过题目要求查机械设计手册,一步步计算出相关数据。
(本设计在正确的基础上,有较为简便的第一种方法。
)
由上得:
、
与
、
相比明显为消极约束,故可省略。
共取17个约束条件。
至此已形成了完整的数学模型。
四有关数据输入及优化结果:
1.输入数据:
变量维数
n=6
第一对齿轮模数
mn1=5
第二对齿轮模数
mn2=6
齿数
z1=19
齿数
z3=21
传动比
i1=6
螺旋角
β=9
搜索步长
h=1
精度
e=0.01
2.输出结果:
参数
x[0]
x[1]
x[2]
x[3]
x[4]
x[5]
a
结果
2.0201
2.0276
14.0201
16.0150
5.0050
8.0175
205.4700
3.结果比较:
(1)优化前a1=310.32
(2)优化后a2=205.47
(3)节省(a2-a1)/a1=33%
五C语言程序:
#include
#include
#definem10/***********数组长度m>=维数n****/
#definepi3.142
intr=0.01;
floatf(floatx[]);
voidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[]);
voidmhjfgf(intn,floata[],floatb[],floatflag,floatx[]);
voidmpowell(intn,floatx0[],floath,floatflag1,floatflag2,floata[],floatb[],floatx[]);
voidmndcfhs(intn,floath,floatx0[],floatflag1,floatflag2,floatflag3,floata[],floatb[],floatx[]);
floatf(floatx[])
{
floatresult;
result=(x[0]*x[2]*(1+x[4])+x[1]*x[3]*(1+31.5/x[4]))/2/cos(x[5]*pi/180)+r*(1/(x[0]-3.5)+1/(8-x[0])+1/(x[1]-3.5)+1/(10-x[1])+1/(x[2]-14)+1/(22-x[2])+1/(x[3]-16)+1/(22-x[3])+1/(x[4]-5.8)+1/(7-x[4])+1/(x[5]-8)+1/(15-x[5])+1/(x[0]*x[2]-68.3722)+1/(x[1]*x[3]-66.7325)+1/(0.0000570*(1+x[4])*x[0]*x[0]*x[0]*x[2]*x[2]-cos(x[5]*pi/180)*cos(x[5]*pi/180))
+1/(0.0000599*(31.5+x[4])*x[1]*x[1]*x[1]*x[3]*x[3]-x[4]*x[4]*cos(x[5]*pi/180)*cos(x[5]*pi/180))+1/(x[1]*x[3]*(x[4]+31.5)-x[4]*(2*(x[0]+50)*cos(x[5]*pi/180)+x[0]*x[2]*x[4])));
returnresult;
}
/*多维进退法子程序*/
voidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[])/*mjtf(n,x1,h,s[i],a,b)x1=x[0][0],x[0][1]*/
{
inti;
floatx1[m],x2[m],x3[m],f1,f2,f3;
for(i=0;i { x1[i]=x0[i]; x2[i]=x0[i]+h*s[i]; } f1=f(x1); f2=f(x2); if(f2>=f1)/*判断搜索方向*/ {/*搜索方向为反向,转身*/ h=(-1)*h; for(i=0;i x3[i]=x1[i]; f3=f1; for(i=0;i x1[i]=x2[i]; f1=f2; for(i=0;i x2[i]=x3[i]; f2=f3; }/*搜索方向为正向*/ for(i=0;i x3[i]=x2[i]+h*s[i]; f3=f(x3); while(f3 {/*未完成,继续搜索*/ h=2*h; for(i=0;i x1[i]=x2[i]; f1=f2; for(i=0;i x2[i]=x3[i]; f2=f3; for(i=0;i x3[i]=x2[i]+h*s[i]; f3=f(x3); }/*已完成*/ for(i=0;i { //if(h>0) if(x1[i] { a[i]=x1[i]; b[i]=x3[i]; } else { a[i]=x3[i]; b[i]=x1[i]; } a[0]=2;b[0]=10; a[1]=2;b[1]=13; a[2]=14;b[2]=22; a[3]=16;b[3]=22; a[4]=5;b[4]=7; a[5]=8;b[5]=15; } } /*多维黄金分割法子程序*/ voidmhjfgf(intn,floata[],floatb[],floatflag,floatx[]) { inti; floatx1[m],x2[m],f1,f2,sum; for(i=0;i x1[i]=b[i]-0.618*(b[i]-a[i]); f1=f(x1); for(i=0;i x2[i]=a[i]+0.618*(b[i]-a[i]); f2=f(x2); do { if(f1<=f2)/*判断消去区间*/ {/*消去右*/ for(i=0;i b[i]=x2[i]; for(i=0;i x2[i]=x1[i]; f2=f1; for(i=0;i x1[i]=b[i]-0.618*(b[i]-a[i]); f1=f(x1); } else {/*消去左*/ for(i=0;i a[i]=x1[i]; for(i=0;i x1[i]=x2[i]; f1=f2; for(i=0;i x2[i]=a[i]+0.618*(b[i]-a[i]); f2=f(x2); } sum=0; for(i=0;i sum+=(b[i]-a[i])*(b[i]-a[i]); }while(sqrt(sum)>flag); for(i=0;i x[i]=0.5*(b[i]+a[i]);/*已达到,输出极小点*/ for(i=0;i printf("%f,%f\n",a[i],b[i],x[i]); } voidmzblh(intn,floatx0[],floath,floatflag1,floatflag2,floata[],floatb[],floatx[]) { inti,j,k,r; floatx1[m],x2[m],f0,f1,f2,fn[m],s[m][m],sum; for(i=0;i for(k=0;k if(i==k) s[i][k]=1; else s[i][k]=0;//初始化完成 k=1; while (1) { for(i=0;i x1[i]=x0[i]; for(i=0;i { mjtf(n,x1,h,s[i],a,b);/*调用多维进退法子程序*/ mhjfgf(n,a,b,flag1,x1);/*调用多维黄金分割法子程序*/ } sum=0;/*计算一轮中终点与始点的距离*/ for(i=0;i sum+=(x1[i]-x0[i])*(x1[i]-x0[i]); for(i=0;i x0[i]=x1[i]; if(sqrt(sum)<=flag1)/*判断是否满足精度要求*/ break; else k+=1; if(k>50) break; } for(i=0;i x[i]=x1[i]; } /*内点惩罚函数子程序*/ voidmndcfhs(intn,floath,floatx0[],floatflag1,floatflag2,floatflag3,floata[],floatb[],floatx[]) { inti,j,k; floatx1[m],sum; k=1; do{ mzblh(n,x0,h,flag1,flag2,a,b,x); sum=0;/*计算一轮中终点与始点的距离*/ for(i=0;i sum+=(x[i]-x0[i])*(x[i]-x0[i]); if(sqrt(sum)<=flag2) break; else {r=r*flag3; k+=1; for(i=0;i x0[i]=x[i]; } }while (1); } /*坐标轮换法法主程序*/ voidmain() { inti,n; floath,flag1,flag2,flag3,x0[m],a[m],b[m],x[m]; printf("维数n: \n"); scanf("%d",&n); for(i=0;i { printf("初始点x0[%d]=",i); scanf("%f",&x0[i]); } printf("\步长h: \n"); scanf("%f",&h); printf("黄金分割法迭代精度flag1: \n"); scanf("%f",&flag1); printf("鲍威尔法迭代精度flag2: \n"); scanf("%f",&flag2); printf("内惩罚法迭代精度flag3: \n"); scanf("%f",&flag3); mndcfhs(n,h,x0,flag1,flag2,flag3,a,b,x); for(i=0;i printf("x[%d]=%f,",i,x[i]); printf("F=%f\n",f(x)); } 六致谢词: 这次课程设计是在蔡老师悉心指导下完成的。 蔡老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我们影响深远。 不仅使我们树立了远大的学术目标、掌握了基本的研究方法,还使我们明白了许多待人接物与为人处世的道理。 同时也培养了我们团队合作能力。 本次设计从选题到完成,每一步都是在蔡老师的指导下完成的,倾注了老师大量的心血。 在此,谨向蔡老师表示崇高的敬意和衷心的感谢! 再多华丽的言语也显苍白,在此,再次向蔡老师致以崇高的敬意和衷心的感谢! 七参考文献: 1.孙靖民机械优化设计北京: 机械工业出版社2004 2.刘小年机械制图北京: 机械工业出版社2005 3.徐茂功公差配合与技术测量北京: 机械工业出版2000 4.孙全颖机械优化设计北京: 哈尔滨工业大学出版社2007 5.成大先机械设计手册北京: 化学工业出版社2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 优化 设计