
一、题目本质这不是普通关键路径题而是“资源分配 进度计算 成本估算”综合题这道题看起来很复杂里面有任务、技能、人员、贡献率、成本、PDM 网络、甘特图。其实它本质上考三个问题第一任务之间有什么依赖关系也就是哪个任务做完后哪个任务才能开始。第二每个任务由哪些人来做也就是根据人员技能和任务所需技能构造贡献矩阵 M。第三项目最终需要多久总成本是多少也就是先算每个任务的工期和成本再根据任务依赖关系计算项目总工期。这类题可以分成三层理解层次解决的问题对应结果任务依赖层任务之间谁先谁后关系依赖矩阵、PDM图人员分配层哪些人参与哪些任务贡献矩阵 M进度成本层每个任务多久、多少钱项目总共多久、多少钱任务工期、任务成本、总工期、总成本、甘特图二、题目信息整理1. 任务集合题目给出 7 个任务T {t1, t2, t3, t4, t5, t6, t7}每个任务都有对应的工作量也就是 effort。任务工作量 effortt14t26t38t49t58t610t716这里的工作量可以理解为如果只有 1 个满贡献率人员做这个任务需要多少人天。例如t1 的工作量是 4表示如果只有一个贡献率为 1 的人做 t1则 t1 需要 4 人天。2. 项目需要的技能集合题目给出项目需要的技能S {s1, s2, s3}每个任务需要的技能如下任务需要的技能t1{s1, s2}t2{s2}t3{s1, s3}t4{s1}t5{s1, s2, s3}t6{s1, s2}t7{s1}这部分用于判断某个人能不能参与某个任务。按这道题答案的口径如果某个人不具备任务所需的全部技能就不能对这个任务产生贡献贡献率记为 0。3. 人员集合项目人员集合为E {e1, e2, e3, e4}共 4 个人。每个人具备的技能如下人员具备的技能e1{s1, s2, s3}e2{s1, s2, s3}e3{s1, s2}e4{s1, s3}可以看出e1 和 e2 技能最全三种技能都有e3 没有 s3e4 没有 s2。4. 人员成本每个人的单位人力成本如下人员单位成本e1100e280e360e450可以看出e1 最贵e4 最便宜。所以分配人员时要在“缩短时间”和“降低成本”之间做权衡。三、第一问项目关系依赖矩阵1. 什么是关系依赖矩阵关系依赖矩阵用来表示任务之间的先后关系。一般定义为aij 1表示任务 ti 是任务 tj 的前置任务aij 0表示任务 ti 和任务 tj 没有直接依赖关系。也就是说矩阵的“行”表示前置任务矩阵的“列”表示后续任务。如果第 i 行第 j 列为 1就表示ti → tj2. 根据题目图读出任务依赖关系根据图中的 PDM 网络可以读出以下关系t1 → t2t1 → t3t2 → t4t2 → t5t3 → t5t4 → t7t5 → t6t6 → t7换成人话就是t1 完成后t2 和 t3 才能开始t2 完成后t4 和 t5 才能开始t3 完成后t5 才能开始t4 完成后t7 才能开始t5 完成后t6 才能开始t6 完成后t7 才能开始。3. 关系依赖矩阵按照任务顺序t1, t2, t3, t4, t5, t6, t7可以得到关系依赖矩阵 AAt1t2t3t4t5t6t7t10110000t20001100t30000100t40000001t50000010t60000001t70000000这个矩阵的意思就是第一行 0 1 1 0 0 0 0表示 t1 指向 t2 和 t3。第二行 0 0 0 1 1 0 0表示 t2 指向 t4 和 t5。第三行 0 0 0 0 1 0 0表示 t3 指向 t5。以此类推。四、第二问贡献矩阵 M1. 什么是贡献矩阵贡献矩阵 M 用来表示每个人对每个任务的贡献率是多少。一般可以定义为mij 人员 ei 对任务 tj 的贡献率。如果 mij 1表示人员 ei 对任务 tj 满贡献参与如果 mij 0.5表示人员 ei 对任务 tj 半贡献参与如果 mij 0表示人员 ei 不参与任务 tj。矩阵的“行”表示人员矩阵的“列”表示任务。2. 分配人员时要考虑什么这道题明确说贡献矩阵没有唯一答案只要任务和人员分配适度合理即可。所以这不是严格唯一解的数学优化题而是一个“给出合理资源分配方案”的题。分配时主要考虑三个因素第一技能匹配。人员必须具备任务需要的技能才可以参与任务。第二缩短关键任务时间。位于关键路径上的任务最好多分配一些人因为它们会直接影响项目总工期。第三控制成本。如果便宜人员可以胜任任务优先用便宜人员但如果任务在关键路径上为了缩短工期也可以使用较贵人员。3. 本题采用的贡献矩阵 M题目答案给出的一个合理贡献矩阵如下Mt1t2t3t4t5t6t7e100.510111e21111111e31101011e40011001解释如下t1 需要 {s1, s2}安排 e2 和 e3 参与t2 需要 {s2}安排 e1 半贡献、e2 和 e3 满贡献t3 需要 {s1, s3}安排 e1、e2、e4 参与t4 需要 {s1}安排 e2、e3、e4 参与t5 需要 {s1, s2, s3}安排 e1 和 e2 参与t6 需要 {s1, s2}安排 e1、e2、e3 参与t7 需要 {s1}安排 e1、e2、e3、e4 全部参与。4. 为什么这个矩阵是合理的可以从技能和成本两个角度看。第一技能上基本合理。例如t3 需要 s1 和 s3。e3 只有 s1 和 s2没有 s3所以 e3 对 t3 的贡献为 0。e1、e2、e4 都具备 s1 和 s3所以可以参与 t3。t5 需要 s1、s2、s3。只有 e1 和 e2 同时具备三种技能所以 t5 只安排 e1 和 e2。t7 只需要 s1。四个人都有 s1所以四个人都可以参与。第二成本上也相对合理。e1 最贵所以不是所有任务都让 e1 满贡献。例如 t1 中 e1 没有参与t2 中 e1 只给 0.5 贡献。第三关键路径上任务获得了较强资源。后面计算会发现关键路径大致为t1 → t3 → t5 → t6 → t7这些任务基本都安排了多人参与目的是缩短项目总工期。五、第三问计算每个任务的工期1. 任务工期公式这道题最重要的公式是任务工期 任务工作量 ÷ 参与人员总贡献率也就是len(tj) eff(tj) ÷ 所有人员对 tj 的贡献率之和例如如果某任务工作量是 8有两个满贡献人员参与则总贡献率是 2。任务工期 8 ÷ 2 4 天如果某任务工作量是 6有三个人参与贡献率分别是 0.5、1、1则总贡献率是 2.5。任务工期 6 ÷ 2.5 2.4 天2. 各任务总贡献率根据贡献矩阵 M可以计算每个任务的总贡献率。任务贡献人员总贡献率t1e21e312t2e10.5e21e312.5t3e11e21e413t4e21e31e413t5e11e212t6e11e21e313t7e11e21e31e4143. 各任务工期计算t1 的工期t1 工作量为 4总贡献率为 2。任务工期 4 ÷ 2 2 天t2 的工期t2 工作量为 6总贡献率为 2.5。任务工期 6 ÷ 2.5 2.4 天t3 的工期t3 工作量为 8总贡献率为 3。任务工期 8 ÷ 3 2.67 天t4 的工期t4 工作量为 9总贡献率为 3。任务工期 9 ÷ 3 3 天t5 的工期t5 工作量为 8总贡献率为 2。任务工期 8 ÷ 2 4 天t6 的工期t6 工作量为 10总贡献率为 3。任务工期 10 ÷ 3 3.33 天t7 的工期t7 工作量为 16总贡献率为 4。任务工期 16 ÷ 4 4 天4. 工期汇总表任务工作量总贡献率工期t1422t262.52.4t3832.67t4933t5824t61033.33t71644六、计算每个任务的成本1. 任务成本公式任务成本 任务工期 × 参与该任务的人员日成本之和如果某个人不是满贡献参与而是 0.5 贡献则这个人的成本也按 0.5 计算。所以更准确地说任务成本 任务工期 × ∑人员贡献率 × 人员单位成本其中e1 的单位成本 100e2 的单位成本 80e3 的单位成本 60e4 的单位成本 502. t1 成本t1 由 e2 和 e3 参与。t1 工期 2人员成本之和 80 60 140t1 成本 2 × 140 2803. t2 成本t2 由 e1、e2、e3 参与其中 e1 是 0.5 贡献。t2 工期 2.4人员成本之和 0.5 × 100 80 60人员成本之和 50 80 60 190t2 成本 2.4 × 190 4564. t3 成本t3 由 e1、e2、e4 参与。t3 工期 2.67人员成本之和 100 80 50 230t3 成本 2.67 × 230 614.1如果用精确值 8 ÷ 3 计算则成本约为 613.33。课后答案使用了四舍五入后的 2.67所以写成 614.1。5. t4 成本t4 由 e2、e3、e4 参与。t4 工期 3人员成本之和 80 60 50 190t4 成本 3 × 190 5706. t5 成本t5 由 e1、e2 参与。t5 工期 4人员成本之和 100 80 180t5 成本 4 × 180 7207. t6 成本t6 由 e1、e2、e3 参与。t6 工期 3.33人员成本之和 100 80 60 240t6 成本 3.33 × 240 799.2如果用精确值 10 ÷ 3 计算则成本为 800。课后答案采用 3.33 近似所以得到 799.2。8. t7 成本t7 由 e1、e2、e3、e4 参与。t7 工期 4人员成本之和 100 80 60 50 290t7 成本 4 × 290 11609. 成本汇总表任务工期参与人员成本之和任务成本t12140280t22.4190456t32.67230614.1t43190570t54180720t63.33240799.2t742901160总成本 280 456 614.1 570 720 799.2 1160总成本 4599.3所以项目总成本 4599.3七、计算项目总工期1. 不能直接把所有任务工期相加很多同学容易犯一个错误把 7 个任务的工期全部相加。这是错的。因为任务之间存在并行关系。例如 t2 和 t3 都是在 t1 完成后开始它们可以并行t4 和 t5 也有一定并行关系。项目总工期不是所有任务工期之和而是从开始到结束的最长路径时间。也就是项目总工期 关键路径长度2. 先列出任务依赖关系根据依赖关系t1 → t2t1 → t3t2 → t4t2 → t5t3 → t5t4 → t7t5 → t6t6 → t7可以得到三条主要路径路径 1t1 → t2 → t4 → t7路径 2t1 → t2 → t5 → t6 → t7路径 3t1 → t3 → t5 → t6 → t73. 计算每条路径长度路径 1路径 1t1 → t2 → t4 → t7路径长度 2 2.4 3 4路径长度 11.4 天路径 2路径 2t1 → t2 → t5 → t6 → t7路径长度 2 2.4 4 3.33 4路径长度 15.73 天路径 3路径 3t1 → t3 → t5 → t6 → t7路径长度 2 2.67 4 3.33 4路径长度 16.00 天左右课后答案中把 t6 的 3.33 近似为 3.3因此写成2 2.67 4 3.3 4 15.97 天所以这里可以写项目时间约为 16 天按课后答案取 15.97 天。4. 关键路径最长路径是t1 → t3 → t5 → t6 → t7所以关键路径为t1 → t3 → t5 → t6 → t7项目总工期约为15.97 天约等于 16 天八、用 ES、EF 再验证一遍项目总工期为了更严谨可以用 PDM 正推法计算每个任务的最早开始时间和最早完成时间。1. 正推公式最早完成时间 最早开始时间 工期也就是EF ES 工期如果一个任务有多个前置任务则ES 所有前置任务 EF 的最大值2. 正推计算表任务工期前置任务ESEFt12无02t22.4t124.4t32.67t124.67t43t24.47.4t54t2、t34.678.67t63.33t58.6712.00t74t4、t612.0016.00注意 t5 的前置任务是 t2 和 t3。t2 的 EF 是 4.4t3 的 EF 是 4.67。所以t5 的 ES max(4.4, 4.67) 4.67同理t7 的前置任务是 t4 和 t6。t4 的 EF 是 7.4t6 的 EF 是 12.00。所以t7 的 ES max(7.4, 12.00) 12.00最后t7 的 EF 12.00 4 16.00所以项目总时间约为 16 天。九、PDM 图应该怎么画根据任务依赖关系PDM 图可以这样表示开始 → t1t1 → t2t1 → t3t2 → t4t2 → t5t3 → t5t4 → t7t5 → t6t6 → t7t7 → 结束用文字图表示开始↓t1↙ ↘t2 t3↓ ↓t4 t5↓ ↓t7 ← t6↓结束更准确的关系可以写成t1 分成两条支路一条到 t2一条到 t3t2 分别指向 t4 和 t5t3 也指向 t5t5 指向 t6t4 和 t6 都指向 t7。关键路径是t1 → t3 → t5 → t6 → t7十、甘特图怎么画甘特图的核心是横轴表示时间纵轴表示任务每个任务从 ES 开始持续一个工期长度。根据前面的 ES、EF 表可以得到任务开始时间 ES结束时间 EF工期t1022t224.42.4t324.672.67t44.47.43t54.678.674t68.6712.003.33t712.0016.004所以甘特图可以按以下顺序画t1从 0 到 2t2从 2 到 4.4t3从 2 到 4.67t4从 4.4 到 7.4t5从 4.67 到 8.67t6从 8.67 到 12.00t7从 12.00 到 16.00其中 t1、t3、t5、t6、t7 是关键路径上的任务。十一、这道题的完整答案汇总1. 关系依赖矩阵At1t2t3t4t5t6t7t10110000t20001100t30000100t40000001t50000010t60000001t700000002. 贡献矩阵 MMt1t2t3t4t5t6t7e100.510111e21111111e31101011e400110013. 各任务工期与成本任务工作量总贡献率工期任务成本t1422280t262.52.4456t3832.67614.1t4933570t5824720t61033.33799.2t7164411604. 项目总成本总成本 280 456 614.1 570 720 799.2 1160总成本 4599.3所以项目总成本 4599.35. 项目总工期关键路径为t1 → t3 → t5 → t6 → t7项目总工期约为2 2.67 4 3.33 4 16 天如果按课后答案中 t6 取 3.3则2 2.67 4 3.3 4 15.97 天所以考试可以写项目总工期约为 15.97 天约等于 16 天。十二、这道题最容易错的地方1. 不能把所有任务工期直接相加错误做法项目总工期 t1 t2 t3 t4 t5 t6 t7这是错的。因为有些任务可以并行。正确做法是项目总工期 关键路径长度2. 贡献率不是人数贡献率可以是 1也可以是 0.5。例如 t2 中e1 的贡献率是 0.5。所以 t2 的总贡献率不是 3而是0.5 1 1 2.53. 成本要考虑贡献率如果某人是 0.5 贡献就不能按满成本计算。例如 t2 中e1 成本贡献 0.5 × 100 50不是 100。4. t5 要等 t2 和 t3 都完成t5 的前置任务是 t2 和 t3。所以t5 的开始时间 max(t2 完成时间, t3 完成时间)不是只看 t2也不是只看 t3。5. t7 要等 t4 和 t6 都完成t7 的前置任务是 t4 和 t6。所以t7 的开始时间 max(t4 完成时间, t6 完成时间)因为 t6 完成更晚所以 t7 实际由 t6 控制。6. 课后答案存在四舍五入口径差异课后答案中t6 工期有时按 3.3 计算项目总时间计算成本时又按 3.33 计算。所以得到项目时间 15.97 天总成本 4599.3从数学精确角度看t6 10 ÷ 3 3.333...项目总时间约为 16 天。考试时建议写项目时间约为 15.97 天约等于 16 天。这样既贴合课后答案又不容易被认为算错。十三、这类题的通用解题模板以后遇到类似题可以按这个顺序做。第一步整理任务信息列出任务编号每个任务工作量每个任务所需技能任务之间依赖关系。第二步写关系依赖矩阵规则aij 1 表示 ti 是 tj 的前置任务aij 0 表示没有直接依赖。第三步根据技能和成本构造贡献矩阵规则如果人员不具备任务所需技能贡献率为 0如果人员参与任务可以设为 1 或 0.5要兼顾时间和成本题目如果说没有唯一答案就说明合理即可。第四步计算每个任务工期公式任务工期 任务工作量 ÷ 该任务总贡献率其中该任务总贡献率 所有参与人员贡献率之和第五步计算每个任务成本公式任务成本 任务工期 × ∑人员贡献率 × 人员单位成本第六步根据 PDM 网络计算项目总时间可以用两种方法方法一列所有路径找最长路径方法二正推 ES、EF最后一个任务的 EF 就是项目总工期。第七步画 PDM 图和甘特图PDM 图表示任务依赖关系甘特图用 ES 作为开始时间用任务工期作为条形长度。十四、最后总结这道题的核心不是某个单独公式而是综合能力先根据任务图写出关系依赖矩阵再根据任务技能和人员技能构造贡献矩阵用贡献率计算每个任务工期用人员成本计算每个任务成本用 PDM 网络找关键路径和项目总工期最后汇总项目时间、项目总成本并画出 PDM 或甘特图。这类题最重要的三条公式是任务工期 任务工作量 ÷ 总贡献率任务成本 任务工期 × ∑人员贡献率 × 人员单位成本项目总工期 关键路径长度本题最终答案可以概括为关系依赖矩阵按 t1→t2、t1→t3、t2→t4、t2→t5、t3→t5、t4→t7、t5→t6、t6→t7 构造贡献矩阵可取e100.510111e21111111e31101011e40011001项目关键路径为t1 → t3 → t5 → t6 → t7项目总工期约为15.97 天约等于 16 天项目总成本为4599.3