Matlab無約束非線性規划的求解


標准形式:

\[min\quad f(X) \]

沒有任何的約束條件,在matlab中,fminsearch() 和 fminunc() 可用於求解非線性規划。

  • fminsearch 是用單純形法尋優
  • fminunc 為無約束優化提供了大型優化和中型優化算法

MATLAB 求解無約束非線性規划的步驟

①首先建立一個函數M文件, 如 fun.m,用以儲存目標函數。

②其次,調用格式

[x.favl,exitflag,output]=fminunc('fun',X0,options) 或

[x.favl,exitflag,output]=fminsearch('fun',X0,options)

等號左側:

  • x:返回最優解。

  • favl:返回目標函數在最優解 x 點的函數值。

  • exitflag:返回算法的終止標志。

  • output:返回優化算法信息的一個數據結構。

等號右側:

  • 第一個參數是調用目標函數儲存的文件
  • 第二個參數是決策變量的初始值
  • 第三個輸入參數 options 為設置優化選項參數

例:給定初始值為[-1,1],求

\[min\quad f(x)=(4x_1^2+2x^2_2+4x_1x_2+2x_2+1)e^{x_1} \]

1.編寫函數fun.m:

function f=fun(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
end

2.輸入如下:

x0=[-1,1];
[x,f]=fminunc('fun',x0)

3.運行結果顯示:

x =

    0.5000   -1.0000


f =

   3.6609e-16


免責聲明!

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



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