歡迎來到關鍵路徑分析(Critical Path Analysis)的世界!

你有沒有想過,建造摩天大樓、發佈新款智能手機,甚至是籌辦一個音樂節這些龐大的工程,是如何準時完成的呢?它們背後運用了一種稱為關鍵路徑分析 (CPA) 的技巧。在決策數學 (Decision Mathematics 1) 的這一章中,你將學會如何將一個大項目拆解成較小的工序,找出哪些工序最緊急,並計算完成整個項目所需的最短時間。

如果剛開始接觸時覺得數據繁雜,不必擔心——這本質上只是一份「待辦事項清單」轉化成的邏輯地圖。讓我們開始吧!

1. 項目建模:活動網絡 (Activity Network)

在進行任何計算之前,我們需要將項目可視化。我們使用活動網絡。在本課程中,我們採用活動在弧上 (Activity on Arc, AOA) 的方法。

關鍵術語

  • 活動 (Activity):需要時間和資源的任務(以/箭咀表示)。
  • 事件 (Event):活動的開始或完成點(以節點/圓圈表示)。
  • 優先順序表 (Precedence Table):一份清單,列出每個活動以及在其開始前必須完成的任務(即其緊前活動/先行任務)。

虛擬活動 (Dummies) 的規則

有時候,我們需要繪製一條虛線箭咀,稱為虛擬活動 (dummy)。虛擬活動的持續時間為零。我們使用它主要基於兩個原因:

  1. 顯示依賴關係:如果活動 C 同時依賴於 A 和 B,但活動 D 只依賴於 B,我們就使用虛擬活動將 B 連接到 C,而不會將 A 連接到 D。
  2. 唯一性:每個活動必須由其起始節點和結束節點唯一標識。如果兩個活動在相同的事件開始和結束,我們就使用虛擬活動為它們提供獨立的路徑。

類比:想想穿衣的過程。你必須先穿襪子才能穿鞋。「穿襪子」是一個活動,「穿鞋」是另一個活動,而你完成穿襪子的那一刻就是一個「事件」。

重點小結:活動網絡是項目的地圖,箭咀代表任務,圓圈代表里程碑。虛擬活動只是保持邏輯清晰的「隱形」連接器。

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)

關鍵路徑是決定項目總工期的活動序列。如果路徑上的任何活動延誤哪怕一秒鐘,整個項目都會延誤。

如何找出它:

  1. 尋找關鍵活動。若一項活動(從節點 \( i \) 到節點 \( j \))滿足以下條件,即為關鍵活動:
    • 節點 \( i \) 的 EET 等於其 LET。
    • 節點 \( j \) 的 EET 等於其 LET。
    • \( \text{節點 } j \text{ 的 LET} - \text{節點 } i \text{ 的 EET} = \text{活動的持續時間} \)。
  2. 關鍵路徑是由這些活動組成的、從起點到終點的連續路徑。

你知道嗎?一個項目可以有多於一條關鍵路徑!如果兩條不同的路徑所需的總時間相同且為最長,那麼它們都是關鍵路徑。

重點小結:關鍵路徑是「零浮動」地帶,它是網絡中最長的路徑。

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。
  • 識別關鍵路徑和關鍵活動。
  • 計算任何活動的總浮動時間。
  • 構建甘特圖。
  • 計算所需工人的下界。

你一定沒問題的!只要按部就班,逐個節點處理即可。