最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計_第1頁
最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計_第2頁
最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計_第3頁
最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計_第4頁
最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、最小體積二級圓柱齒輪減速器的優(yōu)化設(shè)計班級:機(jī)制072 學(xué)號: 姓名: 輸入功率(p=31kw)一建立數(shù)學(xué)模型該減速器的總中心距計算式為 1.選取設(shè)計變量 由涉及的獨立參數(shù),取 2. 建立目標(biāo)函數(shù) 3. 確定約束條件 (1)確定上、下限 從傳遞功率于轉(zhuǎn)速可估計 標(biāo)準(zhǔn)值(3.5,4,5,6,7,8) 標(biāo)準(zhǔn)值(4,5,6,8,10) 綜合考慮傳動平穩(wěn)等等各種因素,?。?由此建立12個不等式約束條件式 (2)按齒面接觸強(qiáng)度公式 得到高速級和低速級齒面接觸強(qiáng)度條件分別為 1 2(3)按輪齒彎曲強(qiáng)度計算公式 得到高速級和低速級大小齒輪的彎曲強(qiáng)度條件分別為 3 4 5 6 (4)按高速級大齒輪與低速軸不干涉

2、相碰條件 得 7對式1至式7代入有關(guān)數(shù)據(jù):(注:查相關(guān)機(jī)械設(shè)計手冊,得相關(guān)公式: 許用接觸應(yīng)力 許用彎曲應(yīng)力 因螺旋角、材料、要求等與例題相同,各類系數(shù)(如k,之類)與例題相同;因材料與例題選取相同,則、等參數(shù)相同。所以由以上公式可推出本設(shè)計與例題的、只與的比有關(guān)。所以本設(shè)計在原有例題的數(shù)據(jù)基礎(chǔ)上,對一些數(shù)據(jù)進(jìn)行推算。當(dāng)然第二種方法是也可以通過題目要求查機(jī)械設(shè)計手冊,一步步計算出相關(guān)數(shù)據(jù)。本設(shè)計在正確的基礎(chǔ)上,有較為簡便的第一種方法。)由上得:、與、相比明顯為消極約束,故可省略。共取17個約束條件。至此已形成了完整的數(shù)學(xué)模型。2 初始搜索區(qū)間的確定1) 將代入目標(biāo)函數(shù)得2) 確定其搜索區(qū)間a,

3、b。設(shè)初始點,初始步長h=1。以下是基于c-free4.0上運(yùn)行的c程序:#include #include void main() int a1=0,a2,a3,h=1; float f1,f2,f3,a,b; f1=67.33*a1+1/(1.5+a1)+1/(3-a1)+781, a2=a1+h,f2=67.33*a2+1/(1.5+a2)+1/(3-a2)+781; if (f2=f1) h=-h,a3=a1,f3=f1; while(f3a3) a=a3,b=a1; else a=a1,b=a3; printf(a=%.3f b=%.3fn,a,b); else a3=a2+h,f3

4、=67.33*a3+1/(1.5+a3)+1/(3-a3)+781; while(f3a3) a=a3,b=a1; else a=a1,b=a3; printf(a=%.3f b=%.3fn,a,b); 得到運(yùn)行結(jié)果:a=-2.000,b=6.000所以初始區(qū)間為-2.000,6.000。3 然后用黃金分割法求其最優(yōu)解以下是基于c-free4.0上運(yùn)行的c程序: #include #include void main() float a1,a2,f1,f2,f3,a,b,am; a=-2,b=6; while(b-a0.01) a1=b-0.618*(b-a), f1=67.33*a1+1/(

5、1.5+a1)+1/(3-a1)+781; a2=a+0.618*(b-a), f2=67.33*a2+1/(1.5+a2)+1/(3-a2)+781; if(f1=f2) b=a2,a2=a1,f2=f1,a1=b-0.618*(b-a), f1=67.33*a1+1/(1.5+a1)+1/(3-a1)+781; else a=a1,a1=a2,f1=f2,a2=a+0.618*(b-a), f2=67.33*a2+1/(1.5+a2)+1/(3-a2)+781; am=0.5*(b+a); f3=67.33*am+1/(1.5+am)+1/(3-am)+781; printf(amin=%

6、.4fnf(min)=%.4fn,am,f3);得出結(jié)果為 amin=-1.5035所以最優(yōu)解為 4 鮑威爾法#include #include #define m 10 /*數(shù)組長度m = 維數(shù)n */#define pi 3.1416 float f(float x);void mjtf(int n,float x0,float h,float s,float a,float b);void mhjfgf(int n,float a,float b,float flag,float x);void mpowell(int n,float x0,float h,float flag1,flo

7、at flag2,float a,float b,float x);float f(float x) float result; result=(x0*x2*(1+x4)+x1*x3*(1+31.5/x4)/2/cos(x5*pi/180) +1/(x0-3.5)+1/(8-x0)+1/(x1-3.5)+1/(10-x1)+1/(x2-14)+1/(22-x2) +1/(x3-16)+1/(22-x3)+1/(x4-5.8)+1/(7-x4)+1/(x5-8)+1/(15-x5) +1/(x0*x2-68.3722)+1/(x1*x3-66.7325)+ 1/(0.0000570*(1+x4)

8、*x0*x0*x0*x2*x2-cos(x5*pi/180)*cos(x5*pi/180) +1/(0.0000599*(31.5+x4)*x1*x1*x1*x3*x3-x4*x4*cos(x5*pi/180)*cos(x5*pi/180) +1/(x1*x3*(x4+31.5)-x4*(2*(x0+50)*cos(x5*pi/180)+x0*x2*x4); return result;/*搜索區(qū)間子程序*/void mjtf(int n,float x0,float h,float s,float a,float b) a0=2,b0=10; a1=2,b1=13; a2=14,b2=22;

9、 a3=16,b3=22; a4=5,b4=7; a5=8,b5=15;/*多維黃金分割法子程序*/void mhjfgf(int n,float a,float b,float flag,float x) int i; float x1m,x2m,f1,f2,sum; for(i=0;in;i+) /*計算初始兩試點*/ x1i=bi-(float)0.618*(bi-ai); f1=f(x1); for(i=0;in;i+) x2i=ai+(float)0.618*(bi-ai); f2=f(x2); do if(f1=f2) /*判斷消去區(qū)間*/ /*消去右*/ for(i=0;in;i

10、+) bi=x2i; for(i=0;in;i+) x2i=x1i; f2=f1; for(i=0;in;i+) x1i=bi-(float)0.618*(bi-ai); f1=f(x1); else /*消去左*/ for(i=0;in;i+) ai=x1i; for(i=0;in;i+) x1i=x2i; f1=f2; for(i=0;in;i+) x2i=ai+(float)0.618*(bi-ai); f2=f(x2); sum=0; for(i=0;iflag); for(i=0;in;i+) xi=(float)0.5*(bi+ai); /*已達(dá)到,輸出極小點*/*鮑威爾法子程序*

11、/void mpowell(int n,float x0,float h,float flag1,float flag2,float a,float b,float x) int i,j,k,r; float x1m,x11m,x2m,f0,f1,f2,fnm,smm,sum; for(i=0;in;i+) /*方向矩陣初始化*/ for(k=0;kn;k+) if(i=k) sik=1; else sik=0; k=0; while(1) for(i=0;in;i+) x1i=x0i; x11i=x1i; for(i=0;in;i+) /*依次按每個方向搜索*/ mjtf(n,x1,h,si

12、,a,b); mhjfgf(n,a,b,flag1,x1); fni=f(x11)-f(x1); /*計算函數(shù)下降值*/ x11i=x1i; for(i=0;in;i+) /*計算映射點*/ x2i=2*x1i-x0i; for(i=1;in;i+) /*找出函數(shù)下降值中的最大值存入fn0*/ if(fn0=f0|(f0-2*f1+f2)*(f0-f1-fn0)*(f0-f1-fn0)=0.5*fn0*(f0-f2)*(f0-f2) /*判斷是否需要換方向*/*不需要換*/ if(f1=f2) /*判斷將終點還是將映射點賦給下一輪始點*/ sum=0; /*計算一輪中終點與始點的距離*/ fo

13、r(i=0;in;i+) sum+=(x1i-x0i)*(x1i-x0i); for(i=0;in;i+) /*將終點賦給下一輪始點*/ x0i=x1i; else sum=0; /*計算一輪中終點與始點的距離*/ for(i=0;in;i+) sum+=(x2i-x0i)*(x2i-x0i); for(i=0;in;i+) /*將映射點賦給下一輪始點*/ x0i=x2i; else for(i=r;in-1;i+) /*去掉第r+1個方向,其它方向前移*/ for(j=0;jn;j+) sij=si+1j; for(i=0;in;i+) /*生成新方向放最后*/ sn-1i=x1i-x0i;

14、 mjtf(n,x1,h,sn-1,a,b); /*按新方向搜索一次*/ mhjfgf(n,a,b,flag1,x1); sum=0; /*計算一輪中終點與始點的距離*/ for(i=0;in;i+) sum+=(x1i-x0i)*(x1i-x0i); for(i=0;in;i+) /*將終點賦給下一輪始點*/ x0i=x1i; if(sqrt(sum)=flag2) break; else k+=1; for(i=0;in;i+) /*輸出極小點*/ xi=x1i;/*鮑威爾法主程序*/void main() int i,n; float h,flag1,flag2,x0m,am,bm,xm

15、; printf(nn); printf(請輸入維數(shù):n); scanf(%d,&n); printf(請輸入初始點:); for(i=0;in;i+) printf(nx0%d=,i); scanf(%f,&x0i); printf(n請輸入初始步長:n); scanf(%f,&h); printf(n請輸入黃金分割法迭代精度:n); scanf(%f,&flag1); printf(n請輸入鮑威爾法迭代精度:n); scanf(%f,&flag2); mpowell(n,x0,h,flag1,flag2,a,b,x); printf(n極小點坐標(biāo)為:n); for(i=0;in;i+) p

16、rintf(x%d=%.4fn,i,xi); printf(n極小值為:n%.4fn,f(x); 輸入數(shù)據(jù):65,6,19,21,6,910.10.1輸出結(jié)果:x0=2.1656x1=2.2277x2=14.1656x3=16.1242x4=5.0414x5=8.1449極小值為:240.8813五約束隨機(jī)方向搜索法 以下是基于win-tc運(yùn)行的c程序:#include #include #define pi 3.1416float x06=5,6,19,21,6,9,x6;float fx();float sueiji();float restrict();void main() float

17、 a0,a,e,f0,f,nmax,y6,s; int n,i,k,jj,k1,k2,yy; printf(enter the number n a0 e nmaxn); scanf(%d%f%f%f,&n,&a0,&e,&nmax); for(i=0;in;i+) xi=x0i; f0=fx(); a=a0; do k=1; jj=0; do for(i=0;i6;i+) yi=sueiji(); s=1/sqrt(y0*y0+y1*y1+y2*y2+y3*y3+y4*y4+y5*y5); for(i=0;i6;i+) xi=x0i+a*s*yi; do yy=restrict(); if(

18、yy=1) f=fx(); else break; if(ff0) for(i=0;inmax) k2=0; if(a=e) k1=0; printf(x=(%f,%f,%f,%f,%f,%f)n,x0,x1,x2,x3,x4,x5); printf(f=%fn,fx(); getch(); else k1=1; a=0.5*a; else k2=1; else k1=1; while(k2=1); while(k1=1); float fx() float f; f=(x0*x2*(1+x4)+x1*x3*(1+31.5/x4)/2/cos(x5*pi/180) +1/(x0-3.5)+1/

19、(8-x0)+1/(x1-3.5)+1/(10-x1)+1/(x2-14)+1/(22-x2) +1/(x3-16)+1/(22-x3)+1/(x4-5.8)+1/(7-x4)+1/(x5-8)+1/(15-x5) +1/(x0*x2-68.3722)+1/(x1*x3-66.7325)+ 1/(0.0000570*(1+x4)*x0*x0*x0*x2*x2-cos(x5*pi/180)*cos(x5*pi/180) +1/(0.0000599*(31.5+x4)*x1*x1*x1*x3*x3-x4*x4*cos(x5*pi/180)*cos(x5*pi/180) +1/(x1*x3*(x4+

20、31.5)-x4*(2*(x0+50)*cos(x5*pi/180)+x0*x2*x4); return(f); float sueiji() long i;float r; for(i=0;i39999;i+); srand(unsigned)time(null); r=(double)(rand()%100/(double)100); r=2*r-1; return(r); float restrict() if(x0-2)=0) return(0); if(7-x0)=0) return(0); if(x1-2)=0) return(0); if(7-x1)=0) return(0);

21、if(x2-14)=0) return(0); if(22-x2)=0) return(0); if(x3-16)=0) return(0); if(22-x3)=0) return(0); if(x4-5.8)=0) return(0); if(7-x4)=0) return(0); if(x5-8)=0) return(0); if(15-x5)=0) return(0); if(x0*x2-69.1865)=0) return(0); if(x1*x3-68.4876)=0) return(0); if(0.0000843*(1+x4)*x0*x0*x0*x2*x2-cos(x5*pi/

22、180)*cos(x5*pi/180)=0) return(0); if(0.0000912*(31.5+x4)*x1*x1*x1*x3*x3-x4*x4*cos(x5*pi/180)*cos(x5*pi/180)=0) return(0); if(x1*x3*(x4+31.5)-x4*(2*(x0+50)*cos(x5*pi/180)+x0*x2*x4)=0) return(0); return(1); 輸入:6,2,0.1,10輸出:x=4.846 , 5.846 , 18.846 , 20.846 , 5.846 , 8.846f=737.455六內(nèi)點懲罰法 以下是基于c-free4.0

23、平臺運(yùn)行的程序:#include #include #define m 10 /*數(shù)組長度m = 維數(shù)n */#define pi 3.142 int r=0.01;float f(float x);void mjtf(int n,float x0,float h,float s,float a,float b);void mhjfgf(int n,float a,float b,float flag,float x);void mpowell(int n,float x0,float h,float flag1,float flag2,float a,float b,float x);voi

24、d mndcfhs(int n,float h,float x0,float flag1,float flag2,float flag3,float a,float b,float x);float f(float x) float result; result=(x0*x2*(1+x4)+x1*x3*(1+31.5/x4)/2/cos(x5*pi/180) +r*(1/(x0-3.5)+1/(8-x0)+1/(x1-3.5)+1/(10-x1)+1/(x2-14)+1/(22-x2) +1/(x3-16)+1/(22-x3)+1/(x4-5.8)+1/(7-x4)+1/(x5-8)+1/(1

25、5-x5) +1/(x0*x2-68.3722)+1/(x1*x3-66.7325)+ 1/(0.0000570*(1+x4)*x0*x0*x0*x2*x2-cos(x5*pi/180)*cos(x5*pi/180) +1/(0.0000599*(31.5+x4)*x1*x1*x1*x3*x3-x4*x4*cos(x5*pi/180)*cos(x5*pi/180) +1/(x1*x3*(x4+31.5)-x4*(2*(x0+50)*cos(x5*pi/180)+x0*x2*x4); return result;/*多維進(jìn)退法子程序*/void mjtf(int n,float x0,float

26、 h,float s,float a,float b) a0=2;b0=10; a1=2;b1=13; a2=14;b2=22; a3=16;b3=22; a4=5;b4=7; a5=8;b5=15; /*多維黃金分割法子程序*/void mhjfgf(int n,float a,float b,float flag,float x) int i; float x1m,x2m,f1,f2,sum; for(i=0;in;i+) /*計算初始兩試點*/ x1i=bi-0.618*(bi-ai); f1=f(x1); for(i=0;in;i+) x2i=ai+0.618*(bi-ai); f2=

27、f(x2); do if(f1=f2) /*判斷消去區(qū)間*/ /*消去右*/ for(i=0;in;i+) bi=x2i; for(i=0;in;i+) x2i=x1i; f2=f1; for(i=0;in;i+) x1i=bi-0.618*(bi-ai); f1=f(x1); else /*消去左*/ for(i=0;in;i+) ai=x1i; for(i=0;in;i+) x1i=x2i; f1=f2; for(i=0;in;i+) x2i=ai+0.618*(bi-ai); f2=f(x2); sum=0; for(i=0;iflag); for(i=0;in;i+) xi=0.5*(

28、bi+ai); /*已達(dá)到,輸出極小點*/*鮑威爾法子程序*/void mpowell(int n,float x0,float h,float flag1,float flag2,float a,float b,float x) int i,j,k,r; float x1m,x11m,x2m,f0,f1,f2,fnm,smm,sum; for(i=0;in;i+) /*方向矩陣初始化*/ for(k=0;kn;k+) if(i=k) sik=1; else sik=0; k=0; while(1) for(i=0;in;i+) x1i=x0i; x11i=x1i; for(i=0;in;i+

29、) /*依次按每個方向搜索*/ mjtf(n,x1,h,si,a,b); mhjfgf(n,a,b,flag1,x1); fni=f(x11)-f(x1); /*計算函數(shù)下降值*/ x11i=x1i; for(i=0;in;i+) /*計算映射點*/ x2i=2*x1i-x0i; for(i=1;in;i+) /*找出函數(shù)下降值中的最大值存入fn0*/ if(fn0=f0|(f0-2*f1+f2)*(f0-f1-fn0)*(f0-f1-fn0)=0.5*fn0*(f0-f2)*(f0-f2) /*判斷是否需要換方向*/*不需要換*/ if(f1=f2) /*判斷將終點還是將映射點賦給下一輪始點

30、*/ sum=0; /*計算一輪中終點與始點的距離*/ for(i=0;in;i+) sum+=(x1i-x0i)*(x1i-x0i); for(i=0;in;i+) /*將終點賦給下一輪始點*/ x0i=x1i; else sum=0; /*計算一輪中終點與始點的距離*/ for(i=0;in;i+) sum+=(x2i-x0i)*(x2i-x0i); for(i=0;in;i+) /*將映射點賦給下一輪始點*/ x0i=x2i; else for(i=r;in-1;i+) /*去掉第r+1個方向,其它方向前移*/ for(j=0;jn;j+) sij=si+1j; for(i=0;in;i+) /*生成新方向放最后*/ sn-1i=x1i-x0i; mjtf(n,x1,h,sn-1,a,b); /*按新方向搜索一次*/ mhjfgf(n,a,b,flag1,x1); sum=0; /*計算一輪中終點與始點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論