关键路径法(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
![](https://img2018.cnblogs.com/i-beta/1494277/201911/1494277-20191122151659828-776400802.png)
图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 ...
随机推荐
- [JZOJ5778]【NOIP提高A组模拟2018.8.8】没有硝烟的战争
Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼.该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x+ ...
- SpringMVC4拦截器配置遇到的坑
目的:对get请求添加token验证(若为post请求可通过RequestBodyAdvice实现). 情景:因为有api版本管理的需求,重写了WebMvcConfigurationSupport类的 ...
- pytest6-Fixture finalization / executing teardown code(使用yield来实现)
Fixture finalization / executing teardown code By using a yield statement instead of return, all the ...
- 开普勒云平台:如何配置gitlab与Jenkins
一.Kplcloud是什么? kplcloud是一个基于Kubernetes的轻量级PaaS平台,通过可视化的界面对应用进行管理,降低应用容器化的对度,从而减少应用容器化的时间成本. Kplcloud ...
- 向net core 3.0进击——项目发布与部署
目录 前言 发布 测试 小结 前言 在经历过好多折腾后,总算是把部署走通了一遍,之前只是简单创建个工程在linux下部署,后来一直将这件事搁置,直到最近刚好团队入手一个小服务器,很显然是linux的, ...
- [UWP]使用GetAlphaMask制作阴影
1. 前言 最近常常接触到GetAlphaMask,所以想写这篇文章介绍下GetAlphaMask怎么使用.其实GetAlphaMask的使用场景十分有限,Github上能搜到的内容都是用来配合Dro ...
- 【java基础】- java双亲委派机制
在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈) 四种classloader 虚拟机自带 引导类加载器(Bootstrap ClassLoader) 扩展类 ...
- Servlet处理原生Ajax请求
萌新小白人生中的第一篇博客,难免会有差错,还望各位大佬多多包涵. 1. Ajax技术简介 Ajax(Asynchronous JavaScript and XML,异步JavaScript和 ...
- (五)Unity插件生成
1)新建空的AndroidStudio工程,但是新建过程时最小SDK版本要与unity一致,如下图所示,本次操作均为api16 2)创建Library,如下图所示,新建module,然后选择Andro ...
- else 的特殊用法和三目运算
1,eval() 获取原始数据类型 例1: str = " a = eval(str) print(a,type(a)) a得到的结果是整型10,不是字符串10 例2: str1 = &qu ...