引言
工序网络计划图(Activity-on-Node,AON)是一种项目管理工具,它通过图形化的方式展示项目中的各个活动及其相互之间的关系。在项目管理中,工序网络计划图能够帮助项目管理者有效地规划、调度和控制项目进度。本文将深入解析工序网络计划图的计算技巧,并通过实际案例进行实战解析。
工序网络计划图的基本概念
1. 活动与节点
在工序网络计划图中,活动是指项目中需要完成的具体任务,节点则代表活动。每个节点代表一个活动,节点之间的箭头表示活动之间的依赖关系。
2. 关键路径法(Critical Path Method,CPM)
关键路径法是一种计算工序网络计划图的方法,用于确定项目中所有活动所需的最长时间,以及项目的最短完成时间。
3. 最早开始时间(Earliest Start Time,EST)和最早完成时间(Earliest Finish Time,EFT)
EST是指某个活动可以开始的最早时间,EFT是指某个活动可以完成的最早时间。
4. 最晚开始时间(Latest Start Time,LST)和最晚完成时间(Latest Finish Time,LFT)
LST是指某个活动必须开始的最晚时间,以避免延误整个项目,LFT是指某个活动必须完成的最晚时间。
计算技巧
1. 前向计算
前向计算是从项目的开始到结束,计算每个活动的EST和EFT。
代码示例(Python):
def forward_pass(network):
# 初始化EST和EFT
for activity in network:
activity['EST'] = 0
activity['EFT'] = 0
# 计算EST
for activity in network:
for predecessor in activity['predecessors']:
activity['EST'] = max(activity['EST'], predecessor['EFT'])
# 计算EFT
for activity in reversed(network):
for successor in activity['successors']:
successor['EFT'] = min(successor['EFT'], activity['EST'] + activity['duration'])
# 示例网络
network = [
{'name': 'A', 'duration': 3, 'predecessors': []},
{'name': 'B', 'duration': 2, 'predecessors': ['A']},
{'name': 'C', 'duration': 1, 'predecessors': ['B']}
]
forward_pass(network)
2. 后向计算
后向计算是从项目的结束到开始,计算每个活动的LST和LFT。
代码示例(Python):
def backward_pass(network):
# 初始化LST和LFT
for activity in network:
activity['LST'] = 0
activity['LFT'] = 0
# 计算LFT
for activity in reversed(network):
for successor in activity['successors']:
successor['LFT'] = min(successor['LFT'], activity['LST'] + activity['duration'])
# 计算LST
for activity in network:
for predecessor in activity['predecessors']:
predecessor['LST'] = max(predecessor['LST'], activity['LFT'])
backward_pass(network)
实战解析
1. 项目背景
假设有一个软件开发项目,包括以下活动:
- A:需求分析(3天)
- B:设计(2天,依赖A)
- C:编码(4天,依赖B)
- D:测试(2天,依赖C)
2. 构建工序网络计划图
network = [
{'name': 'A', 'duration': 3, 'predecessors': []},
{'name': 'B', 'duration': 2, 'predecessors': ['A']},
{'name': 'C', 'duration': 4, 'predecessors': ['B']},
{'name': 'D', 'duration': 2, 'predecessors': ['C']}
]
3. 计算关键路径
通过前向计算和后向计算,我们可以得到以下结果:
forward_pass(network)
backward_pass(network)
for activity in network:
print(f"{activity['name']}: EST={activity['EST']}, EFT={activity['EFT']}, LST={activity['LST']}, LFT={activity['LFT']}")
输出结果:
A: EST=0, EFT=3, LST=0, LFT=3
B: EST=3, EFT=5, LST=3, LFT=5
C: EST=5, EFT=9, LST=5, LFT=9
D: EST=9, EFT=11, LST=9, LFT=11
从输出结果可以看出,关键路径是A -> B -> C -> D,总时长为11天。
结论
工序网络计划图是一种强大的项目管理工具,通过计算技巧和实战解析,可以帮助项目管理者有效地规划、调度和控制项目进度。掌握这些技巧对于提高项目管理效率具有重要意义。
