MPC tool box内の最適化器を変更することは可能でしょうか?
Show older comments
こんにちは。
MPC tool box内で二次計画法(QP solver)を用いて操作量を決定していると思います。
そのQP solverを別の最適化手法に置き換えることは可能でしょうか?
また、現在MPC tool box内のoptimizer(MATLAB function)において
外部関数を用いている箇所がありますが、その外部関数内部はどのように見ることができますか?
質問をまとめると
①MPCの最適化器としてQP以外の手法に置き換えることは可能か。
②MPC内部の外部関数へのアクセス。
以上です。宜しくお願い致します。
Accepted Answer
More Answers (1)
Youhei Ogawa
on 13 Nov 2019
0 votes
4 Comments
Toshinobu Shintai
on 13 Nov 2019
私はやったことがないのでわかりません。
一つ注意事項としては、MATLABの関数の中にはSimulink Coderでコード生成できるものとできないものがあります。cvxがコード生成できない関数である場合は組み込めないということになります。
Youhei Ogawa
on 14 Nov 2019
Kohei Iwamoto
on 22 Nov 2019
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
on 22 Nov 2019
Categories
Find more on Code Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!