Main Content

infeasibility

点における制約違反

説明

infeasibility を使用して、ある点における制約違反の数値を求めます。

ヒント

完全なワークフローについては、問題ベースの最適化ワークフローまたは方程式を解くための問題ベースのワークフローを参照してください。

infeas = infeasibility(constr,pt) は、点 pt における制約 constr の違反の数を返します。

すべて折りたたむ

点が制約を満たしているかどうかを確認します。

最適化変数と 2 つの制約を設定します。

x = optimvar('x');
y = optimvar('y');
cons = x + y <= 2;
cons2 = x + y/4 <= 1;

x = 0, y = 4cons という名前の制約を満たしているかどうかを確認します。実行不可能性がゼロの場合に、点は実行可能です。

pt.x = 0;
pt.y = 4;
infeas = infeasibility(cons,pt)
infeas = 2

点は、この制約に関して実行不可能です。

その他の制約に関する実行可能性を確認します。

infeas = infeasibility(cons2,pt)
infeas = 0

点は、この制約に関して実行可能です。

点が複数の条件をもつ制約を満たしているかどうかを確認します。

最適化変数と制約のベクトルを設定します。

x = optimvar('x',3,2);
cons = sum(x,2) <= [1;3;2];

pt.x = [1,-1;2,3;3,-1] がこれらの制約を満たしているかどうかを確認します。

pt.x = [1,-1;2,3;3,-1];
infeas = infeasibility(cons,pt)
infeas = 3×1

     0
     2
     0

点は、2 番目の制約に関して実行不可能です。

入力引数

すべて折りたたむ

最適化制約。OptimizationEquality オブジェクト、OptimizationInequality オブジェクト、または OptimizationConstraint オブジェクトとして指定します。constr は単一の制約または制約の配列を表すことができます。

例: constr = x + y <= 1 は、xy がスカラー変数の場合は単一の制約です。

例: constr = sum(x) == 1 は、x が 2 次元以上の配列の場合は制約の配列です。

評価する点。制約の最適化変数に対して、最適化変数名に一致するフィールド名をもつ構造体として指定します。pt 内の各フィールドのサイズは、対応する最適化変数のサイズと一致していなければなりません。

例: pt.x = 5*eye(3)

データ型: struct

出力引数

すべて折りたたむ

制約の実行不可能性。実数配列として返されます。ゼロである各エントリは実行可能な制約を表し、正の各エントリは実行不可能な制約を表します。infeas のサイズは、制約 constr のサイズと同じです。非スカラー infeas の例については、複数の制約違反の計算を参照してください。

警告

問題ベースのアプローチでは、目的関数、非線形等式、および非線形不等式における複素数値はサポートされていません。関数の計算に複素数値が含まれていると、それが中間値としてであっても、最終結果が不正確になる場合があります。

バージョン履歴

R2017b で導入