モデル予測制御入門 3:離散時間の非線形MPC
←前章:制約付きの非線形最適化問題で学んだ最適化の手法(主双対内点法)を用いて実際非線形ダイナミクスを制御してみましょう。
宣伝
拙著「PythonとCasADiで学ぶモデル予測制御 (KS理工学専門書) 」が発売されました!
是非こちらも読んでいただければ幸いです。
離散時間の非線形ダイナミクスの例
今回は下の式で与えられる減衰振動する離散時間の一次元調和振動子に3次の補正項が入ったようなモデルを考えます。
初期値を
この振動子をMPCで
最適化問題の定式化
まずはダイナミクスを一階の差分方程式で表す必要があるため、新たな変数
また、制御入力の範囲は
に限定しましょう。
制約条件は与えられたので、次にコスト関数
が考えられる最も簡単なコスト関数になります。(重み係数
しかし、このままでは制御入力を激しく変動させることが可能になってしまうため、
とします。
MPCによる制御
最適化問題の定式化が出来たので、次はこれを各時刻毎に解いて実際に制御してみましょう。
実装はPythonのcasadiで行いましたが、これを使うと2章で説明した主双対内点法を用いた最適化ソルバー「IPOPT」が簡単に扱えるので非常に便利です。
実際に制御を行ってみた様子が下の動画です。
制御の際に用いた各パラメータは以下の通りです。
- ホライズン長
T=10 \alpha_z = 0.1 \alpha_u = 0.5 \alpha_v = 0.1 z_{goal} = 1 z_0=0, ~ z_1=0
動画でもわかるようにハンチングもオーバーシュートも起きずに、また制約条件をきちんと守って制御できていることが確認出来ました。
さて、非常に簡単な問題ではありましたがMPCを用いた制御が出来るようになりました。
次の章では連続時間での非線形ダイナミクスを制御してみましょう。連続時間を直接扱うことはできないため結局は上手く離散化して近似して最適化問題を解くことになるのですが、そのテクニックの一つであるdirect collocation法を解説いたします。
Discussion