Matlab優(yōu)化工具箱函數(shù)簡介_第1頁
Matlab優(yōu)化工具箱函數(shù)簡介_第2頁
Matlab優(yōu)化工具箱函數(shù)簡介_第3頁
Matlab優(yōu)化工具箱函數(shù)簡介_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Matlab優(yōu)化工具箱函數(shù)簡介一維搜索問題fminbnd無約束極小值fminunc,fminsearch約束極小值fmincon線性規(guī)劃linprog二次規(guī)劃quadprog一維搜索問題優(yōu)化工具箱函數(shù)fminbnd對應問題:minf(x)x1<x<x2調用格式x=fminbnd(fun,x1,x2):得到函數(shù)fun在區(qū)間[x1,x2]內取得最小值的x.[x,f]=fminbnd(fun,x1,x2):得到最優(yōu)點x和最優(yōu)目標函數(shù)值f。例:求minf(x)=-(3-2*x)^2*x方法1:x=fminbnd('-(3-2*x)^2*x',0,1.5)方法2:f=inline('-(3-2*x)^2*x');x=fminbnd(f,0,1.5)方法3:x=fminbnd(@(x)-(3-2*x)^2*x,0,1.5)方法4:先形成一個函數(shù)文件functionf=fun(x)f=-(3-2*x)^2*x;然后運行下兩句中的任一句x=fminbnd('fun',0,1.5)x=fminbnd(@fun,0,1.5)假設需輸出最優(yōu)點處的目標函數(shù)值f,那么將上述語句的左邊改為[x,f],如:[x,f]=fminbnd('-(3-2*x)^2*x',0,1.5)其它用法:[X,fval,exitflag,output]=fminbnd(fun,x1,x2)其中:fun為目標函數(shù),x1,x2為變量的邊界約束,即x1≤x≤x2,X為返回的滿足fun取得最小值的x的值,而fval那么為此時的目標函數(shù)值。exitflag>0表示計算收斂,exitflag=0表示超過了最大的迭代次數(shù),exitflag<0表示計算不收斂,返回值output有3個分量,其中iterations是優(yōu)化過程中迭代次數(shù),funcCount是代入函數(shù)值的次數(shù),algorithm是優(yōu)化所摘用的算法。例:clearfun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))'ezplot(fun,[-2,2])[X,fval,exitflag,output]=fminbnd(fun,-2,2)結果為:X=0.2176fval=-1.1312exitflag=1output=iterations:13funcCount:13algorithm:'goldensectionsearch,parabolicinterpolation'無約束極小值優(yōu)化工具箱函數(shù)fminunc,fminsearch以上兩個函數(shù)均可求解無約束多元函數(shù)的最小值。調用格式:x=fminunc(fun,X0)x=fminsearch(fun,X0)--------------以X0為初始迭代點,求使函數(shù)fun取得最小值的x[x,fval]=fminunc(fun,X0)[x,fval]=fminsearch(fun,X0)--------------以X0為初始迭代點,求得最優(yōu)點x和最優(yōu)值fval。fminsearch()摘用單純形法進行計算,適合處理階次低但是間斷點多的函數(shù);fminunc()對于高階連續(xù)的函數(shù)比較有效,該函數(shù)可以輸出海塞矩陣。例1:求X0=[1,1]’[x,fval]=fminunc('3*x(1)^2+2*x(1)*x(2)+x(2)^2',X0)[x,fval]=fminsearch('3*x(1)^2+2*x(1)*x(2)+x(2)^2',[1,1]')例2:clearfun='exp(x(1))*(2*x(1)^2+3*x(2)^2+2*x(1)*x(2)+3*x(2)+1)';x0=[0,0];options=optimset('largescale','off','display','iter','tolx',1e-8,'tolfun',1e-8);[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options)約束極小值優(yōu)化工具箱函數(shù)fmincon對應數(shù)學模型:minF(X)subjectto:A*X<=B,Aeq*X=Beq(linearconstraints)C(X)<=0,Ceq(X)=0(nonlinearconstraints)LB<=X<=UB調用格式:x=fmincon(fun,x0,A,b):給定初值x0,求解fun函數(shù)的最極值點x.。約束條件為線性約束A*x<=b。x0可以是標量、矢量或矩陣X=fmincon(FUN,X0,A,B,Aeq,Beq)同前一調用格式相比,約束條件中增加了等式約束Aeq*X=Beq.(假設無不等式約束,取A=[]、B=[])X=fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB)假設設計變量X有上下限UB、LB用此格式假設X無取值限制,LB與UB為空矩陣[]。假設X〔i〕的下限為負無窮,那么LB(i)=-Inf。假設X〔i〕的上限為正無窮,那么UB(i)=Inf。X=fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON)NONLCON是包含函數(shù)名的字符串,該函數(shù)可以是M文件、內部文件。例如,假設NONLCON=’mycon’,那么M文件mycon.m具有如下內容:Function[C,Ceq]=mycon(X)C=…..%計算X處的非線性不等式Ceq=…%計算X處的非線性等式以上各調用格式中均可輸出目標函數(shù)值,用法仍為:[x,fval]=fmincon(….)例:某問題的目標函數(shù)為約束條件為:設計變量初始值為目標函數(shù)functionf=myfun(x)f=0.192457*1e-4*(x(2)+2)*x(1)^2*x(3);非線性約束function[c,ceq]=mycon(x)c(1)=350-163*x(1)^(-2.86)*x(3)^0.86;c(2)=10-0.4e-2*x(1)^(-4)*x(2)*x(3)^3;c(3)=(x(2)+1.5)*x(1)+0.44e-2*x(1)^(-4)*x(2)*x(3)^3-3.7*x(3);c(4)=375-0.356*1e6*x(1)*x(2)^(-1)*x(3)^(-2);c(5)=4-x(3)/x(1);ceq=0;主程序A=[-1001000-1001000-1001];b=[-1;4;-4.5;50;-10;30];x0=[2;5;25];lb=[0;0;0];[x,fval]=fmincon('myfun',x0,A,b,[],[],lb,[],'mycon')%或用下式:%[x,fval]=fmincon(@myfun,x0,A,b,[],[],lb,[],@mycon)總結:X=fmincon(fun,x0,A,b)X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub)X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub,nonlcon,options)[X,fval,exitflag,output]=fmincon(fun,x0,…)[X,fval,exitflag,output,lambda,grad,Hessian]=fmincon(fun,x0,…)參數(shù)中fun為目標函數(shù),x0為變量的初始值,x為返回的滿足要求的變量的值。A和b表示線性不等式約束,Aeq,Beq表示線性等式約束,Lb和Ub分別為變量的下界和上界約束,nonlcon表示非線性約束條件,options為控制優(yōu)化過程的優(yōu)化參數(shù)向量。返回值fval為目標函數(shù)。exitflag>0表示優(yōu)化結果收斂于解,exitflag=0表示優(yōu)化超過了函數(shù)值的計算次數(shù),exitflag<0表示優(yōu)化不收斂。lambda是拉格朗日乘子,顯示那個約束條件有效。grad表示梯度,hessian表示漢森矩陣。線性規(guī)劃優(yōu)化函數(shù)linprogX=linprog(f,A,b)對應數(shù)學規(guī)劃:minf'*xsubjectto:A*x<=bX=linprog(f,A,b,Aeq,beq)增加等式約束Aeq*x=beq.X=linprog(f,A,b,Aeq,beq,LB,UB)設計變量有上下限X=linprog(f,A,b,Aeq,beq,LB,UB,X0)X0為初始迭代點[X,F(xiàn)]=linprog(….)二次規(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,fval]=quadprog(...)[x,fval,exitflag]=quadprog(...)[x,fval,exitflag,output]=quadprog(...)[x,fval,exitflag,output,lambda]=quadprog(...)其中:X=quadprog(H,f,A,b)對應問題為:min0.5*x'*H*x+f'*x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論