Main Content

systune

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

説明

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

このコマンドは Simulink® でモデル化された制御システムを調整します。MATLAB® で表現される制御システムを調整するには、genss モデルの 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.13, Hard = -Inf, Iterations = 89
Final: Soft = 1.13, Hard = -Inf, Iterations = 80
Final: Soft = 1.13, Hard = -Inf, Iterations = 72
Final: Soft = 40, Hard = -Inf, Iterations = 102

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

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

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

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

fSoft
fSoft =

    1.1327    1.1327    0.5140    1.1327

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

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

入力引数

すべて折りたたむ

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

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

フィールド
Run

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

Iterations

実行中に行われる反復の回数。スカラーとして返されます。RandomStart を使用する場合、info.Iterations(j) は j 回目の実行で終了までに行われる反復の数です。

f

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

g

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

x

調整されたパラメーター値。ベクトルとして返されます。このベクトルには、実行の最後での調整可能なパラメーターの値が含まれています。info.x には、ループ スケーリングなどの追加の変数 (systune で使用される場合) の値も含まれている場合があります (info.LoopScaling を参照)。

MinDecay

調整されたシステム ダイナミクスの最小 decay 率。2 要素の行ベクトルとして返されます。

info.MinDecay(1) は、閉ループ極の最小 decay 率です。

info.MinDecay(2) は、安定性制約をもつ調整されたブロックのダイナミクスの最小 decay 率です。安定ダイナミクスと decay 率の詳細については、systuneOptionsMinDecay オプションを参照してください。

fSoft

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

gHard

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

Blocks

調整された制御システムにおける調整可能ブロックおよびパラメーターの調整後の値。構造体として返され、そのフィールドは調整可能な要素の名前、値は対応する調整後の値です。

RandomStart オプションを正の値に設定して複数回の実行を行う場合、このフィールドを使用して、制御システムのパフォーマンスを他の実行の結果と検証できます。たとえば、次のコードを使用して、j 回目の実行からの調整後の値を適用します。

stj = setBlockValue(st0,info(j).Blocks)

LoopScaling

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

マルチループ制御システムに適用された場合、開ループ応答を含む調整目標は、適用対象のループ伝達関数のスケーリングに影響を受けることがあります。これにより、適切な最適化結果が得られない場合があります。systune はスケーリングに関する問題を自動的に修正し、info.LoopScaling の状態空間モデルとして最適な対角スケーリング行列 D を返します。

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

このようなループ スケーリングにより影響を受ける調整目標には、次のものがあります。

  • TuningGoal.LoopShape

  • TuningGoal.MinLoopGain および TuningGoal.MaxLoopGain

  • TuningGoal.Sensitivity

  • TuningGoal.Rejection

  • TuningGoal.Margins

info には次のフィールドも含まれています。そのエントリは、不確かさをもつ制御システムのロバスト調整のために systune を使用する場合に意味をもちます。

フィールド
wcPert

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

wcf

最悪の柔軟な目標値。スカラーとして返されます。この値は、調整後のコントローラーを使用している際の、不確かさの範囲における最大の柔軟な目標値 (f) です。

wcg

最悪の厳密な目標値。スカラーとして返されます。この値は、調整後のコントローラーを使用している際の、不確かさの範囲における最大の厳密な目標値 (g) です。

wcDecay

調整コントローラーを使用している際の、不確かさの範囲における最小の閉ループ decay 率。スカラーとして返されます。正の値はロバストな安定性を示します。安定ダイナミクスと decay 率の詳細については、systuneOptionsMinDecay オプションを参照してください。

詳細

すべて折りたたむ

調整ブロック

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 ライブラリの詳細については、https://github.com/SLICOTを参照してください。

代替機能

制御システム調整器を使用して対話形式で調整を行います。

参照

[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] Bruinsma, N.A., and M. Steinbuch. "A Fast Algorithm to Compute the H Norm of a Transfer Function Matrix." Systems & Control Letters, 14, no.4 (April 1990): 287–93.

拡張機能

バージョン履歴

R2014a で導入