




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、函數(shù):fminbnd功能:求取固定區(qū)間內(nèi)單變量函數(shù)的最小值,也就是一元函數(shù)最小值問題。函數(shù):fminsearch功能:求解多變量無約束函數(shù)的最小值。函數(shù):fminunc功能:求多變量無約束函數(shù)的最小值。函數(shù):quadprog功能:求解二次規(guī)劃問題。10.2 非線性規(guī)劃問題10.2.1非線性無約束規(guī)劃問題無約束規(guī)劃由3個功能函數(shù)fminbnd、fminsearch、fminunc實現(xiàn)。10.2.1.1 fminbnd函數(shù) 教材第28頁數(shù)學模型: 式中,和為標量,為函數(shù),返回標量。格式:x = fminbnd(fun,x1,x2)x = fminbnd(fun,x1,x2,options)x =
2、fminbnd(fun,x1,x2,options,P1,P2,.)x,fval = fminbnd(.)x,fval,exitflag = fminbnd(.)x,fval,exitflag,output = fminbnd(.)說明:fminbnd 求取固定區(qū)間內(nèi)單變量函數(shù)的最小值x = fminbnd(fun,x1,x2) 返回x1, x2區(qū)間上fun參數(shù)描述的標量函數(shù)的最小值點x。x = fminbnd(fun,x1,x2,options) 用options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x = fminbnd(fun,x1,x2,options,P1,P2,.) 提供另外的參數(shù)P1,P
3、2等,傳輸給目標函數(shù)fun。如果沒有設置options選項,則令options = 。x,fval = fminbnd(.) 返回解x處目標函數(shù)的值。x,fval,exitflag = fminbnd(.) 返回exitflag值描述fminbnd函數(shù)的退出條件。x,fval,exitflag,output = fminbnd(.) 返回包含優(yōu)化信息的結構輸出。·fun:需要最小化的目標函數(shù)。fun函數(shù)需要輸入標量參數(shù)x,返回x處的目標函數(shù)標量值f??梢詫un函數(shù)指定為命令行,如 x = fminbnd (inline (sin (x*x), x0)同樣,fun參數(shù)可以是一個包含函
4、數(shù)名的字符串。對應的函數(shù)可以是M文件、內(nèi)部函數(shù)或MEX文件。若fun = myfun, 則x = fminbnd(myfun,x0)其中M文件函數(shù)myfun.m必須為下面的形式 function f = myfun (x) f = %計算x處的函數(shù)值。·options:優(yōu)化參數(shù)選項。你可以用optimset函數(shù)設置或改變這些參數(shù)的值。Options參數(shù)有以下幾個選項: ·Display 顯示的水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程的輸出;選擇final,顯示最終結果; ·MaxFunEvals 函數(shù)評價的最大允許次數(shù); ·MaxI
5、ter 最大允許迭代次數(shù); ·TolX x處的終止容限。·exitflag:描述退出條件: ·>0 表示目標函數(shù)收斂于解x處; ·0 表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù); ·<0 表示目標函數(shù)不收斂。·output:該參數(shù)包含下列優(yōu)化信息: ·output .iteratiions 迭代次數(shù); ·output .algorithm 所采用的算法; ·output .funcCount 函數(shù)評價次數(shù)。注意:(1)目標函數(shù)必須是連續(xù)的;(2)fminbnd函數(shù)可能只給出局部最優(yōu)解;(3)當問題的
6、解位于區(qū)間邊界上時,fminbnd函數(shù)的收斂速度常常很慢。此時,fmincon函數(shù)的計算速度更快,計算精度更高;(4)fminbnd函數(shù)只用于實數(shù)變量。例10-4 在(0, 上求函數(shù)sinx的最小值。解:Matlab中實現(xiàn):>> x,y_min=fminbnd('sin(x)',0,2*pi)x = 4.7124y_min = -1.0000或>> x,y_min=fminbnd(sin,0,2*pi) 內(nèi)部函數(shù)的用法x = 4.7124y_min = -1.0000P28,例3.11求函數(shù)f(x)=(x-3)2-1,x0,5的最小值>> x
7、,y=fminbnd(inline('(x-3)2-1'),0,5)x = 3y = -1或>> x,y=fminbnd('(x-3)2-1',0,5)x = 3y = -1 例10-5 對邊長為3m的正方形鐵板,在四個角處剪去相等的小正方形以制成方形無蓋盒子,問如何剪法使盒子容積最大?解:設剪去的正方形的邊長為x,則盒子容積為 f (x) = (3-2x)2 x現(xiàn)在要求在區(qū)間(0, 1.5)上確定x,使f (x)最大化。因為優(yōu)化工具箱中要求目標函數(shù)最小化,所以需要對目標函數(shù)進行轉換,即要求-f (x)最小化。在Matlab中實現(xiàn):>>
8、x,f_min=fminbnd('-(3-2*x)2*x',0,1.5)x = 0.5000f_min = -2.0000或編寫M文件Ex1005.m>> x,f_min=fminbnd(Ex1005,0,1.5)x = 0.5000f_min = -2.0000即剪去邊長為0.5 m的正方形,最大容積為2 m3。10.2.1.2 fminsearch函數(shù)教材第23頁函數(shù):fminsearch功能:求解多變量無約束函數(shù)的最小值。數(shù)學模型: 其中,為向量,為一函數(shù),返回標量。 格式:x = fminsearch(fun,x0)x = fminsearch(fun,x0
9、,options)x = fminsearch(fun,x0,options,P1,P2,.)x,fval = fminsearch(.)x,fval,exitflag = fminsearch(.)x,fval,exitflag,output = fminsearch(.)說明:fminsearch 求解多變量無約束函數(shù)的最小值。該函數(shù)常用于無約束非線性最優(yōu)化問題。x = fminsearch(fun,x0) 初值為x0,求fun函數(shù)的局部極小點x。x0可以是標量、向量或矩陣。x = fminsearch(fun,x0,options) 用options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x =
10、fminsearch(fun,x0,options,P1,P2,.) 將問題參數(shù)P1、P2等直接輸給目標函數(shù)fun,將options參數(shù)設置為空矩陣,作為options參數(shù)的默認值。x,fval = fminsearch(.) 將x處的目標函數(shù)值返回到fval參數(shù)中。x,fval,exitflag = fminsearch(.) 返回exitflag值,描述函數(shù)的退出條件。x,fval,exitflag,output = fminsearch(.) 返回包含優(yōu)化信息參數(shù)output的結構輸出。各變量的意義同前及下面fminunc函數(shù)。注意:(1)應用fminsearch函數(shù)可能會得到局部最優(yōu)解
11、;(2)fminsearch函數(shù)只對實數(shù)進行最小化,即x必須由實數(shù)組成,f (x)函數(shù)必須返回實數(shù)。如果x為復數(shù),則必須將它分為實數(shù)部和虛數(shù)部兩部分;(3)對于求解二次以上的問題,fminunc函數(shù)比fminsearch函數(shù)有效,但對于高度非線性不連續(xù)問題時,fminsearch函數(shù)更具穩(wěn)鍵性。(4)fminsearch函數(shù)不適合求解平方和問題,用lsqnonlin函數(shù)更好一些。例10-6 求2x13+4x1x23-10x1x2+x22的最小值。解:在Matlab中實現(xiàn)如下:>> f='2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2'
12、%直接定義函數(shù)>> x0=0,0;>> x,f_min=fminsearch(f,x0)x = 1.0016 0.8335f_min = -3.3241或在Matlab編輯器中編輯M文件Ex1006.m:function f=Ex1006(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;x0=0,0;命令窗口運行:>> x,f_min=fminsearch(Ex1006,x0)x = 1.0016 0.8335f_min = -3.3241運行后結果一致。10.2.1.3 fminunc函數(shù)教材第23頁函數(shù):fminu
13、nc功能:求多變量無約束函數(shù)的最小值。數(shù)學模型: 其中,為向量,為一函數(shù),返回標量。 格式: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(.)說明:
14、fminunc 給定初值,求多變量標量函數(shù)的最小值。常用于無約束非線性最優(yōu)化問題。x = fminunc(fun,x0) 給定初值x0,求fun函數(shù)的局部極小點x。x0可以是標量、向量或矩陣。x = fminunc(fun,x0,options) 用options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x = fminunc(fun,x0,options,P1,P2,.) 將問題參數(shù)P1、P2等直接輸給目標函數(shù)fun,將options參數(shù)設置為空矩陣,作為options參數(shù)的默認值。x,fval = fminunc(.) 將x處的目標函數(shù)值返回到fval參數(shù)中。x,fval,exitflag = fmi
15、nunc(.) 返回exitflag值,描述函數(shù)的退出條件。x,fval,exitflag,output = fminunc(.) 返回包含優(yōu)化信息參數(shù)output的結構輸出。x,fval,exitflag,output,grad = fminunc(.) 將解x處fun函數(shù)的梯度值返回到grad參數(shù)中。x,fval,exitflag,output,grad,hessian = fminunc(.) 將解x處目標函數(shù)的Hessian矩陣信息返回到hessian參數(shù)中。·fun變量:為目標函數(shù)。需要最小化的目標函數(shù)。fun函數(shù)需要輸入向量參數(shù)x,返回x處的目標函數(shù)標量值f。可以將fun
16、函數(shù)指定為命令行,如x = fminunc(inline('norm(x)2'),x0)同樣,fun函數(shù)可以是一個包含函數(shù)名的字符串。對應的函數(shù)可以是M文件、內(nèi)部函數(shù)或MEX文件。若fun = myfun,則x = fminunc(myfun,x0)其中M文件函數(shù)myfun.m必須有下面的形式:function f = myfun (x)f = %計算x處的函數(shù)值。若fun函數(shù)的梯度可以算得,且options.GradObj設為on(用下式設定) options = optimset (GradObj, on)則fun函數(shù)必須返回解x處的梯度向量g到第二個輸出變量中去。注意,當
17、被調(diào)用的fun函數(shù)只需要一個輸出變量時(如算法只需要目標函數(shù)的值而不需要其梯度值時),可以通過核對nargout的值來避免計算梯度值functionf, g = myfun (x)f = %計算x處的函數(shù)值if nargout > 1 %調(diào)用fun函數(shù)并要求有兩個輸出變量 g = %計算x處的梯度值end若Hessian矩陣可以求得,并且options. Hessian設為on,即 options = optimset (Hessian, on)則fun函數(shù)必須返回解x處的Hessian對稱矩陣H到第三個輸出變量中去。注意,當被調(diào)用的fun函數(shù)只需要一個或兩個輸出變量時(如算法只需要目標
18、函數(shù)的值f和梯度值g而不需要Hessian矩陣H時),可以通過核對nargout的值來避免計算Hessian矩陣functionf, g = myfun (x)f = %計算x處的函數(shù)值if nargout > 1 %調(diào)用fun函數(shù)并要求有兩個輸出變量 g = %計算x處的梯度值 if nargout > 2 H = %計算x處的Hessian矩陣end·options變量:優(yōu)化參數(shù)選項??梢酝ㄟ^optimset函數(shù)設置或改變這些參數(shù)。其中有的參數(shù)適用于所有的優(yōu)化算法,有的則只適用于大型優(yōu)化問題,另外一些則只適用于中型問題。首先描述適用于大型問題的選項。這僅僅是一個參考,
19、因為使用大型問題算法有一些條件。對于fminunc函數(shù)來說,必須提供梯度信息 ·LargeScale 當設為on時,使用大型算法,若設為off則使用中型問題的算法適用于大型和中型算法的參數(shù): ·Diagnostics 打印最小化函數(shù)的診斷信息 ·Display 顯示水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程的輸出;選擇final,顯示最終結果 ·GradObj 用戶定義的目標函數(shù)的梯度。對于大型問題此參數(shù)是必選的,對于中型問題則是可選項 ·MaxFunEvals 函數(shù)評價的最大次數(shù) ·MaxIter 最大允許迭代次
20、數(shù) ·TolFun 函數(shù)值的終止容限 ·TolX x處的終止容限只適用于大型算法的參數(shù): ·Hessian 用戶定義的目標函數(shù)的Hessian矩陣 ·HessPattern 用于有限差分的Hessian矩陣的稀疏形式。若不方便求fun函數(shù)的稀疏Hessian矩陣H,可以通過用梯度的有限差分獲得的H的稀疏結構(如非零值的位置等)來得到近似的Hessian矩陣H。若連矩陣的稀疏結構都不知道,則可以將HessPattern設為密集矩陣,在每一次迭代過程中,都將進行密集矩陣的有限差分近似(這是默認設置)。這將非常麻煩,所以花一些力氣得到Hessian矩陣的稀疏結
21、構還是值得的 ·MaxPCGIter PCG迭代的最大次數(shù) ·PrecondBandWidth PCG前處理的上帶寬,默認時為零。對于有些問題,增加帶寬可以減少迭代次數(shù) ·TolPCG PCG迭代的終止容限 ·TypicalX 典型x值只適用于中型算法的參數(shù): ·DerivativeCheck 對用戶提供的導數(shù)和有限差分求出的導數(shù)進行對比 ·DiffMaxChange 變量有限差分梯度的最大變化 ·DiffMixChange 變量有限差分梯度的最小變化 ·LineSearchType 一維搜索算法的選擇·
22、exitflag變量:描述退出條件: ·>0 表示目標函數(shù)收斂于解x處 ·0 表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù) ·<0 表示目標函數(shù)不收斂·output變量:該參數(shù)包含下列優(yōu)化信息: ·output.iterations 迭代次數(shù) ·output.algorithm 所采用的算法 ·output.funCount 函數(shù)評價次數(shù) ·output.cgiterations PCG迭代次數(shù)(只適用于大型規(guī)劃問題) ·output.stepsize 最終步長的大?。ㄖ贿m用于中型問題) ·
23、output.firstorderopt 一階優(yōu)化的度量,解x處梯度的范數(shù)注意:(1)目標函數(shù)必須是連續(xù)的。fminunc函數(shù)有時會給出局部最優(yōu)解;(2)fminunc函數(shù)只對實數(shù)進行優(yōu)化,即x必須為實數(shù),而且f (x)必須返回實數(shù)。當x為復數(shù)時,必須將它分解為實部和虛部;(3)在使用大型算法時,用戶必須在fun函數(shù)中提供梯度(options參數(shù)中GradObj屬性必須設置為on ),否則將給出警告信息; (4)目前,若在fun函數(shù)中提供了解析梯度,則options參數(shù)DerivativeCheck不能用于大型算法以比較解析梯度和有限差分梯度。通過將options參數(shù)的MaxIter屬性設置為
24、0來用中型方法核對導數(shù),然后重新用大型方法求解問題;(5)對于求解平方和問題,fminunc函數(shù)不是最好的選擇,用Isqnonlin函數(shù)效果更佳。例10-7 最小化下列函數(shù): f (x) = 3x12+2x1x2+x22解:使用M文件,創(chuàng)建文件Ex10071.m:function f=Ex10071(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2;然后調(diào)用fminunc函數(shù)求1,1附近f (x)函數(shù)的最小值:>> x0=1,1;>> x,fval=fminunc(Ex10071,x0)Warning: Gradient must be provided fo
25、r trust-region method; using line-search method instead.> In E:matlab6p1toolboxoptimfminunc.m at line 211 Optimization terminated successfully: Search direction less than 2*options.TolXx = 1.0e-008 * -0.7591 0.2665fval = 1.3953e-016下面用提供的梯度g最小化函數(shù),修改M文件為Ex10072.m:function f,g=Ex10072(x)f=3*x(1)2+2
26、*x(1)*x(2)+x(2)2;if nargout>1 g(1)=6*x(1)+2*x(2); g(2)=2*x(1)+2*x(2);end下面通過將優(yōu)化選項結構options.GradObj設置為on來得到梯度值。>> options=optimset('GradObj','on');>> x0=1,1;>> x,fval=fminunc(Ex10072,x0,options)Optimization terminated successfully: First-order optimality less than
27、 OPTIONS.TolFun, and no negative/zero curvature detectedx = 1.0e-015 * 0.1110 -0.8882fval = 6.2862e-031例10-8 求函數(shù)f (x) = e x1(4x12+2x22+4x1x2+2x2+1)的最小值。解:在Matlab中實現(xiàn):>>x,fval,exitflag,output=fminunc('exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)',-1,1)Warning: Gradient must be provide
28、d for trust-region method; using line-search method instead.> In E:matlab6p1toolboxoptimfminunc.m at line 211 Optimization terminated successfully: Current search direction is a descent direction, and magnitude of directional derivative in search direction less than 2*options.TolFunx = 0.5000 -1.
29、0000fval = 1.3028e-010exitflag = 1output = iterations: 7 funcCount: 40 stepsize: 1 firstorderopt: 8.1998e-004 algorithm: 'medium-scale: Quasi-Newton line search'例10-9 求無約束非線性問題 f (x) = 100 (x2-x12)2+(1-x1)2 x0 = -1.2, 1解:在Matlab中實現(xiàn):>> x0=-1.2,1;>> x,fval=fminunc('100*(x(2)-x(
30、1)2)2+(1-x(1)2',x0)Warning: Gradient must be provided for trust-region method; using line-search method instead.> In E:matlab6p1toolboxoptimfminunc.m at line 211Optimization terminated successfully: Current search direction is a descent direction, and magnitude of directional derivative in se
31、arch direction less than 2*options.TolFunx = 1.0000 1.0000fval = 1.9116e-01110.2.2 二次規(guī)劃教材第26頁數(shù)學模型:如果某非線性規(guī)劃的目標函數(shù)為自變量的二次函數(shù),約束條件全是線性函數(shù),就稱這種規(guī)劃為二次規(guī)劃。其數(shù)學模型為 其中,和為矩陣,和為向量。函數(shù):quadprog功能:求解二次規(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,
32、beq,lb,ub,x0)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,p1,p2,.)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
33、<=b。x = quadprog(H,f,A,b,Aeq,beq) 仍求上面的解,但添加了等式約束條件Aeq*x = beq。x = quadprog(H,f,A,b,Aeq,beq,lb,ub) 定義設計變量的下界lb和上界ub,使得lb<=x<=ub。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) 同上,并設置初值x0。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) 根據(jù)options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,opti
34、ons,p1,p2,.) 將參數(shù)P1,P2等直接輸給Hessian乘子函數(shù),如果存在,用options參數(shù)中的HessMult屬性指定。x,fval = quadprog(.) 返回解x處的目標函數(shù)fval = 1/2*x*H*x+f*x。x,fval,exitflag = quadprog(.) 返回exitflag參數(shù),描述計算的退出條件。x,fval,exitflag,output = quadprog(.) 返回包含優(yōu)化信息的結構輸出output。x,fval,exitflag,output,lambda = quadprog(.) 返回解x處包含Lagrange乘子的lambda參數(shù)
35、。各變量的意義同前。注意:(1)一般地,如果問題不是嚴格凸性的,用quadprog函數(shù)得到的可能是局部最優(yōu)解;(2)如果用Aeq和Beq明確地指定等式約束,而不是用lb和ub指定,則可以得到更好的數(shù)值解;(3)若x的組分沒有上限或下限,則quadprog函數(shù)希望將對應的組分設置為Inf(對于上限)或-Inf(對于下限),而不是強制性地給予上限一個很大的數(shù)或給予下限一個很小的負數(shù);(4)對于大型優(yōu)化問題,若沒有提供初值x0,或x0不是嚴格可行,則quadprog函數(shù)會選擇一個新的初始可行點;(5)若為等式約束,且quadprog函數(shù)發(fā)現(xiàn)負曲度(negative curvature),則優(yōu)化過程終
36、止,exitflag的值等于-1;(6)此時,顯示水平只能選擇off和final,迭代參數(shù)iter不可用;(7)當問題不定或負定時,常常無解(此時exitflag參數(shù)給出一個負值,表示優(yōu)化過程不收斂)。若正定解存在,則quadprog函數(shù)可能只給出局部極小值,因為問題可能是非凸的;(8)對于大型問題,不能依靠線性等式,因為Aeq必須是行滿秩的,即Aeq的行數(shù)必須不多于列數(shù)。若不滿足要求,必須調(diào)用中型算法進行計算;(9)大型化問題 大型化問題不允許約束上限和下限相等,如若lb (2)= =ub (2),則給出以下出錯信息:Equal upper and lower bounds not perm
37、itted in this large-scale method.Use equality constraints and the medium-scale method instead.若優(yōu)化模型中只有等式約束,仍然可以使用大型算法;如果模型中既有等式約束又有邊界約束,則必須使用中型方法。中型優(yōu)化問題 當解不可行時,quadprog函數(shù)給出以下警告:Warning: The constraints are overly stringent; there is no feasible solution.這里,quadprog函數(shù)生成使約束條件矛盾最壞程度最小的結果。當?shù)仁郊s束不連續(xù)時,給出下面
38、的警告信息:Warning: The equality constraints are overly stringent; there is no feasible solution.當Hessian矩陣為負半定時,生成無邊界解,給出下面的警告信息:Warning: The solution is unbounded and at infinity; the constraints are not restrictive enough.這里,quadprog函數(shù)返回滿足約束條件的x值。例10-10 求解下面的最優(yōu)化問題:目標函數(shù) 約束條件 解:首先,目標函數(shù)寫成下面的矩陣形式: ,在Matla
39、b中實現(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)Warning: Large-scale method does not currently solve this problem formulation,switching to medium-scale method.> In E:matlab6p1tool
40、boxoptimquadprog.m at line 213Optimization terminated successfully.x = 0.6667 1.3333fval = -8.2222exitflag = 1output = iterations: 3 algorithm: 'medium-scale: active-set' firstorderopt: cgiterations: lambda = lower: 2x1 double upper: 2x1 double eqlin: 0x1 double ineqlin: 3x1 double>> l
41、ambda.lowerans = 0 0>> lambda.ineqlinans = 3.1111 0.4444 010.2.3 有約束規(guī)劃教材第21頁函數(shù):fmincon功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學模型: 其中,和為向量,和為矩陣,和為函數(shù),返回標量。,和可以是非線性函數(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,nonlcon)x = fmin
42、con(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
43、,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可以是標量、向量或矩陣。x = fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函數(shù),約束條件為A*x<=b和Aeq*x = beq。若沒有不等式存在,則設置A = ,b = 。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定義設計變量x的下界lb和上
44、界ub,使得lb<=x<=ub。若無等式存在,則令Aeq = ,beq = 。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基礎上,在nonlcon參數(shù)中提供非線性不等式c (x)或等式ceq (x)。fmincon函數(shù)要求c (x)<=0且ceq (x) = 0。當無邊界存在時,令lb = 和(或)ub = 。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 用options參數(shù)指定的參數(shù)進行最小化。x = fmincon(fun,x0,A,b,Aeq,beq,l
45、b,ub,nonlcon,options,P1,P2, .) 將問題參數(shù)P1,P2等直接傳遞給函數(shù)fun和nonlcon。若不需要參數(shù)A,b,Aeq,beq,lb,ub,nonlcon和options,將它們設置為空矩陣。x,fval = fmincon(.) 返回解x處的目標函數(shù)值。x,fval,exitflag = fmincon(.) 返回exitflag參數(shù),描述計算的退出條件。x,fval,exitflag,output = fmincon(.) 返回包含優(yōu)化信息的結構輸出output。x,fval,exitflag,output,lambda = fmincon(.) 返回解x處包
46、含Lagrange乘子的lambda參數(shù)。x,fval,exitflag,output,lambda,grad = fmincon(.) 返回解x處fun函數(shù)的梯度。x,fval,exitflag,output,lambda,grad,hessian = fmincon(.) 返回解x處fun函數(shù)的Hessian矩陣。·nonlcon參數(shù)該參數(shù)計算非線性不等式約束c (x)<=0和非線性等式約束ceq (x) = 0。nonlcon參數(shù)是一個包含函數(shù)名的字符串。該函數(shù)可以是M文件、內(nèi)部文件或MEX文件。它要求輸入一個向量x,返回兩個變量解x處的非線性不等式向量c和非線性等式向量
47、ceq。例如,若nonlcon = mycon,則M文件mycon.m具有下面的形式:function c, ceq = mycon (x)c = %計算x處的非線性不等式ceq = %計算x處的非線性等式若還計算了約束的梯度,即 options = optimset (GradConstr, on)則nonlcon函數(shù)必須在第三個和第四個輸出變量中返回c (x)的梯度GC和ceq (x)的梯度GCeq。當被調(diào)用的nonlcon函數(shù)只需要兩個輸出變量(此時優(yōu)化算法只需要c和ceq的值,而不需要GC和GCeq)時,可以通過查看nargout的值來避免計算GC和GCeq的值。function c,
48、 ceq, GC, GCeq = mycon (x)c = %解x處的非線性不等式ceq = %解x處的非線性等式if nargout>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)的偏導數(shù)。同樣,若ceq是一個p元素的向量,則ceq (x)的梯度GCeq是一個n×p的矩陣,其中GCeq(i, j)是ceq (j)對x (i)的偏導數(shù)。其它參數(shù)意義同前。注意:(1)
49、大型優(yōu)化問題: (1.1)使用大型算法,必須在fun函數(shù)中提供梯度信息(options.GradObj設置為on)。如果沒有梯度信息,則將給出警告信息。 Fmincon函數(shù)允許g (x)為一近似梯度,但使用真正的梯度將使優(yōu)化過程更具穩(wěn)鍵性。 (1.2)當對矩陣的二階導數(shù)(即Hessian矩陣)進行計算后,用該函數(shù)求解大型問題將更有效。但不需要求得真正的Hessian矩陣,如果能提供Hessian矩陣稀疏結構的信息(用options參數(shù)的HessPattern屬性),則fmincon函數(shù)可以算得Hessian矩陣的稀疏有限差分近似。 (1.3)若x0不是嚴格可行的,則fmincon函數(shù)選擇一個新
50、的嚴格可行初始點。 (1.4)若x的某些元素沒有上界或下界,則fmincon函數(shù)更希望對應的元素設置為Inf(對于上界)或-Inf(對于下界),而不希望強制性地給上界賦一個很大的值,給下界一個很小的負值。 (1.5)線性約束最小化課題中也有幾個問題需要注意: ·Aeq矩陣中若存在密集列或近密集列(A dense or fairly dense column),會導致滿秩并使計算費時; ·fmincon函數(shù)剔除Aeq中線性相關的行。此過程需要進行反復的因子分解,因此,如果相關行很多的話,計算將是一件很費時的事情; ·每一次迭代都要用下式進行稀疏最小二乘求解 其中為前
51、提條件的Cholesky(喬累斯基)因子。(2)中型優(yōu)化問題: (2.1)如果用Aeq和beq清楚地提供等式約束,將比用lb和ub獲得更好的數(shù)值解。 (2.2)在二次子問題中,若有等式約束并且因等式(dependent equalities)被發(fā)現(xiàn)和剔除的話,將在過程標題中顯示 dependent(當output參數(shù)要求使用options.Display = iter)。只有在等式連續(xù)的情況下,因等式才會被剔除。若等式系統(tǒng)不連續(xù),則子問題將不可行并在過程標題中打印infeasible信息。(3)求大型優(yōu)化問題的代碼中不允許上限和下限相等,即不能有l(wèi)b (2)= =ub (2),否則給出下面的出
52、錯信息:Equal upper and lower bounds not permitted in this large-scale method.Use equality constraints and the medium-scale method instead. 若只有等式約束,仍然可以使用大型算法。當既有等式約束又有邊界約束時,使用中型算法。(4)目標函數(shù)和約束函數(shù)都必須是連續(xù)的,否則可能會只給出局部最優(yōu)解。(5)當問題不可行時,fmincon函數(shù)將試圖使最大約束值最小化。(6)目標函數(shù)和約束函數(shù)都必須是實數(shù)。(7)對于大型優(yōu)化問題,使用大型優(yōu)化算法時,用戶必須在fun函數(shù)中提供梯度(options參數(shù)的GradObj屬性必須設置為on),并且只可指定上界和下界約束,或者只有線性約束必須存在,Aeq的行數(shù)不能多于列數(shù)。(8)如果在fun函數(shù)中提供了解析梯度,選項參數(shù)DerivativeCheck不能與大型方法一起用,以比較解析梯度和有限差分梯度??梢酝ㄟ^將options參數(shù)的MaxIter屬性設置為0來用中型方法核對導數(shù),然后用大型方法求解問題。例10-11 求解下列優(yōu)化問題:本題可用lingo求解目標函數(shù) 約束條件 解:將約束條件改寫成下面的不等式 兩個約束條件都是線性的,在Matlab中實現(xiàn):>>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信鐵塔施工方案
- 化工廠排水溝格柵施工方案
- 路緣石施工方案
- grc窗下線施工方案
- 轉運站施工方案
- 辦公樓的施工方案
- 集鎮(zhèn)改造項目施工方案
- 詩歌朗誦活動方案
- 班長就職發(fā)言稿
- 既有公路頂進涵施工方案
- 2024-2025學年湖南省長沙市雅禮教育集團八年級(上)創(chuàng)新素養(yǎng)數(shù)學試卷(含答案)
- 中醫(yī)藥膳專題講座培訓課件
- 2022版義務教育藝術課程標準美術新課標學習解讀課件
- 辦公樓建筑結構設計(畢業(yè)設計)
- 軸對稱圖形(課件)-2023-2024學年二年級下冊數(shù)學人教版-1
- 盤扣支模架工程監(jiān)理細則
- 空心杯電機基礎知識
- DL-T+5839-2021土石壩安全監(jiān)測系統(tǒng)施工技術規(guī)范
- 移動商務專業(yè)教學資源庫申報書
- 人教鄂教版-科學-三年級下冊-知識點
- 交響音樂賞析智慧樹知到期末考試答案章節(jié)答案2024年西安交通大學
評論
0/150
提交評論