Main Content

Extremum Seeking Control

目的関数の最大化によるコントローラー パラメーターのリアルタイムでの計算

  • ライブラリ:
  • Simulink Control Design

  • Extremum Seeking Control block

説明

Extremum Seeking Control ブロックは、コントローラー パラメーターを調整して目的関数を最大化します。極値探索コントローラーは、モデルに依存しない適応コントローラーであり、システム ダイナミクスが不明な場合や制御パラメーターから目的関数へのマッピングが不明な場合の適応に役立ちます。複数のパラメーターを探索する場合、Extremum Seeking Control ブロックはパラメーターごとに別々の調整ループを使用します。

Extremum Seeking Control ブロックは、パラメーターを正弦波信号で変調し (摂動を加え)、結果として得られる摂動を加えられた目的関数を復調することで、最適な制御パラメーターを探します。

Extremum seeking control diagram showing the high-pass filter, demodulation, low-pass filter, parameter update, and modulation stages.

極値探索アルゴリズムを構成するには、適切な強制周波数、復調信号と変調信号、学習率、およびパラメーターの初期条件を設定します。ブロックを構成する際は、必ずシステム ダイナミクスの時間スケールが最も高速で、摂動の強制周波数の時間スケールが中間、フィルターのカットオフ周波数の時間スケールが最も低速になるようにします。

連続時間と離散時間の両方の極値探索コントローラーを実装できます。コントローラーの時間領域を変更すると、調整ループで使用されるハイパス フィルター、ローパス フィルター、および積分器の時間領域に影響します。ハードウェアに展開可能な Extremum Seeking Control ブロックのコードを生成するには、離散時間コントローラーを使用してください。

詳細については、極値探索制御を参照してください。

端子

入力

すべて展開する

摂動を加えられたパラメーター theta に対するシステム応答の結果として制御システムに摂動を加える目的関数。パラメーター更新を計算するために、ブロックは J をフィルター処理して復調します。

出力

すべて展開する

これらの摂動を加えられたパラメーター (θ) を制御システムに適用します。ブロックは、目的関数 J の結果として得られる摂動を使用してパラメーター更新を計算します。

[パラメーター数]1 の場合、theta はスカラー信号を出力します。それ以外の場合、theta[パラメーター数] と等しい長さのベクトル信号を出力します。

この出力端子は、変調信号によって摂動を加えられる前の推定パラメーター値 (θ^) を取得するために使用します。

[パラメーター数]1 の場合、theta_hat はスカラー信号を出力します。それ以外の場合、theta_hat[パラメーター数] と等しい長さのベクトル信号を出力します。

依存関係

この出力端子を有効にするには、[推定パラメーターの出力] を選択します。

パラメーター

すべて展開する

ハイパス フィルター、ローパス フィルター、および積分器の時間領域を指定します。

  • 連続時間 — 連続時間のフィルターおよび積分器を使用します。

  • 離散時間 — 離散時間のフィルターおよび積分器を使用します。[サンプル時間] パラメーターを使用してサンプル時間を指定し、[積分手法] パラメーターを使用して積分手法を指定します。

プログラムでの使用

ブロック パラメーター: 'timeDomainStatus'
型: 文字ベクトル
値: 'Continuous Time' | 'Discrete Time'
既定: 'Continuous Time'

離散時間のハイパス フィルター、ローパス フィルター、および積分器のサンプル時間を指定します。

複数のパラメーターを調整する場合、すべての調整ループで同じサンプル時間が使用されます。

依存関係

このパラメーターを有効にするには、[時間領域] プロパティを [離散時間] に設定します。

プログラムでの使用

ブロック パラメーター: 'SampleTime'
型: 文字ベクトル
値: 有限の正のスカラー
既定: '0.1'

離散時間積分器に対して、次のいずれかの積分手法を選択できます。

  • 前進型オイラー:

    y(n)=y(n1)+Tsu(n1)

  • 後退型オイラー:

    y(n)=y(n1)+Tsu(n)

  • 台形則:

    y(n)=y(n1)+Ts[u(n)+u(n1)]/2

ここで

  • y は積分器の出力

  • u は入力

  • n は現在のサンプル時間

  • Ts はサンプル時間

複数のパラメーターを調整する場合、すべての調整ループの積分器で同じ積分手法が使用されます。

依存関係

このパラメーターを有効にするには、[時間領域] プロパティを [離散時間] に設定します。

プログラムでの使用

ブロック パラメーター: 'IntegratorMethods'
型: 文字ベクトル
値: 'Forward Euler' | 'Backward Euler' | 'Trapezoidal'
既定: 'Forward Euler'

最大 5 つのパラメーターを同時に調整できます。ブロックはパラメーターごとに別々の調整ループを使用します。

プログラムでの使用

ブロック パラメーター: 'paramCount'
型: 文字ベクトル
値: 5 未満の正の整数
既定: '1'

パラメーター更新積分器の初期条件に対応する初期パラメーター値。

[パラメーター数]1 の場合、[初期条件] を有限のスカラーとして指定します。

複数のパラメーターに異なる初期条件を指定するには、[初期条件][パラメーター数] と等しい長さの有限値のベクトルとして指定します。それ以外の場合、すべてのパラメーターに同じ初期条件を指定するには、[初期条件] を有限のスカラーとして指定します。

プログラムでの使用

ブロック パラメーター: 'initialVal'
型: 文字ベクトル
値: 有限のスカラー | ベクトル
既定: '0'

変調信号と復調信号の周波数 (ラジアン/秒) を指定します。それぞれのパラメーター調整ループについて、重要なシステム ダイナミクスの周波数よりも低く、ハイパス フィルターとローパス フィルターのカットオフ周波数よりも高くなるように強制周波数を指定します。

単一のパラメーターを調整する場合、[強制周波数] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、[強制周波数][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。強制周波数はそれぞれ一意でなければならず、極値探索アルゴリズムの収束を可能とするものでなければなりません。

プログラムでの使用

ブロック パラメーター: 'omega'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '1'

学習率は、ブロックがパラメーターを更新する頻度を制御するゲイン係数です。

単一のパラメーターを調整する場合、[学習率] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる学習率を指定できます。これを行うには、[学習率][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ学習率を指定するには、[学習率] を正の有限のスカラーとして指定します。

プログラムでの使用

ブロック パラメーター: 'gain'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '1'

目的関数の復調に使用する信号の振幅を指定します。ほとんどの用途では、[復調の振幅][変調の振幅] となるように指定します。これらの振幅の積と学習率の組み合わせでアルゴリズムの収束速度を制御します。

単一のパラメーターを調整する場合、[復調の振幅] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる復調の振幅を指定できます。これを行うには、[復調の振幅][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ振幅を指定するには、[復調の振幅] を正の有限のスカラーとして指定します。

プログラムでの使用

ブロック パラメーター: 'demodAmp'
型: 文字ベクトル
既定: '1'

目的関数の復調に使用する信号の位相 ϕ1 (ラジアン) を指定します。

単一のパラメーターを調整する場合、[復調の位相] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる復調の位相を指定できます。これを行うには、[復調の位相][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ位相を指定するには、[復調の位相] を正の有限のスカラーとして指定します。

復調の位相と変調の位相は、条件 cos(ϕ1–ϕ2) > 0 を満たさなければなりません。

プログラムでの使用

ブロック パラメーター: 'demodPhase'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '0'

推定パラメーターに加える摂動信号の振幅。ほとんどの用途では、[変調の振幅][復調の振幅] となるように指定します。これらの振幅の積と学習率の組み合わせでアルゴリズムの収束速度を制御します。

単一のパラメーターを調整する場合、[変調の振幅] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる変調の振幅を指定できます。これを行うには、[変調の振幅][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ振幅を指定するには、[変調の振幅] を正の有限のスカラーとして指定します。

プログラムでの使用

ブロック パラメーター: 'modAmp'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '0.1'

推定パラメーターに加える摂動信号の位相 ϕ2 (ラジアンで指定)。復調の位相 ϕ1 と変調の位相 ϕ2cos(ϕ1–ϕ2) > 0 となるように位相を選択しなければなりません。

単一のパラメーターを調整する場合、[変調の位相] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる変調の位相を指定できます。これを行うには、[変調の位相][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ位相を指定するには、[変調の位相] を正の有限のスカラーとして指定します。

プログラムでの使用

ブロック パラメーター: 'modPhase'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '0'

このパラメーターを選択すると、復調段階の前に目的関数の信号から信号バイアスを除去するハイパス フィルターが有効になります。フィルターのカットオフ周波数の指定には、[HPF 周波数] パラメーターを使用します。

プログラムでの使用

ブロック パラメーター: 'highPassEnable'
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

目的関数の信号に対するハイパス フィルターのカットオフ周波数 ωh (ラジアン/秒で指定)。それぞれのパラメーター調整ループについて、ωh < ω/(2π) となるようにカットオフ周波数を指定します (ω は対応する強制周波数)。

単一のパラメーターを調整する場合、[HPF 周波数] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる周波数を指定できます。これを行うには、[HPF 周波数][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ周波数を指定するには、[HPF 周波数] を正の有限のスカラーとして指定します。

依存関係

このパラメーターを有効にするには、[HPF の有効化] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: 'highPassCutoff'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '1'

このパラメーターを選択すると、パラメーター更新段階の前に復調された信号から高周波数成分を除去するローパス フィルターが有効になります。フィルターのカットオフ周波数の指定には、[LPF 周波数] パラメーターを使用します。

依存関係

このパラメーターを有効にするには、[LPF の有効化] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: 'lowPassEnable'
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

復調された信号に対するローパス フィルターのカットオフ周波数 ωl (ラジアン/秒で指定)。それぞれのパラメーター調整ループについて、ωl > ω/(2π) となるようにカットオフ周波数を指定します (ω は対応する強制周波数)。

単一のパラメーターを調整する場合、[LPF 周波数] を正の有限のスカラーとして指定します。

複数のパラメーターを調整する場合、それぞれのパラメーター調整ループに異なる周波数を指定できます。これを行うには、[LPF 周波数][パラメーター数] と等しい長さの正の有限値のベクトルとして指定します。それ以外の場合、すべての調整ループに同じ周波数を指定するには、[LPF 周波数] を正の有限のスカラーとして指定します。

依存関係

このパラメーターを有効にするには、[LPF の有効化] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: 'lowPassCutoff'
型: 文字ベクトル
値: 正の有限のスカラー | ベクトル
既定: '1'

このパラメーターを選択すると、theta_hat 出力端子が追加されます。

プログラムでの使用

ブロック パラメーター: estimatedVarOn
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

拡張機能

バージョン履歴

R2021a で導入

参考

トピック