目的
最適化を用いたモデルマッチング(PIDゲインの調整方法)を行うためのPythonスクリプトを紹介する。また、限界感度法と比較してモデルマッチングの方が調整されたPIDコントローラの目標値追従性能が高いことを示す。
尚、この記事で紹介しているモデルマッチングは制御対象のモデルが必要となる手法であるが、データ駆動型制御といわれる手法を用いれば制御対象のモデルを使用せずにモデルマッチングを行うことも可能である。
参考情報:データ駆動型制御(FRIT、VRFT)を図的に理解する
本記事のPIDゲイン調整の概要
制御対象のモデルを作成し、PIDゲインを変更したコントローラと制御対象のモデルを用いたシミュレーションをなんども繰り返すことで少しずつPIDゲインを調整していく。
調整するPIDコントローラと制御対象のモデルのブロック線図を以下に示す。
最適化を用いたモデルマッチング
理想とする閉ループ伝達関数を設定しその閉ループ伝達関数に制御目標を入力したときの応答を理想の応答とする。制御対象のモデルを用いたシミュレーションを行い推定した応答が理想の応答に一致するようにPIDゲインを調整する方法はモデルマッチングと呼ばれている。この記事では最適化を用いてモデルマッチングを行うが、最適化を用いる利点は制御対象のモデルとして単純な伝達関数だけでなく、ニューラルネットワークなど複雑なモデルを用いることができるという点である。尚、伝達関数やニューラルネットワークの作成方法については機械学習や制御工学に関するPythonやRのスクリプトに記載している。
最適化式
最適化アルゴリズムを用いてPIDゲインの調整を行うために、最適化式を以下のように定める。
シミュレーション条件
・2次遅れむだ時間系
([Python] 限界感度法で調整されたPIDコントローラの目標値追従性能が低いことを示すスクリプトと同条件)
最適化結果
動作確認
モデルマッチングで最適化したPIDゲインの応答(y_model_matching)が理想の応答(y_d)と概ね一致しているため、最適化スクリプトは問題なく動作できていると判断できる。尚、理想の応答は普遍的なものでなくドメイン知識を要して設定する必要があるが、今回は1次遅れ系とし時定数は最適化したPIDゲインの応答をみながらを見ながら調整した。
限界感度法で調整したPIDゲインとの比較
参考のため[Python] 限界感度法で調整されたPIDコントローラの制御性能が低いことを示すスクリプトで調整したPIDゲインでの応答の比較を以下に示す。限界感度法(ZN(original)やZN(No overshort))よりもモデルマッチングの方が収束が早く制御性能が高いとできる。