Matlab線性 非線性規劃優化演算法(7)

2021-10-02 21:55:10 字數 2699 閱讀 6926

介紹如何使用quadprog and mpcqpsolver.

依然是解決一類典型的二次規劃問題:

通過看matlab文件中的例子可以基本了解如何使用。下面給出幾個例子:

quadprog:

%

% the use of quadprog

h =[1-

1;-1

2]; f =[-

2;-6

];a =[11

;-12

;21]

;b =[2

;2;3

];[x,fval,exitflag,output,lambda]=.

..quadprog

(h,f,a,b)%%

h =[1-

1;-1

2]; f =[-

2;-6

];aeq =[1

1];beq =0;

[x,fval,exitflag,output,lambda]=.

..quadprog

(h,f,

,,aeq,beq)

%% here you can set max iteration and tolerance

options =

optimoptions

('quadprog'

,'display'

,'iter'

,'maxiterations',5

,'tolfun'

,1e-16);

h =[1,

-1,1

-1,2

,-21

,-2,

4];f =[2

;-3;

1];lb =

zeros(3

,1);

ub =

ones

(size

(lb));

aeq =

ones(1

,3);

beq =1/

2;x0 =

;[x,fval,exitflag,output,lambda]

=quadprog

(h,f,

,,aeq,beq,lb,ub,x0,options)

值的注意的問題:

options =

optimoptions

('quadprog'

,'display'

,'iter'

,'maxiterations',5

,'tolfun'

,1e-16

);

在優化選項中,我們可以人為設定maxiteration, tolerance這種對迭代次數產生影響的引數,這個在工程問題中是至關重要的。

另外,通過檢視exitflag, 確定是否是正確解。只有exitflag == 1才對。通過檢視h的正定性,必須是正定矩陣,才能有解。通過檢視lamda,也就是拉格朗日橙子,必須不為負。

mpcqpsolver:

解決如下所示的問題,但是要注意,不等式約束採用了另一種方式,兩種方式都是可以的,這種大於號寫法,拉格朗日函式寫起來不好看,但是後面的對偶問題寫起來好看,對應的kkt條件的表示寫起來也好看,總之無論怎麼寫,總是一邊好看,另一邊就不好看。

mpcsolver首先要求h 是正定的,另外options裡面也沒法顯示迭代細節。用的是kwik演算法, 意思是算在sdp裡面的一支,我所學的sdp裡面沒學到這個,不是很了解kwik, 應該不是什麼主流演算法吧。

連個解算器mathworks連線:

mpcquadprog

Matlab非線性規劃

在matlab非線性規劃數學模型可以寫成一下形式 minf x s.t.begin ax le b aeq x beq c x le 0 ceq x 0 end f x 為目標函式,a,b,aeq,beq為線性約束對應的矩陣和向量,c x ceq x 為非線性約束。matlab求解命令為 x fmi...

Matlab線性 非線性規劃優化演算法(5)

值得單獨一說的是fminunc,fminseach,fminbnd的區別 fminunc只能用於求解連續函式,對於變數沒有限制 fminbnd只能用於求解單變數函式,fminsearch只能用於求解多變數函式,clc clear all fun x abs 1 x x0 1 x1 3 x2 3 我們...

Matlab 線性與非線性規劃

matlab的運籌與決策問題 線性規劃問題 函式 linprog f,a,b,aep,bep,lb,ub 引數分析 f 目標函式的係數排列 a 約束條件的係數矩陣 b 約束條件的增廣矩陣的結果 aep 等式的係數矩陣 bep 等式的結果矩陣 lb 所求解的最小值 ub 所求解的最大值 非線性規劃問題...