Main Content

TuningGoal.LQG クラス

パッケージ: TuningGoal

制御システムの調整のための線形 2 次ガウシアン (LQG) 目標

説明

TuningGoal.LQG を使用して制御性能を LQG コストとして定量的に表す調整目標を指定します。これは、最適な LQG 制御の標準的なオブサーバー構造だけでなく、任意の制御構造に適用できます。この調整目標は、制御システムを systunelooptune などの調整コマンドで調整する場合に使用できます。

LQG コストは次のようになります。

J = E(z(t)′ QZ z(t))

z(t) はホワイト ノイズ入力ベクトル w(t) へのシステム応答です。w(t) の共分散は次のようになります。

E(w(t)w(t)′) = QW

ベクトル w(t) は通常、ノイズ、外乱、コマンドなどのシステムに対する外部入力で構成されます。ベクトル z(t) には制御信号、システム状態、出力などの性能を特徴付けるすべてのシステム変数が含まれます。E(x) は確率的変数 x の期待値を示します。

コスト関数 J は経時的平均として記述することもできます。

J=limTE(1T0Tz(t)'QZz(t)dt).

調整目標を作成した後、オブジェクトのプロパティを設定して、さらに詳しく構成できます。

構築

Req = TuningGoal.LQG(wname,zname,QW,QZ) は LQG 要件を作成します。wnamezname は、w(t) と z(t) を構成する信号を指定します。行列 QW および QZ はノイズ共分散とパフォーマンスの重みを指定します。これらの行列は対称な非負定値でなければなりません。QWQZ にスカラー値を使用して単位行列の倍数を指定します。

入力引数

wname

ノイズ入力 w(t)。'w'{'w','v'} など、名前で w(t) を構成する信号を指定する、文字ベクトルまたは文字ベクトルの cell 配列として指定します。調整目標のノイズ入力として指定できる信号は次のとおりです。

  • 調整目標を使用して制御システムの Simulink® モデルを調整する場合、wname に次を含めることが可能。

    • 任意のモデル入力

    • モデル内の任意の線形化入力ポイント

    • Simulink モデルに関連付けられている slTuner インターフェイス内の ControlsMeasurementsSwitches、または IOs の信号として識別される任意の信号

  • 調整目標を使用して systune で制御システムの一般化状態空間モデル (genss) を調整する場合、wname に次を含めることが可能。

    • 制御システム モデルの任意の入力

    • 制御システム モデル内の AnalysisPoint ブロックの任意のチャネル

    たとえば、制御システム モデル T を調整する場合、wnameT.InputName に含まれる入力名とすることができます。また、TX という名前の位置をもつ AnalysisPoint ブロックが含まれる場合、wnameX を含めることができます。

  • 調整目標を使用して looptune でプラント G0 のコントローラー モデル C0 を調整する場合、wname に次を含めることが可能。

    • C0 または G0 の任意の入力

    • C0 または G0 内の AnalysisPoint ブロックの任意のチャネル

wname が一般化モデルの AnalysisPoint ブロックのチャネルの場合、調整目標のノイズ入力はスイッチに関連付けられた暗黙的な入力になります。

zname

パフォーマンス出力 z(t)。'y'{'y','u'} など、名前で z(t) を構成する信号を指定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。調整目標のパフォーマンス出力として指定できる信号は次のとおりです。

  • 調整目標を使用して制御システムの Simulink モデルを調整する場合、zname に次を含めることが可能。

    • 任意のモデル出力

    • モデル内の任意の線形化出力ポイント

    • Simulink モデルに関連付けられている slTuner インターフェイス内の ControlsMeasurementsSwitches、または IOs の信号として識別される任意の信号

  • 調整目標を使用して systune で制御システムの一般化状態空間モデル (genss) を調整する場合、zname に次を含めることが可能。

    • 制御システムモデルの任意の出力

    • 制御システム モデル内の AnalysisPoint ブロックの任意のチャネル

    たとえば、制御システム モデル T を調整する場合、znameT.OutputName に含まれる出力名とすることができます。また、TX という名前のチャネルをもつ AnalysisPoint ブロックが含まれる場合、znameX を含めることができます。

  • 調整目標を使用して looptune でプラント G0 のコントローラー モデル C0 を調整する場合、zname に次を含めることが可能。

    • C0 または G0 の任意の入力

    • C0 または G0 内の AnalysisPoint ブロックの任意のチャネル

zname が一般化モデルの AnalysisPoint ブロックのチャネルの場合、調整目標のパフォーマンス出力はスイッチに関連付けられた暗黙的な出力になります。

QW

ホワイト ノイズ入力ベクトル w(t) の共分散。スカラーまたは行列として指定します。スカラー値を使用して単位行列の倍数を指定します。それ以外の場合、ベクトル w(t) にあるエントリと同数の行で対称な非負定値行列を指定します。対角行列は w(t) のエントリが無相関であることを意味します。

w(t) の共分散は次のようになります。

E(w(t)w(t)′) = QW

離散時間の制御システムを調整する場合、LQG 調整目標では次が仮定されます。

E(w[k]w[k]′) = QW/Ts

Ts はモデルのサンプル時間です。この仮定では、連続時間領域における調整で矛盾のない結果が必ず得られます。この仮定では、w[k] は共分散 QW を使用したサンプリング連続ホワイト ノイズ w(t) から取得した離散時間ノイズです。システム w[k] が既知の共分散 QWd をもつ真に離散プロセスの場合、LQG 目標を作成するときに値 Ts*QWd を QW の値に使用します。

既定値: I

QZ

パフォーマンスの重み。スカラーまたは行列として指定します。スカラー値を使用して単位行列の倍数を指定します。それ以外の場合、対称な非負定値行列を指定します。対角行列を使用して個別にスケーリングするか、z の各変数の寄与にペナルティを与えます。

パフォーマンスの重みは、次のようにしてコスト関数に寄与します。

J = E(z(t)′ QZ z(t))

LQG 調整目標を厳密な目標として使用すると、ソフトウェアはコスト関数 J が 1 より小さくなるようにします。柔軟な目標として使用する場合、コスト関数 J は任意の厳密な目標に従って最小化され、その値は目的関数全体に寄与されます。したがって、コスト関数を適切にスケーリングし、1 未満または最小化することによって必要なパフォーマンスが得られるように、QZ 値を選択します。

既定値: I

プロパティ

NoiseCovariance

ノイズ入力 w(t) の共分散行列。行列として指定します。NoiseCovariance プロパティの値は LQG 調整目標を作成する際に WZ 入力引数によって設定されます。

PerformanceWeight

パフォーマンス信号 z(t) の重み。行列として指定します。PerformanceWeight プロパティの値は LQG 調整目標を作成する際に QZ 入力引数によって設定されます。

Input

ノイズ入力信号名。文字ベクトルの cell 配列として指定します。入力信号名は、調整目標によって制約を受ける伝達関数の入力を指定します。Input プロパティの初期値は、調整目標を作成する際に入力引数 wname によって設定されます。

Output

パフォーマンス出力信号名。文字ベクトルの cell 配列として指定します。出力信号名は、調整目標によって制約を受ける伝達関数の出力を指定します。Output プロパティの初期値は、調整目標を作成する際に入力引数 zname によって設定されます。

Models

調整目標を適用するモデル。インデックスのベクトルとして指定します。

制御システム モデルの配列を systune によって調整し、配列内の一部のモデルに調整目標を適用する場合に、Models プロパティを使用します。たとえば、systune に渡されるモデル配列の中の 2 番目、3 番目、4 番目のモデルに調整目標 Req を適用する必要があると仮定します。この調整目標の適用を制限するには、次のコマンドを使用します。

Req.Models = 2:4;

Models = NaN の場合、調整目標はすべてのモデルに適用されます。

既定値: NaN

Openings

調整目標を評価するときに開くフィードバック ループ。ループ開始点の位置を特定する文字ベクトルの cell 配列として指定します。調整目標は、特定した位置でフィードバック ループを開くことにより作成される開ループの構成に対して評価されます。

調整目標を使用して制御システムの Simulink モデルを調整する場合、Openings にはモデルでマークされた任意の線形解析ポイントまたは Simulink モデルに関連付けられている slTuner (Simulink Control Design) インターフェイスの任意の線形解析ポイントを含めることができます。addPoint (Simulink Control Design) を使用して解析ポイントとループ開始点を slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

調整目標を使用して制御システムの一般化状態空間 (genss) モデルを調整する場合、Openings に制御システム モデルの任意の AnalysisPoint の位置を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

たとえば、Openings = {'u1','u2'} の場合、解析ポイント u1u2 でループが開いている状態で調整目標が評価されます。

既定値: {}

Name

調整目標の名前。文字ベクトルとして指定します。

たとえば、Req が調整目標の場合は次のようになります。

Req.Name = 'LoopReq';

既定値: []

ヒント

  • この調整目標を使用して連続時間制御システムを調整すると、systune はゼロの直達 (D =0) を調整目標が制約する伝達に適用しようとします。ゼロの直達は H2 ノルム、つまり調整目標の値が、非ゼロの直達をもつ連続時間システムで無限であることから適用されます。

    systune は直達項に寄与しているすべての調整可能なパラメーターをゼロに固定することによってゼロの直達を適用します。systune はこれらの調整可能なパラメーターを固定するだけではゼロの直達を適用するのに不十分である場合、エラーを返します。このような場合、調整目標または制御構造を修正するか、システムの一部の調整可能なパラメーターを直達項を排除する値に手動で固定しなければなりません。

    制約された伝達関数が調整可能なブロックを直列でいくつかもつ場合、直達全体に寄与するすべてのパラメーターをゼロに設定するというソフトウェアのアプローチが無難な可能性があります。この場合、いずれか 1 つのブロックの直達項をゼロに設定するだけで十分です。直達をゼロに固定するブロックを制御する場合、選択した調整ブロックの直達を手動で固定できます。

    調整可能なブロックのパラメーターを指定した値に固定するには、ブロックのパラメーター化で Value プロパティと Free プロパティを使用します。たとえば、次のような調整された状態空間ブロックを検討します。

    C = tunableSS('C',1,2,3);

    このブロックにゼロの直達を適用するには、このブロックの D 行列値をゼロに設定し、パラメーターを固定します。

    C.D.Value = 0;
    C.D.Free = false;

    パラメーター値の固定の詳細については、tunableSS などの制御設計ブロックのリファレンス ページを参照してください。

  • この調整目標は、Openings で特定されたポイントでループが開いた状態で評価される、wname から zname への閉ループ伝達関数に暗黙的な安定性の制約を課します。この暗黙的な制約に影響を受けるダイナミクスは、この調整目標の "安定ダイナミクス" です。systuneOptionsMinDecay および MaxRadius オプションは、これらの暗黙的に制約されたダイナミクスの範囲を制御します。最適化で既定の範囲が満たされない場合や、既定の範囲が他の要件と競合する場合は、systuneOptions を使用してこれらの既定値を変更します。

アルゴリズム

TuningGoal を使用して制御システムを調整する場合、ソフトウェアは調整目標を正規化されたスカラー値 f(x) に変換します。x は、制御システムの自由 (調整可能) パラメーターのベクトルです。その後、ソフトウェアはパラメーター値を調整して f(x) を最小化するか、調整目標が厳密な制約値の場合、f(x) が 1 より小さくなるようにします。

TuningGoal.LQG の場合、f(x) は次のコスト関数 J によって定義されます。

J = E(z(t)′ QZ z(t))

LQG 要件を厳密な目標として使用すると、ソフトウェアはコスト関数 J が 1 より小さくなるようにします。柔軟な目標として使用する場合、コスト関数 J は任意の厳密な目標に従って最小化され、その値は目的関数全体に寄与されます。したがって、コスト関数を適切にスケーリングし、1 未満または最小化することによって必要なパフォーマンスが得られるように、QZ 値を選択します。

バージョン履歴

R2016a で導入

すべて展開する

R2016a での動作変更