java 关键路径_java实现的项目管理中的关键路径的算法

基本概念:

在关键路径法中,一般有以下一些时间参数:

最早开始时间(Early Start)活动最早开始时间由所有前置活动中最后一个最早结束时间确定。

最早结束时间(Early Finish)活动的最早结束时间由活动的最早开始时间加上其工期确定。

最迟结束时间(Late Finish)一个活动在不耽误整个项目的结束时间的情况下能够最迟开始的时间。它等于所有紧后工作中最早的一个最晚开始时间。

最迟开始时间(Late Start)一个活动在不耽误整个项目的结束时间的情况下能够最早开始的时间。它等于活动的最迟结束时间减去活动的工期。

总时差(Total Float) 指一项活动在不影响整体计划工期的情况下最大的浮动时间。

自由时差(Free Float)指活动在不影响其紧后工作的最早开始时间的情况下可以浮动的时间。

*

*

算法原理-前导图(PDM)法:

对于活动的最早开始和最早结束时间,采用正推法计算,其算法如下所示:

1.将第一个活动的最早开始时间设置为1.

2.在活动的最早开始时间上加上其工期,得到活动的最早结束时间。

3.根据该活动与后置活动的逻辑关系,计算后置活动应该的最早开始时间,并与其已有的最早开始时间对比,如果其后置活动还没有设置最早开始时间,则将此时间设为其最早开始时间,如果此时间早于其后置活动已有的最早开始时间,则保留后置活动的原有最早开始时间,如果此时间迟于其后置活动已有的最早开始时间,则将此时间设置为后置活动的最迟开始时间。

4.重复步骤2和3,直到所有活动的时间被计算完为止。

对于以上所示的最早时间的计算过程,可以以公式的形式表示如下:

当活动间的逻辑关系为SS,则计算如下

ESj=max{ ESi + STS}

当活动间的逻辑关系为FS,则计算如下

ESj= max{ESi+ Di+ FTS}

当活动间的逻辑关系为FF,计算如下

ESj= max{ESi+ Di - Dj +FTF}

当活动间的逻辑关系为SF,计算如下

ESj=max{ ESi - Dj +STF}

在计算出各个活动的最早开始和结束时间之后,就可以计算活动的自由时差,在计算前导图(PDM)的自由时差时应注意,由于引入了多种逻辑关系,并且活动间可以存在延时,所以其计算方法与箭线图(ADM)的计算方法不一样。

对于前导图(PDM)的活动间,除了延时还可以存在时间间隔(LAG),一般可以按照下面的方式计算。

当活动间的逻辑关系为SS,则计算如下

LAGi-j= ESj- ESi- STS

当活动间的逻辑关系为FS,则计算如下

LAGi-j= ESj- EFi- FTS

当活动间的逻辑关系为FF,计算如下

LAGi-j= EFj- EFi- FTF

当活动间的逻辑关系为SF,计算如下

LAGi-j= EFj- ESi- STF

则对于任意一个活动,其自由时差为

FFi=min{ LAGi-j}

最后一个活动的自由时差为0.

对于总时差,终点节点的总时差为0,对于其它任意一个节点,总时差按照下式进行计算

TFi=min{TFj+ LAGi-j}

对于任意一个活动的最晚开始时间可以由其最早开始时间加上总时差得到,同样,其最晚开始时间可以由最早结束时间加上其总时差得到,公式表示如下

LSi=ESi+TFi

LFi=EFi+TFi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值