版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、機(jī)械優(yōu)化設(shè)計(jì)復(fù)合形方法及源程序(一) 題目:用復(fù)合形法求約束優(yōu)化問(wèn)題;的最優(yōu)解?;舅悸罚涸诳尚杏蛑袠?gòu)造一個(gè)具有K個(gè)頂點(diǎn)的初始復(fù)合形。對(duì)該復(fù)合形各頂點(diǎn)的目標(biāo)函數(shù)值進(jìn)行比較,找到目標(biāo)函數(shù)值最大的頂點(diǎn)(即最壞點(diǎn)),然后按一定的法則求出目標(biāo)函數(shù)值有所下降的可行的新點(diǎn),并用此點(diǎn)代替最壞點(diǎn),構(gòu)成新的復(fù)合形,復(fù)合形的形狀每改變一次,就向最優(yōu)點(diǎn)移動(dòng)一步,直至逼近最優(yōu)點(diǎn)。(二) 復(fù)合形法的計(jì)算步驟1) 選擇復(fù)合形的頂點(diǎn)數(shù)k,一般取,在可行域內(nèi)構(gòu)成具有k個(gè)頂點(diǎn)的初始復(fù)合形。2) 計(jì)算復(fù)合形個(gè)頂點(diǎn)的目標(biāo)函數(shù)值,比較其大小,找出最好點(diǎn)xL、最壞點(diǎn)xH、及此壞點(diǎn)xG.3) 計(jì)算除去最壞點(diǎn)xH以外的(k-1)個(gè)頂點(diǎn)的中
2、心xC。判別xC是否可行,若xC為可行點(diǎn),則轉(zhuǎn)步驟4);若xC為非可行點(diǎn),則重新確定設(shè)計(jì)變量的下限和上限值,即令,然后轉(zhuǎn)步驟1),重新構(gòu)造初始復(fù)合形。4) 按式計(jì)算反射點(diǎn)x,必要時(shí)改變反射系數(shù)的值,直至反射成功,即滿足式。然后x以取代x,構(gòu)成新的復(fù)合形。5) 若收斂條件得到滿足,計(jì)算終止。約束最優(yōu)解為:。(三) 復(fù)合形法程序框圖見下圖:是否否否否是是是是否求反射點(diǎn)計(jì)算各頂點(diǎn)的目標(biāo)函數(shù)值f(xj)(j=1,2,k)一次壞點(diǎn)xG代替最壞點(diǎn)xH結(jié) 束xR可行?xC可行?計(jì)算出去xH后的各頂點(diǎn)中心將各定點(diǎn)的目標(biāo)函數(shù)值和坐標(biāo)按目標(biāo)函數(shù)值的大小排序形成初始復(fù)合形的k個(gè)頂點(diǎn)xj(j=1,2,k)輸入 n,k
3、,開 始 (四) 源程序如下:/*輸入值選擇n=2,k=3,本程序可以處理n為2或3,k為3或4的情況*/#include #include #include #include #define E0 1e-5 /*復(fù)合形法收斂控制精度*/double *apply(int,int); /*申請(qǐng)矩陣空間*/double f(double *); /*目標(biāo)函數(shù)*/double *g(double *); /*約束函數(shù)*/bool judge(double *); /*可行點(diǎn)的判斷*/int main()int n,k;int i,j,k1;int l;double temporary;double
4、 restrain; /*收斂條件*/double reflect; /*反射系數(shù)*/srand(unsigned)time(NULL);printf(請(qǐng)輸入目標(biāo)函數(shù)的維數(shù)n:); /*輸入已知數(shù)據(jù)*/scanf(%d,&n);printf(請(qǐng)輸入復(fù)合形的頂點(diǎn)數(shù)k:);scanf(%d,&k);double *x=apply(k,n); /*存放復(fù)合形頂點(diǎn)*/double *y=(double *)calloc(k,sizeof(double); /*存放目標(biāo)函數(shù)值*/double *p=(double *)calloc(3,sizeof(double); /*存放約束函數(shù)值*/double
5、*a=(double *)calloc(n,sizeof(double); /*存放設(shè)計(jì)變量的下限*/double *b=(double *)calloc(n,sizeof(double); /*存放設(shè)計(jì)變量的上限*/double *x_c=(double *)calloc(n,sizeof(double); /*存放可行點(diǎn)中心*/double *x_r=(double *)calloc(n,sizeof(double); /*存放最壞點(diǎn)的反射點(diǎn)*/printf(本程序中的所有輸入,兩個(gè)數(shù)之間用空格隔開,然后按enter鍵時(shí)不要長(zhǎng)時(shí)間的按,否則,可能會(huì)出錯(cuò)n); printf(請(qǐng)輸入選定的第一
6、個(gè)可行點(diǎn)x1(包含%d個(gè)數(shù)):,n);for(i=0;in;i+)scanf(%lf,*x+i);printf(請(qǐng)輸入初選變量的下限a(包含%d個(gè)數(shù)):,n);for(i=0;in;i+)scanf(%lf,a+i);printf(請(qǐng)輸入初選變量的上限b(包含%d個(gè)數(shù)):,n);for(i=0;in;i+)scanf(%lf,b+i);printf(輸出輸入結(jié)果為:nn=%d,k=%d,x1=(,n,k); /*輸出已知數(shù)據(jù)*/for(i=0;in-1;i+)printf(%.5lf ,*(*x+i);printf(%.5lf)na=(,*(*x+n-1);for(i=0;in-1;i+)pr
7、intf(%f ,*(a+i);printf(%.5lf),b=(,*(a+n-1);for(i=0;in-1;i+)printf(%f ,*(b+i);printf(%.5lf)n,*(b+n-1);L1:for(i=1;ik;i+) /*隨機(jī)得到其余(k-1)個(gè)可行點(diǎn)*/for(j=0;jn;j+)*(*(x+i)+j)=*(a+j)+(double)(rand()%10000)/10000*(*(b+j)-*(a+j);l=1;for(i=1;ik;i+) /*找出可行點(diǎn)的個(gè)數(shù)l,并把可行點(diǎn)放在前l(fā)個(gè)位置上*/if(judge(*(x+i)for(j=1;jk;j+)if(!judge(
8、*(x+j)for(k1=0;k1n;k1+)temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;break;l+;for(i=0;il-1;i+) /*把前l(fā)個(gè)可行點(diǎn)按目標(biāo)函數(shù)值從大到小排序*/for(j=i+1;jl;j+)if(f(*(x+i)f(*(x+j)for(k1=0;k1n;k1+)temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;for(i=0;in;i+) /*求可行點(diǎn)中心*/*(x_c+i
9、)=0;for(i=0;il;i+)for(j=0;jn;j+)*(x_c+j)+=*(*(x+i)+j);for(i=0;in;i+)*(x_c+i)/=l;if(!judge(x_c) /*判斷可行點(diǎn)中心是否可行*/for(i=0;in;i+)*(a+i)=*(*(x+l-1)+i);*(b+i)=*(x_c+i);goto L1;elsefor(i=l;ik;i+) /*將不可行點(diǎn)可行化*/dofor(j=0;jn;j+)*(*(x+i)+j)=*(x_c+j)+0.5*(*(*(x+i)+j)-*(x_c+j);while(!judge(*(x+i);L2:for(i=0;ik-1;i
10、+) /*將可行點(diǎn)按目標(biāo)函數(shù)值從大到小排序*/for(j=i+1;jk;j+)if(f(*(x+i)f(*(x+j)for(k1=0;k1n;k1+)temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;restrain=0; /*求收斂條件*/for(i=0;ik;i+)restrain+=(f(*(x+i)-f(*(x+k-1)*(f(*(x+i)-f(*(x+k-1);restrain=sqrt(1.0/(k-1)*restrain);if(restrainE0) /*判斷收斂條件*/printf(
11、n求得約束最優(yōu)點(diǎn)為:( );for(i=0;in;i+)printf(%.5f ,*(*(x+k-1)+i);printf()n目標(biāo)函數(shù)的最優(yōu)解為:%.5fn,f(*(x+k-1);return 0;elseL3:for(i=0;in;i+) /*計(jì)算除去最壞點(diǎn)*x外的(k-1)個(gè)頂點(diǎn)的中心*/*(x_c+i)=0;for(i=1;ik;i+)for(j=0;jn;j+)*(x_c+j)+=*(*(x+i)+j);for(i=0;in;i+)*(x_c+i)/=k-1;reflect=1.3;L4:for(i=0;in;i+) /*求反射點(diǎn)*/*(x_r+i)=*(x_c+i)+reflect
12、*(*(x_c+i)-*(*x+i);if(!judge(x_r)reflect*=0.5;goto L4;else if(f(x_r)f(*x)for(i=0;in;i+)*(*x+i)=*(x_r+i);goto L2;else if(reflect=1e-10)for(i=0;in;i+)*(*x+i)=*(*(x+1)+i);goto L3;elsereflect*=0.5;goto L4;double *apply(int row,int col) /*申請(qǐng)矩陣空間*/int i;double *x=(double*)calloc(row*col,sizeof(double);dou
13、ble *y=(double *)calloc(row,sizeof(double *);if(!x | !y)printf(內(nèi)存分配失敗!);exit(1);for(i=0;irow;i+)*(y+i)=x+i*col;return y;double f(double *x) /*目標(biāo)函數(shù)*/return (*x-5)*(*x-5)+4*(*(x+1)-6)*(*(x+1)-6);double *g(double *x) /*約束函數(shù)*/double *p=(double *)calloc(3,sizeof(double);if(!p)printf(內(nèi)存分配失敗!);exit(1);*p=64-(*x)*(*x)-(*(x+
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流工程課程設(shè)計(jì)slp方法食堂
- 活動(dòng)義齒網(wǎng)絡(luò)課程設(shè)計(jì)
- 混凝土排架課程設(shè)計(jì)
- 電子沙盤課程設(shè)計(jì)
- 紅色教育課程設(shè)計(jì)理念
- 空城計(jì)課程設(shè)計(jì)
- 2024年湖南省安全員-B證考試題庫(kù)附答案
- 2024年山西省安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 爆破隧道課程設(shè)計(jì)
- 氣球鮮花造景課程設(shè)計(jì)
- 商業(yè)銀行會(huì)計(jì)實(shí)務(wù)培訓(xùn)
- 自動(dòng)洗衣機(jī)行星齒輪減速器的設(shè)計(jì)-畢業(yè)論文
- 履帶吊驗(yàn)收表
- 世界地理高中世界地理填圖練習(xí)
- 連續(xù)梁施工質(zhì)量通病及防治
- 機(jī)械滑臺(tái)的控制
- 2018-2019學(xué)年第一學(xué)期西城小學(xué)三年級(jí)數(shù)學(xué)期末試題
- GB-T-12137-2015-氣瓶氣密性試驗(yàn)方法
- 煙葉種植及加工項(xiàng)目可行性研究報(bào)告寫作范文
- 員工知識(shí)產(chǎn)權(quán)歸屬協(xié)議
- 八卦象數(shù)療法常見配方最新版
評(píng)論
0/150
提交評(píng)論