コントローラーの調整に遺伝的アルゴリズムを使用する


9

非線形システム(非線形振り子など)の制御に関するいくつかの論文を読んだことがあります。非線形システムを対象とするいくつかのアプローチがあります。最も一般的なものは、フィードバック線形化バックステッピング、およびスライディングモードコントローラーです。

私の場合は、C ++で単純な振り子とその他のマニピュレーターの問題の非線形モデルを制御する理論的および実用的な部分を実行しました。振り子では、角変位と速度の追跡タスクを解くためにバックステッピングコントローラーを利用しました。結果は

θ¨+(k/m)θ˙+(g/L)sinθ=u

ここで、およびです。m=0.5,k=0.0001,L=.2g=9.81

グラフ1

グラフ2

結果は良好です。ただし、コントローラの調整には時間がかかります。ほとんどの論文では、PD、PID、バックステッピングコントローラーなどのコントローラーの調整に遺伝的アルゴリズムを使用しています。私はこの分野では無知です。誰かがこの概念に光を当ててくれることを願っています。できれば、少なくとも単純な振り子を制御するためのMATLABサンプルがある場合は望ましいです。

これまでのところ、コントローラーを手動で調整するために、C ++ / QtでシンプルなGUIを設計しました。下の図は、ステップ関数のコントローラーの応答です。

コントローラー調整アプリケーションのGUIのスクリーンショット

回答:


1

パラメーターの調整に進化的方法(GAはそのうちの1つ)を使用することは、確かに制御ドメインでは一般的な方法です[1]。特に非線形システムの場合、最適なパラメータの解析解を見つけるのは難しい場合があります。進化的手法は、最適に近いパラメータの検索を効率的に実行する1つの方法です。

広く使用されている非常に成功した普遍的な方法はCMA-ESです。そこには、MATLABを含む多数の実装があります。さまざまな形のポールバランシングがベンチマークとしてよく使用されることを知っています。

アルゴリズムの適用は通常それほど難しくありません。結果のパフォーマンスの評価(これはEAではフィットネス関数と呼ばれます)は通常、最も複雑な部分です。

[1] PJフレミング、RC Purshouse、制御システム工学における進化的アルゴリズム:調査、制御工学実践、第10巻、第11号、2002年11月、ページ1223-1241、ISSN 0967-0661、http://dx.doi。 org / 10.1016 / S0967-0661(02)00081-3


GAについて読む価値があると思う良い本を見つけましたか?
CroCo 2018年

8

遺伝的アルゴリズムは、ユーザーがシステムを「微調整」する必要をなくし、代わりにコンピューターがシステムを調整する方法を理解できるようにする機械学習手法です。このアプローチの利点は、研究者/ユーザーの時間を解放し、多くの場合、研究者/ユーザーが自分で達成できたシステムよりも適切に調整されたシステムにつながる可能性があることです。

遺伝的アルゴリズムを使用する一般的なアイデアは、次のようないくつかの基本的な制御フローに従います。

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

この原則を実際に簡単に示すことができる最良の例は、遺伝的進化を使用してコース上を走行できる車両を設計するこの「ゲーム」です。同じ考えは、実際にチューニングを行わなくても微調整したいシステムに適用されます。例:http : //rednuht.org/genetic_cars_2/


それが@CroCoが遺伝的アルゴリズムを使用することで意味するものである場合、Ziegler Nicholsのチューニング方法は、手続き型であるため、実装するのに最適です。
SteveO

@CroCoが他に何を意味するのかわかりませんが、チーグラーニコルズの問題は、コンポーネントの1つを調整する必要があり、遺伝的アルゴリズムの場合と同様に、システムのあらゆる側面を変更でき、「進化」します。開発者が
野蛮

1
この答えは、それを達成するための一般的なプロセスとして残っています。遺伝的アルゴリズムは研究の全領域であり、複雑化するのは遠いですが、短い応答で実際に説明するには、それらを読んでモデルを調整することに興味がある場合はお勧めします!
beeedy

2
チューニングをしすぎたときに文字列を非常に楽しくスナップする、境界のない遺伝的アルゴリズムを描いています。
Ramrod

1
@octopusが言及したように、チューニングするデバイスをコンピューターが物理的に制御できるように長い期間を許可したいと思わない限り、これを実際の物理装置で達成することは困難です。それでも、監視する「ガーディアン」プログラムが必要です。そして、パフォーマンスに基づいて各コントローラーにスコアを付け、それがマシンに損傷を与えないことを確認します。全体として、これは比較的複雑なタスクであり、実装するために遺伝的アルゴリズムをよく読む必要があります。
beeedy

2

あなたが遺伝的アルゴリズムと呼んでいるものに混乱しています。PD、PID などのコントローラーは、発見的手法でも確率的手法でもありません。また、進化的アルゴリズムに基づいていません。代わりに、システム応答の極と零点を配置して目的のパフォーマンス(エラーの最小化、応答速度、整定時間、安定性、および外乱の抑制)を提供できるようにすることを目的とした確定的アルゴリズムです。私の意見では、良い学習の参考資料は、Kuoの自動制御システムの本です。あなたはレイブンの自動制御工学の本でそれほど厳密でない扱いを見つけることができます。


私は遺伝的アルゴリズム(GA)に詳しくありません。私は、コントローラの調整部分がGAを使用して行われたと主張するいくつかの論文を見たところです。この問題に関する彼らの論文にはこれ以上の詳細はありません。地獄のGAとは何か、どうすれば利用できるのかわかりません。
CroCo 2016

パラメータのチューニングに進化的な方法を使用することは、非常に一般的な手法です。あなたが説明している分析的アプローチの代替法だと思います。
ジェイコブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.