Azzera filtri
Azzera filtri

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

4 visualizzazioni (ultimi 30 giorni)
Jianan Liu
Jianan Liu il 28 Giu 2023
Risposto: Toshinobu Shintai il 28 Giu 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);

Risposta accettata

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

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!