標准形式:
\[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