Main Content

範囲制約

上限と下限は、解 x の成分を制限します。

最適解の位置の範囲を知っている場合は、これらの範囲を明示的に問題の式に含めることで、より速く信頼できる解を得ることができます。

範囲は x と同じ長さのベクトルとして、または x と同じ要素数の行列として指定します。

  • 特定成分に下限がない場合は、範囲として –Inf を使用します。同様に、上限がない場合は Inf を使用します。

  • 片側の範囲 (上限または下限) しかない場合は、他方を記述する必要はありません。たとえば上限がない場合は、Inf のベクトルを指定する必要はありません。

  • n 個の成分のうち最初の m 個のみが範囲をもつ場合は、範囲を含む長さ m のベクトルを指定するだけで済みます。ただし、このショートカットではソルバーで警告が発行されます。

たとえば、次のような範囲があるとします。

x3 ≥ 8,
x2 ≤ 3.

制約ベクトルを次のように記述します。

l = [–Inf; –Inf; 8]
u = [Inf; 3] (警告を発行) または u = [Inf; 3; Inf]

ヒント

メモリの使用量を減らしソルバーを高速化するには、広い範囲の代わりに、Inf または –Inf を使用します。詳細については、任意の大きな境界値の代わりに Inf を使用を参照してください。

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

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

関連するトピック