歡迎來到線性規劃:制定最佳決策!
你好!線性規劃 (Linear Programming, LP) 是決策數學中最實用且令人興奮的領域之一。它的核心在於:在給定一系列限制(約束條件)的情況下,找出最佳的結果——通常是實現利潤最大化或成本最小化。
在本章中,我們將學習如何將現實生活中的問題轉化為數學模型,並透過圖解法將其解決。如果「規劃」(Programming) 這個詞聽起來讓你感到畏懼,請別擔心;在這裡,它僅指規劃或排程。我們本質上是在使用幾何學來解決優化問題!
章節背景:本課題是 單元 D1:決策數學 1 (Decision Mathematics 1) 的核心部分。
1. 線性規劃的基礎
什麼是優化 (Optimization)?
在 D1 中,優化是指找出某事物的最大值或最小值。當所有相關關係均為線性(直線)時,線性規劃提供了一種系統化的方法來達成此目標。
線性規劃問題的三大基本要素
每一個線性規劃問題都必須包含以下三項:
- 決策變數 (Decision Variables): 這是我們試圖確定的數量。通常以 \(x\) 和 \(y\) 表示。
例子:工廠應生產的 A 類椅子數量 (\(x\)) 和 B 類桌子數量 (\(y\))。 - 目標函數 (Objective Function): 這是我們想要最大化(如利潤、收入)或最小化(如成本、時間)的公式。它必須是一個關於決策變數的線性方程式。
- 約束條件 (Constraints): 這是對可用資源的限制。它們以線性不等式表示。
例子:組裝的總可用時間不得超過 100 小時:\(2x + 5y \le 100\)。
快速回顧:線性規劃類比
想像你在經營一家烘焙坊:
- 目標函數: 從銷售蛋糕和餅乾中獲得最大的總利潤。
- 約束條件: 你擁有的麵粉、糖和烤箱時間是有限的。
- 變數: 你烘焙的蛋糕數量 (\(x\)) 和餅乾數量 (\(y\))。
2. 建立線性規劃模型
解決任何線性規劃問題的第一步,就是將文字敘述翻譯成數學語言。這通常是最具挑戰性的部分,請務必謹慎遵循以下步驟。
分步建立指南
1. 定義決策變數
清楚說明 \(x\) 和 \(y\) 代表什麼。請務必具體,必要時包含單位。
例子:設 \(x\) 為生產大袋裝的數量,\(y\) 為生產小袋裝的數量。
2. 列出目標函數
確定目標是最大化 (Max) 還是最小化 (Min)。寫下要優化的數量的公式,通常以 \(P\)(利潤,Profit)或 \(C\)(成本,Cost)表示。
例子:如果每袋大袋裝 (\(x\)) 利潤為 $5,每袋小袋裝 (\(y\)) 利潤為 $3,則目標函數為:
$$\text{Maximize } P = 5x + 3y$$
3. 建立約束條件(不等式)
找出問題強加的每一項限制(時間、材料、產能等)。
-
不等式方向檢查:
- 「不得超過」、「最多」、「最大」、「限於」均表示 \(\le\)(小於或等於)。
- 「至少」、「必須大於」、「最低」均表示 \(\ge\)(大於或等於)。
- 若某項必須等於特定值,則使用 \(=\)(儘管這在 D1 圖解題中較罕見)。
-
非負約束 (Non-Negativity Constraints): 由於你不可能生產負數的產品,務必加入:
$$\mathbf{x \ge 0 \quad \text{且} \quad y \ge 0}$$
(這些約束至關重要,它們定義了圖表的第一象限。)
建模重點總結
深呼吸並進行翻譯: 仔細閱讀問題,設定變數,寫下目標(目標函數),並列出限制(約束條件)。只要模型建立得正確,圖解部分就簡單多了!
3. 圖解法:尋找可行區域 (Feasible Region)
模型建立後,必須使用圖表來求解。由於我們處理的是兩個變數 (\(x\) 和 \(y\)),我們可以使用二維坐標平面。
步驟 1:繪製約束直線
要繪製不等式(例如 \(2x + y \le 10\)),我們首先將其視為方程式以畫出邊界線:
$$\mathbf{2x + y = 10}$$
- 找出截距:
- 令 \(x=0\) 找出 y 截距。 (此處:\(y=10\)。點為 \((0, 10)\))
- 令 \(y=0\) 找出 x 截距。 (此處:\(2x=10\),故 \(x=5\)。點為 \((5, 0)\))
- 連接這些截距畫出一條直線。
步驟 2:識別可行區域 (R)
可行區域 (R) 是圖表中所有約束條件同時滿足的區域。我們需要判斷直線的哪一側代表該不等式。
測試點法 (Test Point Method):
- 選擇一個測試點,通常使用原點 \((0, 0)\),除非直線經過原點。
- 將 \((0, 0)\) 代入原不等式中。
- 如果不等式成立(例如 \(0 \le 10\)),則可行區域位於包含 \((0, 0)\) 的那一側。
- 如果不等式不成立(例如 \(0 \ge 10\) 為假),則可行區域位於另一側。
陰影慣例: 在決策數學中,標準做法是將「不需要的區域」(不可行區域)塗上陰影。這樣會使可行區域 (R) 保持清晰且無陰影,通常是一個由相交直線定義的多邊形。
記得包含約束條件 \(x \ge 0\)(遮蓋 y 軸左側)和 \(y \ge 0\)(遮蓋 x 軸下方)。
可行區域重點總結
可行區域 (R) 是圖表中唯一存在有效解的區域。R 的邊界即為約束直線。
4. 尋找最佳解
線性規劃的基本定理指出,最佳解(最大值或最小值)總是出現在可行區域 R 的其中一個頂點 (vertices)(角落點)上。
我們有兩種主要方法來找到這個最佳值:
方法 A:目標線法(搜尋線法)
此方法涉及繪製目標函數,並將其在可行區域內移動。
步驟 1:確定目標函數的斜率
設目標函數為 \(P = ax + by\)。為了將其畫成直線,我們將 \(P\) 設為一個方便的常數 \(k\):
$$ax + by = k$$
將其重排為 \(y = mx + c\) 的形式以求出斜率 (\(m\))。
$$by = -ax + k \quad \implies \quad y = -\frac{a}{b}x + \frac{k}{b}$$
目標線的斜率為 \(m = -\frac{a}{b}\)。
步驟 2:繪製目標線
為 \(k\) 選擇一個能讓截距易於繪製的值(例如,如果 \(P = 3x + 2y\),選擇 \(k=6\),得出 \(3x + 2y = 6\))。畫出這條線。這就是你的搜尋線 (Search Line)。
步驟 3:滑動直線
- 使用一把與搜尋線平行的尺。
- 如果你在進行最大化,滑動尺使其盡可能遠離原點,同時仍與可行區域 R 接觸。
- 如果你在進行最小化,滑動尺使其盡可能靠近原點,同時仍與可行區域 R 接觸。
步驟 4:識別最佳頂點
尺最後接觸到的點(單一個頂點或整條邊)即為最佳值。
💭 記憶小撇步: 當進行最大化時,你希望 \(P\) 的值盡可能大,因此你要最大化與原點(\(P=0\) 處)的距離。
方法 B:頂點測試法(角點法)
此方法簡單明瞭,但需要代數準確性來求出每個頂點的確切坐標。
步驟 1:列出所有頂點 (角點)
列出可行區域 R 的每一個角點坐標。使用聯立方程式求出由兩條約束直線交點所形成的確切頂點坐標。
例子:如果頂點 V 由 \(x + 2y = 10\) 和 \(x + y = 7\) 形成,則聯立解出 \((4, 3)\)。
步驟 2:代入目標函數
將每個頂點的坐標代入目標函數 (\(P\) 或 \(C\)) 進行測試。
例子:如果 \(P = 5x + 3y\):
- 頂點 A \((0, 0)\):\(P = 5(0) + 3(0) = 0\)
- 頂點 B \((5, 0)\):\(P = 5(5) + 3(0) = 25\)
- 頂點 C \((4, 3)\):\(P = 5(4) + 3(3) = 29\)
步驟 3:陳述最佳解
找出產生所需最大值或最小值的頂點。
例子:若要最大化,最佳值為 29,出現在 \((4, 3)\) 處。
想像可行區域是一張平坦的桌子,而目標函數是一個斜坡。在那張桌子上,最高點(最大值)或最低點(最小值)總是在邊緣或角落,永遠不會在中間!
5. 進階解釋與特殊情況
情況 1:非整數解與整數解
通常,變數 \(x\) 和 \(y\) 必須代表離散項目(如汽車、人數或包裝數量),因此必須為整數。
如果你的數學最佳解(透過方法 A 或 B 找到)是非整數——例如在 \((4.2, 3.8)\) 處取得最大利潤——你必須檢查可行區域 R 內或邊界上的相鄰整數點。
如何尋找整數最佳解:
- 找出最佳的非整數頂點 \(V\)。
- 觀察最接近 \(V\) 且仍在 R 內或邊界上的周圍整數坐標。
- 將這些附近的整數點代入目標函數中進行測試。
- 產生最佳結果的點即為整數最佳解。
重要提示: 當從非整數最佳解移動到整數點時,確保你移動的方向是使目標函數減少最少(如果最大化)或增加最少(如果最小化)的方向。
情況 2:多個最佳解
如果目標函數的斜率與其中一條約束邊界的斜率完全相同,那麼最佳解不會出現在單一點上,而是沿著整條邊緣線段分佈。
在這種情況下,連接頂點 A 和頂點 B 的邊界線段上的任何一點都會產生相同的最佳值。
在考試中回答此問題: 陳述最大/最小值,並說明它發生在連接頂點 A 到頂點 B 的線段上的所有點(包含端點)。
解釋與最終答案
最後一步永遠是將你的數學答案放回原始問題的情境中。
如果你的解是 \(x=10, y=5\) 且最大利潤為 $120:
最終答案: 該公司應生產 10 個單位 X 和 5 個單位 Y,以實現 $120 的最大利潤。
✅ D1 線性規劃檢查清單
- ✓ 定義變數 (\(x, y\))。
- ✓ 列出目標函數 (Max/Min)。
- ✓ 寫下所有約束條件,包括 \(x \ge 0, y \ge 0\)。
- ✓ 準確繪製所有邊界線。
- ✓ 識別並清楚標示可行區域 (R)。
- ✓ 使用目標線法 或 頂點測試法 找到最佳解。
- ✓ 必要時檢查整數要求。
- ✓ 在問題情境中清楚解釋解法。