Main Content

線形制約

線形制約とは

いくつかの最適化ソルバーは線形制約、つまり解 x に対する制約を受け入れて、線形等式または線形不等式を満たします。線形制約を受け入れるソルバーには、fminconintlinproglinproglsqlinquadprog、多目的ソルバー、一部の Global Optimization Toolbox ソルバーが含まれます。

線形不等式制約

線形不等式制約は A·x ≤ b の形式になります。A が m 行 n 列の場合、n 個の要素をもつ変数 x に対し m 個の制約条件があります。m 行 n 列の行列 A と m 要素のベクトル b を入力します。

引数 A および b での線形不等式制約を渡します。

たとえば、以下の線形不等式を制約として考えてみましょう。

x1 + x3 ≤ 4,
2x2 – x3 ≥ –2,
x1 – x2 + x3 – x4 ≥ 9.

ここで、m = 3n = 4 です。

以下の行列 A とベクトル b を使用して、これらの制約を記述します。

A=[101002101111],b=[429].

"大なり" の不等式は -1 を乗算して "小なり" の不等式の形式に変換されていることに注意してください。MATLAB® 構文では次のようになります。

A = [1 0 1 0;
    0 -2 1 0;
    -1 1 -1 1];
b = [4;2;-9];

線形制約に勾配を与える必要はありません。ソルバーが自動的に勾配を計算します。線形制約はヘッシアンに影響を与えません。

初期点 x0 を行列として渡す場合でも、ソルバーは現在の点 x を列ベクトルとして線形制約に渡します。詳細については、行列引数を参照してください。

より複雑な線形制約の例については、線形計画法の設定、ソルバーベースを参照してください。

中間の反復は線形制約に違反する可能性があります。詳細については、反復は制約に違反する可能性ありを参照してください。

線形等式制約

線形等式は Aeq·x = beq の形式をもちます。これは n 要素のベクトル x をもつ m 個の等式を表します。m 行 n 列の行列 Aeq と m 要素のベクトル beq を入力します。

線形不等式制約で説明した引数 A および b の場合と同じように、引数 Aeq および beq での線形等式制約を渡します。

関連するトピック