Matlabの線形/非線形計画最適化アルゴリズム(7)

quadprogのとmpcqpsolverを使用する方法について説明します。
遺跡は、二次計画問題の典型的なクラスを解決するために:
ここに画像を挿入説明
使用する方法の例をMATLABドキュメント基本的な理解を見ることで。ここではいくつかの例を示します。

quadprogの:

%% the use of quadprog
H = [1 -1; -1 2]; 
f = [-2; -6];
A = [1 1; -1 2; 2 1];
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,-2
    1,-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、許容範囲のパラメータを設定することができ、問題のプロジェクトは非常に重要です。
加えてれるexitflagを見て、それが正しい解であるか否かを判断します。のみexitflagを== 1の息子。Hの正定性を見て、正定行列でなければならない、我々は解けることができます。ラムダを見ることによって、それが負であってはならない、ラグランジュオレンジです。

:mpcqpsolver
良い見ていない、以下に示すような問題を解決するために、それはそれは書き込みの数よりも大きい場合、2つの方法が可能であり、不等式制約は別の方法を使用していることに留意すべきである、ラグランジュ関数を記述するのではなく、デュアルのバック書き込み格好良いの問題、どんなに短い、対応するKKT条件は、書き込みに素敵であることを示し、書き込みに、いつも格好良い側、他側は良い見ていません。
ここに画像を挿入説明

%% the use of   mpcqpsolver to solve quadratic programming problems
H = [1 -1; -1 2];
f = [-2; -6];
A = [1 0; 0 1; -1 -1; 1 -2; -2 -1];
b = [0; 0; -2; -2; -3];Aeq = [];
beq = zeros(0,1);
[L,p] = chol(H,'lower');
Linv = inv(L);
p
opt =  mpcqpsolverOptions('double');
opt.MaxIter = 100;
iA0 = false(size(b)); %If your problem has no inequality constraints, use false(0,1). For a cold start, false(m,1).
[x,status,iA,lambda] = mpcqpsolver(Linv,f,A,b,Aeq,beq,iA0,opt)

H mpcsolver最初の要件は、さらにオプションの反復の詳細を表示することができないれ、正定値です。KWIKアルゴリズムが、使用される手段という、私は非常にKWIKを理解していない、これを学ぶことではない学んだSDP、SDPでオペレータ、何主流アルゴリズムそれはいけません。

でも、リゾルバ接続MathWorks社:
MPCの
quadprogの

公開された71元の記事 ウォン称賛18 ビュー10000 +

おすすめ

転載: blog.csdn.net/gophae/article/details/104354633