以前matlab針對優化問題有幾種命令,新版本的matlab已經將各種命令統一了,主要是通過fmincon函數來實現規化問題,不論是線性規劃還是非線性規劃,都可以用該命令。
工具/原料
matlab
方法/步驟
fmincon作為優化問題的萬能命令,既可以解決帶約束的優化問題,有可以解決不帶約束的優化問題。下面簡單介紹一下。
fmincon命令的格式如下。
解釋如下:
輸出x為解的結果
輸出fval為目標函數的最小值
輸出exitflag為解的情況(大於0表示求解成功)
程序名用於寫目標函數
x0為初始向量
A、AEQ為係數矩陣(A為不等式約束,AEQ為等式約束)
B、BEQ為常數項向量(B為不等式約束的常量,BEQ為等式約束的常量)
L為解的下限
U為解的上限
程序2用於非線性約束
下面用一個實例來說明。如下圖
首先編寫目標函數。在編輯器中編寫好後,保存。
然後,將題目轉換會命令語言。其中的
1 1 5
A=1 -2 ,B= 3;
AEQ= -3 2, BEQ=8;
-1 3
L= 4 ,U= 7;
初始值就隨便填寫符合上下限的數就行了,比如[1;1]
最後,在命令窗口中敲入命令。
或者這樣寫。
結果如下圖。解釋如下x=[0.4;4.6]表示x=0.4,y=4.6時目標函數在滿足約束的情況下取得最小值fval=-19.16.其中exitflag=1>0表示結果正確。