最優化問題的matlab求解課件_第1頁
最優化問題的matlab求解課件_第2頁
最優化問題的matlab求解課件_第3頁
最優化問題的matlab求解課件_第4頁
最優化問題的matlab求解課件_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

最優化問題的Matlab求解數學規劃的一般模型

x~決策變量f(x)~目標函數gi(x)0~約束條件1、解析解法和圖解法無約束最優化例:用解析法求解以下函數的最小值>>symst;

y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;ezplot(y,[04])y1=diff(y);ezplot(y1,[04])t0=solve(y1)y2=diff(y1);b=subs(y2,t,t0)2、數值解法命令形式2:x=fminunc(fun,x0)%簡單形式[x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…)%一般形式功能:與fsolve()中的參數控制形式類似。命令形式1:x=fminsearch(fun,x0)%簡單形式[x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…)%一般形式功能:與fsolve()中的參數控制形式類似。注:若函數是多元的,要表達成向量的形式。例:>>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-(1)*x(2))','x');x0=[0,0];ff=optimset;ff.Display='iter';x=fminsearch(f,x0,ff)>>x=fminunc(f,x0,ff)基本用法:x=fminunc(@fun,x0)x=fminunc(@fun,x0,options,P1,P2,...)fun.m~f(x)的m文件名x0~初始點;x

~最優解P1,P2,…~傳給fun的參數中間輸入項缺省用[]占據位置functiony=fun071(x,a,b)y=x(1)^2/a+x(2)^2/b;x0=[1,1];a=2;b=2;x=fminunc(@fun071,x0,[],a,b)X=(0,0)3、全局最優解和局部最優解例:>>f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t');t0=1;[t1,f1]=fminsearch(f,t0)>>t0=0.1;[t2,f2]=fminsearch(f,t0)t2=0.29445312500000,f2=-0.54362463738706目標函數:

約束條件:約束最優化1、線性規劃目標函數:

約束條件:其中:價值向量

資源向量

決策變量向量

目標函數:

約束條件:命令形式2:

[X,f,flag,c]=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各個參數的解釋如前,若各個約束條件不存在,則用空矩陣來代替。例:>>c=[-2,-1,-4,-3,-1];A=[02142;345-1-1];b=[54;62];Ae=[];Be=[];xm=[0,0,3.32,0.678,2.57];ff=optimset;ff.LargeScale=‘off’;%是否采用大規模算法ff.TolX=1e-15;%解的控制精度ff.Display=‘iter’;%顯示信息的級別[X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)目標函數:

約束條件:2、二次規劃命令形式:

[X,f,flag,c]=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各個參數的解釋如前,若各個約束條件不存在,則用空矩陣來代替。例:求解>>H=[4,-4;-4,8];C=[-6,-3];A=[1,1;4,1];b=[3;9];Ae=[];Be=[];ff=optimset;ff.LargeScale='off';ff.TolX=1e-15;ff.Display='iter';[X,f,flag,c]=quadprog(H,C,A,b,Ae,Be,zeros(2,1),ff)

定義

如果目標函數或約束條件中至少有一個是非線性函數時的最優化問題就叫做非線性規劃問題.

一般形式:

(1)其中,是定義在En上的實值函數,簡記:

其它情況:

求目標函數的最大值或約束條件為大于等于零的情況,都可通過取其相反數化為上述一般形式.非線性規劃

其中X為n維變元向量,G(X)與Ceq(X)均為非線性函數組成的向量,其它變量的含義與線性規劃、二次規劃中相同.(1)間接法

(2)直接法

直接搜索法以梯度法為基礎的間接法非線性規劃的求解算法間接法

在非線性最優化問題當中,如果目標函數能以解析函數表示,可行域由不等式約束確定,則可以利用目標函數和可行域的已知性質,在理論上推導出目標函數為最優值的必要條件,這種方法就稱為間接法(也稱為解析法)。一般要用到目標函數的導數。直接法

直接法是一種數值方法。這種方法的基本思想是迭代,通過迭代產生一個點序列{X(k)},使之逐步接近最優點。只用到目標函數。如黃金分割法、Fibonacci、隨機搜索法。迭代法一般步驟注意:數值求解最優化問題的計算效率取決于確定搜索方向P

(k)和步長的效率。最速下降法(steepestdescentmethod)由法國數學家Cauchy于1847年首先提出。在每次迭代中,沿最速下降方向(負梯度方向)進行搜索,每步沿負梯度方向取最優步長,因此這種方法稱為最優梯度法。特點:方法簡單,只以一階梯度的信息確定下一步的搜索方向,收斂速度慢;越是接近極值點,收斂越慢;它是其它許多無約束、有約束最優化方法的基礎。該法一般用于最優化開始的幾步搜索。最速下降法算法:

1.首先建立M文件fun.m,定義目標函數F(X):functionf=fun(X);f=F(X);用Matlab求解上述問題,基本步驟分三步:Matlab求解步驟3.建立主程序.非線性規劃求解的函數是fmincon,命令的基本格式如下:

(1)x=fmincon(‘fun’,X0,A,b)

(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)

(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)

(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6)[x,fval]=fmincon(...)

(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fmincon(...)輸出極值點M文件迭代的初值參數說明變量上下限輸入參數的幾點說明模型中如果沒有A,b,Aeq,beq,VLB,VUB的限制,則以空矩陣[]作為參數傳入;nonlcon:如果包含非線性等式或不等式約束,則將這些函數編寫一個Matlab函數

nonlcon就是定義這些函數的程序文件名;不等式約束G(x)<=0等式約束Ceq(x)=0.如果nonlcon=‘mycon’;則myfun.m定義如下function[G,Ceq]=mycon(x)

G=...

%計算非線性不等式約束在點x處的函數值Ceq=...

%計算非線性等式約束在點x處的函數值

對參數nonlcon的進一步示例2個不等式約束,2個等式約束3個決策變量x1,x2,x3如果nonlcon以‘mycon1’作為參數值,則程序mycon1.m如下對照約束條件編寫myfun1.mfunction[G,Ceq]=mycon1(x)G(1)=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100G(2)=60-x(1)*x(1)+10*x(3)*x(3)Ceq(1)=x(1)+x(2)*x(2)+x(3)-80Ceq(2)=x(1)^3+x(2)*x(2)+x(3)-80注意:[1]fmincon函數提供了大型優化算法和中型優化算法。默認時,若在fun函數中提供了梯度(options參數的GradObj設置為’on’),并且只有上下界存在或只有等式約束,fmincon函數將選擇大型算法。當既有等式約束又有梯度約束時,使用中型算法。[2]fmincon函數可能會給出局部最優解,這與初值X0的選取有關。1、寫成標準形式:

s.t.

2x1+3x26s.tx1+4x25x1,x20例2、先建立M-文件fun3.m:

functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^23、再建立主程序youh2.m:

x0=[1;1];A=[23;14];b=[6;5];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)4、運算結果為:

x=0.76471.0588fval=-2.02941.先建立M文件fun4.m,定義目標函數:

functionf=fun4(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);x1+x2=0s.t.1.5+x1x2-x1-x20-x1x2–10

0例2.再建立M文件mycon.m定義非線性約束:

function[g,ceq]=mycon(x)g=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];ceq=[];3.主程序為:x0=[-1;1];A=[];b=[];Aeq=[11];beq=0;vlb=[];vub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')3.運算結果為:

x=-1.22501.2250fval=1.8951非負條件下線性最小二乘lsqnonneg

適合如下模型:

注意:約束只有非負約束語法:x=lsqnonneg(c,d)x=lsqnonneg(c,d,x0)x=lsqnonneg(c,d,x0,options)

語法:x=lsqlin(C,d,A,b)x=lsqlin(C,d,A,b,Aeq,beq)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)[x,resnorm]=lsqlin(...)[x,resnorm,residual]=lsqlin(...)[x,resnorm,residual,exitflag]=lsqlin(...)[x,resnorm,residual,exitflag,output]=lsqlin(...)[x,resnorm,residual,exitflag,output,lambda]=lsqlin(...)非線性最小二乘lsqnonlin

適合模型:語法:x=lsqnonlin(fun,x0)x=lsqnonlin(fun,x0,lb,ub)x=lsqnonlin(fun,x0,lb,ub,options)x=lsqnonlin(fun,x0,options,P1,P2,...)[x,resnorm]=lsqnonlin(...)[x,resnorm,residual]=lsqnonlin(...)[x,resnorm,residual,exitfla

溫馨提示

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

評論

0/150

提交評論