Main Content

OptimizationConstraint

説明

OptimizationConstraint オブジェクトには、OptimizationVariable オブジェクトまたは OptimizationExpression オブジェクトに関する制約式が含まれます。各制約は、比較演算子 ==<=>= のいずれかを使用します。

1 つのステートメントによって 1 つの制約配列を表すことができます。たとえば、ループでの単純な制約の作成に示すように、行列変数 x の各行の和を 1 とする制約を表すことができます。

ヒント

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

作成

optimconstr を使用して、空の制約オブジェクトを作成します。通常は、ループを使用して、そのオブジェクトに式を入力します。

比較演算子 ==<=、または >= を使用して最適化変数から最適化式を作成する場合、得られるオブジェクトは OptimizationEqualityOptimizationInequality になります。詳細については、互換性の考慮事項を参照してください。

ドット表記を使用して、最適化問題の Constraints プロパティに制約を含めます。

prob = optimproblem;
x = optimvar('x',5,3);
rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == i;
end
prob.Constraints.rowsum = rowsum;

プロパティ

すべて展開する

インデックスの名前。string の cell 配列または文字ベクトルを指定します。インデックス名の使用法の詳細については、最適化変数の名前付きインデックスを参照してください。

データ型: cell

この プロパティ は読み取り専用です。

オブジェクトの最適化変数。OptimizationVariable オブジェクトの構造体として指定します。

データ型: struct

オブジェクト関数

infeasibility点における制約違反
show最適化オブジェクトの情報表示
write最適化オブジェクトの説明の保存

すべて折りたたむ

5 行 3 列の最適化変数 x を作成します。

x = optimvar('x',5,3);

ループを使用して、各行の和を 1 とする制約を作成します。optimconstr を使用してループを初期化します。

rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == 1;
end

rowsum オブジェクトを検査します。

rowsum
rowsum = 
  5x1 Linear OptimizationConstraint array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 1 OptimizationVariable

  See constraint formulation with show.

rowsum にある制約を表示します。

show(rowsum)
(1, 1)

  x(1, 1) + x(1, 2) + x(1, 3) == 1

(2, 1)

  x(2, 1) + x(2, 2) + x(2, 3) == 1

(3, 1)

  x(3, 1) + x(3, 2) + x(3, 3) == 1

(4, 1)

  x(4, 1) + x(4, 2) + x(4, 3) == 1

(5, 1)

  x(5, 1) + x(5, 2) + x(5, 3) == 1

バージョン履歴

R2017b で導入

すべて展開する