MPCの最適化問題を​QPソルバーからMI​LPまたはGAに変更​したい

5 visualizaciones (últimos 30 días)
Jianan Liu
Jianan Liu el 28 de Jun. de 2023
Respondida: Toshinobu Shintai el 28 de Jun. de 2023
質問が2点あります。
  1. MPCの最適化問題を変更することは可能ですか?
  2. 1.が実現できない場合、MPCを独自に作成することはできますか?
1. SimulinkのFMIブロックに挿入したモデルを対象にMPCで整数での最適化を行いたいです。
この問題は整数の組合せ最適化問題となってしまうため、MPC tool boxのデフォルトである二次計画法は対応できないと思われます。
最適化アルゴリズムとして、intlinprogまたはGAの採用を検討しているのですが、MPCに実装することは可能ですか?
2. 1.ができない場合に備え、MATLAB Function ブロックを用いてintlinprogを実装しようとしているのですが
以下のようなエラーが出ます。
INTCON の各要素は、範囲 [1 numVars]、([1 0]) の整数でなければなりません。 Error in intlinprog.m (line 135) throw(ME); 'MILP/MATLAB Function' のエラー (line 84)
該当箇所周辺は
intcon = (24*3+1:120);
coder.extrinsic('optimoptions','intlinprog');
options = optimoptions('intlinprog','Display','iter');
[x,fval] = intlinprog(f,intcon,Con.Aineq,Con.bineq,Con.Aeq,Con.beq,Con.lb,Con.ub,[],options);

Respuesta aceptada

Toshinobu Shintai
Toshinobu Shintai el 28 de Jun. de 2023
質問1についてですが、Model Predictive Control Toolboxでは、MPCモデルをカスタマイズできる機能が用意されています。非線形MPCのオブジェクトを使う必要がありますが、以下のドキュメンテーションに記載されているように、ソルバーを任意のものに設定することができますので、原理的には混合整数線形計画法や遺伝的アルゴリズムを用いることができます。
intlinprog」や「ga」コマンドが使う場合は、Simulinkの制約に依存する所があるかもしれません。

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!