無約束優(yōu)化搜索方法鮑威爾法_第1頁
無約束優(yōu)化搜索方法鮑威爾法_第2頁
無約束優(yōu)化搜索方法鮑威爾法_第3頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、無約束優(yōu)化搜索方法上機(jī)實(shí)踐報(bào)告1、寫出所選擇的無約束優(yōu)化搜索算法的基本過程、原理(可附流程圖說明)鮑威爾(Powell )法是直接利用函數(shù)值來構(gòu)造共軛方向的一種方法 在鮑威爾基本算法中,每一輪迭代都用連結(jié)始點(diǎn)和終點(diǎn)所產(chǎn)生出的搜 索方向去替換原向量組中的第一個(gè)向量,而不管它的“好壞”,這是產(chǎn)生向量組線性相關(guān)的原因所在。在改進(jìn)的算法中首先判斷原向量組是否需要替換。如果需要替換,還要進(jìn)一步判斷原向量組中哪個(gè)向量最壞,然后再用新產(chǎn)生的向量替換 這個(gè)最壞的向量,以保證逐次生成共軛方向。2、程序計(jì)算結(jié)果分析:中間各步驟的結(jié)果分析及與理論計(jì)算結(jié)果分析對比。 算例:ff=x0*x0+2*x1*x1-4*x0-

2、2*x0*x1;(1 )鮑威爾改進(jìn)算法 C+ 程序清單:#include "stdio.h"#include "stdlib.h"#include "math.h"double objf(double x)double ff;ff=x0*x0+2*x1*x1-4*x0-2*x0*x1;return(ff);void jtf(double x0 ,double h0,double s ,intn,double a ,double b )int i;double *x3,h,f1,f2,f3;for (i=0;i<3;i+)xi=(

3、double *)malloc (n*sizeof(double);h=h0;for(i=0;i<n;i+)*(x0+i)=x0i;f1=objf(x0);for(i=0;i<n;i+)*(x1+i)=*(x0+i)+h*si;f2=objf(x1);if(f2>=f1)h= -h0;for (i=0;i<n;i+)*(x2+i)=*(x0+i);f3=f1;for(i=0;i<n;i+)*(x0+i)= *(x1+i);*(x1+i)= *(x2+i);f1=f2;f2=f3;for(;)h=2. *h;for(i=0;i<n;i+)*(x2+i)=* (

4、x1+i) +h*si;f3= objf(x2);if(f2<f3)break;else for(i=0;i<n;i+)*(x0+i)= *(x1+i);*(x1+i)= *(x2+i);f1=f2;f2=f3;if(h<0. )for(i=0;i<n;i+)ai=*(x2+i);bi=*(x0+i);elsefor(i=0;i<n;i+)ai=*(x0+i);bi=*(x2+i);for(i=0;i<3;i+)free(xi);double gold(double a,double b,double eps,int n,double xx) int i;d

5、ouble f1,f2,*x2,ff,q,w; for(i=0;i<2;i+)xi=(double*)malloc (n*sizeof(double); for(i=0;i<n;i+)*(x0+i)=ai+0.618*(bi-ai); *(x1+i)=ai+0.382*(bi-ai);f1=objf(x0);f2=objf(x1);doif(f1>f2)for(i=0;i<n;i+)bi=*(x0+i);*(x0+i)=*(x1+i);f1=f2;*(x1+i)=ai+0.382*(bi-ai);f2=objf(x1);elsefor(i=0;i<n;i+)ai=

6、*(x1+i);*(x1+i)=*(x0+i);f2=f1;for(i=0;i<n;i+)*(x0+i)=ai+0.618*(bi-ai); f1=objf(x0);q=0;for(i=0;i<n;i+)q=q+(bi-ai)*(bi-ai);w=sqrt(q);while(w>eps);for(i=0;i<n;i+)xxi=0.5*(ai+bi);ff=objf(xx);free(xi);return(ff);double oneoptim(double x0,double s,double h0,double n,double x)double *a,*b,ff;a

7、=(double *)malloc(n*sizeof(double);b=(double *)malloc(n*sizeof(double);jtf(x0,h0,s,n,a,b);ff=gold(a,b,epsg,n,x);free(a);free(b);return(ff);double powell(double p,double h0,double eps,double n,double x)int i,j,m;double *xx4,*ss,*s;double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double *)malloc(n*(n+1)*siz

8、eof(double);epsg,intepsg,ints=(double *)malloc(n*sizeof(double);for (j=0;j<=n;j+)*(ss+i*(n+1)+j)=0;*(ss+i*(n+1)+i)=1;for (i=0;i<4;i+)xxi=(double *)malloc(n*sizeof(double);for (i=0;i<n;i+)*(xx0+i)=pi;for(;)for (i=0;i<n;i+)*(xx1+i)=*(xx0+i);xi=*(xx1+i);f0=f1=objf(x);dlt=-1;for (j=0;j<n;

9、j+)for (i=0;i<n;i+)*(xx0+i)=xi;*(s+i)=*(ss+i*(n+1)+j);f=oneoptim(xx0,s,h0,epsg,n,x);df=f0-f;if(df>dlt)dlt=df;m=j;sdx=0.;for (i=0;i<n;i+)sdx=sdx+fabs(xi-(*(xx1+i);if(sdx<eps)free(ss);free(s);for (i=0;i<4;i+)free(xxi);return(f);for (i=0;i<n;i+)*(xx2+i)=xi;f2=f;for (i=0;i<n;i+)*(xx

10、3+i)=2.*(*(xx2+i)-(*(xx1+i);xi=*(xx3+i);fx=objf(x);f3=fx;q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt);d=0.5*dlt*(f1-f3)*(f1-f3);if(f3<f1)|(q<d)if(f2<=f3)for (i=0;i<n;i+)*(xx0+i)=*(xx2+i);elsefor (i=0;i<n;i+)*(xx0+i)=*(xx3+i);elsefor (i=0;i<n;i+)*(ss+(i+1)*(n+1)=xi-(*(xx1+i);*(s+i)=*(ss+(

11、i+1)*(n+1);f=oneoptim(xx0,s,h0,epsg,n,x);for(i=0;i<n;i+)*(xx0+i)=xi;for (j=m+1;j<=n;j+)*(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j);void main()double p=1,1;double ff,x2,x1,x2,f;ff=powell(p,0.3,0.001,0.0001,2,x); printf("shuchuzuiyoujie :n"); x1=x1;x2=x2;f=ff;printf("x1=%f,x2=%f,f=%fn",x1,x2,f);getchar();(2)運(yùn)行結(jié)果為:算例 1ff=x0*x0+x1*x1+x0+x0*x1輸出結(jié)果:shuchuzuiyoujie u|x1=

溫馨提示

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

評論

0/150

提交評論