项目管理中通过CPM算法求关键路径,最早和最晚开始时间

首先贴一下百度百科对CPM的定义:

关键路径法(Critical Path Method, CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解成为多个独立的活动并确定每个活动的工期,然后用逻辑关系(结束-开始、结束-结束、开始-开始和开始结束)将活动连接,从而能够计算项目的工期、各个活动时间特点(最早最晚时间、时差)等。在关键路径法的活动上加载资源后,还能够对项目的资源需求和分配进行分析。关键路径法是现代项目管理中最重要的一种分析工具。

最早开始时间:活动开始的最早时间 
最晚开始时间:在保证不延期的前提下可以开始的最晚时间

对于给定的活动图求出他的关键路径,最早和最晚开始时间一般采用回溯法,通俗讲就是从结束节点回推各个节点的开始时间。下面用一个例子展示这种算法

如图,求出关键路径,最早开始时间和最晚开始时间,时差和各个活动的前驱节点。 
这里写图片描述

  1. 求各个路径的总权值,权值最大的即为关键路径 
    ABDIJL 权值为3+5+2+2+8=20 
    ABDIJKL 权值为3+5+2+2+2+3=17 
    ABIJL 权值为19 
    ABIJKL 权值为16 
    AEGJL 权值为17 
    AEGJKL 权值为14 
    AEGHKL 权值为17 
    ACFHKL 权值为16 
    由此可知关键路径为ABDIJL。
  2. 回溯求出最早,最晚开始时间和差值

    **!!!!:对于关键路径上的活动最早最晚开始时间的差值始终为0; 
    最晚开始时间=后驱节点对应的时间-活动时间 
    (如果后驱节点对应多个时间,选取最小的那个)** 
    最早开始时间=max{到达前驱结点的路径权值}+1 
    (这个加1是为什么呢?举个例子,一个工程的前半部分需要20天,从月初的1号开始,在20号正好完成,所以后半部分工程从21号开始) 
    e.p. 
    活动KL的的前驱节点为K, 
    最晚开始时间=(20+1)-3=18 
    (此处加1意义同上,但在计算最晚开始时间时只在最后活动加1,其他活动不必再加1,考虑考虑,这是符合常理的) 
    最早开始时间=max{c(ABDIJ),c(ABIJ),c(AEGJ),c(AEGH),c(ACFH)}+1=15 
    所以, 
    KL: Precursor{K} , Earliest start Time:15, latest Start Time:18 Slacktime:3;

在计算一个HK: 
通过计算KL我们知道K对应的最晚开始 时间为18 
最晚开始时间=18-4=14 
最早开始时间=11(方法同上)

所以此题所有答案如下:

AB: Precursor{A} , Earliest start Time:1, latest Start Time:1 Slacktime:0; 
BD: Precursor{B} , Earliest start Time:4, latest Start Time:4 Slacktime:0; 
DI: Precursor{D} , Earliest start Time:9, latest Start Time:9 Slacktime:0; 
BI: Precursor{B} , Earliest start Time:4, latest Start Time:5 Slacktime:1; 
AE: Precursor{A} , Earliest start Time:1, latest Start Time:5 Slacktime:3; 
EG: Precursor{E} , Earliest start Time:5, latest Start Time:8 Slacktime:3; 
GJ: Precursor{G} , Earliest start Time:8, latest Start Time:11 Slacktime:3; 
GH: Precursor{G} , Earliest start Time:8, latest Start Time:11 Slacktime:3; 
IJ: Precursor{I} , Earliest start Time:11, latest Start Time:11 Slacktime:0; 
AC: Precursor{A} , Earliest start Time:1, latest Start Time:5 Slacktime:4; 
CF: Precursor{A} , Earliest start Time:6, latest Start Time:10 Slacktime:4; 
FH: Precursor{F} , Earliest start Time:9, latest Start Time:13 Slacktime:4; 
HK: Precursor{H} , Earliest start Time:11, latest Start Time:14 Slacktime:3; 
JK: Precursor{J} , Earliest start Time:13, latest Start Time:16 Slacktime:3; 
JL: Precursor{J} , Earliest start Time:13, latest Start Time:13 Slacktime:0; 
KL: Precursor{K} , Earliest start Time:15, latest Start Time:18 Slacktime:3;

另外需要说明一点的是,在计算最晚开始时间时,如果后驱节点对应多个时间,选取最小的那个。 
例如,IJ 
J对应的最晚开始时间分别出现在JK和JL,选取小的那个13。

由于最近在学习软件工程这门课程,所以按照官方定义自己捉摸了这个做题的路子,有什么不对的还请指正。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
项目管理关键路径法(Critical Path Method,简称CPM)和关键链法(Critical Chain Method,简称CCM)是两种常用的项目计划管理方法。 关键路径法是一种经验性的计划调度方法,通过确定项目关键路径,即项目完成所需的最长时间路径,来确定项目完成的最早最晚时间,以及项目的总工期。关键路径法主要关注项目时间约束,通过优化关键路径上的任务,可以缩短项目的总工期并提高完成率。该方法通常使用工期网络图进行分析,并结合关键路径的管理手段,如资源调配和进度控制,来保证项目按时完成。 而关键链法则是一种基于资源约束的项目计划管理方法。关键链法将项目资源的限制与任务的不确定性进行了综合考虑。在关键链法,任务的持续时间被缩减了,以充分利用资源,但项目的计划日期则根据资源的可用性来确定。该方法更强调资源的合理调配和任务优先级管理,以最大程度地提高项目完成的可能性。关键链法通常使用CCM网络图进行分析,并采用项目缓冲管理和紧前关系调整等技术来防止资源瓶颈、任务延误和缓冲消耗。 关键路径法和关键链法都可以帮助项目管理者有效地规划和控制项目进度。关键路径法主要适用于确定项目最早最晚时间,优化项目的总工期;而关键链法则更适合于资源约束和不确定性较高的项目,能够提高项目的完成率。在实际应用,可以根据项目的特点和需选择适合的方法,或者综合运用两种方法,以达到最佳的项目管理效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值