歡迎來到關鍵路徑分析(Critical Path Analysis)的世界!
你有沒有想過,建造摩天大樓、發佈新款智能手機,甚至是籌辦一個音樂節這些龐大的工程,是如何準時完成的呢?它們背後運用了一種稱為關鍵路徑分析 (CPA) 的技巧。在決策數學 (Decision Mathematics 1) 的這一章中,你將學會如何將一個大項目拆解成較小的工序,找出哪些工序最緊急,並計算完成整個項目所需的最短時間。
如果剛開始接觸時覺得數據繁雜,不必擔心——這本質上只是一份「待辦事項清單」轉化成的邏輯地圖。讓我們開始吧!
1. 項目建模:活動網絡 (Activity Network)
在進行任何計算之前,我們需要將項目可視化。我們使用活動網絡。在本課程中,我們採用活動在弧上 (Activity on Arc, AOA) 的方法。
關鍵術語
- 活動 (Activity):需要時間和資源的任務(以弧/箭咀表示)。
- 事件 (Event):活動的開始或完成點(以節點/圓圈表示)。
- 優先順序表 (Precedence Table):一份清單,列出每個活動以及在其開始前必須完成的任務(即其緊前活動/先行任務)。
虛擬活動 (Dummies) 的規則
有時候,我們需要繪製一條虛線箭咀,稱為虛擬活動 (dummy)。虛擬活動的持續時間為零。我們使用它主要基於兩個原因:
- 顯示依賴關係:如果活動 C 同時依賴於 A 和 B,但活動 D 只依賴於 B,我們就使用虛擬活動將 B 連接到 C,而不會將 A 連接到 D。
- 唯一性:每個活動必須由其起始節點和結束節點唯一標識。如果兩個活動在相同的事件開始和結束,我們就使用虛擬活動為它們提供獨立的路徑。
類比:想想穿衣的過程。你必須先穿襪子才能穿鞋。「穿襪子」是一個活動,「穿鞋」是另一個活動,而你完成穿襪子的那一刻就是一個「事件」。
重點小結:活動網絡是項目的地圖,箭咀代表任務,圓圈代表里程碑。虛擬活動只是保持邏輯清晰的「隱形」連接器。
2. 前向遞推與後向遞推 (Forward and Backward Pass)
當網絡繪製完成後,你需要找出每個節點的最早事件時間 (EET) 和最晚事件時間 (LET)。我們通常會在每個節點旁畫一個分成兩半的小方格來記錄這些數據。
前向遞推 (計算 EET)
我們從起點(節點 0)開始,時間為 0。我們由左至右穿過網絡。
- 對於每個節點,檢查所有指向它的活動。
- 規則:EET = \( \text{max}(\text{前一個節點的 EET} + \text{活動的持續時間}) \)。
- 為什麼要取最大值? 因為只有在所有相關任務中最慢的一個完成後,該里程碑才算達成。
後向遞推 (計算 LET)
我們從最後一個節點(EET 與 LET 相同)開始,由右至左進行。
- 對於每個節點,檢查所有從該節點出發的活動。
- 規則:LET = \( \text{min}(\text{下一個節點的 LET} - \text{活動的持續時間}) \)。
- 為什麼要取最小值? 為了確保從此節點出發的所有活動都能按時完成。
常見錯誤:學生經常在前向遞推時取最小值,或在後向遞推時取最大值。請緊記:前向 = Max (最大),後向 = Min (最小)。
重點小結:前向遞推告訴你各項任務最早何時開始;後向遞推則告訴你若不延誤整個項目,各項任務最遲何時必須完成。
3. 確定關鍵路徑 (Critical Path)
關鍵路徑是決定項目總工期的活動序列。如果路徑上的任何活動延誤哪怕一秒鐘,整個項目都會延誤。
如何找出它:
- 尋找關鍵活動。若一項活動(從節點 \( i \) 到節點 \( j \))滿足以下條件,即為關鍵活動:
- 節點 \( i \) 的 EET 等於其 LET。
- 節點 \( j \) 的 EET 等於其 LET。
- \( \text{節點 } j \text{ 的 LET} - \text{節點 } i \text{ 的 EET} = \text{活動的持續時間} \)。
- 關鍵路徑是由這些活動組成的、從起點到終點的連續路徑。
你知道嗎?一個項目可以有多於一條關鍵路徑!如果兩條不同的路徑所需的總時間相同且為最長,那麼它們都是關鍵路徑。
重點小結:關鍵路徑是「零浮動」地帶,它是網絡中最長的路徑。
4. 總浮動時間 (Total Float)
對於不在關鍵路徑上的活動,通常會有一定的「寬裕度」,這稱為總浮動時間。
公式
對於起始節點為 \( i \)、結束節點為 \( j \) 的活動:
\( \text{總浮動時間} = \text{節點 } j \text{ 的 LET} - \text{節點 } i \text{ 的 EET} - \text{活動的持續時間} \)
將總浮動時間想像成你的「緩衝時間」。它是指在不拖慢整個項目的情況下,你可以延誤該任務的時間長度。
關鍵點:關鍵活動的總浮動時間永遠為零。
5. 甘特圖 (Gantt Charts / Cascade Charts)
甘特圖是一種將項目進度與時間線對照的可視化方法。
- 每個活動以一個橫條表示。
- 橫條的長度等於其持續時間。
- 關鍵活動通常列在最上方,並繪製為實心塊。
- 非關鍵活動展示其持續時間,後面跟著虛線,代表其總浮動時間。
小貼士:在繪製初始圖表時,始終將每個活動安排在其最早開始時間(即其起始節點的 EET)。
重點小結:甘特圖讓你一眼就能看出任務的進行時間,以及哪些任務有「靈活調度」的空間。
6. 資源平衡與下界 (Resource Levelling and Lower Bounds)
在現實世界中,人力並非無限。你需要計算完成項目所需的最低工人數。
計算下界
要計算在關鍵時間內完成項目所需的最低人數,請使用以下公式:
\( \text{下界} = \lceil \frac{\text{所有活動的持續時間之和}}{\text{項目的關鍵時間}} \rceil \)
重要提示:符號 \( \lceil \dots \rceil \) 表示你必須向上取整到最接近的整數,因為你不可能僱傭半個工人!
重點小結:下界給出了員工配置的絕對「最佳情況」。現實中,如果許多任務同時進行,你可能需要更多人手。
摘要清單
考試前,請確保你能做到:
- 從優先順序表繪製活動網絡(並正確使用虛擬活動!)。
- 進行前向與後向遞推,以找出 EET 和 LET。
- 識別關鍵路徑和關鍵活動。
- 計算任何活動的總浮動時間。
- 構建甘特圖。
- 計算所需工人的下界。
你一定沒問題的!只要按部就班,逐個節點處理即可。