软件工程之PERT图(关键路径)

三 用途

PERT图一般用于计算关键路径

3.1 关键路径的概念

关键路径指的是花费时间最长的事件和活动的序列。
相关概念说明:
①最早开始时间:某段工程开始点之前最长的输入流之和
②最晚开始:关键路径-开始点到最后整个工程最后结束点的距离
③最早结束:某段工程结束点之前最长的输入流之和
④最晚结束:关键路径-该结束点到整个工程最后结束点的距离

3.2 关键路径的计算

1.关键路径:从开始到结束得所有路径中,所话时间最长的一条为关键路径。
注意:在关键路径上的任务的松弛时间为0
最早开始时间:在关键路径上,从开始到该任务的最早执行的时间
最晚开始时间:关键路径的总时间-反向得出该任务的时间
2.松弛时间(最多延迟执行的时间)
第一种求法:最晚开始时间-最早开始时间
第二种求法:关键路径的总时间-包含该任务的关键路径花的时间

参考:软考–关键路径法

3.3 关键路径的算法实现

这个写的很好,可以作为参考
图的基础—关键路径理解和实现(Java)

### PERT 表的使用方法与计方式 #### 什么是PERT? 计划评审技术(Program Evaluation and Review Technique,简称PERT)是一种用于项目管理和调度的技术。它通过分析任务及其依赖关系来估计项目的完成时间,并帮助识别关键路径[^1]。 #### 如何构建PERT表? PERT表通常由节点和边组成,其中: - **节点**表示事件或里程碑。 - **边**表示活动或任务,带有权重代表所需的时间。 以下是创建PERT表的关键要素: 1. 列出所有必要的任务并定义它们的关系。 2. 绘制网络,将任务作为箭头绘制出来,起点和终点分别对应于前驱和后续事件。 3. 对每个任务分配三种时间估:乐观时间 \(t_o\)、最可能时间 \(t_m\) 和悲观时间 \(t_p\)。 #### PERT法的计方式 为了更精确地预测项目工期,可以采用加权平均法计预期时间 (\(t_e\)): \[ t_e = \frac{t_o + 4t_m + t_p}{6} \] 此公式基于贝塔分布假设得出的结果更加贴近实际情况。接着,在整个网络上执行以下操作以找到总耗时及关键路径: 1. 正向遍历 (Forward Pass): - 计最早开始时间和最早结束时间。 2. 反向遍历 (Backward Pass): - 确定最晚开始时间和最晚结束时间。 如果某条路径上的浮动时间为零,则该路径即为关键路径。 ```python class Task: def __init__(self, name, optimistic_time, most_likely_time, pessimistic_time): self.name = name self.to = optimistic_time self.tm = most_likely_time self.tp = pessimistic_time @property def expected_time(self): return (self.to + 4 * self.tm + self.tp) / 6 tasks = [ Task('A', 2, 4, 6), Task('B', 3, 5, 7) ] for task in tasks: print(f"Task {task.name}: Expected Time is {task.expected_time:.2f}") ``` 上述代码片段展示了如何依据给定的任务参数计期望持续时间。 #### 关键路径的重要性 确定关键路径对于有效管理资源至关重要,因为任何延迟都会直接影响整体进度安排。因此,项目经理应特别关注这条线路中的各项作业进展状况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daisyr07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值