このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
不確かさをもつシステムの参照モデルに対する極値探索制御
この例では、コントローラーの一般的な設計法である、システムに対するフィードバック ゲインおよびフィードフォワード ゲインの設計を示します。ここでは、極値探索コントローラーを使用して、不確かさをもつ動的なシステムにフィードバック ゲインおよびフィードフォワード ゲインを適応することにより、特定の参照プラント モデルを追従します。
不確かさをもつ線形システムの適応ゲイン調整
この例では、次の線形 1 次システムについて考えます。
ここで と は、それぞれシステムの状態と制御入力です。定数 と は不明です。
この例の目標は、以下の参照プラント モデルの性能を追従することです。このモデルは、必要な過渡動作および定常状態動作を定義しています。
ここで、 は参照プラントの状態、 は基準信号です。
制御信号 の目的は、不確かさをもつシステムの状態 に基準状態 を追従させることです。
設計されたコントローラーには、フィードバック項 およびフィードフォワード項 が含まれます。
この制御信号を未知の線形システム ダイナミクスに代入します。
この式は、次の式に示すように書き換えできます。
理想的なケースにおいて、ノミナル システム ダイナミクスの係数 および が既知の場合、極配置の手法を使用して、コントローラー ゲイン を決定できます。これを実行すると、以下の一致条件が出力されます。
フィードフォワード ゲインおよびフィードバック ゲインの両方に単一のゲイン値を使用した場合、この一致条件は、 および の取りうる値をすべて満たすとは限らない可能性があります。より一般的な解のために、2 つの異なるゲイン値を調整できます (マルチパラメーター調整)。
この例では、次の未知のシステムと参照ダイナミクスを使用します。
この場合、理想的な制御ゲインは になります。
極値探索制御の適応ゲイン調整
上記の問題に対する極値探索制御 (ESC) 法を実装するには、目的関数を定義します。ESC コントローラーはこの関数を最大化し、コントローラー ゲイン を求めます。
この例では次の目的関数を使用します。
次の図に極値探索制御の設定を示します。
コスト関数が基準システムと実際のシステムの出力から計算されます。
極値探索コントローラーがゲイン パラメーターを更新します。
新しいゲイン値を使用して制御動作が更新されます。
この制御動作が実際のシステムに適用されます。
firstOrderRefTracking_Esc
Simulink モデルで、この問題の構成が実装されています。
mdl = 'firstOrderRefTracking_Esc';
open_system(mdl)
このモデルでは、Extremum Seeking Control ブロックを使用してゲイン値を最適化します。
System Dynamics and Objective サブシステムには、参照モデル、プラント (実際のシステムと制御動作)、および目的関数の計算が含まれています。これらの要素はすべて MATLAB Function ブロックを使用して実装されています。
open_system([mdl '/System Dynamics and Objective'])
ゲイン値の初期推定を指定します。
IC = 0;
Extremum Seeking Control ブロックは、変調信号を使用してパラメーター値に摂動を与えます。その後、パラメーター更新を計算する前に、目的関数信号に結果として生じた変化を復調します。このブロックの極値探索制御パラメーターを設定します。
最初に、調整するパラメーターの数 (N
) および学習率 (lr
) を指定します。
N = 1; lr = 0.55;
復調信号と変調信号は、その周波数 (omega
)、位相 (phi_1
と phi_2
)、および振幅 (a
と b
) を指定することにより設定します。
omega = 5; % Forcing frequency a = 1; % Demodulation amplitude b = 0.1; % Modulation amplitude phi_1 = 0; % Demodulation phase phi_2 = 0; % Modulation phase
この例では、Extremum Seeking Control ブロックは、復調された信号から高周波数のノイズを除去するように設定されています。対応するローパス フィルターのカットオフ周波数を設定します。
omega_lpf = 1;
モデルのシミュレーションを実行します。
sim(mdl);
設定値追従の性能をチェックするには、シミュレーションの状態軌跡を表示します。実際の軌跡は 5 秒未満で基準軌跡に収束します。
open_system([mdl '/System Dynamics and Objective/State'])
ESC コントローラーの動作を調べるために、まず目的関数を表示します。目的関数はすばやく最大値に達しています。
open_system([mdl '/System Dynamics and Objective/Cost'])
目的関数を最大化することにより、ESC コントローラーは制御ゲインの値を理想的な値 –2 付近で最適化します。ゲイン値の変動は、Extremum Seeking Control ブロックの変調信号によるものです。
open_system([mdl '/System Dynamics and Objective/Gain K'])
bdclose(mdl)