機械優(yōu)化設計實驗報告_第1頁
機械優(yōu)化設計實驗報告_第2頁
機械優(yōu)化設計實驗報告_第3頁
機械優(yōu)化設計實驗報告_第4頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本文格式為word版,下載可任意編輯機械優(yōu)化設計實驗報告 機械優(yōu)化設計 試驗報告 名目 1、進退法確定初始區(qū)間 . 錯誤! 未定義書簽。 1、1 進退法基本思路 . 錯誤! 未定義書簽。 、2 進退法程序框圖誤錯 錯誤! 未定義書簽。 1、3 題目誤錯 錯誤! 未定義書簽。 1、 源程序代碼及運行結(jié)果誤錯 錯誤! 未定義書簽。 2、黃金分割法 . 錯誤! 未定義書簽。 2、2 黃金分割法流程圖誤錯 錯誤! 未定義書簽。 、 題目誤錯 錯誤! 未定義書簽。 2、4 源程序代碼及結(jié)果 . 錯誤! 未定義書簽。 3、牛頓型法誤錯 錯誤! 未定義書簽。 3、牛頓型法基本思路 . 錯誤! 未定義書簽。

2、3、 阻尼牛頓法得流程圖 . 4 3、 題目 . 錯誤! 未定義書簽。 3、4 源程序代碼及結(jié)果誤錯 錯誤! 未定義書簽。 4、鮑威爾法誤錯 錯誤! 未定義書簽。 4、1 鮑威爾法基本思路誤錯 錯誤! 未定義書簽。 4、2 鮑威爾法流程圖誤錯 錯誤! 未定義書簽。 4.3 題目誤錯 錯誤! 未定義書簽。 、4 源程序代碼及結(jié)果 . 錯誤! 未定義書簽。 、 復合形法誤錯 錯誤! 未定義書簽。 5、1 復合行法基本思想 . 錯誤! 未定義書簽。 5、3 源程序代碼及結(jié)果 . 錯誤! 未定義書簽。 6、 外點懲處函數(shù)法誤錯 錯誤! 未定義書簽。 6、1 解題思路:誤錯 錯誤! 未定義書簽。 6、2

3、 流程框圖誤錯 錯誤! 未定義書簽。 6、3 題目 . 錯誤! 未定義書簽。 6、4 源程序代碼及結(jié)果 . 錯誤! 未定義書簽。 7、機械設計實際問題分析 . 錯誤! 未定義書簽。 7、計算過程如下誤錯 錯誤! 未定義書簽。 7、3 源程序編寫誤錯 錯誤! 未定義書簽。 、報告總結(jié)誤錯 錯誤! 未定義書簽。 1 、進退法確定初始區(qū)間 1 、1 進退法基本思路 : 根據(jù)肯定得規(guī)章試算若干個點,比較其函數(shù)值得大小,直至找到函數(shù)值按"凹凸-高'變化得單峰區(qū)間。 1 、 進退法程序框圖 、 題目: :用進退法求解函數(shù) 得搜尋區(qū)間 1 、4 源程序代碼及運行結(jié)果 #cue stdo、h

4、 #nclude mah、h ain() ;3f,2a,3,2a,0=1a,3y,2y,y,, tolf canf(h0=f,y=f',h0,y1); hh0;a=h;y2=a227*2+10; )y2( i h=-h;a3=a;=y1; loop:a1=a2;y1=y2;a2=a;y=; a3=22;y3=a3*a3-7a3+10; )y3y( fi ;o otog esle,2a,1a,nf=3y,f=y,%=y,f%=,f=2a,%='(tnpa3,1,y3); 搜尋區(qū)間為 6 2 、黃金分割法 、1 黃金分割法基本思路 : 通過不斷得縮短單峰區(qū)間得長度來搜 索微小點得一

5、種有效方法。按() 縮小 比較大小 確定取舍區(qū)間。 2 、2 黃金分割法流程圖 2 、3 題目 : 對函數(shù),給定搜尋區(qū)間時,試用黃金分割法求微小點 2 、 源程序代碼及結(jié)果: : =iline(x7*x+9") a=0;=8;s=0、1; a1=b0、68*(ba);y1=(a); a=+0、8*(b);y2=f(); whie(abs(b-a)eps) i(y1y2) a=a1; a1=; yy; 2=0、18(b-a); y2(2); else =;a2=a;y2=; a1=b-0、618(a); y1=f(a1); en end xx=0、5(a+b) f = lin func

6、ton: f(x) = x2*x9 xxx = 3、997 3 3 、牛頓型法 3 、1 牛頓型法基本思路 : : 在鄰域內(nèi)用一個二次函數(shù) 來近似代替原目標函數(shù),并將 得微小點作為對目標函數(shù)求優(yōu)得下一個迭代點.經(jīng)多次迭代,使之靠近目標函數(shù)得微小點。 3 、2 阻尼牛頓法得流程圖 : 3 、3 題目 : 用牛頓阻尼法求函數(shù)得微小點 3 、4 源程序代碼及結(jié)果: : k0; pl=1、e5; xk=inu(inpt x0:) itc=1;1; whl nrm(it)=ptol f1=4k(1,)34x(1,)+50*xk(1,1)4*xk(2,)-32;4xk(1,1)+k(2,1); g12*x

7、k(1,1)248xk(1,)+50,-4;-,8; dkin()*f1; a=-(dk"*1)(dkgd); xk=xk+ak; 開頭給定結(jié)束0, e x2 1 ( ) ( )k k kf f-¬- Ñ Ñ d x x1:min ( )k k kkk kkfaaa a+¬ +x x dx d1 k ke+- < x x* 1 k+¬ x x否是1 k k ¬ +0 k ¬ itl=*dk; k=k1; end f=(xk(1,)2)+(xk(1,1)2x(,1)2; printf(n d f :n,k);

8、disp(xk); ds(f); 結(jié)果顯示:inpt :1;1 用阻尼牛頓法迭代 27 次后得到 微小點 x及微小值 為: 2、00 、00 、327e09 4 、鮑威爾法 4 、 鮑威爾法基本思路 : : 在不用導數(shù)得前提下,在迭代中逐次構(gòu)造 g得共軛方向。 4 、2 鮑威爾法流程圖: : 。3 題目 : 求函數(shù)(x)= x0*x0x1x1x0110x4*x1+6得最優(yōu)點,收斂精度=、01 4 、4 源程序代碼及結(jié)果 : #include 'stdi、 ilude b、h inde mah、h oe obf(dobl x) dub ff; ff=x*0+x1xx11004+60; r

9、eturn(ff); vid jtf(dob x0,doub h,duble s,in ,doub a,doue ) in i; doble x,h,f1,f,f; for(i=;i3;+) xi=(double *)maloc(nsif(doule)); h=h0; fr(i=0;in;i+) *(0+i)=x0i; f1=objf(x); for(i=0;;i+) (x+i)=(x0+i)hsi; f=objf(x); f(f2=f1) h=-h; o(=0;n;+) *(2+)=(x+i); 3=1; fo(i=0;i+) (x0+i)=*(x1+i); (x1+)*(2+i); f1=

10、2; 2=f; for(;) =2; for(i0;in;+) *(x2+i)*(x1+i)+hi; f3=objf(2); (f2f3) bak; else for(i=0;+) (+i)=(x1+i); *(x1+i)=*(x2+i); 1=2; =f; f(h0) for(=;n;i+) ai=(x2+i); b=(0i); els o(=0;in;i+) =(x0+i); i(x2+i); fo(0;i3;i) ee(xi); doble gold(doble a,oule b,dubl eps,in ,oubl xx) int i; double 1,*x,f,q,w; r(i=0;

11、i+) xi=(ul )malloc(n*sizeof(double)); for(i=0;n;i+) (x0+i)=ai+0、18(bai); *(+i)+0、82(b-ai); 1=bjf(x); =bjf(x1); do f(ff) or(i=0;in;i+) bi=(x0i); (x0+i)=(1+i); f1=f2; for(=;i;i+) (xi)=ai+0、32*(bii); f=objf(x1); else fr(i=0;in;i+) ai(); (x1i)=(x0+i); f2=1; fr(=0;in;+) (x0+i)=a+0、618*(bi-a); foj(x); q=0

12、; or(i=0;i;i+) qq(biai)*(bi); qrt(q); whle(wep); fo(=0;in;i+) xxi=0、(a+bi); ffbj(x); f(=0;i;i+) fre(xi); eturn(ff); doble oneoptm(double x,double s,dol h0,doue psg,int n,double x) dube *a,*,; a=(obe *)malo(izeof(doubl)); b=(doube *)malloc(*szef(oule)); jt(,0,s,n,a,b); f=gld(a,sg,n,x); fee(); free(b)

13、; rurn (ff); ouble pel(doul p,dub 0,doubl ep,doubl epg,i ,doube x) int ,j,m; do xx4,ss,s; doble f,f0,f1,f2,f3,fx,dlt,d,dx,d; s=(doube *)malloc(n(n1)sizof(due); (duble *)mallc(nizof(dbl); fr(i=0;n;i+) for(j=0;j;j+) *(s+i(n1)+j); (s+i(n1)+i)=1; for(i=0;i;i) xxi(ouble )mallc(n*sizf(doue); fo(i=0;i;i+)

14、*(x+i)=pi; fo(;) fr(i=0;n;i+) *(x1+)*(xx0+i); xi=(xx1+i); f0=f1f(); dl=; for(j=0;j;+) or(i=0;in;i+) (x+i)=; *(s+)=*(s*(n+1); foneopti(,s,0,epsg,n,x); =f0; i(dl) dlt=; m; sdx0; r(i=0;in;i+) sdx=sdx+fab(xi((x+i); i(sdxeps) re(s); fee(s); for(i=0;i4;i+) fre(i); reurn(f); for(=0;i;i+) *(x2+i)=xi; 2=f; f

15、or(i=0;i;i+) (+i)(x+i)((xx1)); xi(xx3+i); x=objf(x); f3=fx; q=(f+f)(f1-2-lt)(f1f2dl); d=0、5t(f-f3)*(f1-f3); i((f31)(q) if(f23) or(i0;n;i+) *(xx+i)=*(x2+); lse for(i=0;n;i+) *(xx0+i)=(xx3); else for(=0;in;i+) *(ss(i1)*(n+)(*(xx1+i)); (s+i)=*(ss(+)*(n+1); =oeoptim(xx0,s,h0,psg,n,x); for(i=0;in;i+) (x0

16、+i)=x; for(j=m+;j=;j+) (i=0;in;i+) *(si(+)+j-1)=(s+i*(+1)j); vod mai() dle p=1,2; ble ,x2; f=owell(p,、,0、001,0、001,2,x); printf(x0,1=,ff=f,x0,x1,ff); getha(); 5 、 復合形法 5 、 復合行法基本思想 : 在可行域中選取 k 個設計點 (n1k2n)作為初始復合形得頂點。比較各頂點目標函數(shù)值得大小,去掉目標函數(shù)值最大得頂點(稱最壞點),以壞點以外其余各點得中心為映射中心,用壞點得映射點替換該點,構(gòu)成新得復合形頂點。 反復迭代計算,使復合

17、形不斷向最優(yōu)點移動與收縮,直至收縮到復合形得頂點與形心特別接近,且滿意迭代精度要求為止. 5 、2 題目: 求函數(shù)(x)=(x-)(x1)+*(x6)*(x26)得最優(yōu)點,約束條件為()=64xx12x0;g2(x)=x2-x110;g(x)=1-100;收斂精度自定義; 5 、3 源程序代碼及結(jié)果: #icude sdo、h inclue sdb、h incle tme、 ilude math、 efine e0 1e5 /*復合形法收斂掌握精度/ ube appl(it,int); *申請矩陣空間/ double f(double *); /目標函數(shù)/ doube g(dble ); 約束

18、函數(shù)/ bool jude(doubl ); /可行點得推斷/ t mai() it n,k; it i,j,k1; n l; duble tmprar; doube restran; /收斂條件/ dole reflect; /反射系數(shù)/ an(usigned)tm(nll); rintf('請輸入目標函數(shù)得維數(shù) n:'); 輸入已知數(shù)據(jù)/ cnf(d',n); rintf(請輸入復合形得頂點數(shù) :); scan(d,k); duble *x=appl(k,n); /存放復合形頂點/ doube y=(dole )callc(k,sizeof(doubl)); 存放目

19、標函數(shù)值* dobl p=(doble *)caloc(,sieof(double); *存放約束函數(shù)值/ doue *a=(dube )callo(n,sizeo(ube)); /*存放設計變量得下限*/ doul *b(double )calc(,sizef(doble)); /存放設計變量得上限 dble *xc(oub *)calloc(n,izf(doubl); /*存放可行點中心/ ul *x_r=(double )calc(n,ie(dubl)); 存放最壞點得反射點/ int('請輸入選定得第一個可行點 1(包含%d 個數(shù)):',n); r(i=0;i;i+)

20、scanf(%lf,*x+i); print(請輸入初選變量得下限 a(包含%d 個數(shù)):,n); f(i=0;in;i+) s(%l',i); printf(請輸入初選變量得上限 b(包含d 個數(shù)):,n); or(=0;in;+) cnf(lf',b+i); prinf(輸出輸入結(jié)果為:=d,k=%d,x1=(,n,k); /輸出已知數(shù)據(jù)/ fr(i0;n1;i+) printf('%、5lf ',(*x+i)); ritf('、lf)na(,*(*xn1)); fr(0;-1;+) prt('%f ',*(a+i); print(&

21、#39;%、5),b=(,*(a+n1)); for(i0;i1;i+) inf(f ',(+i); prinf(、f)n,(bn-)); l1: or(1;ik;i+) /隨機得到其余(1)個可行點/ fr(;jn;j+) (*(xi)+j)=(a+j)+(ouble)(ran()100)/1000*(b+j)(a+); l1; (i=1;ik;i+) /找出可行點得個數(shù) l,并把可行點放在前 個位置上*/ if(ge((x+))) o(j=1;k;j+) i(!jug((+j) or(1=0;k1n;k1+) tmpor=((i)+k1); (*(*;)1k+)j+x(*=)1+)

22、+ (* ;yaropmt=)k)j+x ;kerb ;+l 排小到大從值數(shù)函標目按點行可個 前把 )+;1li;=i(rf序*/ )+j;lj;+i=j(ro ))j+x(*(f))i+x(f(fi r(k1=0;1;1+) epoy=*(+i); ( ;)1k+)+((*=)1k+)i+(( ;yrarpet=)+)j+x /心中點行可求/ )+;i;0=(of (_c)0; )+i;l;0i(rof )+j;=j(ro (;)j+)i+x(*(+)j+c_x )+i;i;0=i(ro *(xc+i)=l; if(!jde(xc)) /推斷可行點中心就是否可行/ or(i=0;in;i+)

23、 (* ;)i+)1l+x(=)i+a*(b+i)*(x_i); goo ; esl /*化行可點行可不將*/ )+i;i;l=i( od fo(=0;jn;j+) (( )j+)+x((*5、0+)jc_(*=)j+)+x(_+)); elihw !( ;))i((egdujl2: /序排小到大從值數(shù)函標目按點行可將* )+i;1i;0=(f for(j=i+;jk;+) )+x((f))x(*(f(f )+1k;nk;01k(rof tprar=*(x+i)+1); *(x+i)+1)=((+)+k1); (*;yraopet)k+)jx /*件條斂收求*/ ;0=artse for(;i

24、k;+) +x((f-)+x((f(+narse1)*(f(*(xi)-f(*(xk1); ;)niar)1-k(/0、1(trqnirter if(estaine) /*推斷收斂條件/ printf(n 求得約束最優(yōu)點為:( '); )+i;ni;0(ro prif('。5f ',(x+k)); rint()n 目標函數(shù)得最優(yōu)解為:。fn,f((x+k1); ;0 nter esl 3:心中得點頂個)1k(得外 x點壞最去除算計/ )+i;ni;0=i(rof/ (i)=; )+i;ki;1=i(ro or(j=0;jn;j+) (* ;)j)i+x((*=+)j+c

25、_x )+i;ni;=i(ro (* ;k=/)i+c_x refect=、; l4: /點射反求 )+i;ni;0=i(rof (* ;))i+x*()+c_x(*(*tefer+)i+c_(=)i+_x ))r_x(egduj?。╢i ;5、0tclfer ;4l otog fi esle ( ))x*(f)r_x(f fo(i0;i;+) *(+i)(x_r+); go l2; )1-e1=elfer(fi esl ;)i)+((*)i+x(* )+i;ni;0=i(rf ;3l g esle ;5、0tcef ;l otog doule *pply(n o,i col) /*申請矩陣空

26、間/ ; tn ;)lbuod(fozs,lo*wor(colac)*elbod(=x elbuod ouble *y(duble *)callo(row,szo(dble *)); f(! | !y) prtf('內(nèi)存安排失敗!'); et(1); )+i;wi;i(rof( ; nrter ;o+x=)i+y dobl f(double ) /目標函數(shù)*/ rtrn (*x5)*(*x)+4*(*(x+1)6)*((+1)); ouble g(doble *x) /約束函數(shù)* dobe p=(dole *)clloc(3,sieof(doubl); )p!(fi ;)

27、9;!敗失配分存內(nèi)'(tnrp ;)1(tixe =64(*x)(*x)(+1))(*(x+1)); *(p+1)=*(1)x10; ( ;01x*=)2+p return p; bool jude(double x) /*可行點得推斷*/ in i; oule p=(dubl *)calloc(,izeo(duble); p=g(); for(=0;i+) fi (*(pi)0) break; if(i=3) retu true; ele run lse; 、 外點懲處函數(shù)法 6、 、1 解題思路:外點法就是從可行域得外部構(gòu)造一個點序列去靠近原約束問題得最優(yōu)解。外點法可以用來求解含不

28、等式與等式約束得優(yōu)化問題。外點懲處函數(shù)得形式為: 6 、 流程框圖: : 2 21 1( , ) ( ) max0, ( ) ( )m li ji jr f r g r h f= = + +å åx x x x 6 、3 題目: 求函數(shù) f()=(x15)(x1-5)+4*(x2)(x2-)得最優(yōu)點,約束條件:1(x)=4-1x-x20;g(x)=2-x1100;g()=x0;收斂精度=0、001; 6 、4 源程序代碼及結(jié)果 : #include sto、h ncluostre、h #incudmt、 dobe lamta0=0, 1、0 , , ,0 , ,0 ,0 ,

29、0 ,1;/鮑威爾方法初始化方向,線性無關 dube lama13=0, 0 , ;/暫存新得搜尋方向 ouble x14=0, 0 ,0, 0 ;/x到 x3 用于存儲各共軛方向得點 ouble x240, ,0, 0 ; double 340, 0 ,0, 0 ; ubl x44=, 0 ,0, ;/用于中間推斷 doubl x40, ,0, 0 ;/x5 用存放于更換方向后產(chǎn)生得新點 int =0;/標志 dble x_=0, 0, , ;/暫存鮑威爾最優(yōu)解 duble x40, , 2 , 2;/初值 duble c=0;/遞減系數(shù) ouble e0、001;/精度掌握 doub =1

30、;/初始懲處因子 duble r; /函數(shù)聲明部分 vod powell(doubl r); /鮑威爾方法函數(shù) double y(double x1,ole ,doubl 3,doul r); /待求函數(shù) doule seach(le x); 一維搜尋得目標函數(shù) id search(ble a,oule b,doubl ); /區(qū)間搜尋 dubl yllcut(obl ,double b); /黃金分割 vo sot(dole p,nt size);/選擇法排序 vid main() /約束優(yōu)化方法主函數(shù)入口 cot'請輸入精度'end; cine; chngya:well()

31、; doube cpae4; n fla1=0; for (int i=1;i=3;+) cmar=xii; if (fab(cmarei)e) fla1+; if (lag1=3) prit('=l x2=lfn,1,x_2); / ot最優(yōu)解為:x1='x_' 'x2_2 x3=x_endl ; cut最小值為fy(x_1,x_,3,r)ndl; ese o (nt j=;j=3;j+) x0jx_; ; goto hanga; /子函數(shù)定義部分 double fy(doble x1,oube x2,oue x3,doble r)/待求函數(shù) double ,

32、,; =(64x1x1-x*x2)0)?(6-x1*xx2*x2):0; n=(x-x1-10)0)?(x2-x1-1):; =(1-0)0)?(x110):0; run /懲處函數(shù) (x1-5)(x1)+4*(x-6)(x26)+(mn*n+p)+(x3*x3); owl(dule r) /鮑威爾方法函數(shù)定義 ouble d=、001; /迭代精度 int k; my1: or (k=1;k=3;k+) m3*k2; double a=0,b=,xo0; serch(a,b,); /完成區(qū)間搜尋 dole tep; emyellwcut(a,b);/黃金分割法 nt n=3k-2; fr (

33、nt i=1;i3;i+) sic () cse 1:x1ixi+emp*lamtan+;brea; cse 2:x2i=1i+empamtan+;break; cse 3:x3ix2i+elamta+;break; defat :break; dobl mp; nt ag=; fr (i i=1;=3;+) cmp=x3i-0i; (fas(mpi)et) flg+; if (fag=) /找到最優(yōu)解 x_1=31; x_2=3; x_3=x33; els dob f4; fy0=xy(,x2,03,r); y1=xy(x11,13,r); f2fxy(x,2,23,r); fy=fy(31

34、,x32,x33,r); oule fyy3; fo (int ii=0;i3;i) fyyii=fyifyii+1; sort(fyy,3); for (ii1;ii=3;ii+) 4ii=2x3ix0ii; uble 0,f3,4; 0=f0; 3fy3; f4=fxy(,2,x,r); f (0+42*f3)/2=fyy2) (ff4) fo (i t=1;t=;t+) 0=x3t; els for (nt ;t=3;+) x0=x4; goto my1; els or (nt t=0;t;t+) lamat=x3t-xt+1; m=0; /switc 標志! ouble aa=,bb=0; sech(aa,bb,1); dube temp1; temp1=yellct(aa,bb); fo (nt i=;i3;i+) x5i=xi+em1lata-; for (i=1;i=3;i+) xi=x5i; for (i=1;i=6;i+) amtai=lamtai+; for (=1;i3;+) mt6+i=lat11; got my; doubl search(ubl x) /一維搜尋得目標函數(shù) switc () cse 1: rt fxy(1latam,x02+xamta

溫馨提示

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

評論

0/150

提交評論