資源描述:
《Matlab經(jīng)典優(yōu)化函數(shù)詳細(xì)介紹.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Matlab經(jīng)典優(yōu)化函數(shù)詳細(xì)介紹----------------Matlab優(yōu)化工具箱簡介5.1線性優(yōu)化線性規(guī)劃問題是目標(biāo)函數(shù)和約束條件均為線性函數(shù)的問題,MATLAB7.0解決的線性規(guī)劃問題的標(biāo)準(zhǔn)形式為minsub.to:其中f、x、b、beq、lb、ub為向量,A、Aeq為矩陣.其它形式的線性規(guī)劃問題都可經(jīng)過適當(dāng)變換化為此標(biāo)準(zhǔn)形式.在MATLAB5.x以上版中,線性規(guī)劃問題LinearProgramming已用函數(shù)linprog取代了MATLAB5.x版中的lp函數(shù).當(dāng)然,由于版本的向下兼容性,一般說來,低版本中的函數(shù)在7.0版中仍可
2、使用.函數(shù)linprog格式x=linprog(f,A,b)%求minf'*xsub.to線性規(guī)劃的最優(yōu)解.x=linprog(f,A,b,Aeq,beq)%等式約束,若沒有不等式約束,則A=[],b=[].x=linprog(f,A,b,Aeq,beq,lb,ub).%指定x的范圍,若沒有等式約束,則Aeq=[],beq=[].x=linprog(f,A,b,Aeq,beq,lb,ub,x0)%設(shè)置初值x0.x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options為指定的優(yōu)化參數(shù).[x,fval
3、]=linprog(…)%返回目標(biāo)函數(shù)最優(yōu)值,即fval=f'*x.[x,lambda,exitflag]=linprog(…)%lambda為解x的Lagrange乘子.[x,lambda,fval,exitflag]=linprog(…)%exitflag為終止迭代的錯誤條件.[x,fval,lambda,exitflag,output]=linprog(…)%output為關(guān)于優(yōu)化的一些信息.說明:若exitflag>0表示函數(shù)收斂于解x,exitflag=0表示超過函數(shù)估值或迭代的最大次數(shù),exitflag<0表示函數(shù)不收斂于解x
4、;若lambda=lower表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式約束,lambda=eqlin表示等式約束,lambda中的非0元素表示對應(yīng)的約束是有效約束;output=iterations表示迭代次數(shù),output=algorithm表示使用的運(yùn)算規(guī)則,output=cgiterations表示PCG迭代次數(shù).MATLAB求解優(yōu)化問題的主要函數(shù)類型模型基本函數(shù)名一元函數(shù)極小MinF(x)s.t.x15、nunc(‘F’,X0)X=fminsearch(‘F’,X0)線性規(guī)劃Mins.t.AX<=bX=linprog(c,A,b)二次規(guī)劃MinxTHx+cTxs.t.Ax<=bX=quadprog(H,c,A,b)約束極小(非線性規(guī)劃)MinF(X)s.t.G(X)<=0X=fmincon(‘FG’,X0)多目標(biāo)優(yōu)化問題Minrs.t.F(x)-wr<=goalX=fgoalattain(‘F’,x,goal,w)極小極大問題Minmax{Fi(x)}X{Fi(x)}s.t.G(x)<=0X=fminimax(‘FG’,x0)優(yōu)化函數(shù)的輸
6、入變量優(yōu)化函數(shù)的輸出變量5.2非線性優(yōu)化5.2.1有約束的一元函數(shù)的最小值單變量函數(shù)求最小值的標(biāo)準(zhǔn)形式為sub.to函數(shù)fminbnd格式x=fminbnd(fun,x1,x2)%返回自變量x在區(qū)間上函數(shù)fun取最小值時x值,fun為目標(biāo)函數(shù)的表達(dá)式字符串或MATLAB自定義函數(shù)的函數(shù)柄.x=fminbnd(fun,x1,x2,options)[x,fval]=fminbnd(…)[x,fval,exitflag]=fminbnd(…)[x,fval,exitflag,output]=fminbnd(…)例5-2計(jì)算下面函數(shù)在區(qū)間(0,1
7、)內(nèi)的最小值.解:>>[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)x=0.5223fval=0.3974exitflag=1output=iterations:9funcCount:9algorithm:'goldensectionsearch,parabolicinterpolation'例5-3在[0,5]上求下面函數(shù)的最小值解:先自定義函數(shù):在MATLAB編輯器中建立M文件為:functionf=myfun(x)f=(x-3).^2-1;保存
8、為myfun.m,然后在命令窗口鍵入命令:>>x=fminbnd(@myfun,0,5)則結(jié)果顯示為:x=35.2.2無約束多元函數(shù)最小值多元函數(shù)最小值的標(biāo)準(zhǔn)形式為其中:x為向量.命令利用函數(shù)