MPC tool box内の最適化器を変更することは可能でしょうか?
이전 댓글 표시
こんにちは。
MPC tool box内で二次計画法(QP solver)を用いて操作量を決定していると思います。
そのQP solverを別の最適化手法に置き換えることは可能でしょうか?
また、現在MPC tool box内のoptimizer(MATLAB function)において
外部関数を用いている箇所がありますが、その外部関数内部はどのように見ることができますか?
質問をまとめると
①MPCの最適化器としてQP以外の手法に置き換えることは可能か。
②MPC内部の外部関数へのアクセス。
以上です。宜しくお願い致します。
채택된 답변
추가 답변 (1개)
Youhei Ogawa
2019년 11월 13일
0 개 추천
댓글 수: 4
Toshinobu Shintai
2019년 11월 13일
私はやったことがないのでわかりません。
一つ注意事項としては、MATLABの関数の中にはSimulink Coderでコード生成できるものとできないものがあります。cvxがコード生成できない関数である場合は組み込めないということになります。
Youhei Ogawa
2019년 11월 14일
Kohei Iwamoto
2019년 11월 22일
Simulationについてはcvxを使用することが出来る模様です。
MPC Toolboxで2次計画問題を取り扱う場合には、評価関数及び制約式の定式化は以下のURLに記載の通りとなっていますのでご注意下さい。
QP Solver:
ご希望のL1正則化用に定式化を変更して上手く機能するかどうかは、実際のところ試してみないと分かりませんので試行錯誤してください。
試したコードを以下に貼り付けておきますので参考にしてください。
function [X, status] = mpcCustomSolver(H,f,A,b,x0)
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
Youhei Ogawa
2019년 11월 22일
카테고리
도움말 센터 및 File Exchange에서 Code Generation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!