2 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
fmincon函數(shù)在MATLAB中用于求解非線性多元函數(shù)最小值,應(yīng)用十分廣泛。使用該函數(shù)的關(guān)鍵是定義目標函數(shù),以及在約束條件中有非線性約束時準確定義。具體介紹如下:
一、求解問題的標準型為:
min F(X)
s.t
AX <= b
AeqX = beq
G(x) <= 0
Ceq(X) = 0
VLB <= X <= VUB
其中X為n維變元向量,G(x)與Ceq(X)均為非線性函數(shù)組成的向量,其他變量的含義與線性規(guī)劃、二次規(guī)劃中相同。
二、用Matlab求解上述問題,基本步驟分為三步:
1. 首先建立M文件fun.m定義目標函數(shù)F(X):
function f = fun(X);
f = F(X)
2. 若約束條件中有非線性約束:G(x) <= 0 或 Ceq(x) = 0,則建立M文件nonlcon.m定義函數(shù)G(X)和Ceq(X);
function [G, Ceq] = nonlcon(X)
G = ...
Ceq = ...
3. 建立主程序,非線性規(guī)劃求解的函數(shù)時fmincon,命令的基本格式如下:
注意:
(1)fmincon函數(shù)提供了大型優(yōu)化算法和中型優(yōu)化算法。默認時,若在fun函數(shù)中提供了梯度(options 參數(shù)的GradObj設(shè)置為'on'),并且只有上下界存在或只有等式約束,fmincon函數(shù)將選擇大型算法,當既有等式約束又有梯度約束時,使用中型算法。
(2)fmincon函數(shù)的中型算法使用的是序列二次規(guī)劃法。在每一步迭代中求解二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。
(3)fmincon函數(shù)可能會給出局部最優(yōu)解,這與初值X0的選取有關(guān)。

TA貢獻1803條經(jīng)驗 獲得超3個贊
fmincon函數(shù)在MATLAB中用于求解非線性多元函數(shù)最小值,應(yīng)用十分廣泛。使用該函數(shù)的關(guān)鍵是定義目標函數(shù),以及在約束條件中有非線性約束時準確定義。具體介紹如下:
一、求解問題的標準型為:
min F(X)
s.t
AX <= b
AeqX = beq
G(x) <= 0
Ceq(X) = 0
VLB <= X <= VUB
其中X為n維變元向量,G(x)與Ceq(X)均為非線性函數(shù)組成的向量,其他變量的含義與線性規(guī)劃、二次規(guī)劃中相同。
注意:
(1)fmincon函數(shù)提供了大型優(yōu)化算法和中型優(yōu)化算法。默認時,若在fun函數(shù)中提供了梯度(options 參數(shù)的GradObj設(shè)置為'on'),并且只有上下界存在或只有等式約束,fmincon函數(shù)將選擇大型算法,當既有等式約束又有梯度約束時,使用中型算法。
(2)fmincon函數(shù)的中型算法使用的是序列二次規(guī)劃法。在每一步迭代中求解二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。
(3)fmincon函數(shù)可能會給出局部最優(yōu)解,這與初值X0的選取有關(guān)。
- 2 回答
- 0 關(guān)注
- 219 瀏覽
添加回答
舉報