nlmpcコマンドと nlmpcMulti​stageコマンドの​違いについて

8 views (last 30 days)
Kazuki Kambe
Kazuki Kambe on 15 Nov 2022
Edited: Toshinobu Shintai on 15 Nov 2022
nlmpcコマンドと nlmpcMultistageコマンドの違いについての質問です.
非線形モデル予測制御をMatlabで実装するためにこちらの例題を元に勉強しています.
例題では,Trajectory PlanningというセクションではnlmpcMultistageコマンドを使用しているのに対して,Feedback Control for Path Followingというセクションではnlmpcコマンドを使用していました.
上記2点の違いがよくわからなかったため,こちらを参照しました.
参照したドキュメントでは,以下のように書かれていました.
  • nlmpc コマンド...To implement generic nonlinear MPC, create an nlmpc object.
  • nlmpcMultistageコマンド...A multistage MPC problem is an MPC problem in which cost and constraint functions are stage-based.Specifically, a multistage MPC controller with a prediction horizon of length p has p+1 stages, where the first stage corresponds to the current time and the last (terminal) stage corresponds to the last prediction step.
そこで,質問です.
  1. 例題ではどうしてTrajectory PlanningでnlmpcMultistageコマンドを使用し,Feedback Control for Path Followingでnlmpcコマンドを使用したのでしょうか.どのような問題設定や評価関数の違いによって使い分けているのでしょうか.
  2. 評価関数と制約関数がStage-basedであるとはどういうことでしょうか.generic nonlinear MPCでもStage-basedだと思っていたのですが,間違っていますでしょうか.
  3. nlmpacMultistageコマンドはある条件を満たすと,nlmpcコマンドと比較して同じ問題を解いた時の計算効率が良くなることに違いがあるという認識であっていますでしょうか.
ご教授いただければ幸いです.よろしくお願い致します.

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 15 Nov 2022
Edited: Toshinobu Shintai on 15 Nov 2022
[質問1について]
非線形MPC(nlmpc)とマルチステージ非線形MPC(nlmpcMultistage)の間で、実現できる機能に差はありませんので、特に理由はないかと思います。
[質問2について]
マルチステージ非線形MPCでは、簡単に言うと予測ホライズンのステップごとに個別の評価関数を指定することができます。MPCでは、内部モデルを予測ホライズンの長さ分だけ実行して未来の予測値を計算し、その値を使って最適化を行います。その最適化の評価関数を、各予測ホライズンのステップごとに別の関数を指定することができます。
[質問3について]
一般的に、マルチステージ非線形MPC(nlmpcMultistage)は、多くのケースで非線形MPC(nlmpc)より計算効率が良くなります。
こちらはSimulinkの例ではありますが、非線形MPCとマルチステージ非線形MPCのモデリングの違いを説明した日本語デモを用意しています。ご参考にしていただければ幸いです。
  1 Comment
Kazuki Kambe
Kazuki Kambe on 15 Nov 2022
Edited: Kazuki Kambe on 15 Nov 2022
迅速なご回答をいただきまして誠にありがとうございます.大変理解が進みました.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!