Main Content

TuningGoal.ConicSector クラス

パッケージ: TuningGoal

制御システム調整のためのセクター境界

説明

円錐セクター境界はシステムの出力軌跡の制限です。すべての非ゼロ入力軌跡が u(t) の場合、線形システム H の出力軌跡 z(t) = (Hu)(t) は次を満たします。

0Tz(t)TQz(t)dt<0,

すべての T ≥ 0 について上記が成り立ち、H の出力軌跡は、対称不定行列 Q で記述された円錐セクターに収まります。異なる Q 行列を選択すると、システムの応答に異なる条件が課されます。

systune で制御システムを調整する場合は、TuningGoal.ConicSector を使用して、指定した入力と出力間の応答の出力軌跡を指定したセクターに制限します。セクター境界の詳細については、セクター境界とセクター インデックスについてを参照してください。

構築

Req = TuningGoal.ConicSector(inputname,outputname,Q) は、入力 inputname から出力 outputname への応答 H(s) を、対称行列 Q で指定された円錐セクターに制限する調整目標を作成します。調整目標は H を制約し、その軌跡 z(t) = (Hu)(t) は次を満たします。

0Tz(t)TQz(t)dt<0,

すべての T ≥ 0 について上記が成り立つとします。(セクター境界とセクター インデックスについてを参照)。行列 Q は、H の入力と同数の負の固有値をもたなければなりません。

周波数依存のセクター境界を指定するには、Q を、Q(s)T = Q(–s) を満たす LTI モデルに設定します。

入力引数

inputname

調整目標の入力信号。文字ベクトル、または多入力調整目標の場合は文字ベクトルの cell 配列として指定します。

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

    • 任意のモデル入力。

    • モデルでマークされた任意の線形解析ポイント。

    • Simulink モデルに関連付けられた slTuner (Simulink Control Design) インターフェイス内の任意の線形解析ポイント。addPoint (Simulink Control Design) を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

    たとえば、slTuner インターフェイスに解析ポイント u1u2 が含まれているとします。調整目標を作成するときに、'u1' を使用してそのポイントを入力信号として指定します。{'u1','u2'} を使用して 2 チャネル入力を指定します。

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

    • genss モデルの任意の入力

    • 制御システム モデル内の任意の AnalysisPoint の位置

    たとえば、制御システム モデル T を調整する場合、inputnameT.InputName の任意の入力名とすることができます。また、TAP_u という名前の位置をもつ AnalysisPoint ブロックが含まれる場合、inputname'AP_u' を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

    inputname が一般化モデルの AnalysisPoint の位置の場合、調整目標の入力信号は AnalysisPoint ブロックに関連付けられた暗黙的な入力になります。

制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。

outputname

調整目標の出力信号。文字ベクトル、または多出力調整目標の場合は文字ベクトルの cell 配列として指定します。

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

    • 任意のモデル出力。

    • モデルでマークされた任意の線形解析ポイント。

    • Simulink モデルに関連付けられた slTuner (Simulink Control Design) インターフェイス内の任意の線形解析ポイント。addPoint (Simulink Control Design) を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

    たとえば、slTuner インターフェイスに解析ポイント y1y2 が含まれているとします。調整目標を作成するときに、'y1' を使用してそのポイントを出力信号として指定します。{'y1','y2'} を使用して 2 チャネル出力を指定します。

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

    • genss モデルの任意の出力

    • 制御システム モデル内の任意の AnalysisPoint の位置

    たとえば、制御システム モデル T を調整する場合、outputnameT.OutputName の任意の出力名とすることができます。また、TAP_u という名前の位置をもつ AnalysisPoint ブロックが含まれる場合、outputname'AP_u' を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

    outputname が一般化モデルの AnalysisPoint の位置の場合、調整目標の出力信号は AnalysisPoint ブロックに関連付けられた暗黙的な出力になります。

制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。

Q

セクターの形状。次のように指定します。

  • 定数のセクター形状の場合は行列。Q は 1 辺が ny の対称正方行列です。ここで、nyoutputname 内の信号の数です。行列 Q は適切に定義された円錐セクターを表すために不定でなければなりません。不定行列には、正と負両方の固有値があります。特に、Q には多くの負の固有値が必要です。これは、inputname (ベクトル入力信号 u(t) のサイズ) で指定された入力チャネルがあるためです。

  • 周波数依存のセクター形状の場合は LTI モデル。QQ(s)T = Q(–s) を満たします。つまり、Q(s) は各周波数でエルミート行列と評価されます。

詳細については、セクター境界とセクター インデックスについてを参照してください。

プロパティ

SectorMatrix

セクター形状。行列または LTI モデルとして指定します。Q 入力引数は、調整目標の作成時に SectorMatrix の初期値を設定します。Q に適用されるのと同じ制約と特性が SectorMatrix に適用されます。

Regularization

正則化パラメーター。実数で非負のスカラー値として指定します。

次のセクター行列の不定分解があるとします。

Q=W1W1TW2W2T,W1TW2=0

セクター境界

H(jω)TQH(jω)<0

は、以下と同等になります。

H1(jω)HH1(jω)<H2(jω)HH2(jω),

ここで、H1=W1THH2=W2TH、および (•)H はエルミート転置を示します。他の調整目標によって H1(jω)H2(jω) の両方が一部の周波数でゼロになった場合、この条件の適用は数値的に難しくなることがあります。この条件は、0/0 式の符号を制御することと等価であり、丸め誤差が生じた場合に処理が困難です。この条件を回避するには、セクター境界を次に "正則化" します。

H(jω)TQH(jω)<ε2I,

または、以下を使用することもできます。

H1(jω)HH1(jω)+ε2I<H2(jω)HH2(jω).

この正則化によって H2(jω) が特異になるのを防ぎ、調整目標の評価を数値的に処理しやすい状態に保つことができます。Regularization プロパティを使用して ε の値を、H の直達項の通常のノルムの小さい (ただし、無視できない) 割合に設定します。たとえば、調整中に H の直達項のノルムが次数 1 になると予想される場合、次を試してみます。

Req.Regularization = 1e-3;

既定値: 0

Focus

調整目標が適用される周波数帯域。[min,max] 形式の行ベクトルとして指定します。

Focus プロパティを設定して、調整目標が特定の周波数帯域に適用されるように制限します。この値は、調整している制御システム モデルの周波数の単位で表します (rad/TimeUnit)。たとえば、Req は 1 ~ 100 rad/s の間にのみ適用する調整目標であるとします。この帯域に対する調整目標を制限するには、次のコマンドを使用します。

Req.Focus = [1,100];

既定値: 連続時間の場合は [0,Inf]、離散時間の場合は [0,pi/Ts]。ここで Ts はモデルのサンプル時間です。

Input

入力信号名。文字ベクトルの cell 配列として指定します。入力信号名では、最初に inputname 引数によって与えられた、制約付き応答の入力を指定します。

Output

出力信号名。文字ベクトルの cell 配列として指定します。出力信号名では、最初に outputname 引数によって与えられた、制約付き応答の出力を指定します。

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';

既定値: []

すべて折りたたむ

制御システムで入力または解析ポイント 'u' から出力または解析ポイント 'y' への応答を次のセクターに制限する調整目標を作成します。

S={(y,u):0.1u2<uy<10u2}.

このセクターの Q 行列は次のようになります。

a = 0.1;  
b = 10; 
Q = [1 -(a+b)/2 ; -(a+b)/2 a*b];

この Q 行列を使用して調整目標を作成します。

TG = TuningGoal.ConicSector('u','y',Q)
TG = 
  ConicSector with properties:

      SectorMatrix: [2x2 double]
    Regularization: 0
             Focus: [0 Inf]
             Input: {'u'}
            Output: {'y'}
            Models: NaN
          Openings: {0x1 cell}
              Name: ''

プロパティを設定して調整目標をさらに構成します。たとえば、制御システム モデルに 'OuterLoop' と呼ばれる解析ポイントがあり、そのポイントでループが開いている状態で調整目標を適用するものと仮定します。

TG.Openings = 'OuterLoop';

調整の前または後に、viewGoalを使用して調整目標を可視化します。

viewGoal(TG)

Figure contains an axes object. The axes object is empty. This object represents Max.

この目標は、すべての周波数で相対セクター インデックス R が 1 未満である場合に達成されます。影が付いた領域は、目標が達成されなかった領域を表します。この要件を使って制御システム CL を調整する場合、指定した入力と出力の RviewGoal(TG,CL) によってこのプロット上に表示されるため、目標が達成されない周波数範囲とその程度を特定できます。

次の制御システムについて考えます。

信号 u は、制御システムの Simulink モデルまたは genss モデルの解析ポイントとしてマークされているものと仮定します。また、Gu から y への閉ループ伝達関数とします。次を満たす、G のすべての I/O 軌跡 {u(t),y(t)} を制約する調整目標を作成します。

0T(y(t)u(t))TQ(y(t)u(t))dt<0,

すべての T0 について上記が成り立つとします。この例では、インデックス 0.5 の入力受動性を適用するセクター行列を使用します。

nu = 0.5;
Q = [0 -1;-1 2*nu];

G の I/O 軌跡を制約することは、H=[G;I] の出力軌跡 z(t) を次のように定義されたセクターに制限することと等価です。

0Tz(t)TQz(t)dt<0.

(この等価性の詳細についてはセクター境界とセクター インデックスについてを参照)。この制約を指定するには、伝達関数 H=[G;I] を制約する調整目標を作成します。これは、入力 u から出力 {y;u} への伝達関数です。

TG = TuningGoal.ConicSector('u',{'y';'u'},Q);

同じ信号 'u' を入力および出力の両方として指定する場合、円錐セクターの調整目標は対応する伝達関数を恒等式に設定します。したがって、TG で制約される伝達関数は、意図したとおり H=[G;I] となります。この処理は円錐セクターの調整目標に固有です。他の調整目標の場合、同じ信号が入力と出力両方に表示される場合、結果の伝達関数はフィードバック ループがない場合はゼロとなり、それ以外の場合はその位置の相補感度となります。この結果が生じるのは、ソフトウェアで解析ポイントを処理するときに、入力が出力後に与えられることを前提にしているためです。解析ポイントの機能の詳細については、制御システムの解析と設計における対象信号のマークを参照してください。

ヒント

  • 円錐セクターの調整目標では、W2TH(s) が正方で最小位相でなければなりません。ここで H(s) は指定された入力と出力間の伝達関数で、W2 はセクター行列 Q の負の不変部分空間にまたがります。

    Q=W1W1TW2W2T,W1TW2=0

    (アルゴリズムを参照)。これは、この目標の安定ダイナミクスが H の極ではなく、W2TH(s) の伝達零点であることを意味します。systuneOptionsMinDecay および MaxRadius オプションは、これらの暗黙的に制約されたダイナミクスの範囲を制御します。最適化で既定の範囲が満たされない場合や、既定の範囲が他の要件と競合する場合は、systuneOptions を使用してこれらの既定値を変更します。

アルゴリズム

次のように仮定します。

Q=W1W1TW2W2T,W1TW2=0

これは Q の不定分解です。W2TH(s) が正方で最小位相である場合、軌跡 z(t) = Hu(t) の時間領域セクター境界は次のようになります。

0Tz(t)TQz(t)dt<0,

これは、次の周波数領域のセクター条件と同等です。

H(jω)TQH(jω)<0

すべての周波数について上記が成り立ちます。TuningGoal.ConicSector 目標でこの同等性を使用して、時間領域の特性を、systune でゲインの制約を処理するのと同様に処理できる周波数領域条件に変換します。この同等性を確保するために、TuningGoal.ConicSector はまた、そのすべての零点を安定させて W2TH(s) を最小位相にします。

セクター境界で、R インデックスはピーク ゲインがゲインの制約に対して行うのと同じ役割を果たします (セクター境界とセクター インデックスについてを参照)。次の条件は、

H(jω)TQH(jω)<0

R インデックスが 1 未満の場合にのみ、すべての周波数で満たされます。TuningGoal.ConicSectorviewGoal プロットには、R インデックスの値が、周波数の関数として示されます (sectorplot を参照)。

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

セクター境界

H(jω)TQH(jω)<0

TuningGoal.ConicSector は次で与えられる目的関数を使用します。

f(x)=R1+R/Rmax,Rmax=106.

R はセクター境界の R インデックスです (詳細については getSectorIndex を参照)。

最小位相条件によって影響を受ける H のダイナミクスは、この調整目標の "安定ダイナミクス" です。systuneOptionsMinDecay および MaxRadius オプションは、これらの暗黙的に制約されたダイナミクスの範囲を制御します。最適化で既定の範囲が満たされない場合や、既定の範囲が他の要件と競合する場合は、systuneOptions を使用してこれらの既定値を変更します。

バージョン履歴

R2016b で導入