pmp_tutorial

第6章:进度管理

开篇段落

进度管理是项目管理的核心知识领域之一,直接决定项目能否按时交付。对于有技术背景的项目经理而言,进度管理不仅是制定时间表,更是一个涉及数学优化、资源配置和风险权衡的系统工程。本章将深入探讨关键路径法(CPM)、进度压缩技术、资源优化方法以及挣值管理中的进度指标,并介绍如何利用AI工具提升进度分析效率。掌握这些技术将帮助你在PMP考试中快速解决进度相关计算题,更重要的是在实际项目中做出科学的进度决策。

关键路径法(CPM)

网络图基础

项目网络图是进度管理的基础工具,它将项目活动及其依赖关系可视化。理解网络图是掌握CPM的第一步。在实际项目管理中,网络图不仅是计算工期的工具,更是沟通进度计划、识别风险和优化资源的重要手段。

网络图的两种表示法:

  1. 节点法(AON - Activity on Node):活动在节点上,箭线表示依赖关系
    • 优点:直观易懂,便于添加多种依赖关系类型
    • 缺点:图形可能较复杂,节点信息较多
    • 应用:现代项目管理软件普遍采用
  2. 箭线法(AOA - Activity on Arrow):活动在箭线上,节点表示事件
    • 优点:清晰展示事件里程碑
    • 缺点:需要虚拟活动(dummy activities)表示某些依赖关系
    • 应用:传统PERT网络,现已较少使用

PMP考试主要使用AON表示法,也称为前导图法(PDM)。这种方法能够更好地表达现代项目中复杂的依赖关系。

节点信息标准格式:

┌─────────────────┐
│    活动名称      │
├─────────────────┤
│ ES │ 工期 │ EF  │
├─────────────────┤
│ LS │ TF  │ LF  │
└─────────────────┘

网络图示例:

     [A]
    5天
   ↙   ↘
[Start]  [C]
   ↘   ↗ 3天
    [B]   ↘
    4天   [End]

网络图构建原则:

  1. 完整性:包含所有项目活动
  2. 逻辑性:正确反映活动间的依赖关系
  3. 唯一性:每个活动只出现一次
  4. 连通性:从开始到结束必须有完整路径
  5. 无环性:不能有循环依赖

前导图法(PDM)

PDM中有四种逻辑关系类型,理解这些关系类型对于构建准确的项目网络图至关重要:

  1. 完成到开始(FS - Finish to Start):前置活动完成后,后续活动才能开始
    • 占比:约90%的依赖关系
    • 示例:代码编写完成后才能开始代码审查
    • 表示:A →FS→ B
    • 计算:B的ES = A的EF + Lag
  2. 开始到开始(SS - Start to Start):前置活动开始后,后续活动才能开始
    • 占比:约7-8%的依赖关系
    • 示例:需求分析开始后,可以开始准备测试用例
    • 表示:A →SS→ B
    • 计算:B的ES = A的ES + Lag
    • 应用场景:并行工作但需要初始协调
  3. 完成到完成(FF - Finish to Finish):前置活动完成后,后续活动才能完成
    • 占比:约2-3%的依赖关系
    • 示例:所有模块测试完成后,集成测试才能完成
    • 表示:A →FF→ B
    • 计算:B的EF = A的EF + Lag
    • 应用场景:活动需要同步结束
  4. 开始到完成(SF - Start to Finish):前置活动开始后,后续活动才能完成
    • 占比:<1%的依赖关系
    • 示例:新系统启动后,旧系统才能关闭
    • 表示:A →SF→ B
    • 计算:B的LF = A的LS + Lag
    • 注意:极少使用,通常可以转换为其他关系类型

提前量与滞后量的深入理解:

依赖关系的分类:

  1. 强制性依赖(硬逻辑)
    • 由工作性质决定,不可违反
    • 例:必须先打地基才能建墙
  2. 选择性依赖(软逻辑)
    • 基于最佳实践或偏好
    • 可以调整以优化进度
    • 例:选择先开发核心功能
  3. 外部依赖
    • 项目活动与非项目活动之间
    • 例:等待供应商交付
  4. 内部依赖
    • 项目活动之间的关系
    • 项目团队可控

实践应用示例:

软件开发项目的典型依赖关系:

需求分析 →FS→ 系统设计
系统设计 →SS+2→ 详细设计(设计开始2天后)
详细设计 →FS→ 编码
编码 →SS+5→ 单元测试准备(编码开始5天后)
编码 →FF→ 单元测试执行
集成测试 →FS+2→ 用户验收测试(缓冲2天)

关键路径识别

关键路径是网络图中最长的路径,决定了项目的最短完成时间。识别关键路径需要进行正向和反向计算。关键路径的概念源于1950年代的项目管理实践,至今仍是进度控制的核心工具。

关键路径的特性:

  1. 时间特性:总工期等于关键路径长度
  2. 敏感性:关键路径上任何延迟都会延迟项目
  3. 动态性:随项目进展可能发生变化
  4. 多重性:可能存在多条关键路径
  5. 管理焦点:需要最密切的监控

正向计算(Forward Pass)详解:

目的:确定项目最早可能的完成时间

计算规则:

  1. 起始活动的ES = 0(或项目开始时间)
  2. 对于任意活动j: \(ES_j = \max(EF_i + Lag_{ij}) \quad \text{其中i是j的所有前置活动}\)
  3. 活动的最早完成时间: \(EF_j = ES_j + Duration_j\)

特殊情况处理:

反向计算(Backward Pass)详解:

目的:确定活动的最晚允许时间

计算规则:

  1. 结束活动的LF = 项目要求完成时间(或EF)
  2. 对于任意活动i: \(LF_i = \min(LS_j - Lag_{ij}) \quad \text{其中j是i的所有后续活动}\)
  3. 活动的最晚开始时间: \(LS_i = LF_i - Duration_i\)

关键路径判定准则:

  1. 总浮动时间准则: \(TF = LS - ES = LF - EF = 0\)

  2. 路径长度准则: 最长的路径即为关键路径

  3. 连续性准则: 关键活动必须形成从开始到结束的连续路径

关键路径算法步骤:

# 伪代码示例
def find_critical_path(activities, dependencies):
    # Step 1: 构建网络图
    network = build_network(activities, dependencies)
    
    # Step 2: 正向计算
    for activity in topological_order(network):
        activity.ES = max([pred.EF for pred in predecessors])
        activity.EF = activity.ES + activity.duration
    
    # Step 3: 反向计算
    project_duration = max([act.EF for act in end_activities])
    for activity in reverse_topological_order(network):
        activity.LF = min([succ.LS for succ in successors])
        activity.LS = activity.LF - activity.duration
    
    # Step 4: 计算浮动时间
    for activity in activities:
        activity.TF = activity.LS - activity.ES
    
    # Step 5: 识别关键路径
    critical_path = [act for act in activities if act.TF == 0]
    return critical_path, project_duration

次关键路径(Near-Critical Path):

定义:总浮动时间很小(如≤2天)的路径

重要性:

识别方法:

  1. 计算所有路径的长度
  2. 找出长度接近关键路径的路径
  3. 设定阈值(如关键路径长度的95%)

关键路径的变化:

导致变化的因素:

  1. 进度延迟:非关键活动延迟超过其总浮动时间
  2. 进度压缩:赶工或快速跟进改变活动持续时间
  3. 范围变更:添加或删除活动
  4. 资源约束:资源平衡导致的进度调整
  5. 风险发生:风险事件影响活动持续时间

管理策略:

浮动时间计算

浮动时间反映了活动的机动时间,是进度管理的重要概念。理解和正确计算浮动时间对于资源分配、风险管理和进度优化至关重要。浮动时间的概念让项目经理能够识别哪些活动有灵活性,哪些必须严格控制。

四种浮动时间详解:

  1. 总浮动时间(Total Float, TF):不影响项目完成时间的最大延迟

    定义:活动可以延迟而不影响项目总工期的时间量

    计算公式: \(TF = LS - ES = LF - EF\)

    特性:

    • TF = 0:活动在关键路径上
    • TF > 0:活动有机动时间
    • TF < 0:项目已延迟,需要赶工
    • 总浮动时间在路径上共享

    应用场景:

    • 资源调配的依据
    • 进度缓冲的来源
    • 风险应对的空间
  2. 自由浮动时间(Free Float, FF):不影响后续活动最早开始时间的最大延迟

    定义:活动可以延迟而不影响任何后续活动的时间量

    计算公式: \(FF = \min(ES_{successor}) - EF_{current}\)

    或考虑依赖关系: \(FF = \min(ES_{successor} - Lag) - EF_{current}\)

    特性:

    • FF ≤ TF(自由浮动不超过总浮动)
    • FF是活动独有的,不与其他活动共享
    • 关键路径上的活动FF = 0
    • 路径最后一个活动的FF = TF

    应用价值:

    • 更安全的调度灵活性
    • 不会产生连锁影响
    • 优先使用的缓冲时间
  3. 项目浮动时间(Project Float):项目完成时间与客户要求时间之差

    定义:整个项目相对于外部约束的机动时间

    计算公式: \(Project\ Float = Target\ Date - Critical\ Path\ Duration\)

    意义:

    • 正值:项目有时间储备
    • 零值:项目刚好满足要求
    • 负值:需要进度压缩

    管理策略:

    • 作为管理储备
    • 应对不可预见风险
    • 避免过早消耗
  4. 负浮动时间(Negative Float):表示进度落后,需要采取纠正措施

    产生原因:

    • 外部强制日期早于计算日期
    • 进度延迟累积
    • 资源约束导致的延迟

    应对措施:

    • 立即实施进度压缩
    • 重新评估依赖关系
    • 请求变更基准
    • 增加资源投入

浮动时间的高级概念:

  1. 干扰浮动(Interfering Float): \(IF = TF - FF\) 使用此浮动会影响后续活动的总浮动

  2. 独立浮动(Independent Float): \(IndF = FF - \text{前置活动使用的浮动}\) 完全不受其他活动影响的浮动时间

  3. 链路浮动(Chain Float): 一条非关键路径上所有活动共享的总浮动

浮动时间的消耗规则:

  1. 先到先用原则:路径上先执行的活动优先使用浮动
  2. 比例分配原则:按活动持续时间比例分配浮动
  3. 关键度原则:优先保护接近关键的活动
  4. 风险权重原则:高风险活动保留更多浮动

浮动时间分析矩阵:

总浮动 自由浮动 活动特征 管理策略
0 0 关键活动 严格监控,优先资源
>0 0 路径收敛点 注意后续影响
>0 =TF 路径末端 可灵活调度
>0 >0但<TF 中间活动 谨慎使用浮动
<0 <0 延迟活动 立即采取措施

实例演练

通过完整的实例来巩固关键路径法的概念和计算方法。我们将使用一个软件开发项目的简化版本进行演示。

项目背景: 开发一个移动应用的核心模块,包含需求分析、设计、开发、测试等阶段。

活动  描述        持续时间  前置活动  资源需求
A     需求分析    3天      -        2名分析师
B     数据库设计  5天      -        1名DBA
C     UI设计      4天      A        2名设计师
D     后端开发    2天      B        3名后端工程师
E     前端开发    6天      C,D      2名前端工程师
F     集成测试    3天      E        2名测试工程师

步骤1:绘制网络图

      [A:3]--->[C:4]
     ↗                ↘
[Start]                [E:6]--->[F:3]--->[End]
     ↘                ↗
      [B:5]--->[D:2]

步骤2:正向计算(Forward Pass)

计算规则回顾:

详细计算过程:

活动 计算过程 ES Duration EF
A 0 3    
B 0 5    
C 3 7    
D 5 7    
E 7 13    
F 13 16    

步骤3:反向计算

活动 LS LF TF
A 0 3 0
B 0 5 0
C 3 7 0
D 5 7 0
E 7 13 0
F 13 16 0

结论:所有活动的总浮动时间都为0,因此整条路径都是关键路径。项目总工期为16天。

进度压缩技术

当项目进度落后或需要提前交付时,需要采用进度压缩技术。进度压缩是项目管理中的关键决策点,需要在成本、时间、质量和风险之间找到最佳平衡。理解各种技术的适用场景和限制条件,对于做出正确的进度决策至关重要。

赶工(Crashing)

赶工通过增加资源来缩短关键路径上的活动持续时间。

赶工原则:

  1. 只赶工关键路径上的活动
  2. 优先选择成本斜率最小的活动
  3. 注意赶工可能产生新的关键路径
  4. 每个活动都有赶工极限

成本斜率计算: \(\text{成本斜率} = \frac{\text{赶工成本} - \text{正常成本}}{\text{正常时间} - \text{赶工时间}}\)

赶工决策示例:

活动 正常时间 赶工时间 正常成本 赶工成本 成本斜率
A 5天 3天 $1000 $1500 $250/天
B 4天 3天 $800 $1100 $300/天
C 6天 4天 $1200 $1600 $200/天

优先赶工活动C,因为其成本斜率最低。

快速跟进(Fast Tracking)

快速跟进将原本串行的活动改为并行或部分并行执行。

快速跟进特点:

适用场景:

  1. 活动之间有弱依赖关系
  2. 可以接受一定的风险增加
  3. 团队有并行工作的能力
  4. 质量标准允许迭代改进

快速跟进示例: 原计划:需求分析(10天) → 设计(15天) → 开发(20天) 快速跟进:需求分析(10天) → 设计开始5天后开始开发 总工期从45天缩短到40天。

技术选择决策矩阵

因素 赶工 快速跟进
成本影响 增加 不变或略增
风险影响
质量影响 可能降低 可能降低
资源需求 增加 不变
管理复杂度 中等
适用阶段 执行阶段 规划/执行阶段

选择建议:

资源优化技术

资源优化是平衡进度与资源约束的关键技术,帮助项目经理在资源有限的情况下制定可行的进度计划。

资源平衡(Resource Leveling)

资源平衡通过调整活动开始和完成时间来解决资源冲突,确保资源需求不超过可用资源。

资源平衡的影响:

资源平衡算法步骤:

  1. 识别资源冲突期间
  2. 在非关键活动的浮动时间内调整
  3. 如果浮动时间不足,延迟活动开始时间
  4. 重新计算关键路径

示例场景:

原始进度(需要程序员数量):
第1-3天: 活动A(2人) + 活动B(3人) = 5人
第4-6天: 活动C(2人) + 活动D(2人) = 4人
可用资源:4名程序员

平衡后:
第1-3天: 活动A(2人) + 活动B(2人) = 4人
第4-6天: 活动B(1人) + 活动C(2人) = 3人
第7-8天: 活动D(2人) = 2人

资源平滑(Resource Smoothing)

资源平滑在不改变项目关键路径的前提下,利用活动的浮动时间来优化资源使用。

资源平滑 vs 资源平衡:

特征 资源平衡 资源平滑
优先级 资源约束优先 进度约束优先
工期影响 可能延长 不改变
关键路径 可能改变 不改变
资源上限 严格遵守 尽量遵守
适用场景 资源严格受限 优化资源使用

资源平滑技巧:

  1. 只调整有浮动时间的活动
  2. 优先调整自由浮动时间大的活动
  3. 考虑资源的学习曲线效应
  4. 保持团队工作的连续性

关键链法(CCM)

关键链法是约束理论(TOC)在项目管理中的应用,考虑了资源约束对进度的影响。

关键链法核心概念:

  1. 关键链:考虑资源依赖后的最长路径
  2. 缓冲管理
    • 项目缓冲(Project Buffer):置于关键链末端,保护项目完成时间
    • 汇入缓冲(Feeding Buffer):置于非关键链与关键链交汇处
    • 资源缓冲(Resource Buffer):提醒资源准备就绪

缓冲大小计算: \(\text{缓冲大小} = \frac{\text{链路长度}}{2} \times \text{不确定性系数}\)

或使用平方根法: \(\text{缓冲大小} = \sqrt{\sum(\text{活动不确定性})^2}\)

关键链法实施步骤:

  1. 使用激进但可能的估算(去除安全时间)
  2. 识别关键链(最长的资源约束路径)
  3. 添加项目缓冲(通常为关键链长度的50%)
  4. 在非关键链添加汇入缓冲
  5. 监控缓冲消耗率

关键链法优势:

示例:

传统CPM:
活动A(10天) → 活动B(15天) → 活动C(12天) = 37天

关键链法:
活动A(6天) → 活动B(10天) → 活动C(8天) + 项目缓冲(12天) = 36天
(活动估算更激进,但有缓冲保护)

挣值管理(EVM)基础

挣值管理不仅用于成本控制,也是进度绩效测量的重要工具。本节重点介绍EVM中的进度相关指标。

进度绩效指标

基础概念:

关键进度指标:

  1. 进度偏差(SV - Schedule Variance): \(SV = EV - PV\)
    • SV > 0:进度超前
    • SV = 0:进度准时
    • SV < 0:进度落后
  2. 进度绩效指数(SPI - Schedule Performance Index): \(SPI = \frac{EV}{PV}\)
    • SPI > 1:进度超前
    • SPI = 1:进度准时
    • SPI < 1:进度落后

SPI与SV计算

计算示例:

项目总预算:$100,000,工期10个月 第5个月末的状态:

计算:

SPI的深入理解:

进度预测

基于EVM的进度预测方法:

  1. 时间完工估算(EACt - Estimate at Completion time)

    假设当前SPI将持续: \(EAC_t = \frac{\text{计划工期}}{SPI}\)

    考虑关键路径的方法: \(EAC_t = AT + \frac{\text{剩余关键路径工期}}{SPI}\)

  2. 完工尚需时间估算(ETCt - Estimate to Complete time): \(ETC_t = EAC_t - AT\)

  3. 完工时进度偏差(VACt - Variance at Completion time): \(VAC_t = \text{计划工期} - EAC_t\)

预测示例:

计算:

基于挣得进度(ES)的分析:

挣得进度是EVM的新发展,直接使用时间单位:

\[ES = AT + \frac{EV - AC_{AT}}{PV_{rate}}\]

其中PV_rate是计划的工作速率($/天)。

进度预测的注意事项:

  1. SPI在项目接近完成时失效
  2. 关键路径的变化会影响预测准确性
  3. 应结合其他方法(如关键路径分析)综合判断
  4. 考虑风险和不确定性的影响

AI工具:进度网络图自动分析

利用AI工具可以大幅提升进度管理的效率和准确性。以下是具体的应用场景和提示词示例。

网络图生成与分析

使用AI生成网络图的提示词模板:

请根据以下活动列表生成项目网络图并计算关键路径:
[活动列表]
要求:
1. 使用前导图法(PDM)
2. 计算每个活动的ES、EF、LS、LF
3. 标识关键路径
4. 计算总浮动时间
5. 提供ASCII或mermaid格式的网络图

AI辅助的关键路径分析:

# 可以请AI生成的Python代码示例
def calculate_critical_path(activities):
    """
    activities: [(name, duration, predecessors), ...]
    返回:关键路径和项目总工期
    """
    # 正向计算
    es, ef = forward_pass(activities)
    # 反向计算
    ls, lf = backward_pass(activities, ef)
    # 识别关键路径
    critical_path = identify_critical(es, ls)
    return critical_path, max(ef.values())

进度优化建议

AI驱动的进度压缩分析:

项目信息:
- 当前工期:[X]天
- 目标工期:[Y]天
- 关键路径活动:[列表]
- 可用预算:$[金额]

请提供:
1. 赶工方案(包括成本影响分析)
2. 快速跟进方案(包括风险评估)
3. 混合优化策略
4. 各方案的优缺点对比

资源冲突检测

使用AI进行资源分析的提示:

资源配置:
[资源类型和数量列表]

活动安排:
[活动名称、资源需求、时间安排]

请分析:
1. 资源冲突时段
2. 资源利用率图表
3. 资源平衡建议
4. 对关键路径的影响

EVM计算辅助

AI支持的EVM分析模板:

项目数据:
- BAC(完工预算):$[金额]
- 计划工期:[天数]
- 当前时间点:第[X]天
- PV:$[金额]
- EV:$[金额]
- AC:$[金额]

请计算并解释:
1. 所有EVM指标(SV、SPI、CV、CPI)
2. 完工预测(EAC、ETC、VAC)
3. 绩效趋势分析
4. 纠正措施建议

蒙特卡洛模拟

使用AI进行进度风险分析:

# 请AI生成蒙特卡洛模拟代码
import numpy as np

def monte_carlo_schedule(activities, iterations=10000):
    """
    对每个活动使用三点估算进行模拟
    activities: [(name, optimistic, likely, pessimistic), ...]
    """
    results = []
    for _ in range(iterations):
        duration = simulate_project(activities)
        results.append(duration)
    
    return {
        'P50': np.percentile(results, 50),
        'P80': np.percentile(results, 80),
        'P95': np.percentile(results, 95),
        'mean': np.mean(results),
        'std': np.std(results)
    }

AI辅助的实战练习

场景生成器提示:

生成一个软件开发项目的进度管理场景:
- 项目规模:中型(6-8个月)
- 团队规模:10-15人
- 包含至少15个活动
- 设置2-3个资源约束
- 包含1-2个进度风险

提供:
1. 完整的WBS
2. 活动依赖关系
3. 资源分配
4. 需要解决的进度问题
5. 期望的解决方案

PMP考试模拟题生成:

基于以下进度管理知识点生成5道PMP风格的情景题:
- 关键路径变更
- 资源平衡vs资源平滑
- 进度压缩决策
- SPI/SV的解释
- 关键链缓冲管理

每题包括:
1. 项目背景
2. 具体问题
3. 4个选项
4. 正确答案和详细解释

本章小结

进度管理是项目成功的关键要素,本章介绍的技术和方法构成了PMP考试中进度管理知识领域的核心内容:

核心概念回顾:

  1. 关键路径法(CPM)
    • 关键路径 = 最长路径 = 最短项目工期
    • 总浮动时间 = 0 的活动在关键路径上
    • 关键路径可能有多条
  2. 进度压缩技术
    • 赶工:花钱买时间,增加资源
    • 快速跟进:增加风险换时间,并行执行
  3. 资源优化技术
    • 资源平衡:可能延长工期,资源约束优先
    • 资源平滑:不改变关键路径,进度约束优先
    • 关键链法:考虑资源约束和缓冲管理
  4. EVM进度指标
    • SV = EV - PV(绝对偏差)
    • SPI = EV/PV(相对效率)
    • 预测公式:EACt = 计划工期/SPI

关键公式汇总:

指标 公式 含义
ES max(EF_predecessors) 最早开始时间
EF ES + Duration 最早完成时间
LS LF - Duration 最晚开始时间
LF min(LS_successors) 最晚完成时间
TF LS - ES 或 LF - EF 总浮动时间
FF ES_successor - EF_current 自由浮动时间
SV EV - PV 进度偏差
SPI EV/PV 进度绩效指数
EACt 计划工期/SPI 时间完工估算

实战应用要点:

  1. 进度管理不是孤立的,需要与成本、资源、风险管理协同
  2. 选择进度压缩技术时要权衡成本、风险和质量影响
  3. 资源优化可能改变关键路径,需要重新分析
  4. EVM的进度指标在项目后期会失真,需要结合其他方法
  5. 利用AI工具可以快速进行复杂计算和场景分析

常见陷阱与错误

概念理解陷阱

  1. 混淆关键路径与关键活动
    • 错误:认为重要的活动就在关键路径上
    • 正确:关键路径由总浮动时间为0的活动组成
  2. 误解浮动时间
    • 错误:认为有浮动时间的活动可以随意延迟
    • 正确:使用浮动时间可能影响后续活动和资源安排
  3. 关键路径唯一性
    • 错误:项目只有一条关键路径
    • 正确:可能存在多条关键路径,增加管理复杂度

计算错误

  1. 网络图计算顺序
    • 错误:随机计算各活动的时间参数
    • 正确:先正向计算(ES、EF),再反向计算(LS、LF)
  2. SPI解释错误
    • 错误:SPI = 0.8意味着进度落后20%
    • 正确:SPI = 0.8意味着进度效率是计划的80%
  3. 资源平衡影响
    • 错误:资源平衡不会改变项目工期
    • 正确:资源平衡通常会延长项目工期

应用误区

  1. 进度压缩选择
    • 错误:总是选择成本最低的压缩方案
    • 正确:需要综合考虑成本、风险、质量和可行性
  2. 缓冲设置
    • 错误:在每个活动都加缓冲
    • 正确:关键链法只在特定位置设置缓冲
  3. EVM局限性
    • 错误:完全依赖SPI进行进度预测
    • 正确:项目后期SPI会收敛到1,需要其他方法辅助

PMP考试要点

  1. 情景题应答
    • 看到”项目必须按时完成”→考虑进度压缩
    • 看到”资源有限”→考虑资源平衡或资源平滑
    • 看到”不确定性高”→考虑关键链法
  2. 计算题技巧
    • 画图辅助理解网络关系
    • 列表整理EVM数据
    • 注意单位一致性(天/周/月)
  3. 术语区分
    • Lead vs Lag(提前量vs滞后量)
    • Resource Leveling vs Resource Smoothing
    • Crashing vs Fast Tracking

调试建议: