導入 — なぜ最適化が必要か
利益だけを見ていては計画は決まらない。利益と工程時間の計算を往復し、意思決定変数・目的関数・制約の 3 つに分ける感覚をつくる。
線形計画法は、何を選ぶか・何を良くしたいか・何が上限かを分けて考える道具です。
「儲かる方を全部作る」では終わらない
製品 A は 1 ロットで 3 万円、製品 B は 1 ロットで 5 万円の利益が出るとします。利益だけを見ると B を増やしたくなりますが、現実には工程時間の上限があります。
| 項目 | A | B |
|---|---|---|
| 利益 | 3 万円 / ロット | 5 万円 / ロット |
| 切断工程 | 2 時間 | 1 時間 |
| 仕上工程 | 1 時間 | 2 時間 |
ここで大事なのは、利益の高低だけではなく、各工程の消費量まで同時に見る必要がある ことです。
「計画法」はコンピュータプログラミングではない
線形計画法(Linear Programming)の「計画法(Programming)」は、コンピュータでコードを書く意味の「プログラミング」ではありません。計画を立てること(planning)を意味する、第二次世界大戦期の数理計画分野の用語です。
つまり線形計画法とは、「線形な式で表された計画問題を解く方法」のことです。本講座でも Python による実装は第 6 章に登場しますが、それは線形計画法の本質ではなく、計算を補助する道具にすぎません。
理解チェック 1 — 目的関数と制約を数で確かめる
利益式と制約式は、どちらも「数字を入れれば値が出る式」です。
Q1. 計画 (x, y) = (2, 3) のとき、利益 z = 3x + 5y を求めてください。
3×2 + 5×3 = 6 + 15 = 21。まずは目的関数が「利益の合計」を表すことを、数字で確かめます。
Q2. 製品 B だけを 8 ロット作るとします。仕上工程の使用時間 x + 2y は、上限 14 時間を何時間超えるでしょうか。
B だけ 8 ロットなら x=0, y=8、仕上工程は 0 + 2×8 = 16 時間使うので、16 − 14 = 2 時間オーバーです。
最適化問題は 3 つに分ける
どんな LP でも、最初に分けるべき要素は 3 つだけです。
| 観点 | この例での意味 |
|---|---|
| 意思決定変数 | x = A を何ロット作るか、y = B を何ロット作るか |
| 目的関数 | 3x + 5y を最大化したい |
| 制約 | 2x + y ≤ 16、x + 2y ≤ 14、x ≥ 0、y ≥ 0 |
式が増えても、この 3 つに分けて読めれば混乱しにくくなります。
なぜ「線形」なのか
線形とは、係数が固定で、量を 2 倍にすると利益や使用資源も 2 倍になる関係です。
3x + 5yは線形2x + y ≤ 16も線形x²やxyが入ると非線形
理解チェック 2 — 制約の左辺と線形の感覚
制約の左辺は「その計画が実際に使う量」、目的関数の係数は「1 ロット増やしたときの効果」です。
Q1. 計画 (x, y) = (3, 4) のとき、切断工程の使用時間 2x + y は何時間でしょうか。
2×3 + 4 = 10。制約式の左辺は「その計画が実際に消費する資源量」だと読むのがコツです。
Q2. 利益式が 3x + 5y のとき、y を固定したまま x を 2 ロット増やすと、利益は何万円増えるでしょうか。
x の係数は 3 なので、1 ロット増えるごとに 3 万円ずつ増えます。2 ロットなら 3×2 = 6 万円です。
第 1 章のまとめ
- 最適化問題は、意思決定変数・目的関数・制約の 3 つに分ける。
- 制約式の左辺は、その計画が消費する資源量そのもの。
- 線形とは、増やした量に比例して利益や消費量も増えること。