Main Content

Model Reference Adaptive Control

制御対象システムを参照モデルに追従させる制御動作の計算

  • ライブラリ:
  • Simulink Control Design

  • Model Reference Adaptive Control block

説明

Model Reference Adaptive Control ブロックは、不確かさをもつ制御対象システムを特定の参照プラント モデルの動作に追従させる制御動作を計算します。このブロックを使用して、次のモデル参照適応制御 (MRAC) アルゴリズムを実装できます。

  • 直接 MRAC — 次のコントローラー ゲインを推定し、推定されるコントローラーを使用して制御動作を計算します。

    • 制御対象システムの状態を制御信号に関係付けるフィードバック ゲイン。

    • 基準信号を制御信号に関係付けるフィードフォワード ゲイン。

  • 間接 MRAC — 不確かさをもつ制御対象システムの次の行列を推定し、推定されるモデルに基づいて制御動作を派生させます。

    • 状態行列 A

    • 制御有効行列 B

MRAC では、直接と間接のどちらでも、さらに制御対象システムの外乱と不確かさのモデルを推定し、このモデルを制御動作の計算時に使用します。

いずれの場合も、コントローラーは、リアルタイムの追従誤差に基づいて、推定されたパラメーターと外乱モデルを更新できます。

詳細については、モデル参照適応制御を参照してください。

端子

入力

すべて展開する

制御対象システムが追従する基準信号を提供します。

制御対象システムから現在の状態ベクトルを提供します。

カスタムの外乱モデルの特徴を提供します。

依存関係

この入力端子を有効にするには、[特徴タイプ] パラメーターを [特徴に外部ソースを使用] に設定します。

出力

すべて展開する

制御入力信号を制御対象システムの入力に接続します。制御入力は、制御対象システムの制御入力数と等しい長さのベクトル信号です。

外乱と不確かさの推定は、外乱モデルの特徴と外乱モデルの重みベクトルの積です。この信号を使用して、推定される外乱モデルをシステムの実際の外乱と比較できます。

依存関係

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

この端子を使用して、推定器プラント モデルの推定される状態行列を出力します。

依存関係

この出力端子は間接 MRAC に使用されます。この端子を有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[推定パラメーターの出力] パラメーターを選択します。

この端子を使用して、推定器プラント モデルの推定される制御有効行列を出力します。

依存関係

この出力端子は間接 MRAC に使用されます。この端子を有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[推定パラメーターの出力] パラメーターを選択します。

パラメーター

すべて展開する

システム

MRAC アルゴリズムを選択し、ノミナル モデル、参照モデル、および推定器モデルのダイナミクスを指定します。

ノミナル モデルの状態行列を N 行 N 列の行列として指定します。ここで N は制御対象システムの状態の数です。

依存関係

このパラメーターは直接 MRAC に使用されます。このパラメーターを有効にするには、[直接] アルゴリズム オプションを選択します。

プログラムでの使用

ブロック パラメーター: 'A'
型: 文字ベクトル
値: 正方行列
既定: '0'

ノミナル モデルの制御有効行列を N 行 M 列の非ゼロの行列として指定します。ここで N は制御対象システムの状態の数、M は制御対象システムの制御入力の数です。

依存関係

このパラメーターは直接 MRAC に使用されます。このパラメーターを有効にするには、[直接] アルゴリズム オプションを選択します。

プログラムでの使用

ブロック パラメーター: 'B'
型: 文字ベクトル
値: ベクトル | 行列
既定: '1'

参照モデルの状態行列をパラメーター [A] と同じ次元の行列として指定します。安定した参照モデルの場合、[Am] はすべての固有値が厳密に負の実数部をもつフルビッツ行列でなければなりません。

プログラムでの使用

ブロック パラメーター: 'Am'
型: 文字ベクトル
値: 正方行列
既定: '-1'

参照モデルの制御有効行列をパラメーター [B] と同じ次元の非ゼロの行列として指定します。

プログラムでの使用

ブロック パラメーター: 'Bm'
型: 文字ベクトル
値: ベクトル | 行列
既定: '[0;4]'

推定器プラント モデルの状態行列を N 行 N 列の行列として指定します。ここで N は制御対象システムの状態の数です。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

ブロック パラメーター: 'Ahat'
型: 文字ベクトル
値: 正方行列
既定: '0'

このパラメーターを選択すると、コントローラーは推定器プラント モデルの状態行列を適応させます。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

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

このパラメーターを使用して、コントローラーが推定器プラント モデルの状態行列を適応させるレートを制御します。値が大きいほど、更新のサイズが大きくなります。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[Ahat を適応させる] パラメーターを選択します。

プログラムでの使用

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

ゲインを高くしてロバスト性を高めるには、このオプションを選択して、推定器モデルの状態行列の更新にモーメンタム項を追加します。学習修正は [学習修正] タブで構成します。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[Ahat を適応させる] パラメーターを選択します。

プログラムでの使用

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

推定器プラント モデルの制御有効行列を N 行 M 列の非ゼロの行列として指定します。ここで N は制御対象システムの状態の数、M は制御対象システムの制御入力の数です。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

ブロック パラメーター: 'Bhat'
型: 文字ベクトル
値: ベクトル | 行列
既定: '1'

このパラメーターを選択すると、コントローラーは推定器プラント モデルの制御有効行列を適応させます。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

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

このパラメーターを使用して、コントローラーが推定器プラント モデルの制御有効行列を適応させるレートを制御します。値が大きいほど、更新のサイズが大きくなります。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[Bhat を適応させる] パラメーターを選択します。

プログラムでの使用

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

ゲインを高くしてロバスト性を高めるには、このオプションを選択して、推定器モデルの制御有効行列の更新にモーメンタム項を追加します。学習修正は [学習修正] タブで構成します。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[Bhat を適応させる] パラメーターを選択します。

プログラムでの使用

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

推定器のフィードバック ゲインを指定するには、まずこのパラメーターを選択します。その後、[推定器のフィードバック ゲイン] パラメーターを指定します。

このパラメーターを選択しない場合、推定器は [Am] パラメーターと等しい既定のフィードバック ゲインを使用します。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

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

[Am] の行列を推定器の既定のフィードバック ゲインとして使用するには、このパラメーターを -1 として指定します。それ以外の場合、フィードバック ゲインを [Am] と同じ次元のフルビッツ行列として指定します。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、まず [間接] アルゴリズム オプションを選択します。次に、[推定器のフィードバック ゲインを指定] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: 'k_tau'
型: 文字ベクトル
値: -1 | 行列
既定: '-1'

このパラメーターを選択すると、推定器の状態行列と制御有効行列の値にそれぞれ対応する [Ahat] 出力端子と [Bhat] 出力端子が追加されます。

依存関係

このパラメーターは間接 MRAC に使用されます。このパラメーターを有効にするには、[間接] アルゴリズム オプションを選択します。

プログラムでの使用

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

制御ゲイン

直接 MRAC を使用する場合のモデル マッチング用に、初期のフィードバック ゲインとフィードフォワード ゲインを定義します。これらの制御ゲインを更新して対応する学習率を調整するようにブロックを構成できます。このタブのパラメーターを有効にするには、[直接] アルゴリズム オプションを選択します。

フィードバック ゲインの初期値。[フィードバック ゲインを適応させる] パラメーターを選択していない場合、コントローラーは指定されたフィードバック ゲインをこれらの初期値のまま保持します。

プログラムでの使用

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

このパラメーターを選択すると、コントローラーは制御対象システムと参照モデルの状態の差異に基づいてフィードバック ゲインを適応させます。

プログラムでの使用

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

このパラメーターを使用して、コントローラーがフィードバック ゲインを適応させるレートを制御します。値が大きいほど、ゲインの更新のサイズが大きくなります。

プログラムでの使用

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

ゲインを高くしてロバスト性を高めるには、このオプションを選択して、フィードバック ゲインの更新にモーメンタム項を追加します。学習修正は [学習修正] タブで構成します。

プログラムでの使用

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

フィードフォワード ゲインの初期値。[フィードフォワード ゲインを適応させる] パラメーターを選択していない場合、コントローラーは指定されたフィードフォワード ゲインをこれらの初期値のまま保持します。

プログラムでの使用

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

このパラメーターを選択すると、コントローラーは制御対象システムと参照モデルの状態の差異に基づいてフィードフォワード ゲインを適応させます。

プログラムでの使用

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

このパラメーターを使用して、コントローラーがフィードフォワード ゲインを適応させるレートを制御します。値が大きいほど、ゲインの更新のサイズが大きくなります。

プログラムでの使用

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

ゲインを高くしてロバスト性を高めるには、このオプションを選択して、フィードフォワード ゲインの更新にモーメンタム項を追加します。学習修正は [学習修正] タブで構成します。

プログラムでの使用

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

外乱モデル

ブロックで使用される外乱と不確かさのモデルを構成します。ブロックは演算中に外乱モデル パラメーターを適応させます。

このパラメーターを選択すると、コントローラーは外乱モデルを使用して制御対象システムの不確かさと外乱を推定します。コントローラーは、制御対象システムと参照モデルの状態の誤差に基づいて外乱モデルのパラメーターを適応させます。

外乱モデルの形式は wTϕ(x) です。

  • ϕ(x) は、外乱モデルの特徴ベクトルです。特徴ベクトルを構成するには、[特徴タイプ] パラメーターを使用します。

  • wT は、外乱モデル パラメーターを含む重み行列です。コントローラーは、これらのパラメーターを適応させて外乱と不確かさのモデルを調整します。

プログラムでの使用

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

このパラメーターを使用して、コントローラーが外乱モデル パラメーターを適応させるレートを制御します。値が大きいほど、パラメーターの更新のサイズが大きくなります。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択します。

プログラムでの使用

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

ゲインを高くしてロバスト性を高めるには、このオプションを選択して、外乱パラメーターの更新にモーメンタム項を追加します。学習修正は [学習修正] タブで構成します。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択します。

プログラムでの使用

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

チャネル学習率 Q は、誤差ダイナミクスのリアプノフ関数における状態追従誤差の重み行列です。Q の値が大きいほど、追従誤差が速くゼロになります。ただし、Q の値が大きいほど、作成される過渡も大きくなり、システムのロバスト性が低下します。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択します。

プログラムでの使用

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

外乱モデルの特徴ベクトルのタイプとして次のいずれかを選択します。

  • 状態 — 制御対象プラントからの状態を外乱モデルとして使用します。このオプションでは、不確かさが十分に表現されず性能が低くなることがあります。

  • 放射基底関数 — ガウス放射基底関数を使用して特徴ベクトルを作成します。

  • 特徴に外部ソースを使用[phi] 入力端子をブロックに追加します。この端子を使用して独自のカスタム特徴ベクトルを提供します。

各タイプの特徴ベクトルを使用する状況の詳細については、外乱と不確かさのモデルを参照してください。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: 'FeatureTypeOptions'
型: 文字ベクトル
値: 'Radial Basis Function' | 'State' | 'Use External Source for Feature'
既定: 'Radial Basis Function'

外乱モデルで使用する放射基底関数 (RBF) の中心の数。RBF の中心は、[中心の最小値] パラメーターと [中心の最大値] パラメーターで定義される範囲に等間隔に配置されます。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択し、[特徴タイプ] パラメーターを [放射基底関数] に設定します。

プログラムでの使用

ブロック パラメーター: 'nCen'
型: 文字ベクトル
値: 正の整数
既定: '20'

放射基底関数の中心の下限を指定します。スカラー値を指定すると、すべての基底関数に同じ最小値が使用されます。それ以外の場合は、[RBF の中心の数] パラメーターと等しい長さのベクトルを指定する必要があります。

[中心の最小値] パラメーターは [中心の最大値] パラメーターより小さくなければなりません。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択し、[特徴タイプ] パラメーターを [放射基底関数] に設定します。

プログラムでの使用

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

放射基底関数の中心の上限を指定します。スカラー値を指定すると、すべての基底関数に同じ最大値が使用されます。それ以外の場合は、[RBF の中心の数] パラメーターと等しい長さのベクトルを指定する必要があります。

[中心の最大値] パラメーターは [中心の最小値] パラメーターより大きくなければなりません。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択し、[特徴タイプ] パラメーターを [放射基底関数] に設定します。

プログラムでの使用

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

ガウス基底関数カーネルの標準偏差を指定します。スカラー値を指定すると、すべての基底関数に同じ標準偏差が使用されます。それ以外の場合は、[RBF の中心の数] パラメーターと等しい長さのベクトルを指定する必要があります。

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択し、[特徴タイプ] パラメーターを [放射基底関数] に設定します。

プログラムでの使用

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

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

依存関係

このパラメーターを有効にするには、[外乱適応を有効にする] パラメーターを選択します。

プログラムでの使用

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

学習修正

ゲインを高くしてロバスト性を高めるために、パラメーターの更新を変更してモーメンタム項を含めることができます。[Parameter Update Formula] セクションの方程式に、現在のブロック構成の更新式が表示されます。

パラメーターの更新に追加されるモーメンタム項を計算するオプションとして次のいずれかを選択します。

  • シグマ修正 — モーメンタム項は、運動量の重みパラメーター σ と現在のパラメーター値の積になります。

  • e-修正 — シグマ修正のモーメンタム項を誤差値の振幅でスケーリングします。

  • なし — 学習修正を使用しません。

σ を指定するには、[シグマ] パラメーターを使用します。

プログラムでの使用

ブロック パラメーター: 'modChoice'
型: 文字ベクトル
値: 'Sigma Modification' | 'e-Modification' | 'None'
既定: 'Sigma Modification'

運動量の重みの項の値を指定します。値が大きいほど、パラメーターの更新のゲインとパラメーターの更新のサイズが大きくなります。

依存関係

このパラメーターを有効にするには、[修正方法] パラメーターを [シグマ修正] または [e-修正] のいずれかに設定します。

プログラムでの使用

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

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2021b で導入

参考