噶米Matlab的優(yōu)化工具箱(20210125130225)_第1頁
噶米Matlab的優(yōu)化工具箱(20210125130225)_第2頁
噶米Matlab的優(yōu)化工具箱(20210125130225)_第3頁
噶米Matlab的優(yōu)化工具箱(20210125130225)_第4頁
噶米Matlab的優(yōu)化工具箱(20210125130225)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、表9-4實(shí)用函數(shù)表9.1 概述利用Matlab的優(yōu)化工具箱,可以求解線性規(guī)劃、非線性規(guī)劃和多目標(biāo)規(guī)劃 問題。具體而言,包括線性、非線性最小化,最大最小化,二次規(guī)劃,半無限問 題,線性、非線性方程(組)的求解,線性、非線性的最小二乘問題。另外,該 工具箱還提供了線性、非線性最小化,方程求解,曲線擬合,二次規(guī)劃等問題中 大型課題的求解方法,為優(yōu)化方法在工程中的實(shí)際應(yīng)用提供了更方便快捷的途 徑。9.1.1優(yōu)化工具箱中的函數(shù)優(yōu)化工具箱中的函數(shù)包括下面幾類:1最小化函數(shù)表9-1最小化函數(shù)表函數(shù)描述fgoalattain多目標(biāo)達(dá)到問題fminbnd有邊界的標(biāo)量非線性最小化fmincon有約束的非線性最小化

2、fminimax最大最小化fminsearch, fminunc無約束非線性最小化fseminf半無限問題linprog線性課題quadprog二次課題2.方程求解函數(shù)表9-2方程求解函數(shù)表函數(shù)描述線性方程求解fsolve非線性方程求解fzero標(biāo)量非線性方程求解3.最小二乘(曲線擬合)函數(shù)表9-3最小二乘函數(shù)表函數(shù)描述線性最小二乘lsqlin有約束線性最小二乘lsqcurvefit非線性曲線擬合lsqnonlin非線性最小二乘lsqnonneg非負(fù)線性最小二乘4.實(shí)用函數(shù)5 大型方法的演示函數(shù)表9-5大型方法的演示函數(shù)表函數(shù)描述circustent馬戲團(tuán)帳篷問題一二次課題molecule用無

3、約束非線性最小化進(jìn)行分子組成求解optdeblur用有邊界線性最小二乘法進(jìn)行圖形處理6中型方法的演示函數(shù)表9-6中型方法的演示函數(shù)表函數(shù)描述bandemo香蕉函數(shù)的最小化dfildemo過濾器設(shè)計(jì)的有限精度goaldemo目標(biāo)達(dá)到舉例optdemo演示過程菜單tutdemo教程演示9.1.3參數(shù)設(shè)置利用optimset函數(shù),可以創(chuàng)建和編輯參數(shù)結(jié)構(gòu);利用optimget函數(shù),可以獲得options優(yōu)化參數(shù)。optimget 函數(shù)功能:獲得options優(yōu)化參數(shù)。語法:val = optimget(opti on s,param)val = optimget(optio ns,param,defa

4、ult)描述: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.下面的命令行將顯示優(yōu)化參數(shù) options返回到my_options結(jié)構(gòu)中:val = optimget(my_optio ns,Display)2.下面的命令行返回顯示優(yōu)化參數(shù) options到my_options結(jié)構(gòu)中(就象前面的例子一樣),但如果

5、顯示參數(shù)沒有定義,則返回值fin al:opt new = optimget(my_optio ns,Display,fi nal);參見:optimsetoptimset 函數(shù)功能:創(chuàng)建或編輯優(yōu)化選項(xiàng)參數(shù)結(jié)構(gòu)。語法:opti ons = optimset(param1,value1,param2,value2,.)optimsetopti ons = optimsetopti ons = optimset(optimf un)opti ons = optimset(oldopts,param1,value1,.Jopti ons = optimset(oldopts ,n ewopts)描述

6、:opti ons = optimset(param1,value1,param2,value2,.)倉 U建一個(gè)稱為options的優(yōu)化選項(xiàng)參數(shù),其中指定的參數(shù)具有指定值。所有未指定的參數(shù)都設(shè) 置為空矩陣(將參數(shù)設(shè)置為表示當(dāng)options傳遞給優(yōu)化函數(shù)時(shí)給參數(shù)賦缺省 值)。賦值時(shí)只要輸入?yún)?shù)前面的字母就行了。optimset函數(shù)沒有輸入輸出變量時(shí),將顯示一張完整的帶有有效值的參數(shù)列表。 opti ons = optimset (with no in put argume nts)倉 U建一個(gè)選項(xiàng)結(jié)構(gòu) opti ons ,其中所有的元素被設(shè)置為。optio ns = optimset(opti

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

8、ptio ns = optimset(Display,iter,Tol Fun ,1e-8)2.下面的語句創(chuàng)建一個(gè)稱為options的優(yōu)化結(jié)構(gòu)的拷貝,改變TolX參數(shù)的 值,將新值保存到opt new參數(shù)中:opt new = optimset(optio ns,TolX,1e-4);3.下面的語句返回options優(yōu)化結(jié)構(gòu),其中包含所有的參數(shù)名和與fminbnd 函數(shù)相關(guān)的缺省值:opti ons = optimset(fm inbn d)4.若只希望看到fminbnd函數(shù)的缺省值,只需要簡單地鍵入下面的語句就 行了:optimset fminbnd或者輸入下面的命令,其效果與上面的相同:o

9、ptimset(fm inbn d)參見:optimget9.1.4模型輸入時(shí)需要注意的問題使用優(yōu)化工具箱時(shí),由于優(yōu)化函數(shù)要求目標(biāo)函數(shù)和約束條件滿足一定的格式,所以需要用戶在進(jìn)行模型輸入時(shí)注意以下幾個(gè)問題:1.目標(biāo)函數(shù)最小化優(yōu)化函數(shù) fminbnd、fminsearch、fminunc、fmincon、fgoalattain 、fminmax 和Isqnonlin 都要求目標(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.約束非正優(yōu)化工具箱要求非線性不

10、等式約束的形式為 C(x) 0形式的約束等價(jià)于-Ci(x) b形式的約束等價(jià)于-C i(x)+b 0表示目標(biāo)函數(shù)收斂于解 x處。0表示已經(jīng)達(dá)到函數(shù)評價(jià)或迭代的最大次數(shù)。0表示目標(biāo)函數(shù)不收斂。output該參數(shù)包含下列優(yōu)化信息:output.iterations-迭代次數(shù)。output.algorithm-所采用的算法。output.funcCount -函數(shù)評價(jià)次數(shù)。算法:fminbnd是一個(gè)M文件。其算法基于黃金分割法和二次插值法。文獻(xiàn)1中給出了實(shí)現(xiàn)同樣算法的Fortran程序。局限性:1目標(biāo)函數(shù)必須是連續(xù)的。2.fminbnd函數(shù)可能只給出局部最優(yōu)解。3. 當(dāng)問題的解位于區(qū)間邊界上時(shí),fm

11、inbnd函數(shù)的收斂速度常常很慢。此時(shí), fmincon函數(shù)的計(jì)算速度更快,計(jì)算精度更高。4.fminbnd函數(shù)只用于實(shí)數(shù)變量。參見:fmin search, fmincon, fminunc, optimset, i nli ne 文獻(xiàn):1 Forsythe, G.E., M.A. Malcolm, and C.B. Moler, Computer Methods for Mathematical Computations, Prentice Hall, 1976.921.3應(yīng)用實(shí)例例一在區(qū)間(0, 2 n)上求函數(shù)sin(x)的最小值:x = fminbn d(si n,0,2*pi)x

12、=4.7124所以區(qū)間(0, 2 n)上函數(shù)sin(x)的最小值點(diǎn)位于x=4.7124處。最小值處的函數(shù)值為:y = sin(x)y =-1.0000磁盤中該問題的M文件名為opt21_1.m 。例三對邊長為3m的正方形鐵板,在四個(gè)角處剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?假設(shè)剪去的正方形的邊長為x,則水槽的容積為現(xiàn)在要求在區(qū)間(0,1.5)上確定一個(gè)x,使 最大化。因?yàn)閮?yōu)化工具箱中要求 目標(biāo)函數(shù)最小化,所以需要對目標(biāo)函數(shù)進(jìn)行轉(zhuǎn)換,即要求 最小化。首先編寫 M文件opt21_3o.m:fun cti on f = myfun(x)f = -(3-2*x).A2 * x

13、;然后調(diào)用fminbnd函數(shù)(磁盤中M文件名為opt21_3.m):x = fmi nbn d(opt21_3o,0,1.5)得到問題的解:x =0.5000即剪掉的正方形的邊長為0.5m時(shí)水槽的容積最大。水槽的最大容積計(jì)算: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è)和社會(huì)科學(xué)等許多方面。線性 規(guī)劃問題的標(biāo)準(zhǔn)形式是:或 寫成矩陣形式為: 其中,0為n維列向量。線性規(guī)劃的標(biāo)準(zhǔn)形式要求目標(biāo)函數(shù)最小化,約束

14、條件取等式,變量非負(fù)。不 符合這幾個(gè)條件的線性模型要首先轉(zhuǎn)化成標(biāo)準(zhǔn)形。線性規(guī)劃的求解方法主要是單純形法(Simple Method ),該法由Dantzig 于1947年提出,以后經(jīng)過多次改進(jìn)。單純形法是一種迭代算法,它從所有基本 可行解的一個(gè)較小部分中通過迭代過程選出最優(yōu)解。其迭代過程的一般描述為:1. 將線性規(guī)劃化為典范形式,從而可以得到一個(gè)初始基本可行解x(0)(初始頂點(diǎn)),將它作為迭代過程的出發(fā)點(diǎn),其目標(biāo)值為z(x)o2. 尋找一個(gè)基本可行解x,使z(x)z(x)。方法是通過消去法將產(chǎn)生x的 典范形式化為產(chǎn)生X的典范形式。3. 繼續(xù)尋找較好的基本可行解x,x(3),使目標(biāo)函數(shù)值不斷改進(jìn)

15、,即z(x)z(x)z(x (3)。當(dāng)某個(gè)基本可行解再也不能被其它基本可行解 改進(jìn)時(shí),它就是所求的最優(yōu)解。Matlab優(yōu)化工具箱中采用的是投影法,它是單純形法的一種變種。922.2相關(guān)函數(shù)介紹lin prog 函數(shù)功能:求解線性規(guī)劃問題。數(shù)學(xué)模型:其中f, x, b, beq, lb和ub為向量,A和Aeq為矩陣。語法:x = lin prog(f,A,b,Aeq,beq)x = lin prog(f,A,b,Aeq,beq,lb,ub)x = lin prog(f,A,b,Aeq,beq,lb,ub,x0)x = lin prog(f,A,b,Aeq,beq,lb,ub,x0,opti on

16、s)x,fval = lin prog(.)x,fval,exitflag = lin prog(.)x,fval,exitflag,output = lin prog(.)x,fval,exitflag,output,lambda = lin prog(.)描述:x = linprog(f,A,b) 求解問題 min f*x,約束條件為 A*x 1 %調(diào)用fun函數(shù)并要求有兩個(gè)輸出變量。g = .%計(jì)算x處的梯度值。end若Hessian矩陣也可以求得,并且 options.Hessian 設(shè)為on,即,options = optimset(Hessian,on)則fun函數(shù)必須返回解x處的

17、Hessian對稱矩陣H到第三個(gè)輸出變量中去。注意,當(dāng)被調(diào)用的 fun函數(shù)只需要一個(gè)或兩個(gè)輸岀變量時(shí)(如算法只需要目標(biāo)函數(shù)的值f和梯度值g而不需要Hessian矩陣H時(shí)),可以通過核對 nargout的值來避免計(jì)算 Hessian矩陣function f,g,H = myfun(x)f = .%計(jì)算x處得函數(shù)值。if nargout 1 %調(diào)用fun函數(shù)并要求有兩個(gè)輸出變量。g = .%計(jì)算x處的梯度值。if nargout 2H = .%計(jì)算x處的Hessian矩陣。endoptions優(yōu)化參數(shù)選項(xiàng)??梢酝ㄟ^optimset函數(shù)設(shè)置或改變這些參數(shù)。其中有的參數(shù)適用于所有的優(yōu)化 算法,有的則只

18、適用于大型優(yōu)化問題,另外一些則只適用于中型問題。首先描述適用于大型問題的選項(xiàng)。這僅僅是一個(gè)參考,因?yàn)槭褂么笮蛦栴}算法有一些條件。對 于fminunc函數(shù)來說,必須提供梯度信息。LargeScale -當(dāng)設(shè)為on時(shí)使用大型算法,若設(shè)為off則使用中型問題的算法。適用于大型和中型算法的參數(shù):Diagnostics-打印最小化函數(shù)的診斷信息。Display -顯示水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程的輸 出;選擇final,顯示最終結(jié)果。打印最小化函數(shù)的診斷信息。GradObj -用戶定義的目標(biāo)函數(shù)的梯度。對于大型問題此參數(shù)是必選的,對于中型問題則 是可選項(xiàng)。MaxFunE

19、vals -函數(shù)評價(jià)的最大次數(shù)。MaxIter -最大允許迭代次數(shù)。TolFun -函數(shù)值的終止容限。TolX -x處的終止容限。只用于大型算法的參數(shù):Hessian -用戶定義的目標(biāo)函數(shù)的Hessian矩陣。HessPattern -用于有限差分的Hessian矩陣的稀疏形式。若不方便求fun函數(shù)的稀疏Hessian矩陣H,可以通過用梯度的有限差分獲得的H的稀疏結(jié)構(gòu)(如非零值的位置等) 來得到近似的Hessian矩陣H。若連矩陣的稀疏結(jié)構(gòu)都不知道,則可以將HessPattern設(shè)為密集矩陣,在每一次迭代過程中,都將進(jìn)行密集矩陣的有限差分近似(這是缺省設(shè)置)。這將非常麻煩, 所以花一些力氣得到

20、 Hessian矩陣的稀疏結(jié)構(gòu)還是值得的。MaxPCGIter -PCG迭代的最大次數(shù)。PrecondBandWidth -PCG前處理的上帶寬,缺省時(shí)為零。對于有些問題,增加帶寬可以 減少迭代次數(shù)。TolPCG -PCG迭代的終止容限。TypicalX -典型 x 值。只用于中型算法的參數(shù):DerivativeCheck-對用戶提供的導(dǎo)數(shù)和有限差分求出的導(dǎo)數(shù)進(jìn)行對比。DiffMaxChange -變量有限差分梯度的最大變化。DiffMinChange -變量有限差分梯度的最小變化。LineSearchType - 一維搜索算法的選擇。exitflag描述退出條件:0表示目標(biāo)函數(shù)收斂于解 x處

21、。0表示已經(jīng)達(dá)到函數(shù)評價(jià)或迭代的最大次數(shù)。0表示目標(biāo)函數(shù)不收斂。該參數(shù)包含下列優(yōu)化信息:output.iterations-迭代次數(shù)。output.algorithm-所采用的算法。outputoutput.funcCount-函數(shù)評價(jià)次數(shù)。output.cgiterations-PCG迭代次數(shù)(只適用于大型規(guī)劃問題)。output.stepsize最終步長的大?。ㄖ挥糜谥行蛦栴})。output.firstorderopt-一階優(yōu)化的度量:解 x處梯度的范數(shù)。1 .對于求解平方和的問題,fminunc函數(shù)不是最好的選擇,用Isqnonlin 函數(shù) 效果更佳。2.使用大型方法時(shí),必須通過將opt

22、ions.GradObj設(shè)置為on來提供梯度信息, 否則將給出警告信息。算法:大型優(yōu)化算法若用戶在fun函數(shù)中提供梯度信息,則缺省時(shí)函數(shù)將選擇大型優(yōu) 化算法,該算法是基于內(nèi)部映射牛頓法的子空間置信域法, 理論描述可參見文獻(xiàn) 8,9。計(jì)算中的每一次迭代涉及到用 PCG法求解大型線性系統(tǒng)得到的近似解。中型優(yōu)化算法此時(shí)fminunc函數(shù)的參數(shù)options.LargeScale 設(shè)置為off 。該算法采用的是基于二次和三次混合插值一維搜索法的BFGS以牛頓法。該法通過BFGS公式來更新Hessian矩陣。通過將HessUpdate參數(shù)設(shè)置為dfp,可以用 DFP公式來求得Hessian矩陣逆的近似。

23、通過將HessUpdate參數(shù)設(shè)置為 steepdesc,可以用最速下降法來更新 Hessian矩陣。但一般不建議使用最速 下降法。缺省時(shí)的一維搜索算法,當(dāng) options.LineSearchType 設(shè)置為quadcubic時(shí),將 采用二次和三次混合插值法。將 optio ns.L in eSearchType 設(shè)置為cubicpoly 時(shí),將采用三次插值法。第二種方法需要的目標(biāo)函數(shù)計(jì)算次數(shù)更少,但梯度的計(jì)算次數(shù)更多。這樣,如果提供了梯度信息,或者能較容易地算得,則三次插值法 是更佳的選擇。局限性:1.目標(biāo)函數(shù)必須是連續(xù)的。fminunc函數(shù)有時(shí)會(huì)給出局部最優(yōu)解。2.fminunc函數(shù)只對

24、實(shí)數(shù)進(jìn)行優(yōu)化,即x必須為實(shí)數(shù),而且f(x)必須返回 實(shí)數(shù)。當(dāng)x為復(fù)數(shù)時(shí),必須將它分解為實(shí)部和虛部。3.在使用大型算法時(shí),用戶必須在fun函數(shù)中提供梯度(options參數(shù)中 GradObj屬性必須設(shè)置為on)。4.目前,若在fun函數(shù)中提供了解析梯度,則options參數(shù)DerivativeCheck不能用于大型算法以比較解析梯度和有限差分梯度。通過將options參數(shù)的MaxIter屬性設(shè)置為0來用中型方法核對導(dǎo)數(shù)。然后重新用大型方法求解問題。 參見:fmin search, optimset, i nli nefminsearch 函數(shù)功能:求解多變量無約束函數(shù)的最小值。 數(shù)學(xué)模型:其中x

25、為向量,f(x)為函數(shù),返回標(biāo)量。語法:x = fmin search(fu n,xO)x = fmi nsearch(fu n,xO,optio ns)x = fmi nsearch(fu n,xO,optio ns,P1,P2,.)x,fval = fmin search(.)x,fval,exitflag = fmin search(.)x,fval,exitflag,output = fmin search(.)描述:fmin search求解多變量無約束函數(shù)的最小值。該函數(shù)常用于無約束非線性最優(yōu) 化問題。x = fminsearch(fun,x0)初值為x0,求fun函數(shù)的局部極小點(diǎn)

26、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ù)的退出條件。x,fval,exitflag,output = fmin search(.

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

28、, i nli ne9.2.4二次規(guī)劃問題924.1基本數(shù)學(xué)原理返回包含優(yōu)化信息的結(jié)構(gòu)輸出返回解x處包含拉格朗日quadprog函數(shù)得到的可能是局部如果某非線性規(guī)劃的目標(biāo)函數(shù)為自變量的二次函數(shù),約束條件全是線性函 數(shù),就稱這種規(guī)劃為二次規(guī)劃。其數(shù)學(xué)模型為:其中,H A和Aeq為矩陣,f, b, beq, lb , ub,和x為向量。924.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 = quadpro

29、g(H,f,A,b,Aeq,beq,lb,ub,xO)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,xO,optio ns) 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)

30、仍然求解上面的問題,但添加了等式約束條件Aeq*x = beq。x = quadprog(H,f,A,b,lb,ub)定義設(shè)計(jì)變量的下界lb和上界ub,使得lb = x=ub。x = quadprog(H,f,A,b,lb,ub,x0)同上,并設(shè)置初值 xO。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ù),描述計(jì)算

31、的退出條件。x,fval,exitflag,output = quadprog(.) output。x,fval,exitflag,output,lambda = quadprog(.) 乘子的lambda參數(shù)。變量:各變量的意義同前。1.一般地,如果問題不是嚴(yán)格凸性的,用最優(yōu)解。2.如果用Aeq和Beq明確地指定等式約束,而不是用lb和ub指定,則可以得到更好的數(shù)值解。3.若x的組分沒有上限或下限,則quadprog函數(shù)希望將對應(yīng)的組分設(shè)置為Inf (對于上限)或-Inf (對于下限),而不是強(qiáng)制性地給予上限一個(gè)很大的數(shù) 或給予下限一個(gè)很小的負(fù)數(shù)。4.對于大型優(yōu)化問題,若沒有提供初值xO,或

32、x0不是嚴(yán)格可行,則quadprog 函數(shù)會(huì)選擇一個(gè)新的初始可行點(diǎn)。5.若為等式約束,且 quadprog函數(shù)發(fā)現(xiàn)負(fù)曲度(negative curvature),則優(yōu)化過程終止,exitflag 的值等于-1。算法:大型優(yōu)化算法 當(dāng)優(yōu)化問題只有上界和下界,而沒有線性不等式或等式約束,則 缺省算法為大型算法。或者,如果優(yōu)化問題中只有線性等式,而沒有上界和下界 或線性不等式時(shí),缺省算法也是大型算法。本法是基于內(nèi)部映射牛頓法(interior-reflective Newton method)的子空間置信域法(subspace trust-region )。該法的具體算法請參見文獻(xiàn)2。該法的每一次迭

33、代都與用PCG法求解大型線性系統(tǒng)得到的近似解有關(guān)。中型優(yōu)化算法 quadprog函數(shù)使用活動(dòng)集法,它也是一種投影法,首先通過求解線性規(guī)劃問題來獲得初始可行解。診斷:1.大型優(yōu)化問題大型優(yōu)化問題不允許約束上限和下限相等,如若lb(2)=ub(2),則給出以下出錯(cuò)信息:Equal upper and lower bounds not permitted in this large-scalemethod.Use equality con stra ints and the medium-scale method in stead.若優(yōu)化模型中只有等式約束,仍然可以使用大型算法;如果模型中既有等式

34、約束又有邊界約束,則必須使用中型方法。2.中型優(yōu)化問題當(dāng)解不可行時(shí),quadprog函數(shù)給出以下警告:Warning: The con stra ints are overly stri ngen t;there is no feasible soluti on.這里,quadprog函數(shù)生成使約束矛盾最壞程度最小的結(jié)果。當(dāng)?shù)仁郊s束不連續(xù)時(shí),給出下面的警告信息:Warning: The equality con stra ints are overly stri ngen t;there is no feasible soluti on.當(dāng)Hessian矩陣為負(fù)半定時(shí),生成無邊界解,給出下面的

35、警告信息:Warning: The solution is unbounded and at infinity;the constraintsare not restrictive eno ugh.這里,quadprog函數(shù)返回滿足約束條件的x值。局限性:1.此時(shí),顯示水平只能選擇off 和final,迭代參數(shù)iter不可用。2.當(dāng)問題不定或負(fù)定時(shí),常常無解(此時(shí) exitflag 參數(shù)給出一個(gè)負(fù)值,表 示優(yōu)化過程不收斂)。若正定解存在,則quadprog函數(shù)可能只給出局部極小值, 因?yàn)閱栴}可能時(shí)非凸的。3.對于大型問題,不能依靠線性等式,因?yàn)锳eq必須是行滿秩的,即Aeq的行數(shù)必須不多于列數(shù)

36、。若不滿足要求,必須調(diào)用中型算法進(jìn)行計(jì)算。9.243 應(yīng)用實(shí)例例一求解下面的最優(yōu)化問題:目標(biāo)函數(shù)約束條件首先,目標(biāo)函數(shù)可以寫成下面的矩陣形式:其中輸入下列系數(shù)矩陣:H = 1-1; -1 2f = -2; -6A = 1 1; -1 2; 2 1b = 2; 2; 3lb = zeros(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: me

37、dium-scale: active-setfirstorderopt:cgiteratio ns:lambda.i neqli nans =3.11110.44440lambda .lo werans =00磁盤中本問題的M文件為opt24_1.m9.2.5 有約束最小化925.1基本數(shù)學(xué)原理在有約束最優(yōu)化問題中,通常要將該問題轉(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) 化問題

38、求解的必要條件。假設(shè)有所謂的Convex規(guī)劃問題,f(x)和Gi(x),i=1,2,m為Convex函數(shù),則K-T方程對于求得全局極小點(diǎn)是必要的,也是充 分的。對于規(guī)劃問題其中,x是設(shè)計(jì)參數(shù)向量,(xRn),f(x)為目標(biāo)函數(shù),返回標(biāo)量值,向量 函數(shù)qx)返回等式約束和不等式約束在 x處的值。它的K-T方程可表達(dá)為:(*)i=1 ,,mi=me+1,,m其中第一行描述了目標(biāo)函數(shù)和約束條件在解處梯度的取消。由于梯度取消, 需要用拉格朗日乘子 入i(i=1,2,m)來平衡目標(biāo)函數(shù)與約束梯度間大小的差 異。K-T方程的解形成了許多非線性規(guī)劃算法的基礎(chǔ),這些算法直接計(jì)算拉格朗 日乘子,通過用擬牛頓法更

39、新過程,給K-T方程積累二階信息,可以保證有約束 擬牛頓法的超線性收斂。這些方法稱為序列二次規(guī)劃法( SQP,因?yàn)樵诿恳淮?主要的迭代中都求解一次二次規(guī)劃問題。對于給定的規(guī)劃問題,序列二次規(guī)劃(SQP的主要的思路是形成基于拉格 朗日函數(shù)二次近似的二次規(guī)劃子問題,即這里,通過假設(shè)約束條件為不等式約束來使(*)式得到了簡化,通過非線 性有約束問題線性化來獲得二次規(guī)劃子問題。二次規(guī)劃子問題可表達(dá)為i =1,mi =m+1,m該子問題可以用任意一種二次規(guī)劃算法求解,求得的解可以用來形成新的迭 代公式 Xk+i=Xk+a kdk。用SQP法求解非線性有約束問題時(shí)的迭代次數(shù)常比用解無約束問題時(shí)的少, 因?yàn)?/p>

40、在搜索區(qū)域內(nèi),SQF方法可以獲得最佳的搜索方向和步長信息。給Rosenbrock函數(shù)添加非線性不等式約束g(x)經(jīng)過96次迭代得到問題的解:x=0.9072,0.8288,初值為x=-1.9,2, 無約束問題則需要140次迭代。圖9-3是搜索路徑圖。圖9-3 SQP法的搜索路徑MATLAB中SQP法的實(shí)現(xiàn)分三步,即 拉格朗日函數(shù)Hessian矩陣的更新; 二次規(guī)劃問題求解; 一維搜索和目標(biāo)函數(shù)的計(jì)算(一)、Hessian矩陣的更新在每一次主要迭代過程中,都用BFGS法計(jì)算拉格朗日函數(shù)的Hessian矩陣 的擬牛頓近似矩陣。更新公式為:其中:上式中,入i(i =1,2,,m為拉格朗日乘子的估計(jì)。

41、(二)、二次規(guī)劃求解SQP法的每一次主要迭代過程中都要求一次二次規(guī)劃問題,形式如下:i =1,,mi =m+1,m求解過程分兩步,第一步涉及可行點(diǎn)(若存在)的計(jì)算,第二步為可行點(diǎn) 至解的迭代序列。在第一步中,需要有可行點(diǎn)作為初值,若當(dāng)前點(diǎn)不可行,則通過求解下列線性規(guī)劃問題可以得到一個(gè)可行點(diǎn):i =1,mei =me+1,m其中,A為矩陣A的第i行。(三)、一維搜索和目標(biāo)函數(shù)的計(jì)算二次規(guī)劃子問題的解生成一個(gè)向量dk,它形成一個(gè)新的迭代公式:a k為步長參數(shù)。目標(biāo)函數(shù)的形式如下:其中,i =1,m925.2相關(guān)函數(shù)介紹fmincon 函數(shù)功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學(xué)模型:其中,x,

42、 b , beq, lb ,和ub為向量,A和Aeq為矩陣,c(x)和ceq(x)為 函數(shù),返回標(biāo)量。f(x), c(x),和ceq(x)可以是非線性函數(shù)。語法:x = fmincon(fun ,xO,A,b)x = fmincon(fun ,xO,A,b,Aeq,beq)x = fmincon(fun, xO,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, opti ons)x = fmincon(fun, x0,A

43、,b,Aeq,beq,lb,ub ,nonlcon, opti on s,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,hessia n = fmincon (.) 描述:fmincon求多變量有約束非線性

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

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

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

47、mincon(.)返回解 x 處 fun 函數(shù)的梯度。x,fval,exitflag,output,lambda,grad,hessian = fmincon(.)返回:解 x處fun函數(shù)的Hessian矩陣。變量:nonIcon 參數(shù)該參數(shù)計(jì)算非線性不等式約束 c(x)=0和非線性等式約束ceq(x)=0。 nonlcon 參數(shù)是一個(gè)包含函數(shù)名的字符串。該函數(shù)可以是 M文件、內(nèi)部文件或MEX文件。 它要求輸入一個(gè)向量x,返回兩個(gè)變量一解x處的非線性不等式向量c和非線性 等式向量ceq。例如,若nonlcon=mycon,貝U M文件mycon.m具有下面的形式: fun cti on c,c

48、eq = mycon(x)c = .% 計(jì)算x處的非線性不等式。ceq = . % 計(jì)算x處的非線性等式。若還計(jì)算了約束的梯度,即opti ons = optimset(GradC on str, on)則nonIcon函數(shù)必須在第三個(gè)和第四個(gè)輸出變量中返回c(x)的梯度GCffi ceq(x)的梯度Gceq當(dāng)被調(diào)用的nonlcon函數(shù)只需要兩個(gè)輸出變量(此時(shí)優(yōu)化算法只 需要c和ceq的值,而不需要GC和GCeq時(shí),可以通過查看nargout的值來避 免計(jì)算GC和 Gceq的值。fun cti on c,ceq,GC,GCeq = myc on(x)解x處的非線性不等式。解x處的非線性等式。被

49、調(diào)用的nonlcon函數(shù),要求有4個(gè)輸出變量 不等式的梯度。等式的梯度。若nonlcon函數(shù)返回m元素的向量c和長度為n的x,則c(x)的梯度GC是一個(gè) 的向量,貝U ceq(x)的梯度Gceq是一個(gè)n*p的矩陣,其中Gceq(ij)是ceq(j)對 x(i)的偏導(dǎo)數(shù)。n*m的矩陣,其中GC(i,j)是i)的偏導(dǎo)數(shù)。同樣,若ceq是一個(gè)p元素其它參數(shù)意義同前。大型優(yōu)化問題:1.使用大型算法,必須在fun函數(shù)中提供梯度信息(options.GradObj設(shè)置 為on)。如果沒有梯度信息,則給出警告信息。fmincon函數(shù)允許g(x)為一近似梯度,但使用真正的梯度將使優(yōu)化過程更具穩(wěn)健性。2.當(dāng)對矩

50、陣的二階導(dǎo)數(shù)(即 Hessian矩陣)進(jìn)行計(jì)算以后,用該函數(shù)求解大型 問題將更有效。但不需要求得真正的Hessian矩陣,如果能提供Hessian矩陣的 稀疏結(jié)構(gòu)的信息(用options參數(shù)的HessPattern屬性),則fmincon函數(shù)可以 算得Hessian矩陣的稀疏有限差分近似。3.若xO不是嚴(yán)格可行的,則fmincon函數(shù)選擇一個(gè)新的嚴(yán)格可行初始點(diǎn)。4 .若x的某些元素沒有上界或下界,則fmincon函數(shù)更希望對應(yīng)的元素設(shè)置為 Inf (對于上界)或-Inf (對于下界),而不希望強(qiáng)制性地給上界賦一個(gè)很大的 值,給下界賦一個(gè)很小的負(fù)值。5.線性約束最小化課題中也有幾個(gè)問題需要注意:

51、Aeq矩陣中若存在密集列或近密集列(A dense (或fairly dense ) column), 會(huì)導(dǎo)致滿秩并使計(jì)算費(fèi)時(shí)。fmincon函數(shù)剔除Aeq中線性相關(guān)的行。此過程需要進(jìn)行反復(fù)的因子分解,因 此,如果相關(guān)行很多的話,計(jì)算將是一件很費(fèi)時(shí)的事情。每一次迭代都要用下式進(jìn)行稀疏最小二乘求解 其中戌為前提條件的喬累斯基因子。中型優(yōu)化問題1.如果用Aeq和beq清楚地提供等式約束,將比用lb和ub獲得更好的數(shù)值解。2. 在二次子問題中,若有等式約束并且因等式(depe nde nt equalities )被發(fā) 現(xiàn)和剔除的話,將在過程標(biāo)題中顯示dependent(當(dāng)output參數(shù)要求使用

52、optio ns.Display = iter)。只有在等式連續(xù)的情況下,因等式才會(huì)被剔除。若等式系統(tǒng)不連續(xù),則子問題將不可行并在過程標(biāo)題中打印in feasible信息。算法:大型優(yōu)化算法缺省時(shí),若提供了函數(shù)的梯度信息,并且只有上下界存在或只有線性等式約束存在,則fmincon函數(shù)將選擇大型算法。本法是基于內(nèi)部映射牛頓 法(in terior-reflective Newt on method)的子空間置信域法(subspacetrust-region )。該法的具體算法請參見文獻(xiàn)2。該法的每一次迭代都與用 PCG 法求解大型線性系統(tǒng)得到的近似解有關(guān)。中型優(yōu)化算法fmincon函數(shù)使用序列二

53、次規(guī)劃法(SQP)。本法中,在每一步迭 代中求解二次規(guī)劃子問題,并用 BFGS法更新拉格朗日Hessian矩陣。參見文獻(xiàn) 3、6。該算法使用與文獻(xiàn)1、2和3中提供的相似的目標(biāo)函數(shù)進(jìn)行一維搜索。二次 子問題使用文獻(xiàn)4描述的活動(dòng)集方案進(jìn)行求解。診斷:大型優(yōu)化問題求大型優(yōu)化問題的代碼中不允許上限和下限相等,即不能有 lb( 2)=ub(2),否則給出下面的出錯(cuò)信息:Equal upper and lower bounds not permitted in this large-scalemethod.Use equality con stra ints and the medium-scale me

54、thod in stead.若只有等式約束,可以仍然使用大型算法。當(dāng)既有等式約束又有邊界約束時(shí),使用中型算法。局限:1.目標(biāo)函數(shù)和約束函數(shù)都必須是連續(xù)的,否則可能會(huì)給出局部最優(yōu)解。2.當(dāng)問題不可行時(shí),fmincon函數(shù)將試圖使最大約束值最小化。3.目標(biāo)函數(shù)和約束函數(shù)都必須是實(shí)數(shù)。4.對于大型優(yōu)化問題,使用大型優(yōu)化算法時(shí),用戶必須在fun函數(shù)中提供梯度(options參數(shù)的GradObj屬性必須設(shè)置為on),并且只可以指定上界和下界約束,或者只有線性約束必須存在,Aeq的行數(shù)不能多于列數(shù)。5.現(xiàn)在,如果在fun函數(shù)中提供了解析梯度,選項(xiàng)參數(shù)DerivativeCheck不能與大型方法一起用,以比

55、較解析梯度和有限差分梯度??梢酝ㄟ^將opti ons參數(shù)的Maxlter屬性設(shè)置為0來用中型方法核對導(dǎo)數(shù)。然后用大型方法求解問題。925.3應(yīng)用實(shí)例例一求解下列優(yōu)化問題目標(biāo)函數(shù)約束條件首先編寫一個(gè)M文件,返回x處的函數(shù)值opt25_1o.m。fun cti on f = myfun(x)f = -x(1) * x(2) * x(3);然后將約束條件改寫成下面形式的不等式因?yàn)閮蓚€(gè)約束條件都是線性的,將它們表達(dá)為矩陣不等式的形式,其中,下一步給定初值,并調(diào)用優(yōu)化過程x0 = 10; 10; 10;% 初值A(chǔ)=-1 -1 2 2;b=0;72;x,fval = fmi ncon( opt25_1o,

56、x0,A,b)經(jīng)過66次函數(shù)評價(jià)以后,得到問題的解x =24.000012.000012.0000函數(shù)值為fval =-3.4560e+03而且線性不等式約束的值=0A*x-b=-720磁盤中本問題的M文件為opt25_1.m。例二求側(cè)面積為常數(shù)6*52m2的體積最大的長方體體積。設(shè)該長方體的長、寬、高分別為 X1、X2和X3,據(jù)題意得到下面的數(shù)學(xué)模型:編一個(gè)M文件optim25_2o.m,返回x處的函數(shù)值f。fun cti on f = myfun(x)f = -x(1) * x(2) * x(3);由于約束條件是非線性等式約束,所以需要編寫一個(gè)約束條件M文件opt25_2c.m :fun

57、cti on c,ceq = myc on(x) ceq =x(2)x(3)+x(3)x(1)+x(1)x(2)-75下一步給定初值,并調(diào)用優(yōu)化過程(磁盤中M文件名為opt25_2.m)x0 = 4; 5; 6;lb=zeros(3,1);x,fval,exitflag,output,lambda=fmi neon (opt25_2o,x0,Ib,opt25_2c)計(jì)算結(jié)果為:Optimization terminated successfully:Search directi on less tha n 2*opti on s.TolX andmaximum constraint viola

58、tion is less than options.TolConActive Con strai nts:1x =5.00005.00005.0000fval =-125.0000exitflag =1output =iterations: 7fun cCou nt: 38stepsize: 1algorithm: medium-scale: SQP, Quasi-Newt on, li ne-searchfirstorderopt:cgiteratio ns:lambda =lower: 3x1 doubleupper: 3x1 doubleeqli n: 0 x1 doubleeqnonl

59、in: 2.5000ineqlin: 0 x1 doubleineqnon li n: 0 x1 double優(yōu)化結(jié)果顯示過程成功收斂,搜索方向小于兩倍options.TolX,最大違約值小于options.TolCon,主動(dòng)約束為1個(gè)。問題的解為 x(1)=x(2)=x(3)=5.0000m,最大體積為 125.0000m 3。exitflag=1, 表示過程成功收斂于解x處。output輸出變量顯示了收斂過程中的迭代次數(shù)、 目 標(biāo)函數(shù)計(jì)算次數(shù)、步長、算法等信息。lambda則包含模型信息。例三試設(shè)計(jì)一壓縮圓柱螺旋彈簧,要求其質(zhì)量最小。彈簧材料為65Mn,最大工作載荷Pmax=40N,最小工

60、作載荷為0,載荷變化頻率fr=25Hz,彈簧壽命 為104h,彈簧鋼絲直徑d的取值范圍為1-4mm,中徑D2的取值范圍為10-30mm, 工作圈數(shù)n不應(yīng)小于4.5圈,彈簧旋繞比C不應(yīng)小于4,彈簧一端固定,一端自 由,工作溫度為50C,彈簧變形量不小于10mm。本題的優(yōu)化目標(biāo)是使彈簧質(zhì)量最小,圓柱螺旋彈簧的質(zhì)量可以表示為其數(shù)學(xué)式中,-彈簧材料的密度,對于鋼材=7.8 xi0-6kg/mm3;n工作圈數(shù);n2死圈數(shù),常取n2=1.5-2.5,現(xiàn)取n2=2;D2彈簧中徑,mm ;d彈簧鋼絲直徑,mm。將已知參數(shù)代入公式,進(jìn)行整理以后得到問題的目標(biāo)函數(shù)為根據(jù)彈簧性能和結(jié)構(gòu)上的要求,可寫出問題的約束條件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論