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!