最優(yōu)化理論 附錄A MATLAB中最優(yōu)化工具箱_第1頁
最優(yōu)化理論 附錄A MATLAB中最優(yōu)化工具箱_第2頁
最優(yōu)化理論 附錄A MATLAB中最優(yōu)化工具箱_第3頁
最優(yōu)化理論 附錄A MATLAB中最優(yōu)化工具箱_第4頁
最優(yōu)化理論 附錄A MATLAB中最優(yōu)化工具箱_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

附錄A MATLAB中優(yōu)化工具箱Matlab的優(yōu)化工具箱提供了若干可以求解線性規(guī)劃、非線性規(guī)劃和多目標(biāo)規(guī)劃等最優(yōu).A優(yōu)化工具箱中函數(shù)函 數(shù)描 述\fsolve非線性方程求解fzero標(biāo)量非線性方程求解lsqlin有約束線性最小二乘lsqcurvefit非線性曲線擬合lsqnonlin非線性最小二乘lsqnonneg非負(fù)線性最小二乘fgoalattain多目標(biāo)達(dá)到問題求解fminbndfmincon約束最優(yōu)化問題求解fminimax極大極小化問題求解fminsearch,fminunc無約束最優(yōu)化問題求解fseminf半無限規(guī)劃問題求解linprog線性規(guī)劃問題求解quadprog二次規(guī)劃問題求解f(x)極大化,可以通過極小化f(xci(x0(iI,這一點(diǎn)同講義的要求正好相反.函數(shù)的句柄,在調(diào)用上述優(yōu)化函數(shù)時(shí),其中的目標(biāo)函數(shù)可以通過句柄調(diào)用.§A.1優(yōu)化參數(shù)設(shè)置在優(yōu)化問題求解時(shí),人們常常需要算法對(duì)容許誤差、迭代過程顯示等進(jìn)行針對(duì)性設(shè)置,向量來對(duì)優(yōu)化函數(shù)進(jìn)行參數(shù)設(shè)置,options18個(gè)元素.目前optoptimsetoptimget代替.§A.1.1optimget函數(shù)options優(yōu)化參數(shù),其調(diào)用格式為:val=optimget(options,'param')val=optimget(options,'param',default)=')options中指定的參數(shù)的值,只需要用參數(shù)開頭的字母來定義參數(shù)就行了.val=optimget(options,'param',default)若options結(jié)構(gòu)參數(shù)中沒有定義指定參數(shù),則返回缺省值.Options的參數(shù)描述(OPTIMSETPARAMETERS):DrivativeCheck-Compareusersuppliedderivatives(gradientsorJacobian)tofinite-differencingderivatives [on|{off}]Diagnostics-Printdiagnosticinformationaboutthefunctiontobeminimizedorsolved[on|{off}]DiffMaxChange-Maximumchangeinvariablesforfinitedifferencegradients[positivescalar |{1e-1}]DiffMinChange-Minimumchangeinvariablesforfinitedifferencegradients[positivescalar |{1e-8}]Display-Levelofdisplay[off|iter|notify|final]GoalsExactAchieve-Numberofgoalstoachieveexactly(donotover-orunder-achieve)[positivescalarinteger|{0}]GradConstr-Gradientsforthenonlinearconstraintsdefinedbyuser[on|{off}]GradObj-Gradient(s)fortheobjectivefunction(s)definedbyuser[on|{off}]Hessian-Hessianfortheobjectivefunctiondefinedbyuser [on|{off}]HessMult-Hessianmultiplyfunctiondefinedbyuser[function|{[]}]HessPattern-SparsitypatternoftheHessianforfinite-differencing[sparsematrix]HessUpdate-Quasi-Newtonupdatingscheme[{bfgs}|dfp|gillmurray|steepdesc]Jacobian-Jacobianfortheobjectivefunctiondefinedbyuser[on|{off}]JacobMult-Jacobianmultiplyfunctiondefinedbyuser[function|{[]}]JacobPattern-SparsitypatternoftheJacobianforfinite-differencing[sparsematrix]LargeScale-Uselarge-scalealgorithmifpossible[{on}|off]LevenbergMarquardt-ChoosesLevenberg-MarquardtoverGauss-Newtonalgorithm[on|off]LineSearchType-Linesearchalgorithmchoice[cubicpoly|{quadcubic}]MaxFunEvals-Maximumnumberoffunctionevaluationsallowed[positiveinteger]MaxIter-Maximumnumberofiterationsallowed[positiveinteger]MaxPCGIter-MaximumnumberofPCGiterationsallowed[positiveinteger]MeritFunction-Usegoalattainment/minimaxmeritfunction[{multiobj}|singleobj]MinAbsMax-NumberofF(x)tominimizetheworstcaseabsolutevalues[positivescalarinteger|{0}]PrecondBandWidth-UpperbandwidthofpreconditionerforPCG[positiveinteger|Inf|{0}]TolCon-Terminationtoleranceontheconstraintviolation[positivescalar]TolFun-Terminationtoleranceonthefunctionvalue[positivescalar]TolPCG-TerminationtoleranceonthePCGiteration[positivescalar|{0.1}]TolX-TerminationtoleranceonX[positivescalar]TypicalX-TypicalXvalues[vector]例如val=optimget(options,'Display')Displayval.§A.1.2optimset函數(shù)optimset函數(shù)創(chuàng)建或編輯優(yōu)化選項(xiàng)參數(shù).其調(diào)用格式為options=optimset('param1',value1,'param2',value2,...)optimsetoptions=optimsetoptions=optimset(optimfun)options=optimset(oldopts,'param1',value1,...)options=optimset(oldopts,newopts)=options的優(yōu)化選項(xiàng)參數(shù),其中指定的參數(shù)具有指定值.所有未指定的參數(shù)都設(shè)置為空矩陣[](將參數(shù)設(shè)置為[]options傳遞給優(yōu)化函數(shù)時(shí)給參數(shù)賦缺省值).賦值時(shí)只要輸入?yún)?shù)前面的字母就行了.optimset函數(shù)沒有輸入輸出變量時(shí),將顯示一張完整的帶有有效值的參數(shù)列表.options=optimset(withnoinputarguments)options,其中所有的元素被設(shè)置為[].options=optimset(optimfun)創(chuàng)建一個(gè)含有所有參數(shù)名和與優(yōu)化函數(shù)optimfun相關(guān)的缺省值的選項(xiàng)結(jié)構(gòu)options.=oldopts改參數(shù).=optimset(oldopts,newopts)oldoptsnewopts進(jìn)行合并.newopts參數(shù)中的所有元素將覆蓋oldopts參數(shù)中的所有對(duì)應(yīng)元素.例如,options=optimset('Display','iter','TolFun',1e-8)optnew=optimset(options,'TolX',1e-4)optnew參數(shù)中;options=optimset('fminbnd')fminbnd函數(shù)相關(guān)的缺省值;optimset('fminbnd')函數(shù)的缺省值.§A.2一元函數(shù)極小化(一維搜索)minf(x)s.t.x1xx2xR的最優(yōu)解.fminbnd可以實(shí)現(xiàn)這一目標(biāo).Fminbnd的調(diào)用格式為x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)x=fminbnd(fun,x1,x2,options,P1,P2,...)[x,fval]=fminbnd(...)[x,fval,exitflag]=fminbnd(...)[x,fval,exitflag,output]=fminbnd(...)=返回區(qū)間[x1,x2]funx.=options參數(shù)指定的優(yōu)化參數(shù)再進(jìn)行極小化.=P1,P2等,fun.如果沒有設(shè)置optionsoptions=[].]=fminbnd(...)x處目標(biāo)函數(shù)的值.=fminbnd(...)exitflagfminbnd函數(shù)的退出條件.[x,fval,exitflag,output]=fminbnd(...)返回包含優(yōu)化信息的結(jié)構(gòu)輸出.其中參數(shù)描述:fun函數(shù)指定為命令行,如x=fminbnd(inline('sin(x*x)'),x0)同樣,fun參數(shù)可以是一個(gè)包含函數(shù)名的字符串.對(duì)應(yīng)的函數(shù)可以是M文件、內(nèi)部MEX文件.fun='myfun',則x=fminbnd(@myfun,x0)Mmyfun.m必須有下面的形式:functionf=myfun(x)f=... x處的函數(shù)值..optimset函數(shù)設(shè)置或改變這些參數(shù)的值.options參數(shù)有以下幾個(gè)選項(xiàng):Display–顯示的選項(xiàng).選擇'off',不顯示輸出;選擇'iter',顯示每一步迭代過程;選擇'final',顯示最終結(jié)果.MaxFunEvals–函數(shù)評(píng)價(jià)的極大允許次數(shù).MaxIter允許迭代的最大次數(shù).TolX–x處的容許誤差.exitflag:描述退出條件:>0 x處.0 表示已經(jīng)達(dá)到函數(shù)評(píng)價(jià)或迭代的極大次數(shù).<0 表示目標(biāo)函數(shù)不收斂.output:該參數(shù)包含下列優(yōu)化信息:output.iterations–迭代次數(shù).output.algorithm–所采用的算法.output.funcCount–函數(shù)評(píng)價(jià)次數(shù).fminbnd是一個(gè)M文件.Matlab法,二次和三次混合插值法以及黃金分割法.注()mibd(),fminbnd函數(shù)的收斂速度常常很慢.此時(shí),fmincon函數(shù)的計(jì)算速度更快,計(jì)算精度更高.§A.3無約束最優(yōu)化問題minf(x)xRn的最優(yōu)解.fminunc,fminsearch等.§A.3.1fminunc函數(shù)fminunc函數(shù)的調(diào)用格式為:x=fminunc(fun,x0)x=fminunc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2,...)[x,fval]=fminunc(...)[x,fval,exitflag]=fminunc(...)[x,fval,exitflag,output]=fminunc(...)[x,fval,exitflag,output,grad]=fminunc(...)[x,fval,exitflag,output,grad,hessian]=fminunc(...)=x0funx.=options參數(shù)中指定的優(yōu)化參數(shù)進(jìn)行極小化.=P1,P2funoptoptions參數(shù)的缺省值.[x,fval]=fminunc(...)將解xfval參數(shù)中.=fminunc(...)exitflag值,描述函數(shù)的輸出條件.[x,fval,exitflag,output]=fminunc(...)返回包含優(yōu)化信息的結(jié)構(gòu)輸出.[x,fval,exitflag,output,grad]=fminunc(...)將解x處fun函數(shù)的梯度值返回到grad參數(shù)中.[x,fval,exitflag,output,grad,hessian]=fminunc(...)xHessian矩陣信息hessian參數(shù)中.其中參數(shù)描述:.funoptions.GradObj設(shè)為'on'(用下式設(shè)定),options=optimset('GradObj','on')g到第二個(gè)輸出變量中去.注意,當(dāng)被調(diào)用(如算法只需要目標(biāo)函數(shù)的值而不需要其梯度值時(shí)nagot.function[f,g]=myfun(x)f %x處得函數(shù)值.ifnargout1 fun函數(shù)并要求有兩個(gè)輸出變量.g %計(jì)算x處的梯度值.endoptions.Hessian設(shè)為'on',即,optionsoptimset('Hessian','on')funx處的Hessian對(duì)稱矩陣H到第三個(gè)輸出變量中去.注意,fun函數(shù)只需要一個(gè)或兩個(gè)輸出變量時(shí)(fgHesan矩陣H時(shí)nagoutHessian矩陣function[f,g,H]=myfun(x)f %x處得函數(shù)值.ifnargout>1 求有兩個(gè)輸出變量.g=... %計(jì)算x處的梯度值.ifnargout>2H %計(jì)算xHessian矩陣.end.optimset函數(shù)設(shè)置或改變這些參數(shù).其中有的參型問題.首先描述適用于大型問題的選項(xiàng).這僅僅是一個(gè)參考,因?yàn)槭褂么笮蛦栴}算法有一些條件.fminunc函數(shù)來說,必須提供梯度信息.LargeScale–當(dāng)設(shè)為'on'時(shí)使用大型算法,若設(shè)為'off'則使用中型問題的算法.Diagnostics–打印極小化函數(shù)的診斷信息.Display–顯示水平.選擇'off',不顯示輸出;選擇'iter',顯示每一步迭代過程的輸出;選擇'final',顯示最終結(jié)果.GradObj–用戶定義的目標(biāo)函數(shù)的梯度.于中型問題則是可選項(xiàng).MaxFunEvals–函數(shù)評(píng)價(jià)的極大次數(shù).MaxIter–極大允許迭代次數(shù).TolFun–函數(shù)值的終止容限.TolXx處的終止容限.只用于大型算法的參數(shù):Hessian–用戶定義的目標(biāo)函數(shù)的Hessian矩陣.HessPattern–用于有限差分的Hessian矩陣的稀疏形式.若不方便求fun函HessianHH的稀疏結(jié).HessPattern設(shè)為密集矩陣,在每一次迭代過程中,都將進(jìn)行密集矩陣的有限差分近似(這是缺省設(shè)置).這將非常麻煩,所以花一些力氣得到Hessian矩陣的稀疏結(jié)構(gòu)還是值得的.MaxPCGIterPCG迭代的極大次數(shù).PrecondBandWidth–PCG前處理的上帶寬,缺省時(shí)為零.對(duì)于有些問題,增加帶寬可以減少迭代次數(shù).TolPCGPCG迭代的終止容限.TypicalX–典型x值.只用于中型算法的參數(shù):DerivativeCheck–對(duì)用戶提供的導(dǎo)數(shù)和有限差分求出的導(dǎo)數(shù)進(jìn)行對(duì)比.DiffMaxChange–變量有限差分梯度的極大變化.DiffMinChange–變量有限差分梯度的最小變化.LineSearchType–一維搜索算法的選擇.fminbndoutput:該參數(shù)包含下列優(yōu)化信息:output.iterations–迭代次數(shù).output.algorithm–所采用的算法.output.funcCount–函數(shù)評(píng)價(jià)次數(shù).output.cgiterations–PCG迭代次數(shù)(只適用于大型規(guī)劃問題).output.stepsize–最終步長(zhǎng)的大?。ㄖ挥糜谥行蛦栴}).–x處梯度的范數(shù).注對(duì)于求解平方和的問題,fminunclsqnonlin佳.options.GradObj'on'來提供梯度信息,否則將給出警告信息.目標(biāo)函數(shù)必須是連續(xù)的,fminuncfminunc函數(shù)只對(duì)實(shí)數(shù)進(jìn)行優(yōu)化,即xf(x)必須返回實(shí)數(shù).當(dāng)x為復(fù)數(shù)時(shí),必須將它分解為實(shí)部和虛部.在使用大型算法時(shí),用戶必須在fun函數(shù)中提供梯度(options參數(shù)中GradObj屬性必須設(shè)置為'on').funoptionsDerivativeCheck用于大型算法以比較解析梯度和有限差分梯度.通過將options參數(shù)的MaxIter屬性設(shè)置0來用中型方法核對(duì)導(dǎo)數(shù).然后重新用大型方法求解問題.fminunc函數(shù)的算法實(shí)現(xiàn)方法:大型優(yōu)化算法fun該算法是基于內(nèi)部映射牛頓法的子空間信賴域法.PCG法求解大型線性系統(tǒng)得到的近似解.中型優(yōu)化算法options.LargeScale設(shè)置為'off'.該算法采用的BFGSBFGSHesan矩陣.可通過將HeUpdaedpDP公式來求得Hesan.Hessian矩陣.但一般不建議使用最速下降法.三次混合插值法.將options.LineSearchType設(shè)置為'cubicpoly'.第二種方法需要的目標(biāo)函數(shù)計(jì)算次數(shù)更少,但梯度的計(jì)算次數(shù)更多.這樣,如果提供了梯度信息,或者能較容易地算得,則三次插值法是更佳的選擇.§A.3.2fminsearch函數(shù)fminsearch函數(shù)的調(diào)用格式為:x=fminsearch(fun,x0)x=fminsearch(fun,x0,options)x=fminsearch(fun,x0,options,P1,P2,...)[x,fval]=fminsearch(...)[x,fval,exitflag]=fminsearch(...)[x,fval,exitflag,output]=fminsearch(...)x=fminsearch(fun,x0) x0funx.=options參數(shù)指定的優(yōu)化參數(shù)進(jìn)行極小化.=P1,P2fun,將options參數(shù)的缺省值.]=fminsearch(...)xfval參數(shù)中.=fminsearch(...)exitflag值,描述函數(shù)的退出條件.]=fminsearch(...)output.fminsearch函數(shù)是使用單純形法進(jìn)行計(jì)算的.§A.4非線性方程組和最小二乘問題§A.4.1非線性方程(組)求解(組)的兩個(gè)函數(shù),fzerofsolve.(一)非線性方程求零點(diǎn)fzero函數(shù)是用來求解非線性方程的零點(diǎn),其調(diào)用格式為x=fzero(fun,x0)x=fzero(fun,x0,options)x=fzero(fun,x0,options,P1,P2,...)[x,fval]=fzero(...)[x,fval,exitflag]=fzero(...)[x,fval,exitflag,output]=fzero(...)=x0funxfun必須是一fzerox0Nx0是一個(gè)數(shù)時(shí),它相當(dāng)于初始點(diǎn).x0x0(1)x0(2)要構(gòu)成f(x0(1))f(x0(2))<0,不然出現(xiàn)錯(cuò)誤.注(1)調(diào)用fzero函數(shù)時(shí),使用初值區(qū)間(二元素的x0)x0快;(2)fzero命令給零點(diǎn)的定義是函數(shù)與x軸相交的點(diǎn).函數(shù)與x軸接觸但并沒有穿過xy=x^20處與xx以沒有發(fā)現(xiàn)零點(diǎn).對(duì)于沒有有效零點(diǎn)的函數(shù),fzeroInfNaN值.(二)非線性方程組的求解F(x)=0F(x)是向量值函數(shù).fsolve函數(shù)的調(diào)用格式為:x=fsolve(fun,x0)x=fsolve(fun,x0,options)x=fsolve(fun,x0,options,P1,P2,...)[x,fval]=fsolve(...)[x,fval,exitflag]=fsolve(...)[x,fval,exitflag,output]=fsolve(...)[x,fval,exitflag,output,jacobian]=fsolve(...)=funx0.=options結(jié)構(gòu)指定的參數(shù)進(jìn)行最小化.x=soeun,x0oponsP1P2,)提供其他變量如P1P2u.options=[].]=fsolve(...)x處目標(biāo)函數(shù)的值.=fsolve(...)exitflag參數(shù),描述退出條件.]=fsolve(...)返回包含優(yōu)化信息的輸出結(jié)構(gòu)output.[x,fval,exitflag,output,jacobian]=fsolve(...)返回解xfun函數(shù)的Jacobian矩陣.注(1)要求解的函數(shù)必須是連續(xù)的.當(dāng)成功收斂時(shí),fsolve函數(shù)只給出一個(gè)解.當(dāng)函數(shù)收斂于非零點(diǎn)時(shí),給出下面的信息:OptimizerisstuckataminimumthatisnotarootTryagainwithanewstartingguess此時(shí),重新給定初值并運(yùn)行fsolvefsolve函數(shù)只對(duì)實(shí)數(shù)變量有效.當(dāng)x為復(fù)數(shù)時(shí),必須將它分為實(shí)數(shù)部分和虛數(shù)部分.對(duì)于大型化問題,若在funJacobianoptions參數(shù)不能與大型算法同時(shí)使用來比較解析Jacobian矩陣和有限差分JacobianMaxIter設(shè)置為0函數(shù)求解非線性方程組.的算法是基于最小二乘法.§A.4.2線性與非線性最小二乘問題求解(一)約束線性最小二乘問題Matlib考慮的約束線性最小二乘問題的標(biāo)準(zhǔn)形式為minf(x)1||Cxd||22s.t.Axb,Aeqxbeq,lbxub.中,函數(shù)lsqlin可以求解上述問題. lsqlin的調(diào)用格式為:x=lsqlin(C,d,A,b)x=lsqlin(C,d,A,b,Aeq,beq)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)[x,resnorm]=lsqlin(...)[x,resnorm,residual]=lsqlin(...)[x,resnorm,residual,exitflag]=lsqlin(...)[x,resnorm,residual,exitflag,output]=lsqlin(...)[x,resnorm,residual,exitflag,output,lambda]=lsqlin(...)=Cx=d的最小二乘解.x=lsqlin(C,d,A,b,Aeq,beq)是有等式和不等式約束條件下,求方程Cx=d的最小二乘解.若沒有不等式約束,則設(shè)A=[],b=[].x=sqn,dA,bAe,beqb,ub)是在自變量xb和u束條件下,求方程Cx=d的最小二乘解.Aeq=[],beq=[].x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x0情況下,求解約束線性最小二乘問xlb=[],ub=[].x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) options為指定優(yōu)化參數(shù)[x,resnorm]=lsqlin(...) 即2-范數(shù).[x,resnorm,residual]=lsqlin(...) residual=C*x-d,即殘差.[x,resnorm,residual,exitflag]=lsqlin(...)exitflag同前[x,resnorm,residual,exitflag,output]=lsqlin(...) output表示輸出優(yōu)化信息[x,resnorm,residual,exitflag,output,lambda]=lsqlin(...) lambda為解xLagrange乘子(二)非線性數(shù)據(jù)(曲線)擬合xdataydata,并且知道輸入與輸出的函數(shù)ydata=F(x,xdata),但不知道系數(shù)向量x.進(jìn)行曲線擬合,求解無約束最優(yōu)化問題mmin(f(x,xdata)ydata)2mxRn

i ii1x.中,使用函數(shù)lsqcurvefit解決這類問題. lsqcurvefit的調(diào)用格式為x=lsqcurvefit(fun,x0,xdata,ydata)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)[x,resnorm]=lsqcurvefit(…)[x,resnorm,residual]=lsqcurvefit(…)[x,resnorm,residual,exitflag]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcurvefit(…)參數(shù)說明:x0為初始解向量;ydata=F(x,xdata)的數(shù)據(jù);lb=[],ub=[];options為指定的優(yōu)化參數(shù);fun為擬合函數(shù);resnorm=sum((fun(x,xdata)-ydata).^2)x處殘差的平方和;x處的殘差;exitflag為終止迭代的條件;output為輸出的優(yōu)化信息;lambdaxLagrange乘子;jacobianxfunjacobian矩陣.(三)非線性最小二乘問題非線性最小二乘問題的標(biāo)準(zhǔn)形式為mminF2(x)mxRn

ii1Matlablsqnonlin解決這類問題,函數(shù)lsqnonlin的調(diào)用格式為x=lsqnonlin(fun,x0)x=lsqnonlin(fun,x0,lb,ub)x=lsqnonlin(fun,x0,lb,ub,options)[x,resnorm]=lsqnonlin(…)%resnorm=sum(fun(x).^2)[x,resnorm,residual]=lsqnonlin(…)[x,resnorm,residual,exitflag]=lsqnonlin(…)[x,resnorm,residual,exitflag,output]=lsqnonlin(…)[x,resnorm,residual,exitflag,output,lambda][x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(…)matlabhelp.(四)非負(fù)約束線性最小二乘問題非負(fù)約束線性最小二乘問題的標(biāo)準(zhǔn)形式為min||Cxd||2s.t.x0lsqnonneglsqnonneg的調(diào)用格式為x=lsqnonneg(C,d)x=lsqnonneg(C,d,x0)x=lsqnonneg(C,d,x0,options)[x,resnorm]=lsqnonneg(…)[x,resnorm,residual]=lsqnonneg(…)[x,resnorm,residual,exitflag]=lsqnonneg(…)[x,resnorm,residual,exitflag,output]=lsqnonneg(…)[x,resnorm,residual,exitflag,output,lambda]=lsqnonneg(…)matlabhelp.注當(dāng)問題為無約束線性最小二乘問題時(shí),使用MATLAB下的“\”運(yùn)算即可以解決.§A.5線性規(guī)劃問題Matlib考慮的線性規(guī)劃問題的標(biāo)準(zhǔn)形式為minfTxs.t.Axb,beq,lbxub.linprog可以求解上述問題.linprog的調(diào)用格式為:x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=linprog(...)[x,fval,exitflag]=linprog(...)[x,fval,exitflag,output]=linprog(...)[x,fval,exitflag,output,lambda]=linprog(...)matlabhelp.LIPSOL.linprogquadprog函數(shù)的算法一樣.linprog函數(shù)使用的是一種活動(dòng)集方法,是線性規(guī)劃中單純形法的變種.它通過求解另一個(gè)線性規(guī)劃問題來找到初始可行解.§A.6二次規(guī)劃問題Matlib考慮的二次規(guī)劃問題的標(biāo)準(zhǔn)形式為minfTx1xTHx2s.t.Axb,Aeqxbeq,lbxub.中,函數(shù)quadprog可以求解上述問題. 數(shù)quadprog的調(diào)用格式為:x=quadprog(H,f,A,b)x=quadprog(H,f,A,b,Aeq,beq)x=quadprog(H,f,A,b,Aeq,beq,lb,ub)x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=quadprog(...)[x,fval,exitflag]=quadprog(...)[x,fval,exitflag,output]=quadprog(...)[x,fval,exitflag,output,lambda]=quadprog(...)matlabhelp.注(1)quadprog解.AeqBeqlbub更好的數(shù)值解.若xquadprogInf(對(duì)負(fù)數(shù).對(duì)于大型優(yōu)化問題,若沒有提供初值x0,或x0不是嚴(yán)格可行,則quadprog函數(shù)會(huì)選擇一個(gè)新的初始可行點(diǎn).若為等式約束,且quadprog函數(shù)發(fā)現(xiàn)負(fù)曲度(negativecurvature),則優(yōu)化過程終止,exitflag的值等于-1.Matlab優(yōu)化工具箱中大型優(yōu)化算法是基于內(nèi)部映射牛頓法(interior-reflectiveNewtonmethod)的子空間信賴域法(subspacetrust-region).PCG.缺省算法為大型算法,或者,如果優(yōu)化問題中只有線性等式,而沒有上界和下界或線性不等式時(shí),缺省算法也是大型算法.quadprog劃問題來獲得初始可行解.§A.7約束最優(yōu)化問題Matlib考慮的約束最優(yōu)化問題的標(biāo)準(zhǔn)形式為minf(x)s.t.Axb,,c(x)0,ceq(x)0,lbxub.其中約束條件的前兩項(xiàng)是線性不等式和等式約束,第三第四項(xiàng)是非線性不等式和等式約束,第五項(xiàng)是自變量x的上下界.中,函數(shù)fmincon可以求解上述問題. 的調(diào)用格式為: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,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)[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(...)matlabhelp.c(x)<=0ceq(x)=0..MMEX文.xxc和非線性等式ceq.例如,若nonlcon='mycon'Mmycon.m具有下面的形式:function[c,ceq]=mycon(x)c=... %計(jì)算x處的非線性不等式.ceq=... %計(jì)算x處的非線性等式.options=optimset('GradConstr','on')則nonlcon函數(shù)必須在第三個(gè)和第四個(gè)輸出變量中返回c(x)GC和ceq(x)的梯度Gceq.當(dāng)被調(diào)用的nonlcon函數(shù)只需要兩個(gè)輸出變量(cceq的值,而不需GC和GCeq)nargoutGC和Gceq的值.function[c,ceq,GC,GCeq]=mycon(x)c=... %解x處的非線性不等式.ceq=... %解x處的非線性等式.ifnargout>2 %4個(gè)輸出變量.GC=... %不等式的梯度.GCeq=... %等式的梯度.endnonlconmc和長(zhǎng)度為n的xc(x)GCn*m的.ceqpceq(x)的梯Gceqn*pGceq(i,j)ceq(j)對(duì)x(i)的偏導(dǎo)數(shù).注funoptions.GradObjon').如果沒有梯度信息,則給出警告信息.fmincon函數(shù)允許g(x)為一近似梯度,但使用真正的梯度將使優(yōu)化過程更具穩(wěn)健性.當(dāng)對(duì)矩陣的二階導(dǎo)數(shù)(即Hessian矩陣)進(jìn)行計(jì)算以后,用該函數(shù)求解大型問題將更有效.但不需要求得真正的Hessian矩陣,如果能提供Hessian矩陣的稀疏結(jié)構(gòu)的信息(optionsHessPattern屬性fminconHessian矩陣的稀疏有限差分近似.若x0fmincon若x的某些元素沒有上界或下界,則fmincon函數(shù)更希望對(duì)應(yīng)的元素設(shè)置為Inf(I很小的負(fù)值.線性約束極小化課題中也有幾個(gè)問題需要注意:a)Aeq使計(jì)算費(fèi)時(shí).b)fmincon函數(shù)剔除Aeq中線性相關(guān)的行.此過程需要進(jìn)行反復(fù)的因子分解,因此,如果相關(guān)行很多的話,計(jì)算將是一件很費(fèi)時(shí)的事情.對(duì)于中型優(yōu)化問題:a)如果用Aeq和beq清楚地提供等式約束,將比用lb和ub獲得更好的數(shù)值解.b)在二次子問題中,若有等式約束并且因等式(dependentequalities)被發(fā)現(xiàn)和剔除的話,將在過程標(biāo)題中顯示'dependent'(當(dāng)output參數(shù)要求使用options.Display='iter').只有在等式連續(xù)的情況下,因等式才會(huì)被剔除.若等式系統(tǒng)不連續(xù),則子問題將不可行并在過程標(biāo)題中打印'infeasible'信息..缺省時(shí),若提供了函數(shù)的梯度信fmincon函數(shù)將選擇大型算法.中型優(yōu)化算法fmincon函數(shù)使用序列二次規(guī)劃法(SQP).二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣.§A.8多目標(biāo)規(guī)劃問題Matlib考慮的多目標(biāo)規(guī)劃問題的形式為mins.t.F(x)weightgoalAxb,Aeqxbeq,c(x)0,ceq(x)0,lbxub.xweightgoalbbeqlbub都是向量,A,Aeq是矩陣,F(xiàn)(xc(xceq(x)一般是非線性向量值函數(shù).x.中,函數(shù)fgoalattain可以求解上述問題. 的調(diào)用格式為:x=fgoalattain(fun,x0,goal,weight)x=fgoalattain(fun,x0,goal,weight,A,b)x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論