Main Content

Barrier Certificate Enforcement

制御動作を変更し、バリア証明書の制約およびアクション範囲を満たす

R2022a 以降

  • Barrier Certificate Enforcement block

ライブラリ:
Simulink Control Design / Constraint Control

説明

Barrier Certificate Enforcement ブロックは、バリア証明書の制約とアクション範囲に従って、指定された制御動作の最も近くにある変更された制御動作を計算します。

このブロックは、二次計画法 (QP) ソルバーを使用して、関数 |uu0|2 を最小化する制御動作 u を検出します。ここで、u0 は変更されていない制御動作です。

ソルバーは、以下の制約を最適化問題に適用します。

qxfx+qxgxu+γhxβ0uminuumax

ここで

  • fx と gx は、プラント ダイナミクス x˙=f(x)+g(x)u によって定義される関数。

  • hx は制御バリア関数。

  • qx は状態 x に対する制御バリア関数の偏導関数。

  • γ は制約係数。

  • β は制約指数。

  • umin は制御動作の下限。

  • umax は制御動作の上限。

Barrier Certificate Enforcement ブロックには、Optimization Toolbox™ ソフトウェアが必要です。

バリア証明書の適用の詳細については、制御設計へのバリア証明書の適用を参照してください。

端子

入力

すべて展開する

変更されていない制御動作。スカラーまたはベクトルとして指定します。

[アクション数] パラメーターが 1 の場合、u0 をスカラー信号に接続します。そうでない場合、u0 を長さが [アクション数] に等しいベクトル信号に接続します。

次のプラント ダイナミクスの方程式のステート関数 f(x)。

x˙=f(x)+g(x)u

[fx] を Nx 行 1 列の信号に接続します。ここで、Nx[状態数] パラメーターに等しくなります。

次のプラント ダイナミクスの方程式の入力関数 g(x)。

x˙=f(x)+g(x)u

[gx] を Nx 行 Nu 列の信号に接続します。ここで、Nx[状態数] パラメーターに等しく、Nu[アクション数] パラメーターに等しくなります。

制御バリア関数。以下のプラント状態の安全セットとして定義されます。

{x:h(x)0}

[hx] を Nc 行 1 列の信号に接続します。ここで、Nc[バリア証明書の数] パラメーターに等しくなります。

プラント状態に対する制御バリア関数の偏導関数。

q(x)=hx

[qx] を Nc 行 Nx 列の信号に接続します。ここで、Nc[バリア証明書の数] パラメーターに等しく、Nx[状態数] パラメーターに等しくなります。

アクション信号の実行時の上限を指定するには、この入力端子を有効にします。この端子が無効化されている場合、ブロックは制御動作に上限を適用しません。

[アクション数] パラメーターが 1 の場合、umax をスカラー信号に接続します。そうでない場合、umax を長さが [アクション数] に等しいベクトル信号に接続します。

依存関係

この入力端子を有効にするには、[上限 (umax) に外部ソースを使用] パラメーターを選択します。

アクション信号の実行時の下限を指定するには、この入力端子を有効にします。この端子が無効化されている場合、ブロックは制御動作に下限を適用しません。

[アクション数] パラメーターが 1 の場合、umin をスカラー信号に接続します。そうでない場合、umin を長さが [アクション数] に等しいベクトル信号に接続します。

依存関係

この入力端子を有効にするには、[下限 (umin) に外部ソースを使用] パラメーターを選択します。

出力

すべて展開する

QP ソルバーによって返される変更済み制御動作。

ソルバーが最大反復回数に達する前に解を見つけた場合、u* はこの最適解を出力します。

ソルバーが最大反復回数に達した場合、最適化は停止し、u* は準最適解を出力します。

最初の最適化問題が実行不可能な場合、返される制御動作は、ブロックが制約またはアクション範囲を無視するように設定されているかどうかにより異なります。詳細については、[exitflag] パラメーターを参照してください。

[アクション数] パラメーターが 1 の場合、u* はスカラー信号を出力します。そうでない場合、u* は、長さが [アクション数] に等しいベクトル信号を出力します。

QP ソルバーの最適化ステータス。次の表に取り得るステータス値を示します。

終了フラグ説明
1ソルバーは、すべての制約と範囲が有効な状態で最適解に収束しました。この場合、u* は最適な制御動作を出力します。
0ソルバーが最大反復回数に達しました。u* の制御動作の出力は、準最適の場合があります。
負の整数

最初の最適化問題が実行不可能であり、次のいずれかのシナリオが適用されます。

  • アクション範囲なしで最適化を再実行しましたが、実行可能解を生成しませんでした。

  • 制約範囲なしで最適化を再実行しましたが、実行可能解を生成しませんでした。

この場合、u* の制御動作の出力はゼロです。

依存関係

この出力端子を有効にするには、[最適化ステータス] パラメーターを選択します。

パラメーター

すべて展開する

[パラメーター] タブ

プラントの状態の数を指定します。

プログラムでの使用

ブロック パラメーター: nx
型: 文字ベクトル
既定: '1'

範囲を適用し、最適化するアクションの数を指定します。

プログラムでの使用

ブロック パラメーター: nu
型: 文字ベクトル
既定: '1'

適用するバリア証明書の制約の数を指定します。

プログラムでの使用

ブロック パラメーター: nc
型: 文字ベクトル
既定: '1'

バリア証明書の制約に制約係数 γ を指定します。

[バリア証明書の数] パラメーターが 1 の場合、[制約係数] を有限の正のスカラーとして指定します。そうでない場合、[制約係数] を有限の正のスカラー値または [バリア証明書の数] と等しい長さの正のスカラーの列ベクトルとして指定できます。

プログラムでの使用

ブロック パラメーター: gamma
型: 文字ベクトル
既定: '10'

バリア証明書の制約に制約指数 β を指定します。

[バリア証明書の数] パラメーターが 1 の場合、[制約指数] を正の奇数の整数として指定します。そうでない場合、[制約指数] を正の奇数の整数または [バリア証明書の数] と等しい長さをもつ正の奇数の整数の列ベクトルとして指定できます。

プログラムでの使用

ブロック パラメーター: beta
型: 文字ベクトル
既定: '1'

このパラメーターを選択して、アクションの外部上限の umax 入力端子を追加します。

プログラムでの使用

ブロック パラメーター: external_umax
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

このパラメーターを選択して、アクションの外部下限の umin 入力端子を追加します。

プログラムでの使用

ブロック パラメーター: external_umin
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'
[ブロック] タブ

最適化を実行するサンプル時間を指定します。

プログラムでの使用

ブロック パラメーター: Ts
型: 文字ベクトル
既定: '0.1'

最適化を反復する最大回数を指定します。

プログラムでの使用

ブロック パラメーター: maxiter
型: 文字ベクトル
既定: '200'

制約違反の許容誤差の値を指定します。

プログラムでの使用

ブロック パラメーター: tol
型: 文字ベクトル
既定: '1e-6'

このパラメーターを選択して、QP ソルバーの最適化ステータスに対する [exitflag] 出力端子を追加します。

プログラムでの使用

ブロック パラメーター: exitflag
型: 文字ベクトル
値: 'off' | 'on'
既定: 'off'

拡張機能

バージョン履歴

R2022a で導入

すべて展開する