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

下載本文檔

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

文檔簡介

實驗一 一維搜索方法本實驗求函數(shù)f(x)=(x-3)2以及f(x)=-(x-3)2的搜索區(qū)間[a,b]。并用黃金分割法和插值法分別求最優(yōu)解。一、簡述進退法的基本原理-對f(x)任選一個初始點al及初始步長h,通過比較這兩點函數(shù)值的大小,確定第三點位置,比較這三點的函數(shù)值大小,確定是否為“高一低一高”形態(tài)。選定初始點a,初始步長h=hO,計算yl=f(a1),y2=f(a1+h)。比較yl和y2。如y1〉y2,向右前進;加大步長h=2h,轉(zhuǎn)(3)向前;如y1〈y2,向左后退;h=一h0,將al與a2,yl與y2的值互換。轉(zhuǎn)(3)向后探測;如yl=y2,極小點在al和al+h之間。產(chǎn)生新的探測點a3=al+h,y3=f(a3);⑷比較函數(shù)值y2與y3:(b)如y2〉y3,加大步長h=2h,al=a2,a2=a3,轉(zhuǎn)(3)繼續(xù)探測。(a)如y2〈y3,則初始區(qū)間得到:間為[a,b]。二、進退法的程序#include"stdafx.h"/*文件包含*/#include"math.h"#include"stdio.h"doublef(doublex){return(x-3)*(x-3);}/*f(x)程序段*/voidfind_ab(doublex0,doubleh0,double*a,double*b){doubleh,xl,yl,x2,y2,x3,y3;/*聲明部分,定義變量h,xl,yl,x2,y2,x3,y3為雙浮點型*/h=h0;xl=x0;yl=f(xl);x2=xl+h;y2=f(x2);訐(y2>=y1)/*判斷yl與y2的大小*/{h=-h0;/*執(zhí)行后退,步長為負*/x3=x1;y3=y1;x1=x2;/*實現(xiàn)xl與x2對換yl與y2對換*/yl=y2;x2=x3;y2=y3;}for(;;)/*當y2<y3時,退出循環(huán)體*/{h=h*2.0;x3=x2+h;y3=f(x3);訐(y2<y3)break;x1=x2;yl=y2;x2=x3;y2=y3;/*實現(xiàn)xl與x2對換yl與y2對換*/}訐(h>0)/*為正時執(zhí)行*/{*a=x1;*b=x3;}else/*為負時執(zhí)行*/{*a=x3;*b=x1;進退法的運行結(jié)果四、簡述黃金分割法的基本原理通過對分割點函數(shù)值進行比較來逐次縮短區(qū)間,在初始期間內(nèi)取兩點XI和X2,X1VX2且在區(qū)間內(nèi)處對稱位置,兩點的對稱函數(shù)值為Y1=f(x1),y2=f(x2)比較y1與y2的大小,有下面兩種情況1、 若有y1vy2,極小點必在區(qū)間【a,x2】內(nèi),此時令b?x2,新的區(qū)間為【a,x2】;2、 若有yl〉=y2,極小點必在【xl,b】內(nèi),此時令a?xl,縮短后的新區(qū)間為【x1,b】.經(jīng)過對兩內(nèi)點函數(shù)值的比較,區(qū)間縮短一次??s短后的新區(qū)間是原區(qū)間的一部分,即舍去陰影線部分,留下其左面或右面部分,其間保留著原兩內(nèi)點x1與x2當中的一個,則新的區(qū)間中只有一個內(nèi)點。為了進行下一次的縮短區(qū)間,在新的區(qū)間中再以對稱原則補增一個內(nèi)點,重復上述函數(shù)值的比較,如此反復分割,使區(qū)間逐次地加以縮短五、黃金分割法的程序voidsearch_gold(doublea,doubleb,doublee,double*x,double*y){doublexl,x2,yl,y2;/*聲明部分,定義變量h,xl,yl,x2,y2為雙浮點型*/do{xl=a+0.382*(b-a);yl=f(xl);/*取x1與x2點*/x2=a+0.618*(b-a);y2=f(x2);訐(y1vy2)/*判斷yl與y2的大小*/{b=x2;x2=x1;y2=y1;xl=a+0.382*(b-a);yl=f(xl);/*新的區(qū)間為【a,x2】*/}else{a=x1;x1=x2;y1=y2;x2=a+0.618*(b-a);y2=f(x2);/*縮短后的新區(qū)間為【xl,b】*/while(b-a>e);/*判斷精度,不滿足條件退出*/*x=0.5*(a+b);*y=f(*x);}voidsearch_insert(doublea,doubleb,doublee,double*xpt,double*fpt)/*子程序段*/{doublexl,x2,fl,f2,x3,f3,xp,fp,xp0,cl,c2;/*聲明部分,定義變量xl,x2,fl,f2,x3,f3,xp,fp,xp0,cl,c2為雙浮點型*/intk=1;x1=a;x3=b;x2=0.5*(a+b);f1=f(x1);f2=f(x2);f3=f(x3);xp0=0;for(;;){訐(c2==0.0){*xpt=x2;*fpt=f2;break;}xp=0.5*(x1+x3-c1/c2);fp=f(xp);訐((xp-x1)*(x3-xp)<=0.0){ }訐(k!=1)訐(fabs(xp0-xp)v=e){ }訐(xp>x2)訐(f2vfp){}else{}else訐(f2vfp){xl=xp;fl=fp;}else{x3=x2;f3=f2;x2=xp;f2=fp;}xpO=xp;k++;}}intmain(intargc,char*argv[])/*主函數(shù)*/{doublea,b;intxO,hO;printf(-請輸入:初始步長hO,起始點xO\n");scanf("%f,%f",&hO,&x0);find_ab(xO,hO,&a,&b);printf("%f,%f\n",a,b);doublex,y;search_gold(a,b,0.l,&x,&y);printf("%f,%f",x,y);/*輸出結(jié)果*/}六、黃金分割法的運行結(jié)果七、簡述二次插值法的基本原理由于初始區(qū)間較大,只用一回二次插值計算所得的X*p作為原函數(shù)的X*的近似解常常達不到預期的精度要求,為此需要再作區(qū)間的縮短,進行多次的插值計算,使X*p得點列不斷逼近原函數(shù)的極小點X*.第一次區(qū)間縮短的方法:計算X*p點的函數(shù)值f(x*p),記作f*p,比較f*p與f2,取其中較小者所對應的點作為新的x2,以此點左右兩鄰點分別取作新的x1和x2,于是獲得了縮短后的新區(qū)間【xl,x3】根據(jù)x*p相對于x2的位置和函數(shù)值f*p與f2的比較,區(qū)間縮短分以下四種情況。x*p〉x2,f2〈f*p.以【xl,x*p】為新區(qū)間,即令x3~x*p,x1x2不變x*p〉x2,f2〉=f*p以【x2,x3】為新區(qū)間,即令xl~x2,x2~x*p,x3不變x*pWx2,f2三f*p.以【x1,x2】為新區(qū)間,即令x3?x2,x2jx*p,xl不變。x*pWx2,f2,<f*p.以【x*p,x3】為新區(qū)間,即令xljx*,x2,x3不變。經(jīng)過多次反復循環(huán),區(qū)間長度即可逐次減至足夠小的程度。由于在極值點附近的領域內(nèi)目標函數(shù)呈現(xiàn)很強的正定二次函數(shù)性態(tài),故插值函數(shù)的最優(yōu)點x*p就及其接近目標函數(shù)的最優(yōu)點。八、二次插值法的程序#include"stdafx.h"/*文件包含*/#include"math.h"#include"stdio.h"doublef(doublex){return(x-3)*(x-3);}voidfind_ab(doublex0,doubleh0,double*a,double*b){doubleh,xl,yl,x2,y2,x3,y3;/*聲明部分,定義變量h,xl,yl,x2,y2,x3,y3為雙浮點型*/h=h0;xl=x0;yl=f(xl);/*計算x*p點的函數(shù)值f(x*p),記作f*p,比較f*p與f2,取其中較小者所對應的點作為新的x2,以此點左右兩鄰點分別取作新的x1和x2,于是獲得了縮短后的新區(qū)間【xl,x3】*/x2=xl+h;y2=f(x2);訐(y2>=y1){h=-h0;x3=x1;y3=y1;x1=x2;y1=y2;x2=x3;y2=y3;}for(;;){h*=2.0;x3=x2+h;y3=f(x3);訐(y2<y3)break;x1=x2;y1=y2;x2=x3;y2=y3;}訐(h>0){*a=x1;*b=x3;}else{*a=x3;*b=x1;}}voidsearch_insert(doublea,doubleb,doublee,double*xpt,double*fpt){doublexl,x2,fl,f2,x3,f3,xp,fp,xp0,cl,c2;/*聲明部分,定義變量xl,x2,fl,f2,x3,f3,xp,fp,xp0,cl,c2為雙浮點型*/intk=1;x1=a;x3=b;x2=0.5*(a+b);f1=f(x1);f2=f(x2);f3=f(x3);xp0=0;for(;;){c1=(f3-f1)/(x3-x1);C2=((f2-f1)/(x2-x1)-c1)/(x2-x3);訐(c2==0.0){*xpt=x2;*fpt=f2;break;}xp=0.5*(x1+x3-c1/c2);fp=f(xp);訐((xp-x1)*(x3-xp)v=0.0){*xpt=x2;*fpt=f2;break;}

f(k!=l)f(fabs(xp0-xp)v=e){*xpt=xp;*fpt=fp;break;}f(xp>x2)f(f2vfp){② x3=xp;f3=fp;/*x*p〉x2,f2〈f*p.【xl,x*p】為新區(qū)間,即令x3~x*p,xlx2不變*/xl=x2;fl=f2;x2=xp;f2=fp;/*x*p〉x2,f2〉=f*p*/*/以【x2,x3】為新區(qū)間,即令xl~x2,x2~x*p,x3不變*/*/}elsef(f2<fp){Xl=xp;fl=fp;/*③x*pWx2,f22f*p.以【x1,x2】為新區(qū)間,即令x3?x2,x2*p,xl不變。*/*/}else{f2,<f*p.以【x*p,x3】為新區(qū)間,即令xl?x*,x2,x3不

溫馨提示

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

評論

0/150

提交評論