版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 函數(shù):fminbnd功能:求取固定區(qū)間內(nèi)單變量函數(shù)的最小值,也就是一元函數(shù)最小值問題。函數(shù):fminsearch功能:求解多變量無約束函數(shù)的最小值。函數(shù):fminunc功能:求多變量無約束函數(shù)的最小值。函數(shù):quadprog功能:求解二次規(guī)劃問題。非線性規(guī)劃問題非線性無約束規(guī)劃問題無約束規(guī)劃由3個功能函數(shù)fminbnd、fminsearch、fminunc實現(xiàn)fminbnd函數(shù)教材第28頁數(shù)學(xué)模型:minf(x)xxx0表示目標函數(shù)收斂于解x處;0表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù);x,y_min=fminbnd(sin(x),0,2*pi)x=4.7124y_min=-1.0000或x,
2、y_min=fminbnd(sin,0,2*pi)內(nèi)部函數(shù)的用法x=4.7124y_min=-1.0000P28,例3.11求函數(shù)f(x)=(x-3)2-l,xW0,5的最小值x,y=fminbnd(inline(x-3)A2-1),0,5)x=3y=-1或x,y=fminbnd(x-3)A2-1,0,5)x=3y=-1例10-5對邊長為3m的正方形鐵板,在四個角處剪去相等的小正方形以制成方形無蓋盒子,問如何剪法使盒子容積最大?解:設(shè)剪去的正方形的邊長為x,則盒子容積為f(x)=(3-2x)2x現(xiàn)在要求在區(qū)間(0,1.5)上確定X,使f(x)最大化。因為優(yōu)化工具箱中要求目標函數(shù)最小化,所以需要
3、對目標函數(shù)進行轉(zhuǎn)換,即要求-f(x)最小化。在Matlab中實現(xiàn):x,f_min=fminbnd(-(3-2*x)A2*x,0,1.5)x=0.5000f_min=-2.0000或編寫M文件Ex1005.mx,f_min=fminbnd(Ex1005,0,1.5)x=0.5000f_min=-2.0000即剪去邊長為0.5m的正方形,最大容積為2m3。fminsearch函數(shù)教材第23頁函數(shù):fminsearch功能:求解多變量無約束函數(shù)的最小值。數(shù)學(xué)模型:minf(x)x其中,x為向量,f(x)為一函數(shù),返回標量。格式:x=fminsearch(fun,x0)x=fminsearch(fun
4、,x0,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=fminsearch(fun
5、,x0,options,Pl,P2,.)將問題參數(shù)P1、P2等直接輸給目標函數(shù)fun,將options參數(shù)設(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的結(jié)構(gòu)輸出。各變量的意義同前及下面fminunc函數(shù)。注意:應(yīng)用fminsearch函數(shù)可能會得到局部最優(yōu)解;fminsearch函數(shù)只對實數(shù)進行最小化,即x必須
6、由實數(shù)組成,f(x)函數(shù)必須返回實數(shù)。如果x為復(fù)數(shù),則必須將它分為實數(shù)部和虛數(shù)部兩部分;對于求解二次以上的問題,fminunc函數(shù)比fminsearch函數(shù)有效,但對于高度非線性不連續(xù)問題時,fminsearch函數(shù)更具穩(wěn)鍵性。fminsearch函數(shù)不適合求解平方和問題,用lsqnonlin函數(shù)更好一些。例10-6求2x13+4x1x23-10 x1x2+x22的最小值。解:在Matlab中實現(xiàn)如下:f=2*x(1)A3+4*x(1)*x(2)A3-10*x(1)*x(2)+x(2)A2;%直接定義函數(shù)x0=0,0;x,f_min=fminsearch(f,x0)x=1.00160.8335
7、f_min=-3.3241或在Matlab編輯器中編輯M文件Exl006.m:functionf=Ex1006(x)f=2*x(l)A3+4*x(l)*x(2F3-10*x(l)*x(2)+x(2)A2;x0=0,0;命令窗口運行:x,f_min=fminsearch(Ex1006,x0)x=1.00160.8335f_min=-3.3241運行后結(jié)果一致。fminunc函數(shù)教材第23頁函數(shù):fminunc功能:求多變量無約束函數(shù)的最小值。數(shù)學(xué)模型:minf(x)x其中,x為向量,f(x)為一函數(shù),返回標量。格式:x=fminunc(fun,x0)x=fminunc(fun,x0,option
8、s)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(.)說明:fminunc給定初值,求多變量標量函數(shù)的最小值。常用于無約束非線性最優(yōu)化問題。x=fminunc(fun,x0)給定初值x0,求fun函數(shù)的局部極小點x。x0可以是標量、向量或矩陣。x=fminunc
9、(fun,x0,options)用options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x=fminunc(fun,x0,options,Pl,P2,.)將問題參數(shù)Pl、P2等直接輸給目標函數(shù)fun,將options參數(shù)設(shè)置為空矩陣,作為options參數(shù)的默認值。x,fval=fminunc(.)將x處的目標函數(shù)值返回到fval參數(shù)中。x,fval,exitflag=fminunc(.)返回exitflag值,描述函數(shù)的退出條件。x,fval,exitflag,output=fminunc(.)返回包含優(yōu)化信息參數(shù)output的結(jié)構(gòu)輸出。x,fval,exitflag,output,grad=fmin
10、unc(.)將解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??梢詫un函數(shù)指定為命令行,如x=fminunc(inline(norm(x)A2),x0)同樣,fun函數(shù)可以是一個包含函數(shù)名的字符串。對應(yīng)的函數(shù)可以是M文件、內(nèi)部函數(shù)或MEX文件。若fun=myfun,貝Ux=fminunc(myfun,x0)其中M文件函數(shù)myfun.
11、m必須有下面的形式:functionf=myfun(x)f=%計算x處的函數(shù)值。若fun函數(shù)的梯度可以算得,且options.GradObj設(shè)為on(用下式設(shè)定)options=optimset(GradObj,on)則fun函數(shù)必須返回解x處的梯度向量g到第二個輸出變量中去。注意,當(dāng)被調(diào)用的fun函數(shù)只需要一個輸出變量時(如算法只需要目標函數(shù)的值而不需要其梯度值時),可以通過核對nargout的值來避免計算梯度值functionf,g=myfun(x)f=.%計算x處的函數(shù)值ifnargout1%調(diào)用fun函數(shù)并要求有兩個輸出變量g=.%計算x處的梯度值end若Hessian矩陣可以求得,并
12、且options.Hessian設(shè)為on,即options=optimset(Hessian,on)則fun函數(shù)必須返回解x處的Hessian對稱矩陣H到第三個輸出變量中去。注意,當(dāng)被調(diào)用的fun函數(shù)只需要一個或兩個輸出變量時(如算法只需要目標函數(shù)的值f和梯度值g而不需要Hessian矩陣H時),可以通過核對nargout的值來避免計算Hessian矩陣functionf,g=myfun(x)f=.%計算x處的函數(shù)值ifnargout1%調(diào)用fun函數(shù)并要求有兩個輸出變量g=.%計算x處的梯度值ifnargout2H=.%計算x處的Hessian矩陣endoptions變量:優(yōu)化參數(shù)選項。可以
13、通過optimset函數(shù)設(shè)置或改變這些參數(shù)。其中有的參數(shù)適用于所有的優(yōu)化算法,有的則只適用于大型優(yōu)化問題,另外一些則只適用于中型問題。首先描述適用于大型問題的選項。這僅僅是一個參考,因為使用大型問題算法有一些條件。對于fminunc函數(shù)來說,必須提供梯度信息LargeScale當(dāng)設(shè)為on時,使用大型算法,若設(shè)為off則使用中型問題的算法適用于大型和中型算法的參數(shù):Diagnostics打印最小化函數(shù)的診斷信息Display顯示水平。選擇off,不顯示輸出;選擇iter,顯示每一步迭代過程的輸出;選擇final,顯示最終結(jié)果GradObj用戶定義的目標函數(shù)的梯度。對于大型問題此參數(shù)是必選的,對于
14、中型問題則是可選項MaxFunEvals函數(shù)評價的最大次數(shù)MaxIter最大允許迭代次數(shù)TolFun函數(shù)值的終止容限TolXx處的終止容限只適用于大型算法的參數(shù):Hessian用戶定義的目標函數(shù)的Hessian矩陣HessPattern用于有限差分的Hessian矩陣的稀疏形式。若不方便求fun函數(shù)的稀疏Hessian矩陣H,可以通過用梯度的有限差分獲得的H的稀疏結(jié)構(gòu)(如非零值的位置等)來得到近似的Hessian矩陣H。若連矩陣的稀疏結(jié)構(gòu)都不知道,則可以將HessPattern設(shè)為密集矩陣,在每一次迭代過程中,都將進行密集矩陣的有限差分近似(這是默認設(shè)置)。這將非常麻煩,所以花一些力氣得到He
15、ssian矩陣的稀疏結(jié)構(gòu)還是值得的MaxPCGIterPCG迭代的最大次數(shù)PrecondBandWidthPCG前處理的上帶寬,默認時為零。對于有些問題,增加帶寬可以減少迭代次數(shù)TolPCGPCG迭代的終止容限TypicalX典型x值只適用于中型算法的參數(shù):DerivativeCheck對用戶提供的導(dǎo)數(shù)和有限差分求出的導(dǎo)數(shù)進行對比DiffMaxChange變量有限差分梯度的最大變化DiffMixChange變量有限差分梯度的最小變化LineSearchType一維搜索算法的選擇exitflag變量:描述退出條件:0表示目標函數(shù)收斂于解x處0表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù)x0=l,l;x,
16、fval=fminunc(Ex10071,x0)Warning:Gradientmustbeprovidedfortrust-regionmethod;usingline-searchmethodinstead.InE:matlab6p1toolboxoptimfminunc.matline211Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXx=1.0e-008*-0.75910.2665fval=1.3953e-016下面用提供的梯度g最小化函數(shù),修改M文件為Ex10072.m:function
17、f,g=Ex10072(x)f=3*x(1)A2+2*x(1)*x(2)+x(2)A2;ifnargout1g(1)=6*x(1)+2*x(2);g(2)=2*x(1)+2*x(2);end下面通過將優(yōu)化選項結(jié)構(gòu)options.GradObj設(shè)置為on來得到梯度值。options=optimset(GradObj,on);x0=1,1;x,fval=fminunc(Ex10072,x0,options)Optimizationterminatedsuccessfully:First-orderoptimalitylessthanOPTIONS.TolFun,andnonegative/zero
18、curvaturedetectedx=1.0e-015*0.1110-0.8882fval=6.2862e-031例10-8求函數(shù)f(x)=ex1(4xi2+2x22+4xix2+2x2+1)的最小值。解:在Matlab中實現(xiàn):x,fval,exitflag,output=fminunc(exp(x(l)*(4*x(l)A2+2*x(2)A2+4*x(1)*x(2)+2*x(2)+1),-1,1)Warning:Gradientmustbeprovidedfortrust-regionmethod;usingline-searchmethodinstead.InE:matlab6p1toolb
19、oxoptimfminunc.matline211Optimizationterminatedsuccessfully:Currentsearchdirectionisadescentdirection,andmagnitudeofdirectionalderivativeinsearchdirectionlessthan2*options.TolFunx=0.5000-1.0000fval=1.3028e-010exitflag=1output=iterations:7funcCount:40stepsize:1firstorderopt:8.1998e-004algorithm:mediu
20、m-scale:Quasi-Newtonlinesearch例10-9求無約束非線性問題f(x)=100(x2-x12)2+(1-x1)2x0=-1.2,1解:在Matlab中實現(xiàn):x0=-1.2,1;x,fval=fminunc(100*(x(2)-x(l)A2)A2+(l-x(l)A2,x0)Warning:Gradientmustbeprovidedfortrust-regionmethod;usingline-searchmethodinstead.InE:matlab6p1toolboxoptimfminunc.matline211Optimizationterminatedsucc
21、essfully:Currentsearchdirectionisadescentdirection,andmagnitudeofdirectionalderivativeinsearchdirectionlessthan2*options.TolFunx=1.00001.0000fval=1.9116e-01110.2.2二次規(guī)劃教材第26頁數(shù)學(xué)模型:如果某非線性規(guī)劃的目標函數(shù)為自變量的二次函數(shù),約束條件全是線性函數(shù),就稱這種規(guī)劃為二次規(guī)劃。其數(shù)學(xué)模型為1minxTHx+fTxx2Aeq-x=beqlbxub其中,H,A和Aeq為矩陣,f,b,beq,lb,ub和x為向量。函數(shù):quadpr
22、og功能:求解二次規(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,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=quad
23、prog(.)x,fval,exitflag,output,lambda=quadprog(.)說明:x=quadprog(H,f,A,b)返回向量x,最小化函數(shù)l/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,b,Aeq,beq,lb,ub)定義設(shè)計變量的下界lb和上界ub,使得lb=x=ub。x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)同上,并設(shè)置初值x0。x=quadprog(H,f,A,b,Aeq,beq,lb,ub
24、,x0,options)根據(jù)options參數(shù)扌旨定的優(yōu)化參數(shù)進行最小化。x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,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)化信息的結(jié)構(gòu)輸出output。x,fva
25、l,exitflag,output,lambda=quadprog(.)返回解x處包含Lagrange乘子的lambda參數(shù)。各變量的意義同前。(1)一般地,如果問題不是嚴格凸性的,用quadprog函數(shù)得到的可能是局部最優(yōu)解;(2)如果用Aeq和Beq明確地指定等式約束,而不是用lb和ub指定,則可以得到更好的數(shù)值解;(3)若x的組分沒有上限或下限,則quadprog函數(shù)希望將對應(yīng)的組分設(shè)置為Inf(對于上限)或-Inf(對于下限),而不是強制性地給予上限一個很大的數(shù)或給予下限一個很小的負數(shù);(4)對于大型優(yōu)化問題,若沒有提供初值X0,或X0不是嚴格可行,則quadprog函數(shù)會選擇一個新的
26、初始可行點;(5)若為等式約束,且quadprog函數(shù)發(fā)現(xiàn)負曲度(negativecurvature),則優(yōu)化過程終止,exitflag的值等于-1;此時,顯示水平只能選擇off和final,迭代參數(shù)iter不可用;當(dāng)問題不定或負定時,常常無解(此時eXitflag參數(shù)給出一個負值,表示優(yōu)化過程不收斂)。若正定解存在,則quadprog函數(shù)可能只給出局部極小值,因為問題可能是非凸的;對于大型問題,不能依靠線性等式,因為Aeq必須是行滿秩的,即Aeq的行數(shù)必須不多于列數(shù)。若不滿足要求,必須調(diào)用中型算法進行計算;大型化問題大型化問題不允許約束上限和下限相等,如若lb(2)=ub(2),則給出以下出
27、錯信息:Equalupperandlowerboundsnotpermittedinthislarge-scalemethod.Useequalityconstraintsandthemedium-scalemethodinstead.若優(yōu)化模型中只有等式約束,仍然可以使用大型算法;如果模型中既有等式約束又有邊界約束,則必須使用中型方法。中型優(yōu)化問題當(dāng)解不可行時,quadprog函數(shù)給出以下警告:Warning:Theconstraintsareoverlystringent;thereisnofeasiblesolution.這里,quadprog函數(shù)生成使約束條件矛盾最壞程度最小的結(jié)果。當(dāng)
28、等式約束不連續(xù)時,給出下面的警告信息:Warning:Theequalityconstraintsareoverlystringent;thereisnofeasiblesolution.當(dāng)Hessian矩陣為負半定時,生成無邊界解,給出下面的警告信息:Warning:Thesolutionisunboundedandatinfinity;theconstraintsarenotrestrictiveenough.這里,quadprog函數(shù)返回滿足約束條件的x值。例10-10求解下面的最優(yōu)化問題:f(x)=目標函數(shù)約束條件x+x212一x+2x2122x+x3120 x,0H=1-1;-12;
29、f=-2;-6;A=11;-12;21;b=2;2;3;lb=zeros(2,1);x,fval,exitflag,output,lambda=quadprog(H,f,A,b,lb)Warning:Large-scalemethoddoesnotcurrentlysolvethisproblemformulation,switchingtomedium-scalemethod.InE:matlab6p1toolboxoptimquadprog.matline213Optimizationterminatedsuccessfully.x=0.66671.3333fval=-8.2222exit
30、flag=1output=iterations:3algorithm:medium-scale:active-setfirstorderopt:cgiterations:lambda=lower:2x1doubleupper:2x1doubleeqlin:0 x1doubleineqlin:3x1doublelambda.lowerans=00lambda.ineqlinans=3.11110.44440有約束規(guī)劃教材第21頁函數(shù):fmincon功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學(xué)模型:minf(x)xc(x)0ceq(x)=0A-xbAeq-x=beqlbxub其中,x,b,beq,
31、lb和ub為向量,A和Aeq為矩陣,c(x)和ceq(x)為函數(shù),返回標量。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,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,P
32、2,.)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(.) 說明:fmincon求多變量有約束非線性函數(shù)的最小值。該函數(shù)常用于有約束非線性優(yōu)化問題。x=fmincon(fun,x0,A,b)給定初值x0,求解fun函數(shù)的最
33、小值點x。fun函數(shù)的約束條件為A*x=b,x0可以是標量、向量或矩陣。x=fmincon(fun,x0,A,b,Aeq,beq)最小化fun函數(shù),約束條件為A*x=b和Aeq*x=beq。若沒有不等式存在,則設(shè)置A=,b=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)定義設(shè)計變量x的下界lb和上界ub,使得lb=x=ub。若無等式存在,則令A(yù)eq=,beq=。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)在上面的基礎(chǔ)上,在nonIcon參數(shù)中提供非線性不等式c(x)或等式ceq(x)。fmincon函數(shù)要求c(x)=0且ceq
34、(x)=0。當(dāng)無邊界存在時,令lb=和(或)ub=。x=fmincon(fun,xO,A,b,Aeq,beq,lb,ub,nonlcon,options)用options參數(shù)指定的參數(shù)進行最小化。x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,.)將問題參數(shù)Pl,P2等直接傳遞給函數(shù)fun和nonIcon。若不需要參數(shù)A,b,Aeq,beq,lb,ub,nonlcon和options,將它們設(shè)置為空矩陣。x,fval=fmincon(.)返回解x處的目標函數(shù)值。x,fval,exitflag=fmincon(.)返回exitfl
35、ag參數(shù),描述計算的退出條件。x,fval,exitflag,output=fmincon(.)返回包含優(yōu)化信息的結(jié)構(gòu)輸出output。x,fval,exitflag,output,lambda=fmincon(.)返回解x處包含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)2%被調(diào)用的
36、nonlcon函數(shù),要求有4個輸出變量GC=.%不等式的梯度GCeq=.%等式的梯度end若nonlcon函數(shù)返回m元素的向量c和長度為n的x,則c(x)的梯度GC是一個nXm的矩陣,其中GC(i,j)是c(j)對x(i)的偏導(dǎo)數(shù)。同樣,若ceq是一個p元素的向量,則ceq(x)的梯度GCeq是一個nXp的矩陣,其中GCeq(i,j)是ceq(j)對x的偏導(dǎo)數(shù)。其它參數(shù)意義同前。1)大型優(yōu)化問題:(1.1)使用大型算法,必須在fun函數(shù)中提供梯度信息(options.GradObj設(shè)置為on)。如果沒有梯度信息,則將給出警告信息。Fmincon函數(shù)允許g(x)為一近似梯度,但使用真正的梯度將使
37、優(yōu)化過程更具穩(wěn)鍵性。當(dāng)對矩陣的二階導(dǎo)數(shù)(即Hessian矩陣)進行計算后,用該函數(shù)求解大型問題將更有效。但不需要求得真正的Hessian矩陣,如果能提供Hessian矩陣稀疏結(jié)構(gòu)的信息(用options參數(shù)的HessPattern屬性),則fmincon函數(shù)可以算得Hessian矩陣的稀疏有限差分近似。若x0不是嚴格可行的,則fmincon函數(shù)選擇一個新的嚴格可行初始點。(1.4)若x的某些元素沒有上界或下界,則fmincon函數(shù)更希望對應(yīng)的元素設(shè)置為Inf(對于上界)或-Inf(對于下界),而不希望強制性地給上界賦一個很大的值,給下界一個很小的負值。(1.5)線性約束最小化課題中也有幾個問題
38、需要注意:Aeq矩陣中若存在密集列或近密集列(Adenseorfairlydensecolumn),會導(dǎo)致滿秩并使計算費時;fmincon函數(shù)剔除Aeq中線性相關(guān)的行。此過程需要進行反復(fù)的因子分解,因此,如果相關(guān)行很多的話,計算將是一件很費時的事情;每一次迭代都要用下式進行稀疏最小二乘求解B=AeqTR-t其中rt為前提條件的Cholesky(喬累斯基)因子。2)中型優(yōu)化問題:如果用Aeq和beq清楚地提供等式約束,將比用lb和ub獲得更好的數(shù)值解。在二次子問題中,若有等式約束并且因等式(dependentequalities)被發(fā)現(xiàn)和剔除的話,將在過程標題中顯示dependent(當(dāng)outp
39、ut參數(shù)要求使用options.Display=iter)。只有在等式連續(xù)的情況下,因等式才會被剔除。若等式系統(tǒng)不連續(xù),則子問題將不可行并在過程標題中打印infeasible信息。求大型優(yōu)化問題的代碼中不允許上限和下限相等,即不能有l(wèi)b(2)=ub(2),否則給出下面的出錯信息:Equalupperandlowerboundsnotpermittedinthislarge-scalemethod.Useequalityconstraintsandthemedium-scalemethodinstead.若只有等式約束,仍然可以使用大型算法。當(dāng)既有等式約束又有邊界約束時,使用中型算法。目標函數(shù)和
40、約束函數(shù)都必須是連續(xù)的,否則可能會只給出局部最優(yōu)解。當(dāng)問題不可行時,fmincon函數(shù)將試圖使最大約束值最小化。(6)目標函數(shù)和約束函數(shù)都必須是實數(shù)。(7)對于大型優(yōu)化問題,使用大型優(yōu)化算法時,用戶必須在fun函數(shù)中提供梯度(options參數(shù)的GradObj屬性必須設(shè)置為on),并且只可指定上界和下界約束,或者只有線性約束必須存在,Aeq的行數(shù)不能多于列數(shù)。(8)如果在fun函數(shù)中提供了解析梯度,選項參數(shù)DerivativeCheck不能與大型方法一起用,以比較解析梯度和有限差分梯度。可以通過將options參數(shù)的MaxIter屬性設(shè)置為0來用中型方法核對導(dǎo)數(shù),然后用大型方法求解問題。例10
41、-11求解下列優(yōu)化問題:本題可用lingo求解目標函數(shù)f(x)一xix2x3約束條件0 x+2x+2x72123解:將約束條件改寫成下面的不等式_片2x2-2x30X1+2X2+2X3x0=10;10;10;A=-1-2-2;122;b=0;72;x,fval=fmincon(-x(1)*x(2)*x(3),x0,A,b)Warning:Large-scale(trustregion)methoddoesnotcurrentlysolvethistypeofproblem,switchingtomedium-scale(linesearch).InE:matlab6p1toolboxoptim
42、fmincon.matline213Optimizationterminatedsuccessfully:Magnitudeofdirectionalderivativeinsearchdirectionlessthan2*options.TolFunandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:2x=24.000012.000012.0000fval=-3456線性不等式約束條件的值A(chǔ)*x-bans=-720例10-12求表面積為常數(shù)150m2的體積最大的長方體體積。解:設(shè)長方體的長、寬、高分別為
43、X、x2和x3,根據(jù)題意得到下面的數(shù)學(xué)模型:minz=-X1X2X32(XX+XX+XX)=150233112由于約束條件是非線性等式約束,所以需要編寫一個約束條件M文件EX1012c.m:functionc,ceq=Ex1012c(x)ceq=x(2)*x(3)+x(3)*x(1)+x(1)*x(2)-75在Matlab中實現(xiàn):x0=4;5;6;lb=zeros(3,1);x,fval,exitflag,output,lambda=fmincon(-x(1)*x(2)*x(3),x0,lb,Ex1012c)Warning:Large-scale(trustregion)methoddoesn
44、otcurrentlysolvethistypeofproblem,switchingtomedium-scale(linesearch).Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:1x=5.00005.00005.0000fval=-125.0000exitflag=1output=iterations:7funcCount:38stepsize:1a
45、lgorithm:medium-scale:SQP,Quasi-Newton,line-searchfirstorderopt:cgiterations:lambda=lower:3x1doubleupper:3x1doubleeqlin:0 x1doubleeqnonlin:2.5000ineqlin:0 x1doubleineqnonlin:0 x1double優(yōu)化結(jié)果顯示過程成功收斂,搜索方向小于兩倍options.TolX,最大違約值小于options.TolCon,主動約束為1個。問題的解為x(1)=x(2)=x(3)=5.0000m,最大體積為125.0000m3。exitflag
46、=1,表示過程成功收斂于解x處。output輸出變量顯示了收斂過程中的迭代次數(shù)、目標函數(shù)計算次數(shù)、步長、算法等信息。lambda則包含模型信息。例10-13求解下列優(yōu)化問題:min2x2+2x2一2xx一4x一6x121212一x一5xn512一2x2+xn0120 x,0 x0=0;0.75;A=15;b=5;lb=zeros(2,1);x,fval,exitflag,output,lambda=fmincon(2*x(l)A2+2*x(2)A2-2*x(1)*x(2)-4*x(1)-6*x(2),x0,A,b,lb,Ex1013c)Warning:Large-scale(trustregi
47、on)methoddoesnotcurrentlysolvethistypeofproblem,switchingtomedium-scale(linesearch).Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:34x=0.65890.8682fval=-6.6131exitflag=1output=iterations:6funcCount:27step
48、size:1algorithm:medium-scale:SQP,Quasi-Newton,line-searchfirstorderopt:cgiterations:lambda=lower:2x1doubleupper:2x1doubleeqlin:0 x1doubleeqnonlin:0 x1doubleineqlin:0.9419ineqnonlin:0.8192問題的解為x=0.6589,x=0.8682,最小值為-6.6131。例10-14求解下列優(yōu)化問題:min丄(x-1)33x+2x0=0;A=-1;b=-2;x,fval=fmincon(1/3*(x-1)A3,x0,A,b)
49、Warning:Large-scale(trustregion)methoddoesnotcurrentlysolvethistypeofproblem,switchingtomedium-scale(linesearch).InE:matlab6p1toolboxoptimfmincon.matline213Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:1
50、x=2fval=0.333310.3目標規(guī)劃前面介紹的最優(yōu)化方法只有一個目標函數(shù),是單目標最優(yōu)化方法。但是,在許多實際工程問題中,往往希望多個指標都達到最優(yōu)值,所以它有多個目標函數(shù)。這種問題稱為多目標最優(yōu)化問題。多目標最優(yōu)化問題的數(shù)學(xué)模型為minF(x)xwRnG(x)=0i=1,2,mi1G(x)0i=m+1,m+2,mi11xxxiu其中F(x)為目標函數(shù)向量。此優(yōu)化問題在Matlab中主要由函數(shù)fgoalattain來實現(xiàn)。此問題在控制系統(tǒng)中有廣泛的應(yīng)用。函數(shù):fgoalattain功能:求解多目標達到問題。數(shù)學(xué)模型:minimizeyx,yF(x)一weight-ygoalc(x)0c
51、eq(x)=0A-xbAeq-x=beqlbxub其中x,weight,goal,b,beq,lb和ub為向量,A和Aeq為矩陣,c(x),ceq(x)和F(x)為函數(shù),返回向量。F(x),c(x)和ceq(x)可以是非線性函數(shù)。格式:x=fgoalattain(fun,x0,goal,weight) x 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
52、(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,P2,.)x,fval=fgoalattain(.)x,fval,attainfactor=fgoalattain(.)x,fval,attainfactor,exitflag=fgoalattain(.)x,fval,attainf
53、actor,exitflag,output=fgoalattain(.)x,fval,attainfactor,exitflag,output,lambda=fgoalattain(.)說明:fgoalattain求解多目標達到問題。x=fgoalattain(fun,x0,goal,weight)試圖通過變化x來使目標函數(shù)fun達到goal指定的目標。初值為x0,weight參數(shù)指定權(quán)重。x=fgoalattain(fun,x0,goal,weight,A,b)求解目標達到問題,約束條件為線性不等式A*x=b。x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,
54、beq)求解目標達到問題,除提供上面的線性不等式外,還提供線性等式Aeq*x=beq。當(dāng)沒有不等式存在時,設(shè)置A=和b=。x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)為設(shè)計變量x定義下界lb和上界ub集合,這樣始終有l(wèi)b=x=ub。x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)將目標達到問題歸結(jié)為nonIcon參數(shù)定義的非線性不等式c(x)或非線性等式ceq(x)。fgoalattain優(yōu)化的約束條件為c(x)goal=2012;weight=2012;x0=25;
55、A=10;01;-1-1;b=567;b=56-7;lb=zeros(2,1);x,fval,attainfactor,exitflag=fgoalattain(Ex1015,x0,goal,weight,A,b,lb,)Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:567x=2.91674.0833fval=26.250015.7500attainfact
56、or=0.3125exitflag=1故工廠每月生產(chǎn)產(chǎn)品A為2.9167噸,B為4.0833噸。設(shè)備投資費和公害損失費的目標值分別為26.250萬元和15.750萬元。達到因子為0.3125,計算收斂。例10-16某工廠因生產(chǎn)需要欲采購一種原材料,市場上的這種原料有兩個等級,甲級單價2元/kg,乙級單價1元/kg。要求所花總費用不超過200元,購得原料總量不少于100kg,其中甲級原料不少于50kg,問如何確定最好的采購方案。解:設(shè)X和x2分別為采購甲級和乙級原料的數(shù)量(kg),要求采購總費用盡量少,采購總量盡量多,采購甲級原料盡量多。由題意建立下面的數(shù)學(xué)模型:minz=2X+X11maXz2
57、=X+X12maXz=X312x+xW20012x+x$10012x$501x,x$012需要編寫目標函數(shù)的M文件Ex1016.m,返回目標計算值:functionf=Ex1016(x)f(1)=2*x(1)+x(2);f(2)=-x(1)-x(2);f(3)=-x(1);給定目標,權(quán)重按目標比例確定,給出初值,在Matlab中實現(xiàn):goal=200-100-50;weight=200-100-50;x0=5050;A=21;-1-1;-10;b=200-100-50;lb=zeros(2,1);x,fval,attainfactor,exitflag=fgoalattain(Ex1016,x
58、0,goal,weight,A,b,lb,)Optimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:47x=5050fval=150-100-50attainfactor=0exitflag=1所以,最好的采購方案是采購甲級原料和乙級原料各50kg。此時采購總費用為150元,總重量為100kg,甲級原料總重量為50kg。例10-17考慮有不同方程的線性系統(tǒng):現(xiàn)在設(shè)計了
59、一個輸出反饋控制器K,用于生成閉路系統(tǒng)。x=(A+BKC)x+Bu該閉路系統(tǒng)的特征值由矩陣A,B,C和K用命令eig(A+B*K*C)算得。閉路特征值必須位于復(fù)平面的實數(shù)軸上,位于點-5,-3,-1的左側(cè)。為了使輸入不至于過飽和,K中的任何一個元素不得大于4或小于-4。該系統(tǒng)是一個二輸入、二輸出的開路不穩(wěn)定系統(tǒng),有狀態(tài)空間矩陣:-0.500一_10_j000-210B=-22C=_00101-201A=設(shè)計K,使閉路系統(tǒng)的特征值盡可能與目標值匹配。解:閉路特征值的目標值由下式初始化:goal=-5-3-1為了保證活動對象超過或低于的比例相當(dāng),將權(quán)重函數(shù)設(shè)置為abs(goal)。初始化控制器,令
60、K=-1,-1;-1,-1,首先編寫M文件Ex1017.m:functionF=Ex1017(K,A,B,C)F=sort(eig(A+B*K*C);%評價對象在Matlab中實現(xiàn):goal=-5-3-1;%為特征值設(shè)置目標值A(chǔ)=-0.500;0-210;01-2;B=10;-22;01;%初始化控制器矩陣%設(shè)置相同比例的權(quán)重%設(shè)置控制器的下界%設(shè)置控制器的上界%設(shè)置顯示參數(shù)C=100;001;K0=-1-1;-1-1;weight=abs(goal);lb=-4*ones(size(K0);ub=4*ones(size(K0);options=optimset(Display,iter);K
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急消防演練領(lǐng)導(dǎo)講話稿(6篇)
- 開學(xué)典禮活動總結(jié)范文15篇
- 愚人節(jié)文案(匯編15篇)
- 收銀培訓(xùn)資料
- 中國電動汽車充電站行業(yè)政策、市場規(guī)模及投資前景研究報告(智研咨詢發(fā)布)
- 肝升肺降湯治療慢性腎衰竭升降失?;颊叩呐R床療效觀察
- 組合式長周期光纖光柵傳感器及其特性研究
- 二零二五年度家政服務(wù)與家庭寵物養(yǎng)護合同3篇
- 二零二五年度城市消防管網(wǎng)消火栓安裝施工協(xié)議3篇
- 無人機分群的任務(wù)分配與拓撲控制技術(shù)研究
- 中餐烹飪技法大全
- 不對外供貨協(xié)議
- 新型電力系統(tǒng)研究
- 滋補類用藥的培訓(xùn)
- 公司新員工三級安全教育培訓(xùn)(車間級)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊課件【完整版】
- 老子道德經(jīng)全文講解學(xué)習(xí)課件
- 高職《勞動教育》指導(dǎo)綱要
- XX公司年會活動報價單
- 經(jīng)大量臨床實驗證明,空氣負離子能有效治療心腦血管疾病
- GB/T 19889.3-2005聲學(xué)建筑和建筑構(gòu)件隔聲測量第3部分:建筑構(gòu)件空氣聲隔聲的實驗室測量
評論
0/150
提交評論