필터 지우기
필터 지우기

mpcCustomS​olverにおけるス​ラッグ変数の扱い

조회 수: 5 (최근 30일)
Ken Tsuruta
Ken Tsuruta 2020년 9월 27일
답변: Kohei Iwamoto 2020년 9월 28일
こんにちは。
通常、MPCでQP問題を解いていく際、
MPC tool boxにてスラッグ変数の設定が行われていますが、
MPCにCustom QP Solverを適用し、(Obj.Optimizer.CustomSolver = true;)
自作QPソルバーにてシミュレーションを行う際にはスラッグ変数は
どのように扱われるのでしょうか?通常通りMPC tool boxのスラッグ変数が適用されているのでしょうか?
以下は自分が作成したコードになります。
本コードでは、CVXを用いて二次計画法を解いています。
function [X, status] = mpcCustomSolver(H,f,A,b,x0)
%% cvxで解く
persistent n; %Keep variable 'n' in memory
if isempty(n)
% Run just first time step
n = evalin('base','Obj.ControlHorizon'); %Extract variable from base workspace
end
cvx_begin quiet
variable X(n+1)
% 二次計画問題
minimize (0.5*X'*H*X+f'*X)
subject to
A*X >= b;
cvx_end
% % Get cvx status
str = cvx_status;
if strcmp('Solved',str)
status = 1; % Feasible solution
else
status = -1; % Infeasible solution
end
end

채택된 답변

Kohei Iwamoto
Kohei Iwamoto 2020년 9월 28일
はい、カスタムQPソルバーを使用してもデフォルトのMPCの構成と同じくスラック変数が扱われています。
スラックが最適化に含まれていることを確認する最も簡単な方法はヘシアンHの次数を確認することです。
ヘシアンHは以下のようなQPのフォームにおいて決定変数Xの次数と同じ正方行列となります。
1/2*X'*H*X+f'*X
決定変数Xは (操作量*制御ホライズン) + 1 の長さのベクトルであるはずです。
この1がスラック変数に対応しています。
たとえば、操作量の数が1、制御ホライズンを2とした場合、決定変数の次数は3となります。

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Refinement에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!