資源描述:
《黃金分割法機(jī)械優(yōu)化設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、機(jī)械優(yōu)化設(shè)計(jì)黃金分割法班級(jí):學(xué)碩一班學(xué)號(hào):姓名:黃金分割法黃金分割法也成為0.618法,是一種應(yīng)用廣泛的一維搜索方法。該方法對(duì)函數(shù)無(wú)特殊要求,函數(shù)甚至可以是不連續(xù)的。黃金分割法是利用序列消去原理,通過(guò)不斷縮小單峰區(qū)間長(zhǎng)度,使搜索區(qū)間不斷縮小,從而不斷逼近目標(biāo)函數(shù)極小點(diǎn)的一種優(yōu)化方法。一、基本思想在搜索區(qū)間[a,b]內(nèi)必須按下述規(guī)則對(duì)稱地取和兩點(diǎn),使,,這兩點(diǎn)把區(qū)間分為三段,計(jì)算插入點(diǎn)的函數(shù)值,如圖1-1所示。根據(jù)單峰函數(shù)的性質(zhì),通過(guò)比較函數(shù)值大小,刪去其中一段,使搜索區(qū)間縮小。在新的區(qū)間繼續(xù)上面的過(guò)程,使搜索區(qū)間不斷縮小
2、,當(dāng)搜索區(qū)間無(wú)限縮小時(shí),便可得到函數(shù)在極小點(diǎn)附近的近似解。在第一次縮小區(qū)間后,新區(qū)間只需要再插入一點(diǎn)即可形成區(qū)間新三段。按比例縮小,新區(qū)間三段與原區(qū)間三段具有相同的比例分布,每次縮小所得新區(qū)間長(zhǎng)度與原區(qū)間長(zhǎng)度之比成為區(qū)間收縮率。圖1-1設(shè)初始區(qū)間長(zhǎng)度為L(zhǎng),為了保證區(qū)間收縮率不變,第一次收縮后的長(zhǎng)度為,第二次收縮后的長(zhǎng)度為,而第二次的收縮率應(yīng)該相等。解次方程并舍去負(fù)根,就可得到。所以,和兩點(diǎn)的取法為:,。所以,對(duì)于黃金分割法,適用于設(shè)計(jì)變量少的優(yōu)化問(wèn)題中的一維搜索。二、黃金分割法的搜索過(guò)程1)給出初始搜索區(qū)間及收斂精度,將
3、賦以0.6182)按坐標(biāo)點(diǎn)計(jì)算公式計(jì)算,;并計(jì)算其對(duì)應(yīng)的函數(shù)值。3)根據(jù)區(qū)間消去法原理縮短搜索區(qū)間。為了能用原來(lái)的坐標(biāo)點(diǎn)計(jì)算公式,需進(jìn)行區(qū)間名稱的代換,并在保留區(qū)間中計(jì)算一個(gè)新的試驗(yàn)點(diǎn)及其函數(shù)值。如果,則新區(qū)間=令,記N0=0;如果,則新區(qū)間=令,記N0=1;如圖2-1所示。圖2-14)檢查區(qū)間是否縮短到足夠小和函數(shù)值收斂到足夠精度,如果收斂條件滿足,則取最后兩試驗(yàn)點(diǎn)的平均值作為極小點(diǎn)的數(shù)值近似解。如果條件不滿足則轉(zhuǎn)向步驟5。5)產(chǎn)生新的插入點(diǎn),然后再進(jìn)行新的區(qū)間縮小??傮w如圖2-2所示。圖2-2從迭代過(guò)程可以看出,除第
4、一次縮小區(qū)間長(zhǎng)度時(shí)需要在選定的單峰區(qū)間內(nèi)增加兩個(gè)點(diǎn)外,以后每次縮小區(qū)間長(zhǎng)度只需要增加一個(gè)點(diǎn),因此區(qū)間長(zhǎng)度縮小次數(shù)應(yīng)等于縮小區(qū)間長(zhǎng)度所增加的點(diǎn)數(shù)減一。例如,為了達(dá)到規(guī)定的收斂精度所需要增加的點(diǎn)數(shù)為n,則為達(dá)到規(guī)定的收斂精度所需縮小區(qū)間長(zhǎng)度的次數(shù)k=n-1。第一次縮小后新區(qū)間長(zhǎng)度第二次縮小后新區(qū)間長(zhǎng)度……第k次縮小后新區(qū)間長(zhǎng)度設(shè)k次縮小后區(qū)間長(zhǎng)度已縮到足夠小,滿足規(guī)定的收斂精度,即由上式得:編程計(jì)算時(shí),可以根據(jù)預(yù)先規(guī)定的精度求得所需插入的點(diǎn)數(shù)n,然后用n作為終止迭代的標(biāo)志。三、算法框圖四、機(jī)械優(yōu)化的算例某公司要預(yù)制一零件工具
5、箱,初始設(shè)計(jì)為使用一塊長(zhǎng)為4m,寬為3m的長(zhǎng)方形鐵板作為原材料,利用這塊鐵板按照一定比例分配,圍成一個(gè)矩形制成工具箱的4個(gè)側(cè)面,應(yīng)該如何設(shè)計(jì)才能使工具箱的底面積最大?方案一二三四五長(zhǎng)(a)0.30.611.21.8寬(b)1.71.410.80.2面積(S)0.510.8410.960.36根據(jù)方案可以看到:選取不同的長(zhǎng)寬比例,會(huì)影響到底面積的大小,并且底面積的大小類似正態(tài)分布的圖形,也就是會(huì)出現(xiàn)一個(gè)峰值,因此可以使用黃金分割法進(jìn)行簡(jiǎn)單的運(yùn)算。如圖:n我們可以先設(shè)圍成工具箱底面的矩形的長(zhǎng)為X,因此寬則為2-X,而工具箱的
6、底面積為S,這我們可以把題目傳化為以下模型:n目標(biāo)函數(shù):S=(2-X)*X;n約束條件:0≤X≤2;n設(shè)置搜索區(qū)間為:[a,b]=[0,2],迭代精度為0.000001實(shí)現(xiàn)程序#include#include//#include"StdAfx.h"#definef(x)(2-x)*xintmain(){doubleF1,F2,F3,FP,x1,x2,x3,xp,a,b,e;intn;n=1;printf("設(shè)|置目標(biāo)函數(shù)為f(x)=(2-x)*x");printf("迭代精度:e="
7、);scanf("%lf",&e);printf("搜索左區(qū)間:a=");scanf("%lf",&a);printf("搜索右區(qū)間:b=");scanf("%lf",&b);printf("nabx1x2F1F2");x1=b-0.618*(b-a);x2=a+0.618*(b-a);F1=-f(x1);F2=-f(x2);printf("%d%.4lf%.4lf%.4lf%.4lf%.4lf%.4lf",n,a,b,x1,x2,F1,F2);n=n++;do{if(F18、1;x1=a+0.618*(b-a);F1=-f(x1);printf("%d%.4lf%.4lf%.4lf%.4lf%.4lf%.4lf",n,a,b,x1,x2,F1,F2);n=n++;}else{a=x1;x1=x2;F1=F2;x2=b-0.618*(b-a);F2=-f(x2);printf("%d%