Simulink によるニューラル ネットワーク予測コントローラーの設計
Deep Learning Toolbox™ ソフトウェアに実装されているニューラル ネットワーク予測コントローラーは、非線形プラントのニューラル ネットワーク モデルを使用して将来のプラント性能を予測します。このコントローラーは、指定された将来の時間ホライズンにわたってプラント性能を最適化する制御入力を計算します。モデル予測制御の最初のステップは、ニューラル ネットワーク プラント モデルの決定 (システム同定) です。次に、コントローラーがプラント モデルを使用して将来の性能を予測します (各種モデル予測制御法の線形システムへの応用の詳細な説明については、Model Predictive Control Toolbox™ のドキュメンテーションを参照してください)。
次の節では、システム同定プロセスについて説明します。その後、最適化プロセスについて説明します。最後に、Simulink® 環境に実装されているモデル予測コントローラー ブロックを使用する方法を説明します。
システム同定
モデル予測制御の最初の段階は、ニューラル ネットワークに学習させ、プラントのフォワード ダイナミクスを表現することです。プラント出力とニューラル ネットワーク出力の間の予測誤差が、ニューラル ネットワーク学習信号として使用されます。このプロセスは次の図で表されます。
ニューラル ネットワーク プラント モデルは、前の入力と前のプラント出力を使用して、プラント出力の将来の値を予測します。ニューラル ネットワーク プラント モデルの構造を次の図に示します。
プラントの運転から収集されたデータを使用して、オフラインかつバッチ モードでこのネットワークに学習させることができます。浅層の多層ニューラル ネットワークと逆伝播学習で説明している任意の学習アルゴリズムをネットワークの学習に使用できます。このプロセスについては、以降の節で詳しく説明します。
予測制御
モデル予測制御の方法は後退ホライズン法 [SoHa96] に基づいています。ニューラル ネットワーク モデルは、指定された時間ホライズンにわたってプラントの応答を予測します。数値最適化プログラムが、その予測を使用し、指定されたホライズンにわたって次の性能条件を最小化する制御信号を決定します。
ここで、N1、N2、および Nu は、追従誤差および制御の増分が評価されるホライズンを定義します。変数 u' は仮の制御信号、yr は目的の応答、ym はネットワーク モデルの応答です。ρ の値は、制御の増分の二乗和による性能インデックスへの寄与を決定します。
次のブロック線図はモデル予測制御のプロセスを示しています。コントローラーは、ニューラル ネットワーク プラント モデルと最適化ブロックで構成されています。最適化ブロックによって、J を最小化する u' の値が決定され、最適な u がプラントに入力されます。次の節で説明するように、コントローラー ブロックは Simulink に実装されています。
ニューラル ネットワーク予測コントローラー ブロックの使用
この節では、NN Predictive Controller ブロックを使用する方法を説明します。最初のステップは、NN Predictive Controller ブロックを Deep Learning Toolbox ブロック ライブラリから Simulink エディターにコピーすることです。方法については、Simulink のドキュメンテーションを参照してください。次の例ではこのステップは省略しています。
予測コントローラーの使用方法を示すために、Deep Learning Toolbox ソフトウェアにはモデル例が用意されています。この例では、触媒の連続攪拌タンク反応器 (CSTR) を使用します。このプロセスを次の図に示します。
このシステムの動的モデルは以下になります。
ここで、h(t) は液面までの高さ、Cb(t) はプロセスの出力での生成物濃度、w1(t) は濃縮供給 Cb1 の流量、w2(t) は希釈供給 Cb2 の流量です。入力濃度は、Cb1 = 24.9 および Cb2 = 0.1 に設定します。消費率に関連する定数は、k1 = 1 と k2 = 1 です。
このコントローラーの目的は、流量 w1(t) を調整して生成物濃度を維持することです。例を簡略化するために、w2(t) = 0.1 に設定します。タンクの液面までの高さ h(t) は、この実験では制御しません。
この例を実行します。
MATLAB® を起動します。
MATLAB コマンド ウィンドウに
predcstr
と入力します。このコマンドにより Simulink エディターが開き、次のモデルが表示されます。Plant ブロックに Simulink CSTR プラント モデルが含まれています。NN Predictive Controller ブロックの信号は、次のように接続されています。
Control Signal は Plant モデルの入力に接続されています。
Plant Output 信号は Plant ブロックの出力に接続されています。
Reference は Random Reference 信号に接続されています。
NN Predictive Controller ブロックをダブルクリックします。これにより、モデル予測コントローラー設計用の次のウィンドウが開きます。このウィンドウによって、コントローラーのホライズン N2 および Nu を変更できます (N1 は 1 に固定されています)。前述の重み付けパラメーター ρ も、このウィンドウで定義されます。パラメーター α は最適化の制御に使用されます。これにより、最適化のステップを正常に行うためにどの程度の性能の低下が必要かが判断されます。最適化アルゴリズムで使用される線形最小化ルーチンを選択できます。また、各サンプル時間における最適化アルゴリズムの反復実行回数を指定できます。線形最小化ルーチンは、浅層の多層ニューラル ネットワークと逆伝播学習で説明されているものに少し変更が加えられたものです。
[Plant Identification] を選択します。これにより、次のウィンドウが開きます。コントローラーを使用する前に、ニューラル ネットワーク プラント モデルを開発しなければなりません。プラント モデルは将来のプラント出力を予想します。最適化アルゴリズムでは、これらの予測を使用して、将来の性能を最適化する制御入力を決定します。このプラント モデル ニューラル ネットワークには、前に示したように、1 つの隠れ層があります。このウィンドウで、その層のサイズ、遅延入力と遅延出力の数、および学習関数を選択します。浅層の多層ニューラル ネットワークと逆伝播学習で説明されている任意の学習関数を選択して、ニューラル ネットワーク プラント モデルに学習させることができます。
[Generate Training Data] をクリックします。一連のランダムなステップ入力が Simulink プラント モデルに適用され、学習データが生成されます。学習データの候補が、次の図のように表示されます。
[Accept Data] をクリックしてから、[Plant Identification] ウィンドウで [Train Network] をクリックします。プラント モデルの学習が開始されます。選択した学習アルゴリズム (この場合は
trainlm
) に従って学習が進みます。浅層の多層ニューラル ネットワークと逆伝播学習で説明されているように、これはバッチ学習の簡単な応用です。学習が完了した後、結果として得られたプラント モデルの応答が次の図のように表示されます (検証データやテスト データが存在する場合は、それらのプロットも別途表示されます)。さらに、[Train Network] を再度選択して同じデータセットで学習を続けたり、[Erase Generated Data] を実行して新しいデータセットを生成したり、現在のプラント モデルを受け入れて、閉ループ システムをシミュレートしたりもできます。この例の場合、次のステップに示すようにシミュレーションを開始します。
[Plant Identification] ウィンドウで [OK] を選択します。これにより、学習済みのニューラル ネットワーク プラント モデルが NN Predictive Controller ブロックに読み込まれます。
[Neural Network Predictive Control] ウィンドウで [OK] を選択します。これにより、コントローラーのパラメーターが NN Predictive Controller ブロックに読み込まれます。
Simulink エディターに戻り、メニュー オプション [シミュレーション] 、 [実行] を選択して、シミュレーションを開始します。シミュレーションが実行されると、プラント出力と基準信号が次の図のように表示されます。