1
2

[Python]最適化を用いたモデルマッチング(PIDゲインの調整方法)

Last updated at Posted at 2024-09-01

目的

最適化を用いたモデルマッチング(PIDゲインの調整方法)を行うためのPythonスクリプトを紹介する。また、限界感度法と比較してモデルマッチングの方が調整されたPIDコントローラの制御性能が高いことを示す。

尚、この記事で紹介しているモデルマッチングは制御対象のモデルが必要となる手法であるが、データ駆動型制御といわれる手法を用いれば制御対象のモデルを使用せずにモデルマッチングを行うことも可能である。

参考情報:データ駆動型制御(FRIT、VRFT)を図的に理解する

本記事のPIDゲイン調整の概要

制御対象のモデルを作成し、PIDゲインを変更したコントローラと制御対象のモデルを用いたシミュレーションをなんども繰り返すことで少しずつPIDゲインを調整していく。
調整するPIDコントローラと制御対象のモデルのブロック線図を以下に示す。

image.png

最適化を用いたモデルマッチング

理想とする閉ループ伝達関数を設定しその閉ループ伝達関数に制御目標を入力したときの応答を理想の応答とする。制御対象のモデルを用いたシミュレーションを行い推定した応答が理想の応答に一致するようにPIDゲインを調整する方法はモデルマッチングと呼ばれている。この記事では最適化を用いてモデルマッチングを行うが、最適化を用いる利点は制御対象のモデルとして単純な伝達関数だけでなく、ニューラルネットワークなど複雑なモデルを用いることができるという点である。尚、伝達関数やニューラルネットワークの作成方法については機械学習や制御工学に関するPythonやRのスクリプトに記載している。

image.png

最適化式

最適化アルゴリズムを用いてPIDゲインの調整を行うために、最適化式を以下のように定める。

image.png

シミュレーション条件

・2次遅れむだ時間系
[Python] 限界感度法で調整されたPIDコントローラの制御性能が低いことを示すスクリプトと同条件)

最適化結果

動作確認

モデルマッチングで最適化したPIDゲインの応答(y_model_matching)が理想の応答(y_d)と概ね一致しているため、最適化スクリプトは問題なく動作できていると判断できる。尚、理想の応答は普遍的なものでなくドメイン知識を要して設定する必要があるが、今回は1次遅れ系とし時定数は最適化したPIDゲインの応答をみながらを見ながら調整した。

image.png

限界感度法で調整したPIDゲインとの比較

参考のため[Python] 限界感度法で調整されたPIDコントローラの制御性能が低いことを示すスクリプトで調整したPIDゲインでの応答の比較を以下に示す。限界感度法(ZN(original)やZN(No overshort))よりもモデルマッチングの方が収束が早く制御性能が高いとできる。
image.png

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2