非線性規(guī)劃問題_第1頁
非線性規(guī)劃問題_第2頁
非線性規(guī)劃問題_第3頁
非線性規(guī)劃問題_第4頁
非線性規(guī)劃問題_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、5.3 非線性規(guī)劃問題單變量函數(shù)求最小值的標(biāo)準(zhǔn)形式為minxf(x) sub.to x1<x<x2在MATLAB5.x中使用fmin函數(shù)求其最小值。函數(shù) fminbnd格式 x = fminbnd(fun,x1,x2) %返回自變量x在區(qū)間x1<x<x2上函數(shù)fun取最小值時(shí)x值,fun為目標(biāo)函數(shù)的表達(dá)式字符串或MATLAB自定義函數(shù)的函數(shù)柄。x = fminbnd(fun,x1,x2,options) % options為指定優(yōu)化參數(shù)選項(xiàng)x,fval = fminbnd() % fval為目標(biāo)函數(shù)的最小值x,fval,exitflag = fminbnd() %xit

2、flag為終止迭代的條件x,fval,exitflag,output = fminbnd() % output為優(yōu)化信息說明 若參數(shù)exitflag>0,表示函數(shù)收斂于x,若exitflag=0,表示超過函數(shù)估計(jì)值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于x;若參數(shù)output=iterations表示迭代次數(shù),output=funccount表示函數(shù)賦值次數(shù),output=algorithm表示所使用的算法。 例5-2 計(jì)算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值。x3+cosx+xlogxf(x)= ex解:>> x,fval,exitflag,output=

3、fminbnd('(x3+cos(x)+x*log(x)/exp(x)',0,1)x =0.5223fval =0.3974exitflag =output =iterations: 9funcCount: 9algorithm: 'golden section search, parabolic interpolation'例5-3 在0,5上求下面函數(shù)的最小值f(x)=(x3)31解:先自定義函數(shù):在MATLAB編輯器中建立M文件為:function f = myfun(x)f = (x-3).2 - 1;保存為myfun.m,然后在命令窗口鍵入命令:>

4、;> x=fminbnd(myfun,0,5)則結(jié)果顯示為:x =3多元函數(shù)最小值的標(biāo)準(zhǔn)形式為minxf(x)其中:x為向量,如x=x1,x2,L,xn在MATLAB5.x中使用fmins求其最小值。命令 利用函數(shù)fminsearch求無約束多元函數(shù)最小值函數(shù) fminsearch格式 x = fminsearch(fun,x0) %x0為初始點(diǎn),fun為目標(biāo)函數(shù)的表達(dá)式字符串或MATLAB自定義函數(shù)的函數(shù)柄。x = fminsearch(fun,x0,options) % options查optimsetx,fval = fminsearch() %最優(yōu)點(diǎn)的函數(shù)值x,fval,exit

5、flag = fminsearch() % exitflag與單變量情形一致x,fval,exitflag,output = fminsearch() %output與單變量情形一致注意:fminsearch采用了Nelder-Mead型簡(jiǎn)單搜尋法。32例5-4 求y=2x1+4x1x3210x1x2+x2的最小值點(diǎn)解:>>X=fminsearch('2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2', 0,0)結(jié)果為X =1.0016 0.8335或在MATLAB編輯器中建立函數(shù)文件function f=myfun(x)f=2*x(1

6、)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存為myfun.m,在命令窗口鍵入>> X=fminsearch ('myfun', 0,0) 或 >> X=fminsearch(myfun, 0,0)結(jié)果為:X =1.0016 0.8335命令 利用函數(shù)fminunc求多變量無約束函數(shù)最小值函數(shù) fminunc格式 x = fminunc(fun,x0) %返回給定初始點(diǎn)x0的最小函數(shù)值點(diǎn)x = fminunc(fun,x0,options) % options為指定優(yōu)化參數(shù)x,fval = fminunc() %fval最優(yōu)點(diǎn)

7、x處的函數(shù)值x,fval,exitflag = fminunc() % exitflag為終止迭代的條件,與上同。x,fval,exitflag,output = fminunc() %output為輸出優(yōu)化信息x,fval,exitflag,output,grad = fminunc() % grad為函數(shù)在解x處的梯度值x,fval,exitflag,output,grad,hessian = fminunc() %目標(biāo)函數(shù)在解x處的海賽(Hessian)值注意:當(dāng)函數(shù)的階數(shù)大于2時(shí),使用fminunc比fminsearch更有效,但當(dāng)所選函數(shù)高度不連續(xù)時(shí),使用fminsearch效果較好

8、。2例5-5 求f(x)=3x1+2x1x2+x22的最小值。>> fun='3*x(1)2+2*x(1)*x(2)+x(2)2'>> x0=1 1;>> x,fval,exitflag,output,grad,hessian=fminunc(fun,x0)結(jié)果為:x =1.0e-008 *-0.7591 0.2665fval =1.3953e-016exitflag =1output =iterations: 3funcCount: 16stepsize: 1.2353firstorderopt: 1.6772e-007algorithm:

9、 'medium-scale: Quasi-Newton line search'grad =1.0e-006 *-0.16770.0114hessian =6.0000 2.00002.0000 2.0000或用下面方法:>> fun=inline('3*x(1)2+2*x(1)*x(2)+x(2)2')fun =Inline function:fun(x) = 3*x(1)2+2*x(1)*x(2)+x(2)2>> x0=1 1;>> x=fminunc(fun,x0)x =1.0e-008 *-0.7591 0.2665

10、非線性有約束的多元函數(shù)的標(biāo)準(zhǔn)形式為:minf(x) xsub.to C(x)0Ceq(x)=0AxbAeqx=beqlbxub其中:x、b、beq、lb、ub是向量,A、Aeq為矩陣,C(x)、Ceq(x)是返回向量的函數(shù),f(x)為目標(biāo)函數(shù),f(x)、C(x)、Ceq(x)可以是非線性函數(shù)。在MATLAB5.x中,它的求解由函數(shù)constr實(shí)現(xiàn)。函數(shù) fmincon格式 x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x = fmincon(fun,x0,A,

11、b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fmincon()x,fval,exitflag = fmincon()x,fval,exitflag,output = fmincon()x,fval,exitflag,output,lambda = fmincon()x,fval,exitflag,output,lambda,grad = fmincon()x,fval,exitflag,output,lambda,grad,hessian = fmincon()參數(shù)說

12、明:fun為目標(biāo)函數(shù),它可用前面的方法定義;x0為初始值;A、b滿足線性不等式約束Axb,若沒有不等式約束,則取A= ,b= ;Aeq、beq滿足等式約束Aeqx=beq,若沒有,則取Aeq= ,beq= ;lb、ub滿足lbxub,若沒有界,可設(shè)lb= ,ub= ;nonlcon的作用是通過接受的向量x來計(jì)算非線性不等約束C(x)0和等式約束Ceq(x)=0分別在x處的估計(jì)C和Ceq,通過指定函數(shù)柄來使用,如:>>x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非線性約束函數(shù),并保存為mycon.m:function C,Ceq

13、= mycon(x)C = % 計(jì)算x處的非線性不等約束C(x)0的函數(shù)值。Ceq = % 計(jì)算x處的非線性等式約束Ceq(x)=0的函數(shù)值。 lambda是Lagrange乘子,它體現(xiàn)哪一個(gè)約束有效。output輸出優(yōu)化信息;grad表示目標(biāo)函數(shù)在x處的梯度;hessian表示目標(biāo)函數(shù)在x處的Hessiab值。例5-6 求下面問題在初始點(diǎn)(0,1)處的最優(yōu)解2min x1+x22x1x22x15x2sub.to (x11)2+x202x13x2+60解:約束條件的標(biāo)準(zhǔn)形式為sub.to (x11)2x202x1+3x26先在MATLAB編輯器中建立非線性約束函數(shù)文件:function c,

14、ceq=mycon (x)c=(x(1)-1)2-x(2);ceq= ; %無等式約束然后,在命令窗口鍵入如下命令或建立M文件:>>fun='x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2)' %目標(biāo)函數(shù)>>x0=0 1;>>A=-2 3; %線性不等式約束>>b=6;>>Aeq= ; %無線性等式約束>>beq= ;>>lb= ; %x沒有下、上界>>ub= ;>>x,fval,exitflag,output,lambda,grad,hessian

15、=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)則結(jié)果為x =3 4fval =-13exitflag = %解收斂1output =iterations: 2funcCount: 9stepsize: 1algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'firstorderopt: cgiterations: lambda =lower: 2x1 double %x下界有效情況,通過lambda.lower可查看。 upper: 2x1 double %x上界有效情況,為0表示約束

16、無效。eqlin: 0x1 double %線性等式約束有效情況,不為0表示約束有效。 eqnonlin: 0x1 double %非線性等式約束有效情況。ineqlin: 2.5081e-008 %線性不等式約束有效情況。ineqnonlin: 6.1938e-008 %非線性不等式約束有效情況。grad = %目標(biāo)函數(shù)在最小值點(diǎn)的梯度1.0e-006 *-0.1776hessian = %目標(biāo)函數(shù)在最小值點(diǎn)的Hessian值1.0000 -0.0000-0.0000 1.0000例5-7 求下面問題在初始點(diǎn)x=(10, 10, 10)處的最優(yōu)解。Min f(x)=x1x2x3Sub.to

17、0x1+2x2+2x372解:約束條件的標(biāo)準(zhǔn)形式為sub.to x12x22x30 x1+2x2+2x372>> fun= '-x(1)*x(2)*x(3)'>> x0=10,10,10;>> A=-1 -2 -2;1 2 2;>> b=0;72;>> x,fval=fmincon(fun,x0,A,b)結(jié)果為:x =24.0000 12.0000 12.0000fval =-3456二次規(guī)劃問題(quadratic programming)的標(biāo)準(zhǔn)形式為:minxHx+fx sub.to AxbAeqx=beqlbxu

18、b其中,H、A、Aeq為矩陣,f、b、beq、lb、ub、x為向量其它形式的二次規(guī)劃問題都可轉(zhuǎn)化為標(biāo)準(zhǔn)形式。函數(shù) quadprog格式 x = quadprog(H,f,A,b) %其中H,f,A,b為標(biāo)準(zhǔn)形中的參數(shù),x為目標(biāo)函數(shù)的最小值。x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq滿足等約束條件Aeqx=beq。x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分別為解x的下界與上界。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0為設(shè)置的初值x = quadprog(H,f,A,b,Ae

19、q,beq,lb,ub,x0,options) % options為指定的優(yōu)化參數(shù)x,fval = quadprog() %fval為目標(biāo)函數(shù)最優(yōu)值x,fval,exitflag = quadprog() % exitflag與線性規(guī)劃中參數(shù)意義相同x,fval,exitflag,output = quadprog() % output與線性規(guī)劃中參數(shù)意義相同x,fval,exitflag,output,lambda = quadprog() % lambda與線性規(guī)劃中參數(shù)意義相同例5-8 求解下面二次規(guī)劃問題minsub.to2f(x)=x1+x22x1x22x16x2 5x1+x22x1

20、+2x222x1+x230x1,0x2 解:f(x)=xHx+fx 112x1x,則H=f=6x 122在MATLAB中實(shí)現(xiàn)如下:>>H = 1 -1; -1 2 ;>>f = -2; -6;>>A = 1 1; -1 2; 2 1;>>b = 2; 2; 3;>>lb = zeros(2,1);>>x,fval,exitflag,output,lambda = quadprog(H,f,A,b, , ,lb) 結(jié)果為:x = %最優(yōu)解0.66671.3333fval = %最優(yōu)值-8.2222exitflag = %收斂1output =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論