Constraint Enforcement

ライブラリ:
Simulink Control Design /
Constraint Control
説明
Constraint Enforcement ブロックは、制約とアクション範囲に従って、指定された制御動作の最も近くにある変更された制御動作を計算します。
このブロックは、二次計画法 (QP) ソルバーを使用して、関数 を最小化する制御動作 u を検出します。ここで、u0 は変更されていない制御動作です。
ソルバーは、以下の制約を最適化問題に適用します。
ここで、以下となります。
fx および gx は制約関数の係数。
c は制約関数の範囲。
umin は制御動作の下限。
umax は制御動作の上限。
Constraint Enforcement ブロックには、Optimization Toolbox™ ソフトウェアが必要です。
制約の適用の詳細については、制御設計への制約の適用を参照してください。
例
制約の適用を使用したアダプティブ クルーズ コントロール用の RL エージェントの学習
速度と車間距離についての制約を適用してアダプティブ クルーズ コントロール用の強化学習エージェントに学習させる。
端子
入力
変更されていない制御動作。スカラーまたはベクトルとして指定します。
[アクション数] パラメーターが 1 の場合、u0 をスカラー信号に接続します。そうでない場合、u0 を長さが [アクション数] に等しいベクトル信号に接続します。
以下の制約式におけるオフセット係数 fx。
[制約数] パラメーターが 1 の場合、fx をスカラー信号に接続します。そうでない場合、fx を長さが [制約数] に等しいベクトル信号に接続します。
以下の制約式における線形係数 gx。
gx を Nc 行 Nu 列の信号に接続します。ここで、Nc は [制約数] パラメーターに等しく、Nu は [アクション数] パラメーターに等しくなります。
以下の制約関数における実行時制約の範囲 c。
[制約数] パラメーターが 1 の場合、c をスカラー信号に接続します。そうでない場合、c を長さが [制約数] に等しいベクトル信号に接続します。
この端子が無効化されている場合、ブロックは、[制約範囲] パラメーターを使用して指定される定数制約範囲を使用します。
依存関係
この入力端子を有効にするには、[外部ソースの使用] パラメーターを選択します。
アクション信号の実行時の上限を指定するには、この入力端子を有効にします。この端子が無効化されている場合、ブロックは制御動作に上限を適用しません。
[アクション数] パラメーターが 1 の場合、umax をスカラー信号に接続します。そうでない場合、umax を長さが [アクション数] に等しいベクトル信号に接続します。
依存関係
この入力端子を有効にするには、[上限 (umax) に外部ソースを使用] パラメーターを選択します。
アクション信号の実行時の下限を指定するには、この入力端子を有効にします。この端子が無効化されている場合、ブロックは制御動作に下限を適用しません。
[アクション数] パラメーターが 1 の場合、umin をスカラー信号に接続します。そうでない場合、umin を長さが [アクション数] に等しいベクトル信号に接続します。
依存関係
この入力端子を有効にするには、[下限 (umin) に外部ソースを使用] パラメーターを選択します。
出力
QP ソルバーによって返される変更済み制御動作。
ソルバーが最大反復回数に達する前に解を見つけた場合、u* はこの最適解を出力します。
ソルバーが最大反復回数に達した場合、最適化は停止し、u* は準最適解を出力します。
最初の最適化問題が実行不可能な場合、返される制御動作は、ブロックが制約またはアクション範囲を無視するように設定されているかどうかにより異なります。詳細については、[exitflag] パラメーターを参照してください。
[アクション数] パラメーターが 1 の場合、u* はスカラー信号を出力します。そうでない場合、u* は、長さが [アクション数] に等しいベクトル信号を出力します。
QP ソルバーの最適化ステータス。次の表に取り得るステータス値を示します。
| 終了フラグ | 説明 |
|---|---|
1 | ソルバーは、すべての制約と範囲が有効な状態で最適解に収束しました。この場合、u* は最適な制御動作を出力します。 |
2 | 最初の最適化問題が実行不可能であり、ブロックはすべての制約および範囲を無視するように設定されています。この場合、u* は変更されていない制御動作 u0 を出力します。 |
3 | 最初の最適化問題が実行不可能でした。ブロックはアクション範囲を無視して最適化を再実行し、実行可能解を検出しました。ブロックはこの解を u* で出力します。 |
4 | 最初の最適化問題が実行不可能でした。ブロックは制約範囲を無視して最適化を再実行し、実行可能解を検出しました。ブロックはこの解を u* で出力します。 |
0 | ソルバーが最大反復回数に達しました。u* の制御動作の出力は、準最適の場合があります。 |
| 負の整数 | 最初の最適化問題が実行不可能であり、次のいずれかのシナリオが適用されます。
この場合、u* の制御動作の出力はゼロです。 |
依存関係
この出力端子を有効にするには、[最適化ステータス] パラメーターを選択します。
パラメーター
[パラメーター] タブ
適用する制約の数を指定します。
プログラムでの使用
ブロック パラメーター: nc |
| タイプ: 文字ベクトル |
既定: '1' |
範囲を適用し、最適化するアクションの数を指定します。
プログラムでの使用
ブロック パラメーター: nu |
| タイプ: 文字ベクトル |
既定: '1' |
制約の定数境界を指定します。[制約数] パラメーターが 1 の場合、[制約範囲] を有限のスカラーとして指定します。そうでない場合、[制約範囲] を [制約数] と等しい長さの有限値のベクトルとして指定します。
制約が実行時に変化する場合、[外部ソースの使用] パラメーターを選択し、実行時の制約信号を c 入力端子に接続します。
依存関係
このパラメーターを有効にするには、[外部ソースの使用] パラメーターをオフにします。
プログラムでの使用
ブロック パラメーター: c |
| タイプ: 文字ベクトル |
既定: '0' |
このパラメーターを選択して、外部制約範囲の c 入力端子を追加します。
プログラムでの使用
ブロック パラメーター: external_c |
| タイプ: 文字ベクトル |
値: 'off' | 'on' |
既定: 'off' |
このパラメーターを選択して、アクションの外部上限の 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' |
このパラメーターを選択すると、最初の QP 問題が実行不可能な場合、制約を無効化して最適化が再実行されます。
このパラメーターと [QP が実行不可能な場合はアクション範囲を無視] の両方を選択すると、最初の QP 問題が実行不可能な場合、変更されていないアクション信号が出力されます。
プログラムでの使用
ブロック パラメーター: relax_c |
| タイプ: 文字ベクトル |
値: 'off' | 'on' |
既定: 'off' |
このパラメーターを選択すると、最初の QP 問題が実行不可能な場合、アクション範囲を無効化して最適化が再実行されます。umax と umin の両方の入力端子が無効になっている場合、ブロックはこのパラメーターを無視します。
このパラメーターと [QP が実行不可能な場合は制約を無視] の両方を選択すると、最初の QP 問題が実行不可能な場合、変更されていないアクション信号が出力されます。
プログラムでの使用
ブロック パラメーター: relax_u |
| タイプ: 文字ベクトル |
値: 'off' | 'on' |
既定: 'off' |
拡張機能
Constraint Enforcement ブロックは、倍精度の信号のコード生成のみをサポートします。
バージョン履歴
R2021a で導入Constraint Enforcement ブロックは Simulink Control Design/Constraint Control サブライブラリに含まれるようになりました。
R2023b では、以前のリリースで保存されたモデルを開くと、Constraint Enforcement ブロックのライブラリ リンクが自動的に更新されます。
参考
トピック
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)



