モデル予測制御の予測ホライズンの設定について

22 ビュー (過去 30 日間)
Taisuke Hattori
Taisuke Hattori 2020 年 1 月 30 日
コメント済み: Endo Nobuaki 2020 年 7 月 10 日
モデル予測制御を用いてモータの制御をしています。
予測ホライズンの設定について質問があります。
予測ホライズンの値をモータの時定数に合わせて設定して解析を行おうとするとエラーが表示していないにもかかわらず、解析が途中で止まってしまいます。
PCのCPUやメモリの使用量を見ても不足している様子は見られません。
途中で止まってしまう原因が分かりません。
解決方法を教えていただけると幸いです。
また、予測ホライズンはどれくらいに設定するのが良いのかも教えていただけると幸いです。
よろしくお願いいたします。
  2 件のコメント
Toshinobu Shintai
Toshinobu Shintai 2020 年 1 月 30 日
可能であればもう少し具体的に説明してもらえると、またその現象が発生するモデルを添付していただけると回答がしやすくなると思います。
Taisuke Hattori
Taisuke Hattori 2020 年 1 月 31 日
ご回答ありがとうございます。
現象が発生するモデルについてですが、こちらの都合上お見せすることができません。
解析条件を示すと
解析内容:IPMSMのトルク制御
トルク指令:20 Nm、回転速度:500 rpm
非線形MPCの制御周期:100 μs、固定ステップサイズ:1 μs、終了時間:0.04 s
予測ホライズン:400(モータの時定数と同等)、制御ホライズン:10
コントローラと制御対象のモータモデル式は同じものを使用
状態量:id、iq、ω、Tの4つ、出力変数はid、Tの二つ
というように設定しています。
解析が止まってしまう時間が大体決まっており、開始から5e-5 sぐらいでsimulinkが応答しなくなります。停止ボタンを押しても反応しない状態になります。
必要な情報があれば答えられる範囲での回答になってしまいますが、お知らせください。
よろしくお願いいたします。

サインインしてコメントする。

採用された回答

Toshinobu Shintai
Toshinobu Shintai 2020 年 2 月 4 日
予測ホライズンが400、制御ホライズンが10と比較的長めであるため、計算が重い、もしくは解くべき最適化問題が複雑化しており、解が収束しない現象が発生していると考えられます。
一般論で申し上げますと、予測ホライズンの長さは制御対象の時定数に近い値が良いと考えられます。今回の場合のモーターの時定数に合わせて設定するという方針は、間違いではないと思います。
一方制御ホライズンは、通常は1に近い値を採用します。理由は、計算コストが増大し、実システムで現実的な時間内に最適化計算を行うことができなくなるためです。
ちなみに今回のIPMSMの例では、モーターの回転数を制御することが目的でしょうか。そうである場合、電気の応答に対して機械の応答は遅いため、電流制御のサンプリング時間の10μsに対して400ステップもの時間がかかっているということではないでしょうか。
電流制御と回転数制御を切り離し、回転数制御のサンプリング時間を大きくし、こちらに対してのみモデル予測制御を適用するという方法はいかがでしょうか。
すでにそのようにされていましたら申し訳ありませんが、ご検討ください。
  2 件のコメント
Taisuke Hattori
Taisuke Hattori 2020 年 2 月 5 日
ご回答ありがとうございます。
制御ホライズンを小さくして計算したところ計算が短くなることを確認しました。
現在、電流制御と回転数制御はまとめているので切り離して計算を行っていきたいと思います。
ありがとうございます。
Endo Nobuaki
Endo Nobuaki 2020 年 7 月 10 日
一般論で申し上げますと、予測ホライズンの長さは制御対象の時定数に近い値が良いと考えられます。今回の場合のモーターの時定数に合わせて設定するという方針は、間違いではないと思います。
制御対象の時定数に合わせる理由があれば教えていただきたいです。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeController Creation についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!