Simulink によるモデル規範形ニューラル コントローラーの設計
ニューラル モデル規範形制御アーキテクチャは、次の図に示すように、コントローラー ネットワークとプラント モデル ネットワークの 2 つのニューラル ネットワークを使用します。プラント モデルが最初に同定されてから、プラント出力が規範モデル出力に従うようにコントローラーに学習させます。
次の図は、Deep Learning Toolbox™ ソフトウェアに実装されているニューラル ネットワーク プラント モデルとニューラル ネットワーク コントローラーの詳細を示しています。各ネットワークには 2 つの層があり、隠れ層で使用するニューロンの数を選択できます。コントローラー入力には、以下の 3 組があります。
遅延規範入力
遅延コントローラー出力
遅延プラント出力
これらの各入力について、使用する遅延値の数を選択できます。遅延の数は通常、プラントの次数に合わせて増えます。ニューラル ネットワーク プラント モデルへの入力は次の 2 組があります。
遅延コントローラー出力
遅延プラント出力
コントローラーと同様に、遅延の数を設定できます。次の節では、パラメーターの設定方法を説明します。
Model Reference Controller ブロックの使用
メモ
モデル規範形適応コントローラーを設計するために、Model Reference Adaptive Control (Simulink Control Design) Simulink® ブロックを使用することもできます。
このワークフローは、次の利点があるため推奨されます。
コントローラーの設計が単純化される。
プラント モデルのダイナミクスの初期推定のみが必要である。
外乱および単一の隠れ層ニューラル ネットワークなどのモデルの不確実性が自動的に特徴付けされる。次に、ブロックによってコントローラー パラメーターがリアルタイムで更新され、制御対象システム内のこれらの外乱と不確実性が取り除かれるため、手動での再調整は不要になります。単一の隠れ層ニューラル ネットワークの使用に関する詳細については、外乱と不確かさのモデル (Simulink Control Design)を参照してください。
コード生成がサポートされる。
これらのツールの使用方法を示す例については、Quadrotor Control Using Model Reference Adaptive Control (Simulink Control Design)を参照してください。
この節では、ニューラル ネットワーク コントローラーに学習させる方法を説明します。最初のステップは、Model Reference Controller ブロックを Deep Learning Toolbox ブロックセットから Simulink エディターにコピーすることです。方法については、Simulink のドキュメンテーションを参照してください。次の例ではこのステップは省略しています。
モデル規範形コントローラーの使用方法を示すために、Deep Learning Toolbox ソフトウェアにはモデル例が用意されています。この例では、次の図に示すようにシンプルな単一リンクのロボット アームの動きを制御します。
アームの運動方程式は次になります。
ここで、ϕ はアームの角度、u は DC モーターから供給されるトルクです。
目的は、アームが次の規範モデルに追従するようにコントローラーに学習させることです。
ここで、yr は規範モデルの出力で、r は入力基準信号です。
この例では、5-13-1 アーキテクチャのニューラル ネットワーク コントローラーを使用します。コントローラーへの入力は、2 つの遅延規範入力、2 つの遅延プラント出力、および 1 つの遅延コントローラー出力で構成されます。サンプリング間隔には 0.05 秒を使用します。
この例を実行します。
MATLAB® を起動します。
MATLAB コマンド ウィンドウに
mrefrobotarm
と入力します。このコマンドにより Simulink エディターが開き、Model Reference Controller ブロックが既に含まれているモデルが表示されます。Model Reference Controller ブロックをダブルクリックします。これにより、モデル規範形コントローラーに学習させるための次のウィンドウが表示されます。
通常、次のステップは、[Plant Identification] をクリックして [Plant Identification] ウィンドウを開くことです。その後、プラント モデルに学習させます。[Plant Identification] ウィンドウは前のコントローラーで使用したものと同じであるため、ここではそのプロセスを省略します。
[Generate Training Data] をクリックします。コントローラーの学習用のデータの生成が開始されます。データが生成された後、次のウィンドウが表示されます。
[Accept Data] をクリックします。[Model Reference Control] ウィンドウに戻り、[Train Controller] をクリックします。データの 1 つのセグメントがネットワークに与えられ、指定された反復回数 (この場合は 5 回)、ネットワークの学習が行われます。このプロセスは、一度に 1 セグメントずつ行われ、学習セット全体がネットワークに与えられるまで続きます。コントローラーの学習は、プラント モデルの学習よりも大幅に時間がかかる場合があります。これは、コントローラーの学習に "動的" な逆伝播を使用しなければならないためです ([HaJe99] を参照)。学習が完了した後、結果として得られた閉ループ システムの応答が次の図のように表示されます。
[Model Reference Control] ウィンドウに戻ります。コントローラーの性能が正確でない場合、[Train Controller] を再度選択して、同じデータ セットでコントローラーの学習を継続できます。新しいデータ セットを使用して学習を継続する場合は、[Generate Data] または [Import Data] を選択してから [Train Controller] を選択します (同じ重みで学習を継続する場合は、[Use Current Weights] が選択されていることを確認してください)。プラント モデルの再学習が必要になる場合もあります。プラント モデルが正確でない場合、コントローラーの学習に影響することがあります。この例の場合、コントローラーは十分正確であるため、[OK] を選択します。これにより、コントローラーの重みが Simulink モデルに読み込まれます。
Simulink エディターに戻り、メニュー オプション [シミュレーション] 、 [実行] を選択して、シミュレーションを開始します。シミュレーションが実行されると、プラント出力と基準信号が次の図のように表示されます。