合同会社小村ソフト
第 7 章

理解度チェック — 総合演習と全問レビュー

通し例題とは係数が違う別ケースで、交点計算 → 頂点採点 → 多重最適解 の手順を総復習する。

総合演習で新しい例題を解く

最後は、通し例題とは係数が違う別ケースで一連の流れをやり直します。ここで解ければ、単なる暗記ではなく手順そのものが理解できているはずです。

項目内容
目的関数maximize z = 7x + 4y
制約 1x + y ≤ 8
制約 22x + y ≤ 10
非負条件x ≥ 0, y ≥ 0

総合演習 1 — 新しい LP を通しで解く

maximize z = 7x + 4yx + y ≤ 82x + y ≤ 10x ≥ 0, y ≥ 0 という LP を考えます。交点 → 目的値 → 最適点の順に追います。

Q1. 境界線 x + y = 82x + y = 10 の交点の x を入力してください。

Q2. 同じ交点の y を入力してください。

Q3. 交点 (2, 6) の目的値 z = 7x + 4y はいくつですか。

Q4. 頂点 (5, 0) の目的値はいくつですか。

総合演習 2 — 最適点と多重最適解

最適点を決めたあと、目的関数だけを変えて多重最適解を確認します。

Q1. 標準の z = 7x + 4y で最適になる頂点の x を入力してください。

Q2. 同じく最適点の y を入力してください。

Q3. 目的関数を z = 10x + 5y に変えたときの最適解の種類はどれですか。

Q4. 同じ z = 10x + 5y での最適値を入力してください。

この講座の着地点

  • 文章から変数・目的関数・制約を切り出せる。
  • 切片・交点・目的値を自分で計算し、可行領域と最適点を説明できる。
  • 2 変数の最小ソルバが何をしているかをコードで追える。

次に学ぶべきこと

本講座は 2 変数に絞って「図 → 手計算 → コード」を一通り体験するための入門です。実務やより高度な学習へ進む際の地図として、次のステップを挙げておきます。

テーマ本講座との関係
単体法(シンプレックス法)3 変数以上では、本講座の「頂点を全部列挙する」方針は組合せ爆発で破綻します。単体法は可行領域の頂点を 1 つずつ賢く渡り歩いて最適解にたどり着くアルゴリズムで、現代の汎用 LP ソルバの基礎です。
双対性(duality)「制約 1 単位を緩めると目的値はいくら改善するか」という影の価格(shadow price)の概念。本講座で残量や効いている制約を見たときに感じた直観の、数学的な裏付けです。
整数計画法(IP / MIP)「ロット数は整数しか取れない」など、変数を整数に限定する拡張。LP の連続最適解とは答えが変わり、解くのに格段に手間がかかります。
非線形計画法xy など二次以上の項が入る最適化。スケールメリットや混雑コストを表現したいときに必要になります。
実用ソルバPython では scipy.optimize.linprogPuLPcvxpy、商用では Gurobi や CPLEX。本講座のミニソルバの代わりに、これらに変数・目的関数・制約を渡せば数千変数まで現実的な時間で解けます。

2 変数の手触りが残っているうちに次のステップへ進むと、抽象的なアルゴリズムも「図のあれをやっている」と読み解きやすくなります。