最優(yōu)化建模方法及matlab實現(xiàn)_第1頁
最優(yōu)化建模方法及matlab實現(xiàn)_第2頁
最優(yōu)化建模方法及matlab實現(xiàn)_第3頁
最優(yōu)化建模方法及matlab實現(xiàn)_第4頁
最優(yōu)化建模方法及matlab實現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

最優(yōu)化問題的Matlab求解孟文輝西北大學數(shù)學學院

math@2015.5.15數(shù)學規(guī)劃的一般模型

x~決策變量f(x)~目標函數(shù)gi(x)0~約束條件數(shù)學規(guī)劃一般模型2015.5.151、解析解法和圖解法無約束最優(yōu)化例:用解析法求解以下函數(shù)的最小值無約束優(yōu)化問題的解析法2015.5.15<<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)無約束優(yōu)化問題的解析法2015.5.152、數(shù)值解法命令形式2:x=fminunc(fun,x0)%簡單形式[x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…)%一般形式功能:與fsolve()中的參數(shù)控制形式類似。命令形式1:x=fminsearch(fun,x0)%簡單形式[x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…)%一般形式功能:與fsolve()中的參數(shù)控制形式類似。注:若函數(shù)時多元的,要表達成向量的形式。無約束優(yōu)化問題的數(shù)值解法2015.5.15例:>>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)無約束優(yōu)化問題的數(shù)值解法2015.5.153、全局最優(yōu)解和局部最優(yōu)解例:>>f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t');t0=1;[t1,f1]=fminsearch(f,t0)t1=0.92275390625000,f1=-0.15473299821860>>t0=0.1;[t2,f2]=fminsearch(f,t0)t2=0.29445312500000,f2=-0.54362463738706全局最優(yōu)解和局部最優(yōu)解2015.5.15習題:分別用解析法和數(shù)值方法以下二元函數(shù)的最小值。習題2015.5.15目標函數(shù):

約束條件:約束最優(yōu)化1、線性規(guī)劃全局最優(yōu)解和局部最優(yōu)解2015.5.15目標函數(shù):

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

資源向量

決策變量向量

yonkey_mwh@163.com2015.5.15命令形式1:[X,lag,how]=lp(C,A,b,v1,v2,x0)功能:C,A,b的意義如矩陣表示里參數(shù);v1,v2表示決策變量的上界和下界(其維數(shù)可以小于X,但表示前幾個分量的上下界);x0表示初始值;X時輸出最優(yōu)解;lag是lagrange乘子,維數(shù)等于約束條件的個數(shù),非零的向量是起作用的約束條件;how給出錯誤信息:infeasible(無可行解),unbounded(無界解),ok(求解成功).例:>>c=[13,-1,5];A=[-1,-1,0;0,1,1];b=[-7,10];v0=[2,0,0];[X,lag,how]=lp(c,A,b,v0)

yonkey_mwh@163.com2015.5.15目標函數(shù):

約束條件:

yonkey_mwh@163.com2015.5.15命令形式2:

[X,f,flag,c]=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各個參數(shù)的解釋如前,若各個約束條件不存在,則用空矩陣來代替。例:

yonkey_mwh@163.com2015.5.15>>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)

yonkey_mwh@163.com2015.5.15目標函數(shù):

約束條件:2、二次規(guī)劃

yonkey_mwh@163.com2015.5.15命令形式:

[X,f,flag,c]=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各個參數(shù)的解釋如前,若各個約束條件不存在,則用空矩陣來代替。例:

yonkey_mwh@163.com2015.5.15>>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)

yonkey_mwh@163.com2015.5.15

定義

如果目標函數(shù)或約束條件中至少有一個是非線性函數(shù)時的最優(yōu)化問題就叫做非線性規(guī)劃問題.一般形式:

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

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

yonkey_mwh@163.com2015.5.15

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

yonkey_mwh@163.com2015.5.15(1)間接法

(2)直接法

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

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

yonkey_mwh@163.com2015.5.15直接法

直接法是一種數(shù)值方法。這種方法的基本思想是迭代,通過迭代產(chǎn)生一個點序列{X(k)},使之逐步接近最優(yōu)點。只用到目標函數(shù)。如黃金分割法、Fibonacci、隨機搜索法。

yonkey_mwh@163.com2015.5.15迭代法一般步驟注意:數(shù)值求解最優(yōu)化問題的計算效率取決于確定搜索方向P

(k)和步長的效率。

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

yonkey_mwh@163.com2015.5.15最速下降法算法:

yonkey_mwh@163.com2015.5.15

1.首先建立M文件fun.m,定義目標函數(shù)F(X):functionf=fun(X);f=F(X);用Matlab求解上述問題,基本步驟分三步:Matlab求解步驟

yonkey_mwh@163.com2015.5.153.建立主程序.非線性規(guī)劃求解的函數(shù)是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文件迭代的初值參數(shù)說明變量上下限

yonkey_mwh@163.com2015.5.15輸入?yún)?shù)的幾點說明模型中如果沒有A,b,Aeq,beq,VLB,VUB的限制,則以空矩陣[]作為參數(shù)傳入;nonlcon:如果包含非線性等式或不等式約束,則將這些函數(shù)編寫一個Matlab函數(shù)

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

G=...

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

%計算機非線性等式約束在點x處的函數(shù)值

yonkey_mwh@163.com2015.5.15對參數(shù)nonlcon的進一步示例2個不等式約束,2個等式約束3個決策變量x1,x2,x3如果nonlcon以‘mycon1’作為參數(shù)值,則程序mycon1.m如下

yonkey_mwh@163.com2015.5.15對照約束條件編寫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

yonkey_mwh@163.com2015.5.15注意:[1]fmincon函數(shù)提供了大型優(yōu)化算法和中型優(yōu)化算法。默認時,若在fun函數(shù)中提供了梯度(options參數(shù)的GradObj設置為’on’),并且只有上下界存在或只有等式約束,fmincon函數(shù)將選擇大型算法。當既有等式約束又有梯度約束時,使用中型算法。[2]fmincon函數(shù)可能會給出局部最優(yōu)解,這與初值X0的選取有關。

yonkey_mwh@163.com2015.5.151、寫成標準形式:

s.t.

2x1+3x26s.tx1+4x25x1,x20例

yonkey_mwh@163.com2015.5.152、先建立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.0588

fval=-2.0294

yonkey_mwh@163.com2015.5.151.先建立M文件fun4.m,定義目標函數(shù):

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=[];

yonkey_mwh@163.com2015.5.153.主程序為: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.2250

fval=1.8951

yonkey_mwh@163.com2015.5.15非負條件下線性最小二乘lsqnonneg

適合如下模型:

注意:約束只有非負約束

yonkey_mwh@163.com2015.5.15語法:x=lsqnonneg(c,d)x=lsqnonneg(c,d,x0)x=lsqnonneg(c,d,x0,options)

yonkey_mwh@163.com2015.5.15語法: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(...)

yonkey_mwh@163.com2015.5.15非線性最小二乘lsqnonlin

適合模型:

yonkey_mwh@163.com2015.5.15語法: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,exitflag]=lsqnonli

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論