版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 最優(yōu)化方法課程設計</b></p><p><b> (設計程序)</b></p><p> 題目 共軛梯度法算法分析與實現(xiàn) </p><p> 班級 / 學號 14140101/2011041401011 </p><p> 學 生 姓 名
2、 黃中武 </p><p> 指 導 教 師 王吉波 王微微 </p><p> 課 程 設 計 任 務 書</p><p> 課 程 名 稱 最優(yōu)化方法課程設計 </p><p> 院(系) 理學院 專業(yè) 信息與計算科學
3、 </p><p> 課程設計題目 共軛梯度法算法分析與實現(xiàn) </p><p> 課程設計時間: 2014 年 6月 16日至 2014 年 6月 27日</p><p> 課程設計的要求及內(nèi)容:</p><p><b> [要求]</b></p><p> 學習態(tài)度要
4、認真,要積極參與課程設計,鍛煉獨立思考能力;</p><p> 嚴格遵守上機時間安排;</p><p> 按照MATLAB編程訓練的任務要求來編寫程序;</p><p> 根據(jù)任務書來完成課程設計論文;</p><p> 報告書寫格式要求按照沈陽航空航天大學“課程設計報告撰寫規(guī)范”;</p><p> 報告上
5、交時間:課程設計結(jié)束時上交報告;</p><p> 嚴禁抄襲行為,一旦發(fā)現(xiàn),課程設計成績?yōu)椴患案瘛?lt;/p><p> 運用共軛梯度法求解無約束最優(yōu)化問題</p><p> 要求:1)了解求解無約束最優(yōu)化問題的共軛梯度法;</p><p> 2)繪出程序流程圖;</p><p> 3)編寫求解無約束最優(yōu)化問題的
6、共軛梯度法MATLAB程序;</p><p> 4)利用編寫文件求解某無約束最優(yōu)化問題;</p><p><b> 5)給出程序注釋。</b></p><p> 指導教師 年 月 日</p><p> 負責教師
7、 年 月 日</p><p> 學生簽字 年 月 日</p><p><b> 沈陽航空航天大學</b></p><p> 課 程 設 計 成 績 評 定 單</p><p> 課 程 名 稱 最優(yōu)化理論與算法課程設計
8、 </p><p> 院(系) 理學院 專業(yè) 信息與計算科學 </p><p> 課程設計題目 共軛梯度法算法分析與實現(xiàn) </p><p> 學號 2011041401011 姓名 黃中武 </p><p>&l
9、t;b> 指導教師評語:</b></p><p> 課程設計成績 </p><p> 指導教師簽字 </p><p><b> 年 月 日</b></p><p><b> 目
10、錄</b></p><p><b> 一、正文1</b></p><p><b> 二、總結(jié)2</b></p><p><b> 參考文獻3</b></p><p><b> 附 錄4</b></p><p&
11、gt;<b> 一、正文</b></p><p> 一 無約束最優(yōu)化問題的共軛梯度法</p><p> 共軛梯度法最初是由Hesteness和Stiefel于1952年為求解線形方程組而提出的。后來,人們把這種方法用于求解無約束最優(yōu)化問題,使之成為一種重要的最優(yōu)化方法。</p><p> 下面,重點介紹Fletcher-Reeves共軛
12、梯度法,簡稱FR法。</p><p> 共軛梯度法的基本思想是把共軛性與最速下降法相結(jié)合,利用已知點處的梯度構(gòu)造一組共軛方向,并沿這組方向進行搜索,求出目標函數(shù)的極小點。根據(jù)共軛梯度方向的基本性質(zhì),這種方法具有二次終止性。首先討論對于二次函數(shù)的共軛梯度法,然后再把這種方法推廣到極小化一般函數(shù)的情形。考慮問題</p><p> 其中A是對稱正定矩陣,c是常數(shù)。</p>&l
13、t;p><b> 具體求解方法如下:</b></p><p> 首先,任意給定一個初始點,計算出目變函數(shù)在這點的梯度,若=0,則停止計算,否則,令</p><p> 沿方向搜索,得到點,計算在處的梯度,若,則利用和構(gòu)造第二個搜索方向,再沿搜索。</p><p> 一般地,若已知點和搜索方向,則從出發(fā),沿進行搜索,得到</p&
14、gt;<p><b> 其中步長滿足</b></p><p> 此時可求出的顯式表達。令</p><p><b> 求得極小點,令</b></p><p> 根據(jù)二次函數(shù)的梯度表達式,即</p><p><b> ?。?0.3.16)</b></p&
15、gt;<p> 由(10.3.16)式得到</p><p><b> ?。?0.3.17)</b></p><p> 計算在處的梯度,若,則停止計算;否則,用和構(gòu)造下一個搜索方向,并使和關于共軛。按此設想,令 </p><p><b> ?。?0.3.18)</b></p><p&g
16、t;<b> 上式兩端左乘,并令</b></p><p><b> 由此得到</b></p><p><b> (10.3.19)</b></p><p> 再從出發(fā),沿方向搜索</p><p> 綜上分析,在第一個搜索方向取負梯度的前提下,重復使用公式(10.3.1
17、4),(10.3.17),(10.3.18)和(10.3.19),就能伴隨計算點的增加,構(gòu)造出一組搜索方向。</p><p><b> 二 程序流程圖</b></p><p><b> N</b></p><p><b> Y </b></p><p> 圖一 共軛梯度
18、法程序流程圖</p><p> 三 共軛梯度法的MATLAB程序</p><p> function [x,val,k]=frcg(fun,gfun,x0)</p><p> maxk=5000;</p><p> rho=0.6;sigma=0.4;</p><p> k=0;epsilon=1e-7;&l
19、t;/p><p> n=length(x0);</p><p> while (k<maxk)</p><p> g=feval(gfun,x0);</p><p> itern=k-(n+1)*floor(k/(n+1));</p><p> itern=itern+1;</p><p
20、> if(itern==1)</p><p><b> d=-g;</b></p><p><b> else</b></p><p> beta=(g'*g)/(g0'*g0);</p><p> d=-g+beta*d0;</p><p>
21、<b> gd=g'*d;</b></p><p><b> if(gd>=0)</b></p><p><b> d=-g;</b></p><p><b> end</b></p><p><b> end</b
22、></p><p> if (norm(g)<epsilon)</p><p><b> break;</b></p><p><b> end</b></p><p><b> m=0;</b></p><p><b>
23、 mk=0;</b></p><p> while (m<20)</p><p> if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)</p><p><b> mk=m;</b></p><p><b>
24、break;</b></p><p><b> end</b></p><p><b> m=m+1;</b></p><p><b> end</b></p><p> x0=x0+rho^mk*d;</p><p> val=f
25、eval(fun,x0);</p><p><b> g0=g;</b></p><p><b> d0=d;</b></p><p><b> k=k+1;</b></p><p><b> end</b></p><p>
26、;<b> x=x0;</b></p><p> val=feval(fun,x);</p><p> function f=fun(x)</p><p> f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;</p><p> function g=gfun(x)</p><
27、p> g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'</p><p> 四 利用所編程序求解實際問題</p><p> 例 </p><p><b> 該問題有精確解</b></p><p> 利用所編程序求解此問
28、題,在命令窗口輸入:</p><p><b> 運行結(jié)果為:</b></p><p><b> 五 程序注釋</b></p><p> function [x,val,k]=frcg(fun,gfun,x0)</p><p> %用FR共軛梯度法求解無約束問題:min f(x)</p&
29、gt;<p> %輸入:x0時初始點,fun,gfun分別是目標函數(shù)和梯度</p><p> %輸出:x,val分別是近似最優(yōu)點和最優(yōu)值,k是迭代次數(shù)。</p><p> maxk=5000;%最大迭代次數(shù)</p><p> rho=0.6;sigma=0.4;</p><p> k=0;epsilon=1e-7;&l
30、t;/p><p> n=length(x0);</p><p> while (k<maxk)</p><p> g=feval(gfun,x0);%計算梯度</p><p> itern=k-(n+1)*floor(k/(n+1));</p><p> itern=itern+1;%計算搜索方向</
31、p><p> if(itern==1)</p><p><b> d=-g;</b></p><p><b> else</b></p><p> beta=(g'*g)/(g0'*g0);</p><p> d=-g+beta*d0;</p>
32、;<p><b> gd=g'*d;</b></p><p><b> if(gd>=0)</b></p><p><b> d=-g;</b></p><p><b> end</b></p><p><b>
33、; end</b></p><p> if (norm(g)<epsilon)%檢驗終止條件</p><p><b> break;</b></p><p><b> end</b></p><p><b> m=0;</b></p>
34、<p><b> mk=0;</b></p><p> while (m<20)</p><p> if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)</p><p><b> mk=m;</b></p>&
35、lt;p><b> break;</b></p><p><b> end</b></p><p><b> m=m+1;</b></p><p><b> end</b></p><p> x0=x0+rho^mk*d;</p>
36、;<p> val=feval(fun,x0);</p><p><b> g0=g;</b></p><p><b> d0=d;</b></p><p><b> k=k+1;</b></p><p><b> end</b>&
37、lt;/p><p><b> x=x0;</b></p><p> val=feval(fun,x);</p><p> function f=fun(x)</p><p> f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;%需要求解的函數(shù)</p><p> functio
38、n g=gfun(x)</p><p> g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'%梯度</p><p><b> 二、總結(jié)</b></p><p> 不知不覺,一個學期就這樣過去了,隨著期末尾聲的到來,《最優(yōu)化》這門課也已經(jīng)結(jié)課了,接著而來的是為期兩個星期
39、的課程設計。</p><p> 作為信息與計算科學系的一員,我們在課堂上接觸最多的就是理論部分,剛好課程設計可以給我們驗證理論,聯(lián)系實際的機會,所以,這次課程設計,我一直都在認真完成。在拿到自己的課程設計題目的時候,我對它進行了一定時間的審題,題目中要求我用共軛梯度法求解無約束優(yōu)化問題, 所以我拿到課本,仔細地看了共軛梯度法的原理與例題求解,以便幫助我更好的理解共軛梯度法的應用。</p><
40、p> 我記得,再一次研究生面試中,有的老師問過考生:你在你的大學生涯中學到了什么?如果讓我回答,我會說:我學到了一種發(fā)現(xiàn)問題與解決問題的方法,這種方法是在我的學習中慢慢形成的一種潛移默化的思想,關于學到的內(nèi)容,我們不會一直保留太清晰的記憶,也不會在以后的生活中用到太多,就像買菜不會用到微積分,不會求導,但是,數(shù)學方法和思想給我們思考問題所帶來的方法論卻是大有裨益。</p><p> 這次課程設計,我發(fā)現(xiàn)
41、我的很多不足,比如在MATLAB上的應用上,我還不熟練,這與我在平時的練習中沒有加以重視有關,而且在《最優(yōu)化》的很多知識點上,自己還沒有很好地掌握。</p><p> 最后 ,我要感謝我們的任課教師王吉波老師,感謝他在給我們上課中的帶來的幽默感和知識的傳授。在此,祝愿老師身體健康,工作順利。</p><p> 完稿日期: 2014 年 6月 21日</p><p
42、><b> 參考文獻</b></p><p> [1] 陳寶林.《最優(yōu)化理論與算法》[M].北京,清華大學出版社,2013.</p><p> [2] 劉衛(wèi)國.《MATLAB程序設計教程》[M].北京,中國水利水電出版社,2010.</p><p> [3] 馬昌鳳.《最優(yōu)化方法及其MATLAB程序設計》[M].北京,科學出版社,
43、2010.</p><p><b> 附 錄</b></p><p><b> 源程序:</b></p><p> function [x,val,k]=frcg(fun,gfun,x0)</p><p> maxk=5000;</p><p> rho=0.6;s
44、igma=0.4;</p><p> k=0;epsilon=1e-7;</p><p> n=length(x0);</p><p> while (k<maxk)</p><p> g=feval(gfun,x0);</p><p> itern=k-(n+1)*floor(k/(n+1));<
45、;/p><p> itern=itern+1;</p><p> if(itern==1)</p><p><b> d=-g;</b></p><p><b> else</b></p><p> beta=(g'*g)/(g0'*g0);</p
46、><p> d=-g+beta*d0;</p><p><b> gd=g'*d;</b></p><p><b> if(gd>=0)</b></p><p><b> d=-g;</b></p><p><b> end
47、</b></p><p><b> end</b></p><p> if (norm(g)<epsilon)</p><p><b> break;</b></p><p><b> end</b></p><p><b
48、> m=0;</b></p><p><b> mk=0;</b></p><p> while (m<20)</p><p> if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)</p><p><b&g
49、t; mk=m;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> m=m+1;</b></p><p><b> end</b></p><
50、;p> x0=x0+rho^mk*d;</p><p> val=feval(fun,x0);</p><p><b> g0=g;</b></p><p><b> d0=d;</b></p><p><b> k=k+1;</b></p>&l
51、t;p><b> end</b></p><p><b> x=x0;</b></p><p> val=feval(fun,x);</p><p> function f=fun(x)</p><p> f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;</p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 最優(yōu)化課程設計--共軛梯度算法研究
- 最優(yōu)化課程設計--牛頓法與阻尼牛頓法算法分析
- 最優(yōu)化方法課程設計--可行方向法分析與實現(xiàn)
- 最優(yōu)化課程設計--最速下降法算法分析與實現(xiàn)
- 求解最優(yōu)化問題的非線性共軛梯度法.pdf
- 最優(yōu)化方法課程設計_斐波那契法分析與實現(xiàn) 完整版
- 共軛梯度算法的設計與實現(xiàn)畢業(yè)設計
- 求解最優(yōu)化問題的非線性共軛梯度法和自調(diào)比擬牛頓法.pdf
- 34478.兩類非光滑最優(yōu)化問題的修正共軛梯度法
- 無約束最優(yōu)化問題的非線性共軛梯度算法的研究.pdf
- 最優(yōu)化方法課程設計-- 求解各類最優(yōu)化問題
- 用matlab實現(xiàn)共軛梯度法求解實例
- 非單調(diào)共軛梯度路徑方法解最優(yōu)化問題.pdf
- 12683.無約束優(yōu)化的譜共軛梯度法和三項共軛梯度法研究
- fr共軛梯度法與擬牛頓法計算機實現(xiàn)及仿真
- 最優(yōu)化問題的梯度投影算法研究.pdf
- 算法分析與設計課程設計
- fr共軛梯度法與擬牛頓法計算機實現(xiàn)及仿真
- 共軛梯度法的研究.pdf
- 線性約束最優(yōu)化問題的投影梯度法.pdf
評論
0/150
提交評論