最優化理論與算法------最速下降法(附Matlab實現):


寫在最前:

在此只是簡單在應用層面說明一下相關算法,嚴謹的數學知識,請大家參考最下面參考書目,后期有精力會進行細化,先占個坑。

基礎知識:

通常所說的最速下降法均指歐氏度量意義下的最速下降法,最速下降法用於求解無約束的非線性規划問題,

求解的問題可以描述為:

\[\begin{array}{l} \begin{array}{*{20}{c}} {}&{} \end{array}\min \quad f(x)\\ \begin{array}{*{20}{c}} {}&{} \end{array}s.t.\quad \;x \in {R^n} \end{array} \]

其中函數\(f(x)\)具有一階連續偏導數。

\(s.t.\)表示是subject to的縮寫,即約束條件的意思。集合\(R^n\)表示的是\(n\)維歐式空間。

下降最快的方向為負梯度方向:

\[{d^{(k)}} = - \nabla f({x^{(k)}}){d^{(k)}} = - \nabla f({x^{(k)}}) \]

程序框圖:

對於具體的求解過程,我一般喜歡用程序框圖的方式來呈現:
程序流程圖

例子:

這里給大家貼一個PPT上的手動求解的例子,通過手動求解的例子學習,有助於大家理解算法,進而去編程:
eg1
eg2

Matlab代碼求解:

這里首先要說的是程序的結構:

其中,main函數為主函數去執行求解

Min_TD為最速下降算法實現,若要修改求解的函數,只需要在main函數中修改一下具體求解的表達式部分即可,
具體修改

需要的可以下載下來進行學習。

(對於新手再提醒一下,main和Min_TD一定要放在同一個目錄下才能正常執行哦!)

全套下載鏈接:包含文檔、PPT、Matlab源代碼等等:https://gitee.com/a_moment_of_dodge/optimization_theory_matlab

參考書目

最優化理論與算法(第二版) 陳寶林 編著

最優化理論Matlab

最速下降法:https://www.cnblogs.com/yuhuastone/p/12736609.html

牛頓法:https://www.cnblogs.com/yuhuastone/p/12814752.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM