【せんけいけいかくほう】

線形計画法 とは?

最終更新:
💡 線形の条件のもとで、目的値を最適化する

連続値の変数を使い、線形の目的関数を線形制約のもとで最大化・最小化する数理最適化。制約を満たす解がない場合や、目的値に有限の限界がない場合もあります。

📌 このページのポイント
線形計画法:制約の中で最適化最大化:3x+2yx+y≤4、x≤2、x≥0、y≥0011223344xyx≤2x+y≤4実行可能領域最適解(2,2)目的値 103x+2y=2(x+y)+x≤10(2,2)で10に達する → この例の最大値通常の線形計画では、変数は連続値
説明用のモデルです。緑の領域が全制約を満たし、赤点で最大値10を達成します。線は座標軸・制約の境界・注記で、探索手順ではありません。解がない問題や、有限の最適値がない問題もあります。
ひよこ ひよこ
どんな数式になるの?
ペンギン先生 ペンギン先生
例として3x+2yを最大にし、x+y≤4、x≤2、x≥0、y≥0という条件を付ける。これは説明用のモデルだよ。実際には資源や費用の関係が線形で表せるかを確認して、変数と式を決めるんだ。
ひよこ ひよこ
その例の答えは?
ペンギン先生 ペンギン先生
x=2、y=2で目的値は10だよ。3x+2y=2(x+y)+x≤2×4+2=10だから、これより大きくできない。図でも制約を満たす領域と、この点を同じ数式で表しているよ。
ひよこ ひよこ
線形なら必ず最適解がある?
ペンギン先生 ペンギン先生
例えばx≥2とx≤1を同時に課せば解がない。x≥0だけでxを最大化すれば、いくらでも増やせて有限の最大値がない。最適解が複数になる問題もあるので、必ず一つの答えを返すとは限らないんだ。
ひよこ ひよこ
人の人数も小数で求めていい?
ペンギン先生 ペンギン先生
人数など整数でないと困る変数は、整数条件を入れる必要があるよ。式が線形でも整数計画や混合整数計画になり、連続値の線形計画とは解き方や難しさが変わる。単に非線形問題と呼ぶわけではないんだ。
ひよこ ひよこ
ソフトで計算した数字はそのまま使える?
ペンギン先生 ペンギン先生
OR-Toolsなどでは変数・制約・目的関数を定義して解くけど、終了状態の確認が必要だよ。浮動小数点の許容誤差や係数の桁の違いも影響する。答えが制約を満たすか、目的値や単位が正しいかを確認しよう。
もっと詳しく知りたい人へ

最適解は必ず図の角にある?

図の例は角の一つが最適ですが、辺の上の複数の点が同じ最適値になる場合もあります。OR-Toolsの説明では、シンプレックス法は頂点の解を返す一方、内点法などは必ず頂点を返すとは限りません。「全アルゴリズムが角だけを調べる」とは考えないでください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「線形計画法」って出てきたら「線形の目的関数と制約を使う最適化」と思えばだいたいOK!
📖 おまけ:英語の意味
「Linear Programming」 = 線形計画法
💬 ここでのProgrammingは最適化する計画を表します。コードを書く行為の名称ではありませんが、実際の計算にはソフトウェアのソルバーを利用できます。

参考資料

← 用語集にもどる