ドキュメンテーション

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

systune

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

systune は、柔軟な調整目標と厳密な調整目標の両方に従って固定構造制御システムを調整します。systune は、1 つ以上のフィードバック ループに分布している、次数と構造の固定された複数の制御要素を調整できます。調整ワークフローの概要は、Control System Toolbox™ ドキュメンテーションの「自動調整のワークフロー」を参照してください。

このコマンドは Simulink® でモデル化された制御システムを調整します。MATLAB® で表現される制御システムを調整するには、genss モデルの systune を使用してください。

構文

  • [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 を満たすようにします。コマンドは、調整バージョンの st0st として返します。最も優れた柔軟な制約値は fSoft として返されます。

st0 が実数パラメーターの不確かさを含む場合、systune はロバスト調整を自動実行し、最悪ケースのパラメーター値に対する制約値を最適化します。systune も、異なる操作点またはパラメーター値で取得した一連のプラント モデルに対してロバスト調整を実行します。入力引数を参照してください。

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

次のコマンド

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

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

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

すべて折りたたむ

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

Simulink モデルを開きます。

mdl = 'rct_airframe2';
open_system(mdl);

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

st0 = slTuner(mdl,'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 = 74
Final: Soft = 1.15, Hard = -Inf, Iterations = 202
Final: Soft = 1.15, Hard = -Inf, Iterations = 92
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.1462    1.1462    0.5435    1.1462

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

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

関連する例

入力引数

すべて折りたたむ

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

st0 を作成する際に、パラメーターの変化や線形化を複数の操作点で指定する場合、systune はすべてのプラント モデルに対してロバスト調整を実行します。st0 を作成する際に、不確かさをもつ (uss) モデルをブロック置換として指定する場合、systune はロバスト調整を実行し、最悪ケースのパラメーター値に対してパラメーターを最適化します。ロバスト調整の方法についての詳細は、「Robust Tuning Approaches」を参照してください (不確かさをもつモデルを使用するには Robust Control Toolbox™ のライセンスが必要です)。

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

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

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

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

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

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

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

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

  • 並行処理使用のフラグ

使用可能なすべてのオプションの詳細については、systuneOptions のリファレンス ページを参照してください。

出力引数

すべて折りたたむ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

不確かさをもつパラメーターの最悪の組み合わせ。構造体配列として返されます (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。各構造体には不確かさをもつ一連のパラメーター値が含まれています。パフォーマンスが最悪の摂動がまずリストされます。

調整コントローラーを使用している際の、不確かさの範囲における最大の柔軟な目標値 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。

調整コントローラーを使用している際の、不確かさの範囲における最大の厳密な目標値 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。

調整コントローラーを使用している際の、不確かさの範囲における最小の閉ループ減衰率 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。正の値はロバストな安定性を示します。詳細については、systuneOptionsMinDecay オプションを参照してください。

代替機能

Control System Tuner を使用して対話形式で調整を行います。

詳細

すべて折りたたむ

調整ブロック

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

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

slTuner インターフェイスを作成する際に、調整ブロック (たとえば、C1C2) を指定しなければなりません。

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

addBlock および removeBlock により、調整ブロックのリストを変更できます。

調整ブロックを対話的に操作するには、以下を使用します。

解析ポイント

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

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

解析ポイントは、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 は、制御システムの自由パラメーターの最小値と最大値です。

柔軟な調整目標と厳密な調整目標の両方を使用する場合、ソフトウェアは、次の形式をもつ一連の制約なしの部分問題を解決することにより、この最適化問題にアプローチします。

minxmax(αf(x),g(x)).

ソフトウェアは乗算器 α を調整して、部分問題の解決が元の制約付き最適化問題の解決へと収束するようにします。

systune は、値が最小化問題の最良解となるよう調整されたパラメーターをもつ slTuner インターフェイスを返します。systune はまた、fi(x) と gj(x) の最善の値を、それぞれ fSoft および gHard として返します。

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

systune は、[1][2][3][4]で記述されている滑らかでない最適化アルゴリズムを使用します。

systune は、[5]のアルゴリズムと 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] Apkarian, P. and D. Noll, "Nonsmooth Optimization for Multiband Frequency-Domain Control Design," Automatica, 43 (2007), pp. 724–731.

[3] Apkarian, P., P. Gahinet, and C. Buhr, "Multi-model, multi-objective tuning of fixed-structure controllers," Proceedings ECC (2014), pp. 856–861.

[4] Apkarian, P., M.-N. Dao, and D. Noll, "Parametric Robust Structured Control Design," IEEE Transactions on Automatic Control, 2015.

[5] 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.

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