关键路径法(Critical Path Method, CPM)
1、活动节点描述及计算公式
通过分析项目过程中哪个活动序列进度安排的总时差最少来预测项目工期的网络分析。
产生目的:为了解决,在庞大而复杂的项目中,如何合理而有效地组织人力、物力和财力,使之在有限资源下以最短的时间和最低的成本费用下完成整个项目。
关键路径是相对的,也可以是变化的。
关键路径可以有多条,关键路径上的活动时差为0。
活动节点图如下:

ES:最早开始时间(Earliest Start),是指某项活动能够开始的最早时间,只决定于项目计划,只要计划的条件满足了就可以开始的时间。
EF:最早结束时间(Earliest Finish),是指某项活动能够完成的最早时间。其中EF = ES+DU, DU为活动持续时间,顺推法先知道开始时间。
LF:最迟结束时间(Latest Finish),是指为了使项目在要求完工时间内完成,某项活动必须完成的最迟时间。往往决定于相关方(客户或管理层)的限制。
LS:最迟开始时间(Latest Start),是指为了使项目在要求完工时间内完成,某项活动必须开始的最迟时间。其中LS = LF -DU,DU为持续时间,逆推法先知道结束时间。
顺推法:
1、任一活动的最早开始时间,等于所有前置活动的最早结束时间的最大者;
2、任一活动的最早结束时间,等于该活动的最早开始时间 + 该活动工期 ;
3、 没有前置活动的,ES等于项目的开始时间。
EF = ES + DU
逆推法:
从网络图右侧开始,为每项活动制定最迟开始和最迟 结束时间,进行到网络图开始(最左边)。
1、任一活动的最迟结束时间,等于所有后续活动的最迟开始时间的最小者;
2、任一活动的最迟开始时间,等于该活动的最迟结束时间 - 该活动工期 ;
3、 没有后续活动的,LF等于项目的结束时间或者规定的时间。
LS = LF - DU
总浮动时间:
TF = LF – EF 或者 LS- ES ,活动在TF之间推迟不影响总工期(注意如果超 出该TF,则关键路径将发生变化),TF为0的路径为CP(关键路径)自由时差FF = 紧后ES - EF,活动在FF内推迟不影响紧后活动。
4. 活动从第0天开始还是从第1天开始
采用顺推法和逆推法进行进度网络路径计算时,需要关注活动是从第0天开始还是从第1天开始,不同的假设计算的结果是不一样的。首先需要明确以下几个概念。
活动的持续时间DU是指活动的工作时间段,例如一个活动持续时间是24小时,是指3个工作日(每天8小时)。
活动的开始时间是指活动开工日的上班开始时间;活动结束是指开工日的下班时间。也就是说假设一个活动的持续时间是2天,是指从第1天上班时间,到第2天下班时间的所有工作时间段。
所谓活动从第0天还是第1天开始,意思是说要不要把活动开始的那一天计算在工作时间段内。因为现实中第0天是不存在的,所以活动开始的那一天就不需要计算在内;而活动从第1天开始,由于第1天是存在的,就需要计算在工作时间段内。这两种情况导致当前活动的EF或者LS,紧后活动的ES和LF在计算时要考虑是否减去或加上这1天的问题。
无论是从第0天开始,还是第1天开始,都不会影响关键路径的和浮动时间的计算方法,但是考试中如果弄错了则会影响计算结果,考试中为了简化计算通常采用第0天开始,现实中为了与实际相符合通常采用第1天开始。下面就这两种方式举例说明。

图6-25
第一种情况:活动从第0天开始。如图6-25
计算公式如下:
(1) 对于当前活动:
顺推时 EF = ES + DU;
逆推时 LS= LF – DU
(2)对于紧后活动:
顺推时ESi= EFi-1,;
逆推时LFi-1 = LS i (例如逆推时活动C相当于活动D的紧后活动)
其中自左向右,“i”代表当前活动,则“i-1”代表“i”的紧前活动。
例如:对于活动A、B的最早时间:
EFA= ESA+DU = 0+5 = 5,
ESB = EFA= 5;
对于活动D和C的最晚时间:
LSD= LFD – DU = 30 -15 =15,
LFC = LSD= 15;
第二种情况:活动从第1天开始。如图6-26

图6-26
对于当前活动
顺推时 EF = (ES + DU)-1;
逆推时 LS =(LF – DU)+1
对于紧后活动
顺推时ESi= EFi-1 +1;
逆推时LFi-1 = LS i -1
其中自左向右,“i”代表当前活动,则“i-1”代表“i”的紧前活动。例如:
对于活动A、B的最早时间:
EFA= ESA+DU-1 = 1+5-1 = 5,
ESB = EFA+1= 5+1 = 6;
对于活动D和C的最晚时间:
LSD= LFD – DU+1 = 30 -15 +1 =16,
LFC =LSD -1 = 15;
@提示:从上两种计算方法来看,活动从第0天开始显然对人工计算来说更加直观简便,这种方法的缺点是与日历日期的对应关系是不一致的。活动从第1天开始计算的结果与日历日期是一致的,但是计算过程是不直观的。好在考试中一般不会涉及具体的日历日期,所以推荐使用活动从第0天开始的计算方法。
二:





关键路径法(Critical Path Method, CPM)的更多相关文章
- c/c++求解图的关键路径 critical path
c/c++求解图的关键路径 critical path 上图表示一个工程,工程以V1为起始子工程,V9为终止子工程. 由图可以看出,要开工V5工程,必须在完成工程V2和V3后才可以. 完成V2需要a1 ...
- 算法学习记录-图——应用之关键路径(Critical Path)
之前我们介绍过,在一个工程中我们关心两个问题: (1)工程是否顺利进行 (2)整个工程最短时间. 之前我们优先关心的是顶点(AOV),同样我们也可以优先关心边(同理有AOE).(Activity On ...
- PMP用语集
AC actual cost 实际成本 ACWP actual cost of work performed 已完工作实际成本 BAC budget at completion 完工预算 BCWP b ...
- [lua]再版jobSchedule与脚本描述范型
首先贴上代码 -- CPM:关键路径法(Critical Path Method) jobSchedule = { todos = { -- todo list ... ["finale&q ...
- [lua]协同式多任务,统筹运用
-- CPM:关键路径法(Critical Path Method) jobBase = { schedule = function ( self, job, task, ... ) --由具体job ...
- PMBOK及PMP考试精要
PROJECT MANAGEMENT KNOWLEDGE AREAS项目管理知识体系 2 PROJECT LIFE CYCLE / PROJECT MANAGEMENT PROCESS GROUPS项 ...
- 《算法》第四章部分程序 part 17
▶ 书中第四章部分程序,包括在加上自己补充的代码,无环图最短 / 最长路径通用程序,关键路径方法(critical path method)解决任务调度问题 ● 无环图最短 / 最长路径通用程序 pa ...
- Method and apparatus for speculative execution of uncontended lock instructions
A method and apparatus for executing lock instructions speculatively in an out-of-order processor ar ...
- RandomAccessFile vs FileChannel.open(path);
What kind of FileChannel object does the FileChannel.open(path) method return? Is it still random ac ...
随机推荐
- 前端深入之css篇丨初探【transform】,手把手带你实现1024程序员节动画
写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所 ...
- python-url中中文编码与解码
接口测试中遇到这种情况:get请求的传参有中文,以致url中有中文编码. 下面是常见的一种编码解码方式: from urllib.request import quote, unquote url = ...
- spark cdh5编译安装[spark-1.0.2 hadoop2.3.0 cdh5.1.0]
前提你得安装有Hadoop 我的版本hadoop2.3-cdh5.1.0 1.下载maven包 2.配置M2_HOME环境变量,配置maven 的bin目录到path路径 3.export MAVEN ...
- Bootstrap应用核心
Bootstrap是当前世界最受欢迎的响应式.移动设备优先的门户和应用前端框架.它不是单一的CSS或JavaScript框架,而是完整的HTML.CSS.JavaScript框架,你可以仅通过Boot ...
- 基于Opentracing+Jaeger全链路灰度调用链
当网关和服务在实施全链路分布式灰度发布和路由时候,我们需要一款追踪系统来监控网关和服务走的是哪个灰度组,哪个灰度版本,哪个灰度区域,甚至监控从Http Header头部全程传递的灰度规则和路由策略.这 ...
- spring boot mybatis多多数据源解决方法
在我们的项目中不免会遇到需要在一个项目中使用多个数据源的问题,像我在得到一个任务将用户的聊天记录进行迁移的时候,就是用到了三个数据源,当时使用的AOP的编程方式根据访问的方法的不同进行动态的切换数据源 ...
- MyEclipse 2013配置JDBC连接mySQL||Tomcat 7.0 8.0 配置 JDBC |配置mysql-connector-java-5.1.16
MyEclipse->Preferences->MyEclipse->Severs->Intergated Sandbox->Myeclipse Tomcat 7(或者T ...
- 按钮组件.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Windows下NFS服务器SFU设置(可以共享linux系统)
一.安装SFU1.下载软件SFU http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/S ...
- 设计模式C++描述----19.命令(Command)模式
一. 举例说明 我们知道,在多线程程序中,多个用户都给系统发 Read 和 Write 命令.这里有几点需要说明: 1. 首先明确一点,所有的这些 Read 和 Write 命令都是调用一个库函数. ...