基于MATLAB環(huán)境下實現(xiàn)最優(yōu)化方法_第1頁
基于MATLAB環(huán)境下實現(xiàn)最優(yōu)化方法_第2頁
基于MATLAB環(huán)境下實現(xiàn)最優(yōu)化方法_第3頁
基于MATLAB環(huán)境下實現(xiàn)最優(yōu)化方法_第4頁
基于MATLAB環(huán)境下實現(xiàn)最優(yōu)化方法_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于MTLAB環(huán)境下實現(xiàn)最優(yōu)化方法阻尼牛頓法1 優(yōu)化設計法優(yōu)化設計(Optimal Design)是現(xiàn)代先進的設計方法,這種設計方法是把數(shù)學規(guī)劃理論與計算方法應用于實際設計中,按照預定的目標,借助計算機的運算尋求最優(yōu)設計方案的有關參數(shù),從而獲得最好的技術經(jīng)濟效果。優(yōu)化設計反映出人們對于設計規(guī)律這一客觀世界認識的深化。設計上的“最優(yōu)值”是指一定條件影響下所能得到的最佳設計值。最優(yōu)值是一個相對的概念,在大多數(shù)的情況下,可以用最大值或最小值來表示。概括起來,優(yōu)化設計的工作包括以下兩部分內(nèi)容:(1)將實際的設計問題的物理模型抽象為數(shù)學模型(用數(shù)學公式來表示)。建立數(shù)學模型時要選取設計變量,列出目標函數(shù)

2、,并且給出約束條件。目標函數(shù)是設計問題所需求的最優(yōu)指標與設計變量之間的函數(shù)關系式。(2)選取適當?shù)淖顑?yōu)化方法,求解數(shù)學模型。也可歸結(jié)為在給定的條件(即約束條件)下,求出目標函數(shù)的極值或者最優(yōu)值問題。最優(yōu)化問題的一般形式為:其中為決策變量,f (x)為目標函數(shù),為約束集或可行域。如果,則上述問題稱為無約束最優(yōu)化問題,否則,稱為約束最優(yōu)化問題。對于無約束最優(yōu)化問題,也已經(jīng)提出了不少數(shù)值求解方法。例如共扼梯度法、牛頓法、Guass牛頓法、牛頓型方法、擬牛頓法、非精確牛頓法、廣義擬牛頓法等。2 牛頓法與阻尼牛頓法牛頓法是求解無約束優(yōu)化問題最古老的算法之一。但到目前為止,它的改進形式仍不失為最有效的算法

3、之一,因為它最大的優(yōu)點是收斂速度比較快。由于一個函數(shù)在一點附近的性態(tài)與二次函數(shù)很接近,所以往往通過建立二次摸型來構(gòu)造有效的算法,最直接而自然的二次模型,顯然就是它的泰勒展開式中只到二次項的部分。由此,牛頓法的基本思想是:設已知f (x)的極小點x*的一個近似,在附近將f(x)作泰勒展開有:其中:若正定,則有極小點存在,設其為,并令便得到f (x)的極小點的一個新的近似,由于為二次凸函數(shù),它的極小點很容易求,事實上,令則有:當用迭代式時,且其中由上式定義時,這種迭代便稱為牛頓迭代,而算法稱為牛頓法。由牛頓法的導出過程可知,牛頓法面臨兩個主要的困難。一是Hessian矩陣不正定。這時二次模型不一定

4、有極小點,甚至沒有平穩(wěn)點。當不定時,二次模型函數(shù)是無界的。為了克服這一困難,人們提出了若干修正措施。Goldstein和Price提出一種修正牛頓辦法:當非正定時,采用最速下降方向。Giu和Murray 提出了一個數(shù)值穩(wěn)定的處理方法,從的修改Cholesky分解形式。 牛頓法的另一困難是,它在實際執(zhí)行的過程中,每次迭代都需要精確計算Hessian矩陣的值,這就需要大量的計算,有時甚至會導致數(shù)值實驗的失敗。后來,有人提出能否定義一種牛頓型方法來避免每次迭代都計算Hessian陣的值。這樣就導致了人們對經(jīng)典牛頓法的修正。 其中阻尼牛頓法(修正牛頓法)具有一定的代表性。其基本思想是:為了改變原始牛頓

5、法定步長的搜索方式,以牛頓方向為搜索方向進行一維最優(yōu)化搜索,求該方向上的最優(yōu)步長因子,即迭代式改為:當用迭代式時,這種迭代便稱為阻尼牛頓迭代,而算法稱為阻尼牛頓法,稱為阻尼因子。顯然,阻尼牛頓法仍然保持了原始牛頓法的二次收斂性質(zhì),同時對于非二次函數(shù)又具有函數(shù)值穩(wěn)定下降的特點。3 MATLAB介紹自1994年美國Math Works公司推出MATLAB以來,目前MATLAB己發(fā)展成為國際上最優(yōu)秀的科技應用軟件之一,它以強大的科學計算與可視化功能、簡單易用、開放式可擴展環(huán)境,特別是所附帶的30多種面向不同領域的工具箱支持,使得MATLAB在許多科學領域中成為計算機輔助設計利分析、算法研究和應用開發(fā)

6、的基本功聚合首選平臺。MATLAB最初用于自動控制系統(tǒng)的輔助設計,而后采用了開放性開發(fā)的思想,不斷吸收各學科領域所開發(fā)的實用程序,形成了一套規(guī)模大、覆蓋面積廣的工具箱,包括信號處理、工程優(yōu)化、圖像處理、小波分析、系統(tǒng)識別、通信仿真、模糊控制、神經(jīng)網(wǎng)絡、統(tǒng)計分析等許多現(xiàn)代工程技術學科的內(nèi)容,它的應用范圍涵蓋了當今所有的工業(yè)、電子、醫(yī)療、建筑等各領域。對于優(yōu)化工具箱(Optimization Toolbox),是將工程上的優(yōu)化方法進行編譯并設定為固定函數(shù),使人們從繁瑣的程序代碼中解放出來,其豐富的函數(shù)使開發(fā)者無需重復編程,用戶只需要按照要求進行調(diào)用相應函數(shù)即可,使得整個過程簡單、直接。本文將分別按

7、兩種方式進行編程計算案例,一種是按照牛頓法的運算法則進行編程,另一種是直接調(diào)用優(yōu)化工具箱函數(shù)計算,將體現(xiàn)出優(yōu)化工具箱極大的優(yōu)勢。4 程序設計思路和程序模塊根據(jù)牛頓法和阻尼牛頓法的計算法則,并依照Matlab的特點,阻尼牛頓法程序設計思路一般步驟如下:(1) 根據(jù)目標函數(shù),任意選取初始迭代點,給定計算精度,并初始化k=0;(2) 判斷迭代次數(shù)是否超出設定迭代次數(shù),若超出迭代次數(shù),則跳出迭代運算,返回迭代次數(shù)、最終迭代點和該點的函數(shù)值,并計算目標函數(shù)f(x)在點處的梯度以及,其中;(3) 檢驗終止條件,若時,則說明是在精度下的最優(yōu)值,計算并輸出,否則轉(zhuǎn)入第(4)步;(4) 計算f(x)在點的Hes

8、sian矩陣,并求其逆矩陣,;(5) 確定牛頓方向,并沿方向按照Armjijo準則做一維沸精確線搜索,得到步長因子,計算:并令k=k+1,轉(zhuǎn)入第(2)步,繼續(xù)運算。按照上面的程序設計思路,阻尼牛頓法的程序模塊和程序說明如下:function x,f,k=dampnm(fun,gfun,Hess,x0)maxk=500;%設定最大迭代次數(shù)rho=0.55;sigma=0.4;k=0;epsilon=1e-5;%給定計算精度while(k<maxk)%判斷迭代次數(shù)是否滿足是定值gk=feval(gfun,x0);%計算函數(shù)f在x0的梯度Gk=feval(Hess,x0);% 計算函數(shù)f在x0

9、的海瑟矩陣(Hessian)dk=-Gkgk;%計算搜索方向,解方程組-gk=Gk*dkif(norm(gk)<epsilon),break;%判斷終止迭代準則,是否滿足設定精度end;m=0;mk=0;while(m<20)%運用Armijo法做非精度線搜索,確定步長因子if(feval(fun,x0+rhom*dk)<feval(fun,x0)+sigma*rhom*gk'*dk)mk=m;break;endm=m+1;endx0=x0+rhomk*dk;k=k+1;endx=x0;%賦值最后迭代點,以便輸出f=feval(fun,x);計算最后迭代點x的函數(shù)值上

10、面的程序保存為dampnm.m文件,以便在案例中調(diào)用。5 計算案例(1) 已知無約束優(yōu)化問題的目標函數(shù)是,求在初始迭代點下,迭代次數(shù)不超過500次的目標函數(shù)最優(yōu)值。因為更好的適應不同的目標函數(shù),以便在求不同目標函數(shù)的最優(yōu)值調(diào)用程序,所以在程序模塊中沒有存儲具體的函數(shù),調(diào)用該程序時還需建立目標函數(shù)、梯度和海瑟矩陣的M文件。 目標函數(shù)的M文件:function f=fun(x)f=100*(x(1)2-x(2)2+(x(1)-1)2;目標函數(shù)梯度的M文件:function g=gfun(x)g=400*x(1)*(x(1)2-x(2)+2*(x(1)-1),-200*(x(1)2-x(2)'

11、;目標函數(shù)海瑟矩陣的M文件:function He=Hess(x)n=length(x);He=zeros(n,n);He=1200*x(1)2-400*x(2)+2,-400*x(1);-400*x(1),200;調(diào)用上面的程序方式為:>> x0=0 0'>> x,f,k=dampnm('fun','gfun','Hess',x0)分別在下程序運行結(jié)果如圖一所示。運用Matlab優(yōu)化工具箱的fminunc函數(shù),可以很輕松的實現(xiàn)上述結(jié)果。為了要調(diào)用fminunc函數(shù),首先得編寫關于f(x)的M文件,其程序代碼如下:圖一 初始點分別在下按照阻尼牛頓法編寫模塊程序運行的結(jié)果圖二 運用Matlab優(yōu)化工具箱的fminunc函數(shù),調(diào)用計算結(jié)果目標函數(shù)的M文件:function f=myfun(x)f=100*(x(1)2-x(2)2+(x(1)-1)2;函數(shù)調(diào)用計算:>> x0=0 0;>> x,fval=fminunc(myfun,x0)fminunc函數(shù)在下運行結(jié)果如圖二所示。6 小結(jié)優(yōu)化設計的各種

溫馨提示

  • 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

提交評論