MATLAB_優(yōu)化工具箱介紹說課講解_第1頁
MATLAB_優(yōu)化工具箱介紹說課講解_第2頁
MATLAB_優(yōu)化工具箱介紹說課講解_第3頁
MATLAB_優(yōu)化工具箱介紹說課講解_第4頁
MATLAB_優(yōu)化工具箱介紹說課講解_第5頁
已閱讀5頁,還剩130頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。MATLAB_優(yōu)化工具箱介紹-MATLAB優(yōu)化工具箱介紹在生活和工作中,人們對于同一個問題往往會提出多個解決方案,并通過各方面的論證從中提取最佳方案。最優(yōu)化方法就是專門研究如何從多個方案中科學(xué)合理地提取出最佳方案的科學(xué)。由于優(yōu)化問題無所不在,目前最優(yōu)化方法的應(yīng)用和研究已經(jīng)深入到了生產(chǎn)和科研的各個領(lǐng)域,如土木工程、機(jī)械工程、化學(xué)工程、運(yùn)輸調(diào)度、生產(chǎn)控制、經(jīng)濟(jì)規(guī)劃、經(jīng)濟(jì)管理等,并取得了顯著的經(jīng)濟(jì)效益和社會效益。用最優(yōu)化方法解決最優(yōu)化問題的技術(shù)稱為最優(yōu)化技術(shù),它包含兩個方面的內(nèi)容:1)建立數(shù)學(xué)模型即用數(shù)學(xué)語言

2、來描述最優(yōu)化問題。模型中的數(shù)學(xué)關(guān)系式反映了最優(yōu)化問題所要達(dá)到的目標(biāo)和各種約束條件。2)數(shù)學(xué)求解數(shù)學(xué)模型建好以后,選擇合理的最優(yōu)化方法進(jìn)行求解。最優(yōu)化方法的發(fā)展很快,現(xiàn)在已經(jīng)包含有多個分支,如線性規(guī)劃、整數(shù)規(guī)劃、非線性規(guī)劃、動態(tài)規(guī)劃、多目標(biāo)規(guī)劃等。9.1概述利用Matlab的優(yōu)化工具箱,可以求解線性規(guī)劃、非線性規(guī)劃和多目標(biāo)規(guī)劃問題。具體而言,包括線性、非線性最小化,最大最小化,二次規(guī)劃,半無限問題,線性、非線性方程(組)的求解,線性、非線性的最小二乘問題。另外,該工具箱還提供了線性、非線性最小化,方程求解,曲線擬合,二次規(guī)劃等問題中大型課題的求解方法,為優(yōu)化方法在工程中的實(shí)際應(yīng)用提供了更方便快捷

3、的途徑。9.1.1優(yōu)化工具箱中的函數(shù)優(yōu)化工具箱中的函數(shù)包括下面幾類:1最小化函數(shù)表9-1最小化函數(shù)表函數(shù)描述fgoalattain多目標(biāo)達(dá)到問題fminbnd有邊界的標(biāo)量非線性最小化fmincon有約束的非線性最小化fminimax最大最小化fminsearch,fminunc無約束非線性最小化fseminf半無限問題linprog線性課題quadprog二次課題2方程求解函數(shù)表9-2方程求解函數(shù)表函數(shù)描述線性方程求解fsolve非線性方程求解fzero標(biāo)量非線性方程求解3最小二乘(曲線擬合)函數(shù)表9-3最小二乘函數(shù)表函數(shù)描述線性最小二乘lsqlin有約束線性最小二乘lsqcurvefit非線

4、性曲線擬合lsqnonlin非線性最小二乘lsqnonneg非負(fù)線性最小二乘4實(shí)用函數(shù)表9-4實(shí)用函數(shù)表函數(shù)描述optimset設(shè)置參數(shù)optimget5大型方法的演示函數(shù)表9-5大型方法的演示函數(shù)表函數(shù)描述circustent馬戲團(tuán)帳篷問題二次課題molecule用無約束非線性最小化進(jìn)行分子組成求解optdeblur用有邊界線性最小二乘法進(jìn)行圖形處理6中型方法的演示函數(shù)表9-6中型方法的演示函數(shù)表函數(shù)描述bandemo香蕉函數(shù)的最小化dfildemo過濾器設(shè)計的有限精度goaldemo目標(biāo)達(dá)到舉例optdemo演示過程菜單tutdemo教程演示9.1.3參數(shù)設(shè)置利用optimset函數(shù),可以

5、創(chuàng)建和編輯參數(shù)結(jié)構(gòu);利用optimget函數(shù),可以獲得options優(yōu)化參數(shù)。optimget函數(shù)功能:獲得options優(yōu)化參數(shù)。語法:val=optimget(options,param)val=optimget(options,param,default)描述:val=optimget(options,param)返回優(yōu)化參數(shù)options中指定的參數(shù)的值。只需要用參數(shù)開頭的字母來定義參數(shù)就行了。val=optimget(options,param,default)若options結(jié)構(gòu)參數(shù)中沒有定義指定參數(shù),則返回缺省值。注意,這種形式的函數(shù)主要用于其它優(yōu)化函數(shù)。舉例:1下面的命令行將顯

6、示優(yōu)化參數(shù)options返回到my_options結(jié)構(gòu)中:val=optimget(my_options,Display)2下面的命令行返回顯示優(yōu)化參數(shù)options到my_options結(jié)構(gòu)中(就象前面的例子一樣),但如果顯示參數(shù)沒有定義,則返回值final:optnew=optimget(my_options,Display,final);參見:optimsetoptimset函數(shù)功能:創(chuàng)建或編輯優(yōu)化選項參數(shù)結(jié)構(gòu)。語法:options=optimset(param1,value1,param2,value2,.)optimsetoptions=optimsetoptions=optimse

7、t(optimfun)options=optimset(oldopts,param1,value1,.)options=optimset(oldopts,newopts)描述:options=optimset(param1,value1,param2,value2,.)創(chuàng)建一個稱為options的優(yōu)化選項參數(shù),其中指定的參數(shù)具有指定值。所有未指定的參數(shù)都設(shè)置為空矩陣(將參數(shù)設(shè)置為表示當(dāng)options傳遞給優(yōu)化函數(shù)時給參數(shù)賦缺省值)。賦值時只要輸入?yún)?shù)前面的字母就行了。optimset函數(shù)沒有輸入輸出變量時,將顯示一張完整的帶有有效值的參數(shù)列表。options=optimset(withnoin

8、putarguments)創(chuàng)建一個選項結(jié)構(gòu)options,其中所有的元素被設(shè)置為。options=optimset(optimfun)創(chuàng)建一個含有所有參數(shù)名和與優(yōu)化函數(shù)optimfun相關(guān)的缺省值的選項結(jié)構(gòu)options。options=optimset(oldopts,param1,value1,.)創(chuàng)建一個oldopts的拷貝,用指定的數(shù)值修改參數(shù)。options=optimset(oldopts,newopts)將已經(jīng)存在的選項結(jié)構(gòu)oldopts與新的選項結(jié)構(gòu)newopts進(jìn)行合并。newopts參數(shù)中的所有元素將覆蓋oldopts參數(shù)中的所有對應(yīng)元素。舉例:1下面的語句創(chuàng)建一個稱為op

9、tions的優(yōu)化選項結(jié)構(gòu),其中顯示參數(shù)設(shè)為iter,TolFun參數(shù)設(shè)置為1e-8:options=optimset(Display,iter,TolFun,1e-8)2下面的語句創(chuàng)建一個稱為options的優(yōu)化結(jié)構(gòu)的拷貝,改變TolX參數(shù)的值,將新值保存到optnew參數(shù)中:optnew=optimset(options,TolX,1e-4);3下面的語句返回options優(yōu)化結(jié)構(gòu),其中包含所有的參數(shù)名和與fminbnd函數(shù)相關(guān)的缺省值:options=optimset(fminbnd)4若只希望看到fminbnd函數(shù)的缺省值,只需要簡單地鍵入下面的語句就行了:optimsetfminbnd

10、或者輸入下面的命令,其效果與上面的相同:optimset(fminbnd)參見:optimget9.1.4模型輸入時需要注意的問題使用優(yōu)化工具箱時,由于優(yōu)化函數(shù)要求目標(biāo)函數(shù)和約束條件滿足一定的格式,所以需要用戶在進(jìn)行模型輸入時注意以下幾個問題:1.目標(biāo)函數(shù)最小化優(yōu)化函數(shù)fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目標(biāo)函數(shù)最小化,如果優(yōu)化問題要求目標(biāo)函數(shù)最大化,可以通過使該目標(biāo)函數(shù)的負(fù)值最小化即-f(x)最小化來實(shí)現(xiàn)。近似地,對于quadprog函數(shù)提供-H和-f,對于linprog函數(shù)提供-f。2.約束非

11、正優(yōu)化工具箱要求非線性不等式約束的形式為Ci(x)0,通過對不等式取負(fù)可以達(dá)到使大于零的約束形式變?yōu)樾∮诹愕牟坏仁郊s束形式的目的,如Ci(x)0形式的約束等價于-Ci(x)0;Ci(x)b形式的約束等價于-Ci(x)+b0。3.避免使用全局變量9.1.5(函數(shù)句柄)函數(shù)MATLAB6.0中可以用函數(shù)進(jìn)行函數(shù)調(diào)用。函數(shù)返回指定MATLAB函數(shù)的句柄,其調(diào)用格式為:handle=function利用函數(shù)進(jìn)行函數(shù)調(diào)用有下面幾點(diǎn)好處:用句柄將一個函數(shù)傳遞給另一個函數(shù);減少定義函數(shù)的文件個數(shù);改進(jìn)重復(fù)操作;保證函數(shù)計算的可靠性。下面的例子為humps函數(shù)創(chuàng)建一個函數(shù)句柄,并將它指定為fhandle變量。

12、fhandle=humps;同樣傳遞句柄給另一個函數(shù),也將傳遞所有變量。本例將剛剛創(chuàng)建的函數(shù)句柄傳遞給fminbnd函數(shù),然后在區(qū)間0.3,1上進(jìn)行最小化。x=fminbnd(humps,0.3,1)x=0.63709.2最小化問題9.2.1單變量最小化9.2.1.1基本數(shù)學(xué)原理本節(jié)討論只有一個變量時的最小化問題,即一維搜索問題。該問題在某些情況下可以直接用于求解實(shí)際問題,但大多數(shù)情況下它是作為多變量最優(yōu)化方法的基礎(chǔ)在應(yīng)用,因?yàn)檫M(jìn)行多變量最優(yōu)化要用到一維搜索法。該問題的數(shù)學(xué)模型為:其中,x,x1,和x2為標(biāo)量,f(x)為函數(shù),返回標(biāo)量。該問題的搜索過程可用下式表達(dá):其中xk為本次迭代的值,d為

13、搜索方向,為搜索方向上的步長參數(shù)。所以一維搜索就是要利用本次迭代的信息來構(gòu)造下次迭代的條件。求解單變量最優(yōu)化問題的方法有很多種,根據(jù)目標(biāo)函數(shù)是否需要求導(dǎo),可以分為兩類,即直接法和間接法。直接法不需要對目標(biāo)函數(shù)進(jìn)行求導(dǎo),而間接法則需要用到目標(biāo)函數(shù)的導(dǎo)數(shù)。1直接法常用的一維直接法主要有消去法和近似法兩種。(1)消去法該法利用單峰函數(shù)具有的消去性質(zhì)進(jìn)行反復(fù)迭代,逐漸消去不包含極小點(diǎn)的區(qū)間,縮小搜索區(qū)間,直到搜索區(qū)間縮小到給定的允許精度為止。一種典型的消去法為黃金分割法(GoldenSectionSearch)。黃金分割法的基本思想是在單峰區(qū)間內(nèi)適當(dāng)插入兩點(diǎn),將區(qū)間分為三段,然后通過比較這兩點(diǎn)函數(shù)值的

14、大小來確定是刪去最左段還是最右段,或同時刪去左右兩段保留中間段。重復(fù)該過程使區(qū)間無限縮小。插入點(diǎn)的位置放在區(qū)間的黃金分割點(diǎn)及其對稱點(diǎn)上,所以該法稱為黃金分割法。該法的優(yōu)點(diǎn)是算法簡單,效率較高,穩(wěn)定性好。(2)多項式近似法該法用于目標(biāo)函數(shù)比較復(fù)雜的情況。此時尋找一個與它近似的函數(shù)代替目標(biāo)函數(shù),并用近似函數(shù)的極小點(diǎn)作為原函數(shù)極小點(diǎn)的近似。常用的近似函數(shù)為二次和三次多項式。二次內(nèi)插涉及到形如下式的二次函數(shù)數(shù)據(jù)擬合問題:其中步長極值為:然后只要利用三個梯度或函數(shù)方程組就可以確定系數(shù)a和b,從而可以確定*。得到該值以后,進(jìn)行搜索區(qū)間的收縮。在縮短的新區(qū)間中,重新安排三點(diǎn)求出下一次的近似極小點(diǎn)*,如此迭代

15、下去,直到滿足終止準(zhǔn)則為止。其迭代公式為:其中二次插值法的計算速度比黃金分割法的快,但是對于一些強(qiáng)烈扭曲或可能多峰的函數(shù),該法的收斂速度會變得很慢,甚至失敗。2間接法間接法需要計算目標(biāo)函數(shù)的導(dǎo)數(shù),優(yōu)點(diǎn)是計算速度很快。常見的間接法包括牛頓切線法、對分法、割線法和三次插值多項式近似法等。優(yōu)化工具箱中用得較多的是三次插值法。三次插值的基本思想與二次插值的一致,它是用四個已知點(diǎn)構(gòu)造一個三次多項式P3(x),用它逼近函數(shù)f(x),以P3(x)的極小點(diǎn)作為f(x)的近似極小點(diǎn)。一般講,三次插值法比二次插值法的收斂速度要快些,但每次迭代需要計算兩個導(dǎo)數(shù)值。三次插值法的迭代公式為其中如果函數(shù)的導(dǎo)數(shù)容易求得,一

16、般來說首先考慮使用三次插值法,因?yàn)樗哂休^高的效率。對于只需要計算函數(shù)值的方法中,二次插值法是一個很好的方法,它的收斂速度較快,尤其在極小點(diǎn)所在區(qū)間較小時尤其如此。黃金分割法則是一種十分穩(wěn)定的方法,并且計算簡單。由于以上原因,Matlab優(yōu)化工具箱中使用得較多的方法是二次插值法、三次插值法、二次、三次混合插值法和黃金分割法。9.2.1.2相關(guān)函數(shù)介紹fminbnd功能:找到固定區(qū)間內(nèi)單變量函數(shù)的最小值。語法:x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)x=fminbnd(fun,x1,x2,options,P1,P2,.)x,fval=fmi

17、nbnd(.)x,fval,exitflag=fminbnd(.)x,fval,exitflag,output=fminbnd(.)描述:fminbnd求取固定區(qū)間內(nèi)單變量函數(shù)的最小值。x=fminbnd(fun,x1,x2)返回區(qū)間x1,x2上fun參數(shù)描述的標(biāo)量函數(shù)的最小值x。x=fminbnd(fun,x1,x2,options)用options參數(shù)指定的優(yōu)化參數(shù)進(jìn)行最小化。x=fminbnd(fun,x1,x2,options,P1,P2,.)提供另外的參數(shù)P1,P2等,傳輸給目標(biāo)函數(shù)fun。如果沒有設(shè)置options選項,則令options=。x,fval=fminbnd(.)返回解

18、x處目標(biāo)函數(shù)的值。x,fval,exitflag=fminbnd(.)返回exitflag值描述fminbnd函數(shù)的退出條件。x,fval,exitflag,output=fminbnd(.)返回包含優(yōu)化信息的結(jié)構(gòu)輸出。變量:函數(shù)的輸入變量在表9-7中進(jìn)行描述,輸出變量在表9-8中描述。與fminbnd函數(shù)相關(guān)的細(xì)節(jié)內(nèi)容包含在fun,options,exitflag和output等參數(shù)中,如表9-10所示。表9-10參數(shù)描述表參數(shù)描述fun需要最小化的目標(biāo)函數(shù)。fun函數(shù)需要輸入標(biāo)量參數(shù)x,返回x處的目標(biāo)函數(shù)標(biāo)量值f??梢詫un函數(shù)指定為命令行,如x=fminbnd(inline(sin(x

19、*x),x0)同樣,fun參數(shù)可以是一個包含函數(shù)名的字符串。對應(yīng)的函數(shù)可以是M文件、內(nèi)部函數(shù)或MEX文件。若fun=myfun,則M文件函數(shù)myfun.m必須右下面的形式。functionf=myfun(x)f=.%計算x處的函數(shù)值。options優(yōu)化參數(shù)選項。你可以用optimset函數(shù)設(shè)置或改變這些參數(shù)的值。options參數(shù)有以下幾個選項:lDisplay顯示的水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程l的輸出;選擇final,顯示最終結(jié)果。MaxFunEvals函數(shù)評價的最大允許次數(shù)。lMaxIter最大允許迭代次數(shù)。lTolXx處的終止容限。exitflag描述退

20、出條件:l0表示目標(biāo)函數(shù)收斂于解x處。l0表示已經(jīng)達(dá)到函數(shù)評價或迭代的最大次數(shù)。l0表示目標(biāo)函數(shù)不收斂。output該參數(shù)包含下列優(yōu)化信息:loutput.iterations迭代次數(shù)。loutput.algorithm所采用的算法。loutput.funcCount函數(shù)評價次數(shù)。算法:fminbnd是一個M文件。其算法基于黃金分割法和二次插值法。文獻(xiàn)1中給出了實(shí)現(xiàn)同樣算法的Fortran程序。局限性:1目標(biāo)函數(shù)必須是連續(xù)的。2fminbnd函數(shù)可能只給出局部最優(yōu)解。3當(dāng)問題的解位于區(qū)間邊界上時,fminbnd函數(shù)的收斂速度常常很慢。此時,fmincon函數(shù)的計算速度更快,計算精度更高。4fm

21、inbnd函數(shù)只用于實(shí)數(shù)變量。參見:fminsearch,fmincon,fminunc,optimset,inline文獻(xiàn):1Forsythe,G.E.,M.A.Malcolm,andC.B.Moler,ComputerMethodsforMathematicalComputations,PrenticeHall,1976.9.2.1.3應(yīng)用實(shí)例例一在區(qū)間(0,2)上求函數(shù)sin(x)的最小值:x=fminbnd(sin,0,2*pi)x=4.7124所以區(qū)間(0,2)上函數(shù)sin(x)的最小值點(diǎn)位于x=4.7124處。最小值處的函數(shù)值為:y=sin(x)y=-1.0000磁盤中該問題的M文

22、件名為opt21_1.m。例三對邊長為3m的正方形鐵板,在四個角處剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?假設(shè)剪去的正方形的邊長為x,則水槽的容積為現(xiàn)在要求在區(qū)間(0,1.5)上確定一個x,使最大化。因?yàn)閮?yōu)化工具箱中要求目標(biāo)函數(shù)最小化,所以需要對目標(biāo)函數(shù)進(jìn)行轉(zhuǎn)換,即要求最小化。首先編寫M文件opt21_3o.m:functionf=myfun(x)f=-(3-2*x).2*x;然后調(diào)用fminbnd函數(shù)(磁盤中M文件名為opt21_3.m):x=fminbnd(opt21_3o,0,1.5)得到問題的解:x=0.5000即剪掉的正方形的邊長為0.5m時水槽的容積最大。水

23、槽的最大容積計算:y=optim2(x)y=-2.0000所以水槽的最大容積為2.0000m3。9.2.2線性規(guī)劃9.2.2.1基本數(shù)學(xué)原理線性規(guī)劃是處理線性目標(biāo)函數(shù)和線性約束的一種較為成熟的方法,目前已經(jīng)廣泛應(yīng)用于軍事、經(jīng)濟(jì)、工業(yè)、農(nóng)業(yè)、教育、商業(yè)和社會科學(xué)等許多方面。線性規(guī)劃問題的標(biāo)準(zhǔn)形式是:或?qū)懗删仃囆问綖椋浩渲校?為n維列向量。線性規(guī)劃的標(biāo)準(zhǔn)形式要求目標(biāo)函數(shù)最小化,約束條件取等式,變量非負(fù)。不符合這幾個條件的線性模型要首先轉(zhuǎn)化成標(biāo)準(zhǔn)形。線性規(guī)劃的求解方法主要是單純形法(SimpleMethod),該法由Dantzig于1947年提出,以后經(jīng)過多次改進(jìn)。單純形法是一種迭代算法,它從所有基

24、本可行解的一個較小部分中通過迭代過程選出最優(yōu)解。其迭代過程的一般描述為:1將線性規(guī)劃化為典范形式,從而可以得到一個初始基本可行解x(0)(初始頂點(diǎn)),將它作為迭代過程的出發(fā)點(diǎn),其目標(biāo)值為z(x(0)。2尋找一個基本可行解x(1),使z(x(1)z(x(0)。方法是通過消去法將產(chǎn)生x(0)的典范形式化為產(chǎn)生x(1)的典范形式。3繼續(xù)尋找較好的基本可行解x(2),x(3),使目標(biāo)函數(shù)值不斷改進(jìn),即z(x(1)z(x(2)z(x(3)。當(dāng)某個基本可行解再也不能被其它基本可行解改進(jìn)時,它就是所求的最優(yōu)解。Matlab優(yōu)化工具箱中采用的是投影法,它是單純形法的一種變種。9.2.2.2相關(guān)函數(shù)介紹linp

25、rog函數(shù)功能:求解線性規(guī)劃問題。數(shù)學(xué)模型:其中f,x,b,beq,lb和ub為向量,A和Aeq為矩陣。語法: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(.)描

26、述:x=linprog(f,A,b)求解問題minf*x,約束條件為A*x1%調(diào)用fun函數(shù)并要求有兩個輸出變量。g=.%計算x處的梯度值。end若Hessian矩陣也可以求得,并且options.Hessian設(shè)為on,即,options=optimset(Hessian,on)則fun函數(shù)必須返回解x處的Hessian對稱矩陣H到第三個輸出變量中去。注意,當(dāng)被調(diào)用的fun函數(shù)只需要一個或兩個輸出變量時(如算法只需要目標(biāo)函數(shù)的值f和梯度值g而不需要Hessian矩陣H時),可以通過核對nargout的值來避免計算Hessian矩陣functionf,g,H=myfun(x)f=.%計算x處得

27、函數(shù)值。ifnargout1%調(diào)用fun函數(shù)并要求有兩個輸出變量。g=.%計算x處的梯度值。ifnargout2H=.%計算x處的Hessian矩陣。endoptions優(yōu)化參數(shù)選項??梢酝ㄟ^optimset函數(shù)設(shè)置或改變這些參數(shù)。其中有的參數(shù)適用于所有的優(yōu)化算法,有的則只適用于大型優(yōu)化問題,另外一些則只適用于中型問題。首先描述適用于大型問題的選項。這僅僅是一個參考,因?yàn)槭褂么笮蛦栴}算法有一些條件。對于fminunc函數(shù)來說,必須提供梯度信息。lLargeScale當(dāng)設(shè)為on時使用大型算法,若設(shè)為off則使用中型問題的算法。適用于大型和中型算法的參數(shù):lDiagnostics打印最小化函數(shù)的診

28、斷信息。lDisplay顯示水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程的輸出;選擇final,顯示最終結(jié)果。打印最小化函數(shù)的診斷信息。lGradObj用戶定義的目標(biāo)函數(shù)的梯度。對于大型問題此參數(shù)是必選的,對于中型問題則是可選項。lMaxFunEvals函數(shù)評價的最大次數(shù)。lMaxIter最大允許迭代次數(shù)。lTolFun函數(shù)值的終止容限。lTolXx處的終止容限。只用于大型算法的參數(shù):lHessian用戶定義的目標(biāo)函數(shù)的Hessian矩陣。lHessPattern用于有限差分的Hessian矩陣的稀疏形式。若不方便求fun函數(shù)的稀疏Hessian矩陣H,可以通過用梯度的有限差

29、分獲得的H的稀疏結(jié)構(gòu)(如非零值的位置等)來得到近似的Hessian矩陣H。若連矩陣的稀疏結(jié)構(gòu)都不知道,則可以將HessPattern設(shè)為密集矩陣,在每一次迭代過程中,都將進(jìn)行密集矩陣的有限差分近似(這是缺省設(shè)置)。這將非常麻煩,所以花一些力氣得到Hessian矩陣的稀疏結(jié)構(gòu)還是值得的。lMaxPCGIterPCG迭代的最大次數(shù)。lPrecondBandWidthPCG前處理的上帶寬,缺省時為零。對于有些問題,增加帶寬可以減少迭代次數(shù)。lTolPCGPCG迭代的終止容限。lTypicalX典型x值。只用于中型算法的參數(shù):lDerivativeCheck對用戶提供的導(dǎo)數(shù)和有限差分求出的導(dǎo)數(shù)進(jìn)行對比

30、。lDiffMaxChange變量有限差分梯度的最大變化。lDiffMinChange-變量有限差分梯度的最小變化。lLineSearchType一維搜索算法的選擇。exitflag描述退出條件:l0表示目標(biāo)函數(shù)收斂于解x處。l0表示已經(jīng)達(dá)到函數(shù)評價或迭代的最大次數(shù)。l0表示目標(biāo)函數(shù)不收斂。output該參數(shù)包含下列優(yōu)化信息:loutput.iterations迭代次數(shù)。loutput.algorithm所采用的算法。loutput.funcCount函數(shù)評價次數(shù)。loutput.cgiterationsPCG迭代次數(shù)(只適用于大型規(guī)劃問題)。loutput.stepsize最終步長的大?。ㄖ?/p>

31、用于中型問題)。loutput.firstorderopt一階優(yōu)化的度量:解x處梯度的范數(shù)。注意:1對于求解平方和的問題,fminunc函數(shù)不是最好的選擇,用lsqnonlin函數(shù)效果更佳。2使用大型方法時,必須通過將options.GradObj設(shè)置為on來提供梯度信息,否則將給出警告信息。算法:大型優(yōu)化算法若用戶在fun函數(shù)中提供梯度信息,則缺省時函數(shù)將選擇大型優(yōu)化算法,該算法是基于內(nèi)部映射牛頓法的子空間置信域法,理論描述可參見文獻(xiàn)8,9。計算中的每一次迭代涉及到用PCG法求解大型線性系統(tǒng)得到的近似解。中型優(yōu)化算法此時fminunc函數(shù)的參數(shù)options.LargeScale設(shè)置為off

32、。該算法采用的是基于二次和三次混合插值一維搜索法的BFGS擬牛頓法。該法通過BFGS公式來更新Hessian矩陣。通過將HessUpdate參數(shù)設(shè)置為dfp,可以用DFP公式來求得Hessian矩陣逆的近似。通過將HessUpdate參數(shù)設(shè)置為steepdesc,可以用最速下降法來更新Hessian矩陣。但一般不建議使用最速下降法。缺省時的一維搜索算法,當(dāng)options.LineSearchType設(shè)置為quadcubic時,將采用二次和三次混合插值法。將options.LineSearchType設(shè)置為cubicpoly時,將采用三次插值法。第二種方法需要的目標(biāo)函數(shù)計算次數(shù)更少,但梯度的計算

33、次數(shù)更多。這樣,如果提供了梯度信息,或者能較容易地算得,則三次插值法是更佳的選擇。局限性:1目標(biāo)函數(shù)必須是連續(xù)的。fminunc函數(shù)有時會給出局部最優(yōu)解。2fminunc函數(shù)只對實(shí)數(shù)進(jìn)行優(yōu)化,即x必須為實(shí)數(shù),而且f(x)必須返回實(shí)數(shù)。當(dāng)x為復(fù)數(shù)時,必須將它分解為實(shí)部和虛部。3在使用大型算法時,用戶必須在fun函數(shù)中提供梯度(options參數(shù)中GradObj屬性必須設(shè)置為on)。4目前,若在fun函數(shù)中提供了解析梯度,則options參數(shù)DerivativeCheck不能用于大型算法以比較解析梯度和有限差分梯度。通過將options參數(shù)的MaxIter屬性設(shè)置為0來用中型方法核對導(dǎo)數(shù)。然后重新

34、用大型方法求解問題。參見:fminsearch,optimset,inlinefminsearch函數(shù)功能:求解多變量無約束函數(shù)的最小值。數(shù)學(xué)模型:其中x為向量,f(x)為函數(shù),返回標(biā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(.)描述:fminsearch求解多變量無約束函數(shù)的最小值。該函數(shù)常用于

35、無約束非線性最優(yōu)化問題。x=fminsearch(fun,x0)初值為x0,求fun函數(shù)的局部極小點(diǎn)x。x0可以是標(biāo)量、向量或矩陣。x=fminsearch(fun,x0,options)用options參數(shù)指定的優(yōu)化參數(shù)進(jìn)行最小化。x=fminsearch(fun,x0,options,P1,P2,.)將問題參數(shù)p1、p2等直接輸給目標(biāo)函數(shù)fun,將options參數(shù)設(shè)置為空矩陣,作為options參數(shù)的缺省值。x,fval=fminsearch(.)將x處的目標(biāo)函數(shù)值返回到fval參數(shù)中。x,fval,exitflag=fminsearch(.)返回exitflag值,描述函數(shù)的退出條件。

36、x,fval,exitflag,output=fminsearch(.)返回包含優(yōu)化信息的輸出參數(shù)output。變量:各變量的意義同前。算法:fminsearch使用單純形法進(jìn)行計算。對于求解二次以上的問題,fminsearch函數(shù)比fminunc函數(shù)有效。但是,當(dāng)問題為高度非線性時,fminsearch函數(shù)更具穩(wěn)健性。局限性:1應(yīng)用fminsearch函數(shù)可能會得到局部最優(yōu)解。2fminsearch函數(shù)只對實(shí)數(shù)進(jìn)行最小化,即x必須由實(shí)數(shù)組成,f(x)函數(shù)必須返回實(shí)數(shù)。如果x時復(fù)數(shù),必須將它分為實(shí)數(shù)部和虛數(shù)部兩部分。注意:fminsearch函數(shù)不適合求解平方和問題,用lsqnonlin函數(shù)更

37、好一些。參見:fminbnd,fminunc,optimset,inline9.2.4二次規(guī)劃問題9.2.4.1基本數(shù)學(xué)原理如果某非線性規(guī)劃的目標(biāo)函數(shù)為自變量的二次函數(shù),約束條件全是線性函數(shù),就稱這種規(guī)劃為二次規(guī)劃。其數(shù)學(xué)模型為:其中,H,A,和Aeq為矩陣,f,b,beq,lb,ub,和x為向量。9.2.4.2相關(guān)函數(shù)介紹quadprog函數(shù)功能:求解二次規(guī)劃問題。語法: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,

38、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(.)描述:x=quadprog(H,f,A,b)返回向量x,最小化函數(shù)1/2*x*H*x+f*x,其約束條件為A*x=b。x=quadprog(H,f,A,b,Aeq,beq)仍然求解上面的問題,但添加了等式約束條件Aeq*x=beq。x=quadprog(H,f,A,

39、b,lb,ub)定義設(shè)計變量的下界lb和上界ub,使得lb=x=ub。x=quadprog(H,f,A,b,lb,ub,x0)同上,并設(shè)置初值x0。x=quadprog(H,f,A,b,lb,ub,x0,options)根據(jù)options參數(shù)指定的優(yōu)化參數(shù)進(jìn)行最小化。x,fval=quadprog(.)返回解x處的目標(biāo)函數(shù)值fval=0.5*x*H*x+f*x。x,fval,exitflag=quadprog(.)返回exitflag參數(shù),描述計算的退出條件。x,fval,exitflag,output=quadprog(.)返回包含優(yōu)化信息的結(jié)構(gòu)輸出output。x,fval,exitfla

40、g,output,lambda=quadprog(.)返回解x處包含拉格朗日乘子的lambda參數(shù)。變量:各變量的意義同前。注意:1一般地,如果問題不是嚴(yán)格凸性的,用quadprog函數(shù)得到的可能是局部最優(yōu)解。2如果用Aeq和Beq明確地指定等式約束,而不是用lb和ub指定,則可以得到更好的數(shù)值解。3若x的組分沒有上限或下限,則quadprog函數(shù)希望將對應(yīng)的組分設(shè)置為Inf(對于上限)或-Inf(對于下限),而不是強(qiáng)制性地給予上限一個很大的數(shù)或給予下限一個很小的負(fù)數(shù)。4對于大型優(yōu)化問題,若沒有提供初值x0,或x0不是嚴(yán)格可行,則quadprog函數(shù)會選擇一個新的初始可行點(diǎn)。5若為等式約束,且

41、quadprog函數(shù)發(fā)現(xiàn)負(fù)曲度(negativecurvature),則優(yōu)化過程終止,exitflag的值等于-1。算法:大型優(yōu)化算法當(dāng)優(yōu)化問題只有上界和下界,而沒有線性不等式或等式約束,則缺省算法為大型算法。或者,如果優(yōu)化問題中只有線性等式,而沒有上界和下界或線性不等式時,缺省算法也是大型算法。本法是基于內(nèi)部映射牛頓法(interior-reflectiveNewtonmethod)的子空間置信域法(subspacetrust-region)。該法的具體算法請參見文獻(xiàn)2。該法的每一次迭代都與用PCG法求解大型線性系統(tǒng)得到的近似解有關(guān)。中型優(yōu)化算法quadprog函數(shù)使用活動集法,它也是一種投

42、影法,首先通過求解線性規(guī)劃問題來獲得初始可行解。診斷:1.大型優(yōu)化問題大型優(yōu)化問題不允許約束上限和下限相等,如若lb(2)=ub(2),則給出以下出錯信息:Equalupperandlowerboundsnotpermittedinthislarge-scalemethod.Useequalityconstraintsandthemedium-scalemethodinstead.若優(yōu)化模型中只有等式約束,仍然可以使用大型算法;如果模型中既有等式約束又有邊界約束,則必須使用中型方法。2中型優(yōu)化問題當(dāng)解不可行時,quadprog函數(shù)給出以下警告:Warning:Theconstraintsare

43、overlystringent;thereisnofeasiblesolution.這里,quadprog函數(shù)生成使約束矛盾最壞程度最小的結(jié)果。當(dāng)?shù)仁郊s束不連續(xù)時,給出下面的警告信息:Warning:Theequalityconstraintsareoverlystringent;thereisnofeasiblesolution.當(dāng)Hessian矩陣為負(fù)半定時,生成無邊界解,給出下面的警告信息:Warning:Thesolutionisunboundedandatinfinity;theconstraintsarenotrestrictiveenough.這里,quadprog函數(shù)返回滿足約

44、束條件的x值。局限性:1此時,顯示水平只能選擇off和final,迭代參數(shù)iter不可用。2當(dāng)問題不定或負(fù)定時,常常無解(此時exitflag參數(shù)給出一個負(fù)值,表示優(yōu)化過程不收斂)。若正定解存在,則quadprog函數(shù)可能只給出局部極小值,因?yàn)閱栴}可能時非凸的。3對于大型問題,不能依靠線性等式,因?yàn)锳eq必須是行滿秩的,即Aeq的行數(shù)必須不多于列數(shù)。若不滿足要求,必須調(diào)用中型算法進(jìn)行計算。9.2.4.3應(yīng)用實(shí)例例一求解下面的最優(yōu)化問題:目標(biāo)函數(shù)約束條件首先,目標(biāo)函數(shù)可以寫成下面的矩陣形式:其中輸入下列系數(shù)矩陣:H=1-1;-12f=-2;-6A=11;-12;21b=2;2;3lb=zeros

45、(2,1)然后調(diào)用二次規(guī)劃函數(shù)quadratic:x,fval,exitflag,output,lambda=quadprog(H,f,A,b,lb)得問題的解x=0.66671.3333fval=-8.2222exitflag=1output=iterations:3algorithm:medium-scale:active-setfirstorderopt:cgiterations:lambda.ineqlinans=3.11110.44440lambda.lowerans=00磁盤中本問題的M文件為opt24_1.m。9.2.5有約束最小化9.2.5.1基本數(shù)學(xué)原理在有約束最優(yōu)化問題中,

46、通常要將該問題轉(zhuǎn)換為更簡單的子問題,這些子問題可以求解并作為迭代過程的基礎(chǔ)。早期的方法通常是通過構(gòu)造懲罰函數(shù)等來將有約束的最優(yōu)化問題轉(zhuǎn)換為無約束最優(yōu)化問題進(jìn)行求解?,F(xiàn)在,這些方法已經(jīng)被更有效的基于K-T(Kuhn-Tucker)方程解的方法所取代。K-T方程是有約束最優(yōu)化問題求解的必要條件。假設(shè)有所謂的Convex規(guī)劃問題,f(x)和Gi(x),i=1,2,m為Convex函數(shù),則K-T方程對于求得全局極小點(diǎn)是必要的,也是充分的。對于規(guī)劃問題其中,x是設(shè)計參數(shù)向量,(xRn),f(x)為目標(biāo)函數(shù),返回標(biāo)量值,向量函數(shù)G(x)返回等式約束和不等式約束在x處的值。它的K-T方程可表達(dá)為:(*)i=

47、1,mi=me+1,m其中第一行描述了目標(biāo)函數(shù)和約束條件在解處梯度的取消。由于梯度取消,需要用拉格朗日乘子i(i=1,2,m)來平衡目標(biāo)函數(shù)與約束梯度間大小的差異。K-T方程的解形成了許多非線性規(guī)劃算法的基礎(chǔ),這些算法直接計算拉格朗日乘子,通過用擬牛頓法更新過程,給K-T方程積累二階信息,可以保證有約束擬牛頓法的超線性收斂。這些方法稱為序列二次規(guī)劃法(SQP),因?yàn)樵诿恳淮沃饕牡卸记蠼庖淮味我?guī)劃問題。對于給定的規(guī)劃問題,序列二次規(guī)劃(SQP)的主要的思路是形成基于拉格朗日函數(shù)二次近似的二次規(guī)劃子問題,即這里,通過假設(shè)約束條件為不等式約束來使(*)式得到了簡化,通過非線性有約束問題線性化

48、來獲得二次規(guī)劃子問題。二次規(guī)劃子問題可表達(dá)為i=1,mei=me+1,m該子問題可以用任意一種二次規(guī)劃算法求解,求得的解可以用來形成新的迭代公式xk+1=xk+kdk。用SQP法求解非線性有約束問題時的迭代次數(shù)常比用解無約束問題時的少,因?yàn)樵谒阉鲄^(qū)域內(nèi),SQP方法可以獲得最佳的搜索方向和步長信息。給Rosenbrock函數(shù)添加非線性不等式約束g(x)經(jīng)過96次迭代得到問題的解:x=0.9072,0.8288,初值為x=-1.9,2,無約束問題則需要140次迭代。圖9-3是搜索路徑圖。圖9-3SQP法的搜索路徑MATLAB中SQP法的實(shí)現(xiàn)分三步,即拉格朗日函數(shù)Hessian矩陣的更新;二次規(guī)劃問

49、題求解;一維搜索和目標(biāo)函數(shù)的計算(一)、Hessian矩陣的更新在每一次主要迭代過程中,都用BFGS法計算拉格朗日函數(shù)的Hessian矩陣的擬牛頓近似矩陣。更新公式為:其中:上式中,i(i=1,2,m)為拉格朗日乘子的估計。(二)、二次規(guī)劃求解SQP法的每一次主要迭代過程中都要求一次二次規(guī)劃問題,形式如下:i=1,mei=me+1,m求解過程分兩步,第一步涉及可行點(diǎn)(若存在)的計算,第二步為可行點(diǎn)至解的迭代序列。在第一步中,需要有可行點(diǎn)作為初值,若當(dāng)前點(diǎn)不可行,則通過求解下列線性規(guī)劃問題可以得到一個可行點(diǎn):i=1,mei=me+1,m其中,Ai為矩陣A的第i行。(三)、一維搜索和目標(biāo)函數(shù)的計算

50、二次規(guī)劃子問題的解生成一個向量dk,它形成一個新的迭代公式:k為步長參數(shù)。目標(biāo)函數(shù)的形式如下:其中,i=1,m9.2.5.2相關(guān)函數(shù)介紹fmincon函數(shù)功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學(xué)模型:其中,x,b,beq,lb,和ub為向量,A和Aeq為矩陣,c(x)和ceq(x)為函數(shù),返回標(biāo)量。f(x),c(x),和ceq(x)可以是非線性函數(shù)。語法: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

51、,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,outp

52、ut,lambda,grad,hessian=fmincon(.)描述:fmincon求多變量有約束非線性函數(shù)的最小值。該函數(shù)常用于有約束非線性優(yōu)化問題。x=fmincon(fun,x0,A,b)給定初值x0,求解fun函數(shù)的最小值x。fun函數(shù)的約束條件為A*x=b,x0可以是標(biāo)量、向量或矩陣。x=fmincon(fun,x0,A,b,Aeq,beq)最小化fun函數(shù),約束條件為Aeq*x=beq和A*x=b。若沒有不等式存在,則設(shè)置A=、b=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)定義設(shè)計變量x的下界lb和上界ub,使得總是有l(wèi)b=x=ub。若無等式存在,則

53、令A(yù)eq=、beq=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)在上面的基礎(chǔ)上,在nonlcon參數(shù)中提供非線性不等式c(x)或等式ceq(x)。fmincon函數(shù)要求c(x)=0且ceq(x)=0。當(dāng)無邊界存在時,令lb=和(或)ub=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)用optiions參數(shù)指定的參數(shù)進(jìn)行最小化。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,.)將問題參數(shù)P1,P2等直接傳遞給函數(shù)fun和nonl

54、in。若不需要這些變量,則傳遞空矩陣到A,b,Aeq,beq,lb,ub,nonlcon和options。x,fval=fmincon(.)返回解x處的目標(biāo)函數(shù)值。x,fval,exitflag=fmincon(.)返回exitflag參數(shù),描述函數(shù)計算的退出條件。x,fval,exitflag,output=fmincon(.)返回包含優(yōu)化信息的輸出參數(shù)output。x,fval,exitflag,output,lambda=fmincon(.)返回解x處包含拉格朗日乘子的lambda參數(shù)。x,fval,exitflag,output,lambda,grad=fmincon(.)返回解x處f

55、un函數(shù)的梯度。x,fval,exitflag,output,lambda,grad,hessian=fmincon(.)返回解x處fun函數(shù)的Hessian矩陣。變量:nonlcon參數(shù)該參數(shù)計算非線性不等式約束c(x)2%被調(diào)用的nonlcon函數(shù),要求有4個輸出變量。GC=.%不等式的梯度。GCeq=.%等式的梯度。end若nonlcon函數(shù)返回m元素的向量c和長度為n的x,則c(x)的梯度GC是一個n*m的矩陣,其中GC(i,j)是c(j)對x(i)的偏導(dǎo)數(shù)。同樣,若ceq是一個p元素的向量,則ceq(x)的梯度Gceq是一個n*p的矩陣,其中Gceq(i,j)是ceq(j)對x(i)

56、的偏導(dǎo)數(shù)。其它參數(shù)意義同前。注意:大型優(yōu)化問題:1使用大型算法,必須在fun函數(shù)中提供梯度信息(options.GradObj設(shè)置為on)。如果沒有梯度信息,則給出警告信息。fmincon函數(shù)允許g(x)為一近似梯度,但使用真正的梯度將使優(yōu)化過程更具穩(wěn)健性。2當(dāng)對矩陣的二階導(dǎo)數(shù)(即Hessian矩陣)進(jìn)行計算以后,用該函數(shù)求解大型問題將更有效。但不需要求得真正的Hessian矩陣,如果能提供Hessian矩陣的稀疏結(jié)構(gòu)的信息(用options參數(shù)的HessPattern屬性),則fmincon函數(shù)可以算得Hessian矩陣的稀疏有限差分近似。3若x0不是嚴(yán)格可行的,則fmincon函數(shù)選擇一個

57、新的嚴(yán)格可行初始點(diǎn)。4若x的某些元素沒有上界或下界,則fmincon函數(shù)更希望對應(yīng)的元素設(shè)置為Inf(對于上界)或-Inf(對于下界),而不希望強(qiáng)制性地給上界賦一個很大的值,給下界賦一個很小的負(fù)值。5線性約束最小化課題中也有幾個問題需要注意:lAeq矩陣中若存在密集列或近密集列(Adense(或fairlydense)column),會導(dǎo)致滿秩并使計算費(fèi)時。lfmincon函數(shù)剔除Aeq中線性相關(guān)的行。此過程需要進(jìn)行反復(fù)的因子分解,因此,如果相關(guān)行很多的話,計算將是一件很費(fèi)時的事情。l每一次迭代都要用下式進(jìn)行稀疏最小二乘求解其中RT為前提條件的喬累斯基因子。中型優(yōu)化問題1如果用Aeq和beq清

58、楚地提供等式約束,將比用lb和ub獲得更好的數(shù)值解。2在二次子問題中,若有等式約束并且因等式(dependentequalities)被發(fā)現(xiàn)和剔除的話,將在過程標(biāo)題中顯示dependent(當(dāng)output參數(shù)要求使用options.Display=iter)。只有在等式連續(xù)的情況下,因等式才會被剔除。若等式系統(tǒng)不連續(xù),則子問題將不可行并在過程標(biāo)題中打印infeasible信息。算法:大型優(yōu)化算法缺省時,若提供了函數(shù)的梯度信息,并且只有上下界存在或只有線性等式約束存在,則fmincon函數(shù)將選擇大型算法。本法是基于內(nèi)部映射牛頓法(interior-reflectiveNewtonmethod)的

59、子空間置信域法(subspacetrust-region)。該法的具體算法請參見文獻(xiàn)2。該法的每一次迭代都與用PCG法求解大型線性系統(tǒng)得到的近似解有關(guān)。中型優(yōu)化算法fmincon函數(shù)使用序列二次規(guī)劃法(SQP)。本法中,在每一步迭代中求解二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。參見文獻(xiàn)3、6。該算法使用與文獻(xiàn)1、2和3中提供的相似的目標(biāo)函數(shù)進(jìn)行一維搜索。二次子問題使用文獻(xiàn)4描述的活動集方案進(jìn)行求解。診斷:大型優(yōu)化問題求大型優(yōu)化問題的代碼中不允許上限和下限相等,即不能有l(wèi)b(2)=ub(2),否則給出下面的出錯信息:Equalupperandlowerboundsnotpe

60、rmittedinthislarge-scalemethod.Useequalityconstraintsandthemedium-scalemethodinstead.若只有等式約束,可以仍然使用大型算法。當(dāng)既有等式約束又有邊界約束時,使用中型算法。局限:1目標(biāo)函數(shù)和約束函數(shù)都必須是連續(xù)的,否則可能會給出局部最優(yōu)解。2當(dāng)問題不可行時,fmincon函數(shù)將試圖使最大約束值最小化。3目標(biāo)函數(shù)和約束函數(shù)都必須是實(shí)數(shù)。4對于大型優(yōu)化問題,使用大型優(yōu)化算法時,用戶必須在fun函數(shù)中提供梯度(options參數(shù)的GradObj屬性必須設(shè)置為on),并且只可以指定上界和下界約束,或者只有線性約束必須存在,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論