用MATLAB求解非線性優(yōu)化問題_第1頁
用MATLAB求解非線性優(yōu)化問題_第2頁
用MATLAB求解非線性優(yōu)化問題_第3頁
用MATLAB求解非線性優(yōu)化問題_第4頁
用MATLAB求解非線性優(yōu)化問題_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗四用MATLAB求解非線性優(yōu)化問題一、實驗目的:了解Matlab的優(yōu)化工具箱,利用Matlab求解非線性優(yōu)化問題。二、相關知識非線性優(yōu)化包括相當豐富的內(nèi)容,我們這里就Matlab提供的一些函數(shù)來介紹相關函數(shù)的用法及其所能解決的問題。非線性一元函數(shù)的最小值Matlab命令為fminbnd(),其使用格式為:X=fminbnd(fun,x1,x2)[X,fval,exitflag,output]=fminbnd(fun,x1,x2)其中:fun為目標函數(shù),xl,x2為變量得邊界約束,即xlWxWx2,X為返回得滿足fun取得最小值的x的值,而fval則為此時的目標函數(shù)值。exitflag>0表示計算收斂,exitflag=0表示超過了最大的迭代次數(shù),exitflag<0表示計算不收斂,返回值output有3個分量,其中iterations是優(yōu)化過程中迭代次數(shù),funcCount是代入函數(shù)值的次數(shù),algorithm是優(yōu)化所采用的算法。X5+X3+X2-1f(x)= 例1:求函數(shù) ex2+sin(-x)在區(qū)間[-2,2]的最小值和相應的x值。解決此問題的Matlab程序為:clearfun='(xA5+xA3+xA2-1)/(exp(xA2)+sin(-x))'ezplot(fun,[-2,2])[X,fval,exitflag,output]=fminbnd(fun,-2,2)結(jié)果為:X=0.2176fval=-1.1312exitflag=1output=iterations:13funcCount:13algorithm:'goldensectionsearch,parabolicinterpolation'無約束非線性多元變量的優(yōu)化這里我們介紹兩個命令:fminsearch()和fminunc(),前者適合處理階次低但是間斷點多的函數(shù),后者則對于高階連續(xù)的函數(shù)比較有效。命令fminsearch()的格式為:X=fminsearch(fun,X0)[X,fval,exitflag,output]=fminsearch(fun,X0,options)該命令求解目標函數(shù)fun的最小值和相應的x值,X0為x的初始值,fval為返回的函數(shù)值,exitflag=l表示優(yōu)化結(jié)果收斂,exitflag=0表示超過了最大迭代次數(shù)。返回值output有3個分量,其中iterations是優(yōu)化過程中迭代次數(shù),funcCount是代入函數(shù)值的次數(shù),algorithm是優(yōu)化所采用的算法。Options是一個結(jié)構(gòu),里面有控制優(yōu)化過程的各種參數(shù),參考optimset()命令來設置,一般情況下我們不必改動它,即使用缺省設置就可以了。例2:求函數(shù)f(x,y)二sin2x+cosy的最小值以及最小值點。完成該計算的Matlab程序如下:clearfunl='sin(x)+cos(y)'fun2='sin(x(l))+cos(x(2))'ezmesh(funl)[X,fval]=fminsearch(fun2,[0,0])X=-l.5708 3.l4l6fval=-2.0000其中語句ezmesh()是為了畫出函數(shù)的圖形,注意這里funl和fun2的不同,考慮如果用相同的是否可行。命令fminunc()的格式為:X=fminunc(fun,X0)[X,fval,exitflag,output,grad,hessian]=fminunc(fun,X0,options)命令fminunc()通過計算尋找多變量目標函數(shù)fun的最小值,X0為優(yōu)化的初始值,X為返回的變量的值,grad返回解點的梯度,hessian返回解點的赫森矩陣。其它參數(shù)的意義和命令fminsearch()相同。例3:求函數(shù)/(x1,x2)二exi(2x1+3x+2X1x2+3x2+1)的最小值。Matlab程序為.0clearfun='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)運行結(jié)果為:IterationFunc-countf(x)Step-sizeDirectionalderivative1210.2-10280.3694710.134277-0.02033l40.l544l90.459778-0.06964200.l347040.746874-2.28e-0055260.l3296l0.6399l-l.le-0076320.l3296l0.897232-7.32e-009Optimizationterminatedsuccessfully:Currentsearchdirectionisadescentdirection,andmagnitudeofdirectionalderivativeinsearchdirectionlessthan2*options.TolFunx=0.2695-0.5898fval=0.1330exitflag=1output=iterations:6funcCount:33stepsize:1.0000firstorderopt:1.6892e-005algorithm:'medium-scale:Quasi-Newtonlinesearch'grad=1.0e-004*(-0.1689,0.0074)hessian=5.11102.64372.64378.0539本例的程序?qū)?shù)options進行了設置,'largescale','off,關閉了大規(guī)模方式,'display',用來控制計算過程的顯示,'iter'表示顯示優(yōu)化過程的每次計算結(jié)果,'off表示不顯示所有輸出,’final'僅輸出最后結(jié)果,'tolx'用來控制輸入變量x的允許誤差精度,本利設置為le-8,'tolfun'是控制目標函數(shù)的允許誤差精度,缺省值是le-4,本例為le-8。有約束非線性多元變量的優(yōu)化由線性規(guī)劃我們看到優(yōu)化要處理各種約束條件,在非線性規(guī)劃中問題就更加復雜,除了線性規(guī)劃中的那些約束外,還要增加非線性約束。Matlab的命令函數(shù)fmincon()可以處理有約束的非線性多元函數(shù)的優(yōu)化問題。有約束多變量優(yōu)化問題的數(shù)學模型為:求一組變量xl,x2,,xn,滿足在給定的約束條件下,使目標函數(shù)f(x「x2, ,xn)最小。目標函數(shù)一般為非線性函數(shù),約束條件分為線性不等式約束、線性等式約束、變量邊界約束和非線性約束幾部分。除非線性約束外,表示方法與線性規(guī)劃相同。函數(shù)fmincon()的具體格式為: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,xO,...)[X,fval,exitflag,output,lambda,grad,Hessian]=fmincon(fUn,xO,...)參數(shù)中fun為目標函數(shù),x0為變量的初始值,x為返回的滿足要求的變量的值。A和b表示線性不等式約束,Aeq,beq表示線性等式約束,Lb和Ub分別為變量的下界和上界約束,nonlcon表示非線性約束條件,options為控制優(yōu)化過程的優(yōu)化參數(shù)向量。返回值fval為目標函數(shù)。exitflag>0表示優(yōu)化結(jié)果收斂于解,exitflag=0表示優(yōu)化超過了函數(shù)值的計算次數(shù),exitflag<0表示優(yōu)化不收斂。lambda是拉格朗日乘子,顯示那個約束條件有效。grad表示梯度,hessian表示漢森矩陣。例4:求[X],X2],使得目標函數(shù)f(X],J)二3(4叮+2X;+牡"+2X2+1)在約束條件1.5+X1*x-X1-x2<0,-X1*x2<10下取得最小值。我們設計的程序如下:先把目標函數(shù)和約束條件分別編寫成獨立的m文件,注意,這樣的m文件必須用function開頭,并且文件名一定要和函數(shù)名一致。目標函數(shù)的文件為:functionf=objfun(x)f=exp(x(l))*(4*x(l)人2+2*x(2)人2+4*x(l)*x(2)+2*x(2)+l);約束條件的文件為:function[c,ceq]=confun(x)c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];ceq=[];接著,編寫完成優(yōu)化的程序如下:clearx0=[-11];options=optimset('largescale','off','display','iter');[x,fval,exitflag,output]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)運行結(jié)果為:maxDirectionalIterF-countf(x)constraintStep-sizederivativeProcedure131.83940.510.0486271.85127-0.091971-0.556Hessianmodifiedtwice3110.3001679.3310.174150.5298340.92091-0.9655200.186965-1.5170.5-0.1686240.07290850.33131-0.05187280.0353322-0.033031-0.01428320.02355660.0031841-6.22e-0069360.02355049.032e-00811.76e-010HessianmodifiedOptimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:12x=-9.54741.0474fval=0.0236exitflag=1output=iterations:9funcCount:38stepsize:1algorithm:'medium-scale:SQP,Quasi-Newton,line-search'firstorderopt:[]cgiterations:[]例5:在上例的基礎上,再加上邊界約束條件,即加上X1工0,x2工0,則我們僅需要修改上面的第三個程序為:clearx0=[-11];lb=[0,0];ub=[];options=optimset('largescale','off','display','iter');[x,fval,exitflag,output]=fmincon(@objfun,x0,[],[],[],[],lb,ub,@confun,options)現(xiàn)在得到的結(jié)果為:maxDirectionalIterF-countf(x)constraintStep-sizederivativeProcedure135.00090.513278.50041.355e-0201-0.0004

3118.53.04e-01312.43e-012HessianmodifiedOptimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:13x=01.5000fval=8.5000exitflag=1output=iterations:3funcCount:13stepsize:1algorithm:'medium-scale:SQP,Quasi-Newton,line-search'firstorderopt:[]cgiterations:[]三、實驗內(nèi)容1.將例1中x的范圍改為[-5,5]你將得到怎

溫馨提示

  • 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

提交評論