简介:利用关键路径分析管理大型项目

你有没有想过,像建造摩天大楼或推出新款智能手机这样的巨型项目,是如何准时完成的呢?这不仅仅靠运气!项目经理使用一种称为关键路径分析(Critical Path Analysis, CPA)的技术。

在本章中,你将学习如何将大型项目拆解成较小的任务,厘清任务之间的依赖关系,并计算完成所有事项所需的绝对最少时间。如果起初看起来步骤繁多,别担心——一旦你掌握了“前向传递与后向传递(Forward and Backward Pass)”,它就会变成一个非常合乎逻辑的谜题!

1. 建立模型:优先级表与网络图

在计算时间之前,我们需要一张项目地图。我们主要使用两种工具:优先级表(Precedence Tables)活动网络图(Activity Networks)

关键术语

  • 活动(Activity):需要时间和资源的任务(例如:“粉刷墙壁”)。在我们的图表中,活动显示在弧线(arcs)(箭头)上。
  • 事件(Event):活动开始或结束的特定时间点。这些显示为节点(nodes)(圆圈)。
  • 优先级表(Precedence Table):列出每个活动及其紧前活动(immediate predecessors)(在该任务开始前必须完成的任务)的列表。

弧上活动(AoA)图的规则

在 Pearson Edexcel D1 的课程大纲中,我们使用弧上活动(Activity on Arc)方法。以下是绘图时的“黄金法则”:

  1. 每个活动由一个箭头表示。
  2. 节点代表活动的“开始”或“结束”。
  3. 关键规则:任意两个节点之间最多只能由一个活动连接。

“虚活动(Dummies)”的奥秘

有时你需要画一条虚线箭头,称为虚活动(Dummy Activity)。虚活动的持续时间为零。我们使用它们的原因有二:

  • 原因 1(唯一性):确保每个活动都能通过其起始和结束节点被唯一识别。如果两个活动在同一个地方开始和结束,我们就用一个虚活动将它们分开。
  • 原因 2(依赖性):表示某个活动仅依赖于部分(而非全部)前置活动。
类比:想象你在制作三明治。你必须先“买面包”和“买芝士”,才能“组装三明治”。但你只需要“买面包”就能“烤面包”。虚活动可以帮助展示“组装三明治”同时依赖两者,而“烤面包”仅依赖面包。

快速回顾:活动网络从左流向右。每个网络必须有一个唯一的“开始”节点和一个唯一的“结束”节点。

2. 前向传递与后向传递

网络画好后,就轮到运算环节了!我们使用分为多个部分的节点来记录两个重要时间。

步骤 1:前向传递(最早事件时间 EET)

我们从左向右运算,以找出最早事件时间(Earliest Event Time, EET)。这是所有导向该节点的活动都能完成的最早时间。

  • 从第一个节点开始,设定 \( EET = 0 \)。
  • 对于每个节点,查看所有指向它的活动。
  • 计算:\( \text{前一个节点的 EET} + \text{活动的持续时间} \)。
  • 规则:如果有多个活动指向同一个节点,请选择数值最大的一个。(因为你必须等到最慢的前置任务完成后,才能开始下一个任务!)

步骤 2:后向传递(最迟事件时间 LET)

我们从右向左运算,以找出最迟事件时间(Latest Event Time, LET)。这是该事件在不延误整个项目的前提下,所能发生的最迟时间。

  • 从最后一个节点开始。将 \( LET \) 设定为你刚刚计算出的 \( EET \)。
  • 对于每个节点,查看所有背离它的活动。
  • 计算:\( \text{下一个节点的 LET} - \text{活动的持续时间} \)。
  • 规则:如果有多个活动从同一个节点导出,请选择数值最小的一个

要避免的常见错误:学生经常搞混何时该选“最大值”或“最小值”。只需记住:前向 = 最大值(Max)(等待所有人完成)以及 后向 = 最小值(Min)(别让任何人迟到!)。

3. 关键路径与浮动时间

现在我们有了时间数据,可以找出项目的“瓶颈”了。

关键活动

关键活动(Critical Activity)是指任何延误都会立即导致整个项目延误的任务。要成为关键活动,必须满足以下条件:

  1. 它开始于一个 \( EET = LET \) 的节点。
  2. 它结束于一个 \( EET = LET \) 的节点。
  3. \( \text{LET}_{\text{end}} - \text{EET}_{\text{start}} - \text{Duration} = 0 \)。

关键路径(Critical Path)是由关键活动组成的从开始到结束的连续路径。请在考试中清楚标示出这条路径!

总浮动时间(Total Float)

总浮动时间是一个活动在不延误整个项目的情况下可以被延误的时间。关键活动的浮动时间为 0。

公式:
\( \text{Total Float} = \text{LET}_{\text{end node}} - \text{EET}_{\text{start node}} - \text{Duration} \)

记忆法:将“浮动时间”视为“空闲时间”。如果你有 2 小时的时间去完成一项 30 分钟的琐事,你的“浮动时间”就是 1 小时 30 分钟。

关键要点:识别关键路径能让经理明确知道哪里“绝对不能”延误。如果资源有限,非关键任务可以稍微调整。

4. 甘特图与排程

甘特图(Gantt Chart)(也称为级联图 Cascade Chart)是一种将项目排程对照时间轴进行可视化呈现的方式。

如何绘制甘特图

  • 横轴代表时间。
  • 每个活动绘制成一个横向条状图。
  • 关键活动:通常放在最上方,形成从时间 0 到项目结束的一条实线。
  • 非关键活动:从它们的最早开始时间开始绘制。我们通常使用阴影方块或虚线来表示它们的浮动时间

排程与资源直方图

有时,考试题目会要求计算所需的最低工人数(lower bound of workers)。这有助于我们了解需要多少人才能准时完成项目。

最低工人数公式:
\( \text{Lower Bound of Workers} = \frac{\text{所有活动持续时间之和}}{\text{关键路径完成时间}} \)

注意:请务必向上取整至最接近的整数,因为你不可能雇用半个人!

你知道吗?甘特图最初在 20 世纪初被用于管理胡佛水坝的建设。如今,从软件开发到婚礼策划,几乎每个行业都在使用它们!

总结:你的 CPA 检查清单

  • 绘制网络图:弧上活动、事件用圆圈表示,并使用虚活动来处理唯一性或依赖性。
  • 前向传递:在每个节点取最大值来找出 EET。
  • 后向传递:在每个节点取最小值来找出 LET。
  • 寻找关键路径:寻找 \( \text{Float} = 0 \) 的活动。
  • 计算浮动时间:\( \text{LET}_{\text{end}} - \text{EET}_{\text{start}} - \text{Duration} \)。
  • 甘特图:绘制排程,并为非关键任务标示出“空闲时间”(浮动时间)。

鼓励一下:关键路径分析是决策数学中最实用的部分之一。只要练习几个网络图,你就会开始在日常生活中看到各种“关键路径”——比如你早上穿衣服的顺序!