ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

systune

slTuner を使用して Simulink 内の制御システムのパラメーターを調整

構文

  • [st,fSoft] = systune(st0,SoftGoals)
  • [st,fSoft,gHard] = systune(st0,SoftGoals,HardGoals)
  • [st,fSoft,gHard] = systune(___,opt)
  • [st,fSoft,gHard,info] = systune(___)

説明

[st,fSoft] = systune(st0,SoftGoals) は、Simulink® 内の制御システムの自由パラメーターを調整します。注目する Simulink モデル、調整ブロックおよび解析ポイントは、slTuner インターフェイス st0 で指定します。systune は、制御システムのパラメーターを調整し、可能な限り性能目標 SoftGoals を満たすようにします。このコマンドからは、st0 の調整済みバージョンが st として返され、目標 SoftGoals を最も良く達成した値が fSoft として返されます。

調整は、st0Ts プロパティで指定されるサンプル時間で実行されます。

このコマンドには Robust Control Toolbox™ のライセンスが必要です。

[st,fSoft,gHard] = systune(st0,SoftGoals,HardGoals) は、厳密な目標を満たすことを条件として、柔軟な目標を最もよく満たすように制御システムを調整します。柔軟な目標と厳密な目標を最もよく達成する値 fSoftgHard を返します。達成値が 1 未満の場合、その目標は達成できています。

[st,fSoft,gHard] = systune(___,opt) は、前述の構文における入力の任意の組み合わせに対する最適化のオプションを設定します。

[st,fSoft,gHard,info] = systune(___) は、前述の構文における入力の任意の組み合わせに対する最適化実行ごとの詳細情報も返します。

すべて折りたたむ

柔軟な制約に対する制御システムの調整

rct_airframe2 モデルの制御システムを調整して、追従、ロールオフ、安定余裕、外乱の抑制の柔軟な目標の達成を目指します。

モデルの slTuner インターフェイスを作成して構成します。

open_system('rct_airframe2')
st0 = slTuner('rct_airframe2','MIMO Controller');

st0rct_aircraft2 モデルに対する slTuner インターフェイスで、MIMO Controller ブロックが制御システムの調整可能な部分として指定されています。

モデルには、az refdelta finazqe の各信号上に既に線形化の入力ポイントがあります。したがって、これらの信号は調整目標と線形化の解析ポイントとして利用可能です。

トラッキングの要件、ロールオフの要件、安定余裕の要件および外乱の抑制の要件を指定します。

req1 = TuningGoal.Tracking('az ref','az',1);                 
req2 = TuningGoal.Gain('delta fin','delta fin',tf(25,[1 0])); 
req3 = TuningGoal.Margins('delta fin',7,45);                  
max_gain = frd([2 200 200],[0.02 2 200]);
req4 = TuningGoal.Gain('delta fin','az',max_gain);  

req1 は、azaz ref をトラッキングするよう制約します。次の要件の req2 は、delta fin で測定された開ループの、点と点を結ぶ伝達関数のゲイン プロファイルを指定することでロールオフの要件を与えます。次の要件の req3 は、同じポイント間を結ぶ伝達関数に開ループ ゲインと位相余裕を設定します。最後の req4 は、これらの 2 つのポイント間の最大ゲイン プロファイルを指定することで、delta fin に挿入された az への外乱を抑制します。

これらの調整目標を使用してモデルを調整します。

opt = systuneOptions('RandomStart',3);
rng(0);
[st,fSoft,~,info] = systune(st0,[req1,req2,req3,req4],opt);
Final: Soft = 1.15, Hard = -Inf, Iterations = 72
Final: Soft = 1.53, Hard = -Inf, Iterations = 86
Final: Soft = 1.15, Hard = -Inf, Iterations = 89
Final: Failed to enforce closed-loop stability (max Re(s) = 0)

stst0 が調整されたバージョンです。

RandomStart オプションを設定すると、systune は、異なる調整可能パラメーターの初期値 (乱数) を使用して、独立した最適化実行を 3 回行います。これら 3 回の実行は、調整可能パラメーターの現在の値を初期値とする既定の最適化実行に追加して行われます。rng を呼び出すと、乱数発生器をシードして再現性のある数列を生成します。

systune は、各実行の最終結果を表示します。表示されている値 Soft は、4 つの性能目標それぞれに対して達成した値の最大値です。ソフトウェアでは全体で最も結果が良かった実行、つまり Soft の値が最小になる実行が選ばれます。最後の実行では、閉ループの安定性を達成できていません。これは、Soft = Inf に相当します。

柔軟な制約に対して得られた最善の値を調べます。

fSoft
fSoft =

    1.1460    1.1460    0.5434    1.1460

安定余裕の req3 のみがすべての周波数に対して満たされています。他の値は小幅とはいえ 1 を超えており、少なくとも一部の周波数でゴールに違反していることを示しています。

viewSpec を使用して調整後の制御システムのパフォーマンスをゴールに対して可視化し、違反が許容できるかどうかを決定します。調整パラメーター値に対する特定の開ループまたは閉ループ伝達関数を評価するには、getIOTransfergetLoopTransfer などの線形化コマンドを使用できます。調整パラメーター値を検証した後、writeBlockValue を使用すると、それらの値を Simulink モデルに適用できます。

関連する例

入力引数

すべて折りたたむ

st0 — Simulink でモデル化された制御システムを調整するためのインターフェイスslTuner インターフェイス

Simulink でモデル化された制御システムを調整するためのインターフェイス。slTuner インターフェイスとして指定します。

SoftGoals — 柔軟な目標 (目的)TuningGoal オブジェクトのベクトル

st0 で記述される制御システムの調整の柔軟な目標 (目標)。TuningGoal オブジェクトのベクトルとして指定します。一覧は、「Tuning Goals」を参照してください。

systune は、厳密な調整目標 (ある場合) を満たすことを条件に、柔軟な調整目標の最大値が最も小さくなるように制御システムの調整可能パラメーターを調整します。

HardGoals — 厳密な目標 (制約)TuningGoal オブジェクトのベクトル

st0 で記述される制御システムの調整の厳密な目標 (制約)。TuningGoal オブジェクトのベクトルとして指定します。一覧は、「Tuning Goals」を参照してください。

値が 1 未満の場合、その厳密な目標は達成されています。systune は、厳密な調整目標をすべて満たすことを条件に、柔軟な調整目標の最大値が最も小さくなるように制御システムの調整可能パラメーターを調整します。

opt — 調整アルゴリズムのオプションsystuneOptions を使用して作成されたオプション セット

調整アルゴリズムのオプション。systuneOptions を使用して作成されたオプション セットとして指定します。

使用できるオプションは、次のとおりです。

  • 自由パラメーターの乱数の初期値から始める、追加の最適化の実行回数

  • 最適化を終了する許容誤差

  • 並行処理使用のフラグ

出力引数

すべて折りたたむ

st — 調整インターフェイスslTuner インターフェイス

調整インターフェイス。slTuner インターフェイスとして返されます。

fSoft — 柔軟な目標を最も良く達成した値ベクトル

柔軟な目標を最も良く達成した値。ベクトルとして返されます。

各調整目標は、スカラー値を評価します。systune は、厳密な目標をすべて満たすことを条件として、柔軟な目標の最大値を最も小さくします。

fSoft には、全体的に最も結果が良かった実行時の柔軟な目標の各値が含まれます。全体で最も良かった実行は、max(gHard)<1 を満たすことを条件とし、max(fSoft) の値が最も小さかった実行です。

gHard — 厳密な目標を達成した値ベクトル

厳密な目標を最も良く達成した値。ベクトルとして返されます。

gHard には、全体的に最も結果が良かった実行時 (max(gHard)<1 を満たす max(fSoft) の最小値を達成した実行) の厳密な目標の各値が含まれます。厳密な目標がすべて満たされた場合、gHard の要素はすべて 1 未満になります。1 より大きい要素がある場合、systune が 1 つ以上の設計制約を満たせなかったことを示しています。

info — 各最適化実行の詳細情報構造体

各最適化実行の詳細情報。構造体として返されます。

最適化の詳細結果を調べる以外にも、info は、調整された MIMO システムの検証に際して viewSpec への入力として使用できます。info には、viewSpec が MIMO の開ループ目標を正しく評価するために必要なループ整形や安定余裕などのスケーリング データが含まれています。

info のフィールドは、以下のとおりです。

Run — 実行番号スカラー

スカラーとして返される実行番号。systuneOptionsRandomStart オプションを使用して複数の最適化を実行する場合、info は構造体配列で、info.Run はインデックスです。

Iterations — 実行時の反復処理の回数スカラー

スカラーとして返される、実行時の反復処理の合計回数。

fBest — 全体で最善の柔軟な制約値スカラー

全体で最善の柔軟な制約値。スカラーとして返されます。systune は柔軟な目標を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、厳密な制約に従って関数が最小化されるようにパラメーターを調整します (アルゴリズム を参照)。info.fBest は最後の反復での柔軟な制約の最大値です。この値は、厳密な制約が満たされる場合にのみ意味があります。

gBest — 全体で最善の厳密な制約値スカラー

全体で最善の厳密な制約値。スカラーとして返されます。systune は厳密な目標を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、これらの値が 1 より小さくなるようにパラメーターを調整します (アルゴリズムを参照してください)。info.gBest は、最終の反復での厳密な制約の最大値です。この値が厳密な制約を満たすには、1 より小さくなければなりません。

fSoft — 個々の柔軟な制約の値ベクトル

ベクトルとして返される、個々の柔軟な制約値。systune はそれぞれの柔軟な要件を、制御システムの自由パラメーターの関数である正規化された値に変換します。次にこのコマンドは、厳密な制約に従って値が最小化されるようにパラメーターを調整します (アルゴリズムを参照してください)。info.fSoft には、各実行終了時における柔軟な制約の個々の値が含まれます。これらの値は、SoftGoals で指定される制約と同じ順序で fSoft に表示されます。

gHard — 個々の厳密な制約の値ベクトル

ベクトルとして返される、個々の厳密な制約値。systune はそれぞれの厳密な要件を、制御システムの自由パラメーターの関数である正規化された値に変換します。次にこのコマンドは、それらの値を最小化するようにパラメーターを調整します。厳密な要件は、その値が 1 よりも小さい場合に満たされます (アルゴリズムを参照してください)。info.gHard には、各実行終了時における厳密な制約の個々の値が含まれます。これらの値は、HardGoals で指定される制約と同じ順序で gHard に表示されます。

MinDecay — 閉ループ極の最小減衰率ベクトル

ベクトルとして返される、閉ループ極の最小減衰率。

既定では、調整されたシステムの閉ループの極配置は Re(p) < –10–7 を満たすよう制約されています。この制約を変更するには、systuneOptionsMinDecay オプションを使用します。

Blocks — 調整可能ブロックおよびパラメーターの調整後の値構造体

調整可能ブロックおよびパラメーターの調整後の値。構造体として返されます。

複数の実行がある場合、最も結果が良かった実行以外の任意の実行の結果を試すことができます。そのためには、getBlockValue または showTunable を使用して調整後のパラメーター値にアクセスします。たとえば、3 回目の実行結果を使用するには、「getBlockValue(st,Info(3).Blocks)」と入力します。

LoopScaling — MIMO 調整目標の評価に最適な対角スケーリング状態空間モデル

MIMO 調整目標の評価に最適な対角スケーリング。状態空間モデルとして返されます。

マルチループ制御システムに適用された場合、TuningGoal.LoopShape および TuningGoal.Margins のゴールは、適用対象の個々のループ伝達関数のスケーリングに影響を受けることがあります。systune はスケーリングに関する問題を自動的に修正し、info.LoopScaling の状態空間モデルとして最適な対角スケーリング行列 d を返します。

D の各対角要素に関連付けられたループ チャンネルは info.LoopScaling.InputName にリストされます。スケーリングされたループ伝達は D\L*D です。ここで、Linfo.LoopScaling.InputName の位置で測定された開ループ伝達です。

詳細

すべて折りたたむ

調整ブロック

slTuner インターフェイスで使用される "調整ブロック" は、Simulink モデル内のブロックのうち、調整目標を満たすためにパラメーター調整を行うブロックを示します。ゲイン、伝達関数、状態空間モデルなどの線形要素を表現する Simulink ブロックは、ほとんどが調整可能です (調整がサポートされているすべてのブロックのリストは、「How Tuned Simulink Blocks Are Parameterized」を参照してください)。また、SubSystem ブロックや S-Function ブロックなど、より複雑なブロックも、等価の「調整可能な線形モデル」を指定することで調整可能です。

調整ブロックのパラメーターを調整するには、systunelooptune などのコマンドを使用します。

slTuner インターフェイスの作成時に、調整ブロックを指定しなければなりません (例: C1、C2)。

st = slTuner('scdcascade',{'C1','C2'})

addBlock および removeBlock により、調整ブロックのリストを変更できます。setBlockParamgetBlockValuewriteBlockValue などのコマンドを使用して、調整ブロックを操作します。

解析ポイント

"解析ポイント" は、slLinearizerslTuner インターフェイスで使用され、モデル内で線形解析と制御システムの調整に関連する箇所を示します。解析ポイントは、getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity などの線形化コマンドの入力として使用します。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。また、コマンド systune などを使用して制御システムを調整する際に (Robust Control Toolbox ライセンスが必要です)、解析ポイントを使用して設計要件を指定することもできます。

"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って解析ポイントを示すことができます。

解析ポイントは、slLinearizer または slTuner インターフェイス s に対して、インターフェイスの作成時に追加できます。以下に例を示します。

s = slLinearizer('scdcascade',{'u1','y1'});

また、addPoint コマンドを使用することもできます。

s のすべての解析ポイントを表示するには、コマンド プロンプトで「s」と入力してインターフェイスの内容を表示します。s の各解析ポイントの表示には、ブロック名、端子番号、およびこの解析ポイントから発信される信号の名前が含まれます。getPoints を使用し、プログラムですべての解析ポイントのリストを取得することもできます。

解析ポイントの使用方法の詳細は、「制御システムの解析と設計における信号の管理」を参照してください。

アルゴリズム

x は、調整する制御システムの調整可能パラメーターのベクトルです。systune は、柔軟な調整要件および厳密な調整要件である SoftReqs(i)HardReqs(j) をそれぞれ、正規化された値 fi(x) と gj(x) に変換します。その後、systune が最小化問題を解きます。

maxjgj(x)<1 を条件として、xmin<x<xmax に対して maxifi(x) を最小化します。

xmin と xmax は自由パラメーターの最小値と最大値です。

systune は、最小化問題の最良解となる値に調整されたパラメーターをもつ制御システム st を返します。systune はまた、fi(x) と gj(x) の最善の値を、fSoftgHard として返します。

各タイプの制約に対する関数 fi(x) および gj(x) の詳細は、それぞれの TuningGoal 要件オブジェクトのリファレンス ページを参照してください。

最適化アルゴリズムの詳細は、[1] を参照してください。

systune は、[2]のアルゴリズムと SLICOT ライブラリの構造維持固有値ソルバーを使用して、H ノルムを計算します。SLICOT ライブラリの詳細は、http://slicot.org を参照してください。

参照

[1] P. Apkarian and D. Noll, "Nonsmooth H-infinity Synthesis." IEEE Transactions on Automatic Control, Vol. 51, Number 1, 2006, pp. 71–86.

[2] Bruisma, N.A. and M. Steinbuch, "A Fast Algorithm to Compute the H-Norm of a Transfer Function Matrix," System Control Letters, 14 (1990), pp. 287-293.

この情報は役に立ちましたか?