2、成新復(fù)合形,使復(fù)合形不斷向最優(yōu)點(diǎn)移動和收縮,直至收縮到復(fù)合形的各頂點(diǎn)與其形心非常接近、滿足迭代精度要求時為止。最后輸出復(fù)合形各頂點(diǎn)中的目標(biāo)函數(shù)值最小的頂點(diǎn)作為近似最優(yōu)點(diǎn)。補(bǔ)充:關(guān)于復(fù)合形法定點(diǎn)數(shù)目的選取數(shù)目多少的選取,要視具體情況而定,一般說來,為了防止迭代過程中產(chǎn)生降維,頂點(diǎn)數(shù)目取多一些較好。因?yàn)橹灰趉個頂點(diǎn)中有n+1個頂點(diǎn)所構(gòu)成的n個矢量線性無關(guān),搜索就不會在降維的空間里進(jìn)行。所以k值大些,降維的可能性就小些。但是從另一方面看,頂點(diǎn)數(shù)目多,顯然會降低計算速度。為此,對于優(yōu)化問題維數(shù)n<6時通常取k=2n;對于n>5的優(yōu)化問題,一般應(yīng)適當(dāng)減少頂點(diǎn)數(shù)目,
3、而取k=(1.25——1.5)n(取整)。當(dāng)然,頂點(diǎn)的最少數(shù)目不得低于n+1.二.復(fù)合形法的優(yōu)缺點(diǎn)復(fù)合形法不需要計算目標(biāo)函數(shù)的導(dǎo)數(shù),也不進(jìn)行一維搜索,因此對目標(biāo)函數(shù)和約束函數(shù)都沒有特殊的要求,適用范圍較廣。復(fù)合形法的收斂速度較慢,特別當(dāng)目標(biāo)函數(shù)的維數(shù)較高和約束條件的數(shù)目增多時,這一缺點(diǎn)尤為突出。另外,復(fù)合形法不能用于求解具有等式約束的優(yōu)化問題。三.問題求解下面分別用復(fù)合形法和matlab工具箱分別進(jìn)行求解并比較計算結(jié)果問題一:1-1函數(shù)的三維立體圖1-2.復(fù)合形法求解尋優(yōu)趨勢圖1-3.求解結(jié)果對照表方法復(fù)合形法Matlab工具箱x11.00041x21.0
4、0021f1.8048e-070問題二:2-1函數(shù)的三維立體圖2-2.復(fù)合形法求解尋優(yōu)趨勢圖2-3.求解結(jié)果對照表方法復(fù)合形法Matlab工具箱x10.9950-0.1431*e-05x20-0.1431*e-05f0.99508.1197e-10問題三:2-1函數(shù)的三維立體圖3-2.復(fù)合形法求解尋優(yōu)趨勢圖3-3.求解結(jié)果對照表方法復(fù)合形法Matlab工具箱x1-2.95611.5345x21.05581.5345f0.99031.9860四.結(jié)果分析對于求解此類問題,做出目標(biāo)函數(shù)的大致圖形(當(dāng)然只限于三維以內(nèi))有利于我們判斷函數(shù)的極值點(diǎn)位置以及估計函數(shù)值
5、,同時也可以用來檢驗(yàn)計算結(jié)果的正確性。對于問題一,兩種求解方法的計算結(jié)果基本相同,但對于問題二和問題三的求解結(jié)果為何不同,我們猜想應(yīng)該是matlab工具箱的求解方法對求解函數(shù)有著特殊的要求所導(dǎo)致的,例如,要求函數(shù)可導(dǎo)或者連續(xù)等。附錄:程序(只給出問題三的求解程序,其他問題的求解類似)一.復(fù)合形法求解程序如下:symsstf=-((sin(sqrt(s^2+t^2)))^2-0.5)/(1+0.001*(s^2+t^2))^2+0.5;g=[s+44-st+44-t];r=rand(1,6);m=-4+(4-(-4))*r;X=reshape(m,2,3)[
6、x,maxf,trace_value,trace_meanvalue]=Fuhexing(f,g,X,1.3,0.7,1,0.7,[st]);xmaxf[tvx,tvy]=size(trace_value);fxx=[1:tvy-1];fyy=ones(1,tvy-1);fyy=maxf*fyy;plot(fxx,trace_value(1,2:tvy),'green',fxx,trace_meanvalue(1,2:tvy),'blue',fxx,fyy,'red')legend('最大值','平均值','終值')gridfunction[x,maxf,
7、trace_value,trace_meanvalue]=Fuhexing(f,g,X,alpha,sita,gama,beta,var,eps)%f目標(biāo)函數(shù)%g約束函數(shù)%X初始復(fù)合形%alpha反射系數(shù)%sita壓縮系數(shù)%gama擴(kuò)展系數(shù)%beta收縮系數(shù)%var自變量向量%eps精度%x目標(biāo)函數(shù)取最小值時的自變量%minf目標(biāo)函數(shù)的最小值trace_value=[0];%用于記錄最大值的軌跡trace_meanvalue=[0];%用于記錄平均值的軌跡N=size(X);n=N(2);%n為復(fù)合形的頂點(diǎn)個數(shù)FX=zeros(1,n);%用于存放復(fù)合形的
8、函數(shù)值ifnargin==8eps=1.0e-6;endN=siz