matlab優化函數fminunc


一起來學演化計算-matlab優化函數fminunc

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

fminunc

  • 求無約束多變量函數的最小值
  • 非線性編程求解器
  • 找到指定問題的最小值,\(min_{x}f(x)\) ,其中f(x)是一個返回一個標量的函數,x是一個向量或者矩陣。

語法

  • x = fminunc(fun,x0)
  • x = fminunc(fun,x0,options)
  • x = fminunc(problem)
  • [x,fval] = fminunc( ___ )
  • [x,fval,exitflag,output] = fminunc( __ )
  • [x,fval,exitflag,output,grad,hessian] = fminunc( ___ )

表示和描述

  • x = fminunc(fun,x0)從x0點開始,嘗試找到fun中描述的函數的一個局部最小x。點x0可以是標量、向量或矩陣。

  • Note fminunc適用於無約束的非線性問題。如果您的問題有約束,通常使用fmincon。參見優化決策表。

  • x = fminunc(fun,x0,options)通過選項中指定的優化選項最小化樂趣。使用 optimoptions 設置這些選項。

  • x = fminunc(problem)找到問題的最小值,其中問題是 Input Arguments 中描述的結構。

  • [x,fval] = fminunc( __ ),對於任何語法,返回目標函數在解x處的值

  • [x,fval,exitflag,output] = fminunc()另外返回一個描述fminunc退出條件的exitflag值,以及一個包含優化過程信息的結構輸出

  • [x,fval,exitflag,output,grad,hessian] = fminunc( __ )另外返回:

    • 梯度-解x處的梯度。
    • Hessian- 解決方案x的x1和x2的偏導。
    • \[Hessian=H _ { i j } = \frac { \partial ^ { 2 } f } { \partial x _ { i } \partial x _ { j } } \]

示例

最小化一個多項式

求函數梯度

使用問題結構

  • 此和上一節的內容相同,但是使用了問題結構的模型,即為problem設置options,x0,objective,solver然后使用fminunc函數優化問題。
problem.options = options;
problem.x0 = [-1,2];
problem.objective = @rosenbrockwithgrad;
problem.solver = 'fminunc';

獲取最佳的目標函數值

  • 沒看出和第一個例子有什么區別,但是我感覺第一個函數是能夠計算得到梯度的,而這個函數則不能夠直接計算出梯度信息

檢查解決方案過程

  • 可以輸出優化過程和各種參數

輸入參數

Fun 需要被優化的函數

X0 初始點

選項

所有算法

  • 尋優算法
  • 如果函數能夠提供梯度則選擇"trust-region"選項,否則選擇 擬牛頓法 -"quasi-newton"
  • 梯度檢查
  • 顯示
  • 有限差分類型和步長
  • 函數終止
  • 迭代調用其他函數
  • 畫出結果
  • 自定義梯度函數
  • TypicalX

trust-region算法

quasi-Newton

Problem

輸出參數


免責聲明!

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



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