版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、機(jī)械優(yōu)化設(shè)計(jì)一一復(fù)合形方法及源程序(一)題目:用復(fù)合形法求約束優(yōu)化問題nmi /(x)= (a -5尸 +4(*2 -6T ; g = 64-xf -x22 0; g3 = -10 0的最優(yōu)解。基本思路:在可行域中構(gòu)造一個具有K個頂點(diǎn)的初始復(fù)合形。對該復(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)移動一步,直至逼近最優(yōu)點(diǎn)。(二)復(fù)合形法的計(jì)算步驟1)選擇復(fù)合形的頂點(diǎn)數(shù)k, 一般取n + lk2nf在可行域內(nèi)構(gòu)成具有k個頂點(diǎn)的初始復(fù)合 形。2)
2、計(jì)算復(fù)合形個頂點(diǎn)的目標(biāo)函數(shù)值,比較其大小,找出最好點(diǎn)xl、最壞點(diǎn)xh、及此壞點(diǎn)xg.3)計(jì)算除去最壞點(diǎn)xh以外的(k-1)個頂點(diǎn)的中心X*判別xc是否可行,若xc為可行點(diǎn),則轉(zhuǎn)步驟4);若xc為非可行點(diǎn),則重新確定設(shè)計(jì)變量的下限和上限值,即令。=xL,b = xc , 然后轉(zhuǎn)步驟1),重新構(gòu)造初始復(fù)合形。4)按式xR=xc + axc-xM算反射點(diǎn)Xr,必要時改變反射系數(shù)a的值,直至反射成功,即滿足式gy(x/?)0,(; = 1,2,inf(xR)f(xH)o然后Xr以取代Xh,構(gòu)成新的復(fù)合形。5)若收斂條件,上|/優(yōu))_得到滿足,計(jì)算終止。約束最優(yōu)解為: k 一 1 j=ix =x/(x
3、)=/(xL)o(三)復(fù)合形法程序框圖見下圖:(四)源程序如下:/*復(fù)合形法收斂控制精度*/*申請矩陣空間*/*目標(biāo)函數(shù)*/*約束函數(shù)*/*可行點(diǎn)的判斷*/int n.k;mt i,j,kl;int 1;double temporary;double restrain;double reflect;srand(unsigned)tmie(NULL);pnntf(”請輸入目標(biāo)函數(shù)的維數(shù)n:”);scanf(”d,&n);pnntf(”請輸入復(fù)合形的頂點(diǎn)數(shù)k:”);scanf(”d”,&k);double *x=apply(k,n);double *y=(double *)calloc(k.siz
4、eof(double);double *p=(double *)calloc(3,sizeof(double);double *a=(double *)calloc(n.sizeof(double);double *b=(double *)calloc(n,sizeof(double);double *x_c=(double *)calloc(n.sizeof(double);double *x_r=(double *)calloc(n,sizeof(double);/*收斂條件*/*反射系數(shù)*/*輸入己知數(shù)據(jù)*/*存放復(fù)合形頂點(diǎn)*/*存放目標(biāo)函數(shù)值*/*存放約束函數(shù)值*/*存放設(shè)計(jì)變量的下限
5、*/*存放設(shè)計(jì)變量的上限*/*存放可行點(diǎn)中心*/*存放最壞點(diǎn)的反射點(diǎn)*/*輸入值選擇n=2,k=3,本程序可以處理n為2或3, k為3或4的情況*/#iiiclude #iiiclude #iiiclude #iiiclude #defiiie EO le-5double *apply(int,int);double f(double *);double *g(double *);bool judge(double *);int niaiii()pnntf(”本程序中的所有輸入,兩個數(shù)之間用空格隔開,然后按enter鍵時不要長時間的按,否則,可 能會出錯寸);請輸入選定的第一個可行點(diǎn)xl(包含
6、(1個數(shù)fbi(i=0;in;i+)scanff%lP;x+i);pnntf(iW輸入初選變量的下限a(包含(1個數(shù)fbi(i=0;in;i+)scanff%lf,a+i);pnntf(iW輸入初選變量的上限b(包含d個數(shù)):F);fbi(i=0;in;i+)scanff%lP,b+i);pnntf(”輸出輸入結(jié)果為:nn=%d,k=%d,xl=(”,n,k);/*輸出已知數(shù)據(jù)*/fbr(i=O;in-l;i+)pnnW%51f”,*(*x+i);pnntff%.51f)Ea=(”,*(*x+n-l);fbr(i=O;in-l;i+)pnnrfT%f”,*(a+i);pnntff%.51f),
7、b=(”,*(a+n.l);fbr(i=O;in-l;i+)pnntf(”f”,*(b+i);pnntff%.51f)ir,*(b+n-l);Ll: for(i=l;ik;i+)/*隨機(jī)得到其余(k-1)個可行點(diǎn)*/foi(j=Ojnj+) *(*(x+i)+j)=*(a-fj)+(double)(rand()%10000)/10000*(*(b+j)-*(a+j); 1=1; fol(l=l;ik;l+)/*找出可行點(diǎn)的個數(shù)1,并把可行點(diǎn)放在前1個位置上*/if(judge(*(x+i)I for(j=lJk;j+) if(!judge(*(x+j) ( for(kl=0;kln;kl+)
8、( tempoiary=*(*(x+i)+kl); *(*(x+i)+kl)=*(*(x+j)+kl);* (* (x+j )+k l)=temp orary; break;) 1+; foi(i=0;il-l;i+)/*把前1個可行點(diǎn)按目標(biāo)函數(shù)值從大到小排序*/for(j=i+lJl;j+) if(f(*(x+i)f(*(x+j) fbr(k l=0;kln;kl +) ( temporary=*(*(x+i)+k 1); *(*(x+i)+kl)=*(*(x+j)+kl); *(*(x+j)+kl )=temporaiy; )foi(i=0;in;i+)/*求可行點(diǎn)中心 */*(x_c+i
9、)=O; foi(i=0;il;i+) for(j=0jvnj+) *(x_c+j)+=*(*(x+i)+j);*(x_c+i)/=l;if( !judge(x_c)/*判斷可行點(diǎn)中心是否可行*/*(a+i)=*(*(x+l-l)+i);*(b+i)=*(x_c+i);goto LI; else for(i=l;ivk;i+)/*將不可行點(diǎn)可行化*/do( for(j=0jn;j-H-) *(*(x+i)+j)=*(x_c+j)+0.5*(*(*(x+i)+j)-*(x_c+j);wlule(!judge(*(x+i);L2:foi(i=0;ik-l;i+)/*將可行點(diǎn)按目標(biāo)函數(shù)值從大到小排序
10、*/fbr(j=i+ljkj+) f(f(*(x+i)vf(*(x+j) for(kl=0;kln;kl+) ( tempoiary=*(*(x+i)+kl); *(*(x+i)+kl)=*(*(x+j)+kl);* (* (x+j )+k 1 )=temp orary;restiaiii=O;/*求收斂條件 */fbr(i=O;ik;i-H-) restiain+=(R*(x+i)f(*(x+k-l)*(f(*(x+i)f(*(x+kl);iestiaiii=sqrt(l .0/(k- l)*iestrain); if(restiaiiiEO)/* 判斷收斂條件 */J I pnntf(”n
11、求得約束最優(yōu)點(diǎn)為:(”); for(i=O;in;i-H-)pnntff%.5f ”,*(*(x+k.l)+i);pnntf()ii 目標(biāo)函數(shù)的最優(yōu)解為:%.5fn”,f(*(x+k-l); return 0: elseL3:for(i=0;in;i+)/*計(jì)算除去最壞點(diǎn)*x外的(k-1)個頂點(diǎn)的中心*/*(x_c+i)=0; for(i=l;ik;i+) for(j=0jn;j-H-) *(x_c+j)+=*(*(x+i)+j); for(i=0;in;i-H-) *(x_c+i)/=kl; reflect=1.3;L4:for(i=0;in;i+)/* 求反射點(diǎn)*/*(x_r+i)=*(x
12、_c+i)+reflect*(*(x_c+i)*(*x+i); if(!judge(x_r)reflect*=0.5;goto L4;else if(f(x_r)vR*x)jfbr(i=O;in;i+)*(*x+i)=*(x_r+i);goto L2;else if(reflect=le-10)fbr(i=0;in;i+)* (*x+i)=* (* (x+1 )+i);goto L3;elsereflect*=0.5;goto L4;double *apply(iiit row,hit col) /* 申請矩陣空間 */(int i;double *x=(double*)calloc(row*
13、col,sizeof(double);double *y=(double *)calloc(row,sizeof(double *);if(!x | !y)pnntf(吶存分配失敗!,exit(l);for(i=0;iiow;i-H-)*(y+i)=x+i*col;return y;double f(double *x)/* 目標(biāo)函數(shù)*/(return (*x-5)*(*x-5)+4*(*(x+l)-6)*(*(x+l)-6);double *g(double *x)/*約束函數(shù)*/(double *p=(double *)calloc(3,sizeof(double);】f(!p)pnntf(吶存分配失敗!,exit(l);*p=64-(*x)*(*x)-(*(x+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度出租車公司司機(jī)雇傭管理與薪酬合同范本4篇
- 二零二五年度摩托車廣告投放及合作推廣協(xié)議4篇
- 二零二五版高科技產(chǎn)業(yè)派遣員工創(chuàng)新成果轉(zhuǎn)化協(xié)議4篇
- 2025版滅蟑螂產(chǎn)品研發(fā)與市場推廣合同4篇
- 二零二五年度文化場館鐵棚建設(shè)與安全協(xié)議4篇
- 2025年度窗簾布料進(jìn)出口貿(mào)易合同樣本3篇
- 2025年度個人車輛抵押資產(chǎn)評估合同范本3篇
- 二零二五年度大豆產(chǎn)業(yè)政策研究與咨詢合同3篇
- 2025年度個人借款合同利息計(jì)算規(guī)范模板4篇
- 2025年度高速公路養(yǎng)護(hù)出渣車輛勞務(wù)分包合同范本4篇
- 墓地銷售計(jì)劃及方案設(shè)計(jì)書
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學(xué)案七年級上冊歷史
- 鋁箔行業(yè)海外分析
- 紀(jì)委辦案安全培訓(xùn)課件
- 超市連鎖行業(yè)招商策劃
- 醫(yī)藥高等數(shù)學(xué)智慧樹知到課后章節(jié)答案2023年下浙江中醫(yī)藥大學(xué)
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 【公司利潤質(zhì)量研究國內(nèi)外文獻(xiàn)綜述3400字】
- 工行全國地區(qū)碼
- 新疆2022年中考物理試卷及答案
評論
0/150
提交評論