基于多级网络计划的进度计算方法及其算法实现的制作方法

文档序号:6536676阅读:160来源:国知局
基于多级网络计划的进度计算方法及其算法实现的制作方法
【专利摘要】本发明公开了一种基于多级网络计划的进度计算方法与算法实现,其特征在于:所述进度计算通常包含4个步骤,分别是:正向计算、反向计算、最终计算和计算关键路径;(1)正向计算;(2)反向计算;(3)最终计算;(4)计算关键路径,计算得到了每个任务最早开始、完成时间,最晚开始、完成时间,开始、完成时间,根据关键任务的定义计算得出关键任务,关键任务组成的路径即为关键路径。本发明包含任务依赖关系和任务限制类型约束的进度计算方法和易于计算机软件实现的算法描述,旨在解决用计算机软件编写进度计划、优化进度安排的技术问题。
【专利说明】基于多级网络计划的进度计算方法及其算法实现
【技术领域】:
[0001]本发明涉及一种公开了基于多级网络计划模型的进度计算方法和算法实现。
【背景技术】:
[0002]航天型号工程是一项协作关系十分复杂、风险控制难度很大的群管理工程项目,其项目计划经常达到成千上万条,在这种情况下,如何合理、高效的编写和优化进度计划,使项目周密地控制在计划范围以内,保证项目“更快、更好”地实现目标,显得尤为重要。随着计算机技术的发展,用计算机软件进行进度安排的优势越发明显。举个例子,如果要完成一个由100个左右的活动组成的项目的编制,一个人至少需要I个星期的时间,而计算机只需要几秒钟的时间。
[0003]航天型号项目进度计划一般以研制的产品为中心,按集团公司-研究院-研究所(事业部、厂)层次将研制过程中所应完成的工作自上而下逐级细化分解。通过工作分解结构(WBS)将项目按照其内在结构或实施过程的顺序进行逐层分解,直至相对独立、内容单一、便于核算和检查的工作单元,并建立相互间的逻辑关系,从而形成多级网络计划模型。
[0004]目前,项目管理软件市场上,使用较多的是Oracle Primavera的P3,P6,微软公司的Project等。但在进度计算方面,P3,P6尚不支持多级网络计划模型(不能在摘要任务之间或摘要任务与作业任务之间设置依赖关系),Project只适合中小型项目管理,并且其进度计算算法尚未公开。因此,在某些方面并不能满足航天工程项目的应用需求。本发明基于多级网络计划模型,提出了一种进度计算方法,并给出了算法实现,它在项目管理软件AVPLAN5.0中得到了应用和验证,旨在满足航天工程项目的应用需求。

【发明内容】

[0005]为解决现有技术的不足,本发明的目的在于提供一种基于多级网络计划模型的进度计算方法和算法实现,包含任务依赖关系和任务限制类型约束的进度计算方法和易于计算机软件实现的算法描述,旨在解决用计算机软件编写进度计划、优化进度安排的技术问题。
[0006]为了实现上述目标,本发明采用如下的技术方案:
[0007]—种基于多级网络计划的进度计算方法,其特征在于:所述进度计算通常包含4个步骤,分别是:正向计算、反向计算、最终计算和计算关键路径;
[0008](I)、正向计算
[0009]最早开始时间和最早完成时间是通过一个正向计算得出的;
[0010](2)、反向计算
[0011]最晚开始时间、最晚完成时间是通过一个反向计算得出的;
[0012](3)、最终计算
[0013]开始时间和完成时间是通过最终计算过程计算得出的;
[0014](4)、计算关键路径[0015]在(1)、(2)、(3)三个步骤中,计算得到了每个任务最早开始、完成时间,最晚开始、完成时间,开始、完成时间,根据关键任务的定义计算得出关键任务,关键任务组成的路径即为关键路径。
[0016]所述正向计算包括四个算法:正向计算算法、calculateTask函数、getT imeByFowardTasks 函数和 getTimeByParentFowardTasks 函数;
[0017]正向计算算法用于根据项目中任务之间的依赖关系,由前向后正推,计算项目各个任务的最早开始时间和最早完成时间;calculateTask函数用于计算指定任务的最早开始时间;getTimeByFowardTasks函数用于根据指定任务的前置任务计算得出该任务的候选最早开始时间;getTimeByParentFowardTasks函数用于据指定任务的父任务或祖先任务的前置任务计算得出的该任务的候选最早开始时间。
[0018]所述反向计算包括反向计算算法、calculateLastTime函数、getT imeBySubsequenceTasks 函数、getTimeByParentSubsequenceTasks 函数;
[0019]反向计算算法用于根据项目中任务之间的依赖关系,由后向前逆推,计算项目各个任务的最晚开始时间和最晚完成时间;calculateLastTime函数用于计算指定任务的最晚开始时间和最晚完成时间;getTimeBySubsequenceTasks函数用于根据指定任务的后置任务计算得出该任务的候选最晚开始时间;getTimeByParentSubsequenceTasks函数用于根据指定任务的父或祖先的后置任务计算得出的该任务的候选最晚开始时间。
[0020]所述最终计算包括最终计算算法和calculateExpectTask函数;
[0021]最终计算算法用于根据项目中任务之间的依赖关系,由前向后正推,利用正向计算和反向计算的结果计算项目各个任务的最终的开始时间和完成时间;calculateExpectTask函数用于计算指定任务的开始时间、完成时间。
[0022]所述关键路径包括关键路径算法,关键路径算法用于根据项目中任务的最早开始、完成时间,最晚开始、完成时间,开始、完成时间来确定关键任务。
[0023]在计算过程中,本发明抽象出进度计算的规则如下:
[0024]( I)计算起点和终点的选择:在进度计算过程中寻找计算的起点和终点、对起点进行初始化的策略是非常重要的。
[0025]在正向计算过程中我们选择没有前置任务的作业节点为起点,用它们的计划开始时间初始化其最早开始时间,用它们的计划完成时间初始化最早完成时间,计算的终点是没有后置任务的节点。
[0026]在反向计算过程中我们选择没有后置任务的作业节点为起点,用正向计算过程中计算出来的最大的最早完成时间去初始化它们的最晚完成时间,并依据工期不变原则计算相应的最晚开始时间,计算的终点是没有前置任务的节点。
[0027]在最终计算过程中我们选择没有前置任务的作业节点为起点,用它们的最早开始时间或最晚开始时间初始化其开始时间(受限制类型的影响),计算的终点是没有后置任务的节点。
[0028](2)依赖关系的继承和转换:父任务的依赖关系可以转换为其子任务的依赖关系,即如果父任务具有前置任务,则其所有子孙任务都具有相同的前置任务,如果父任务具有后置任务,则其所有子孙任务都具有相同的后置任务,这是一个递归的过程,关系的转换直至作业任务。[0029](3)依赖关系的继承和转换:父任务的依赖关系可以转换为其子任务的依赖关系,即如果父任务具有前置任务,则其所有子孙任务都具有相同的前置任务,如果父任务具有后置任务,则其所有子孙任务都具有相同的后置任务,这是一个递归的过程,关系的转换直至作业任务。
[0030](4)摘要任务时间的计算:摘要任务(WBS)时间的计算是对其子任务的时间的汇总。摘要任务的开始时间取其子任务开始时间的最小值,完成时间取其子任务完成时间的最大值;最早开始时间取其子任务最早开始时间的最小值,最早完成时间取其子任务最早完成时间的最大值;最晚开始时间取其子任务最晚开始时间的最小值,最晚完成时间取其子任务最晚完成时间的最大值。
[0031](5)作业任务时间的计算
[0032]进度计算中,对于作业任务来说,在保持作业任务工期不变的前提下,正向计算过程是通过前置任务的最早开始时间计算后置任务的最早开始时间,而反向计算是通过后置任务的最晚开始时间逆推前置任务的最晚开始时间,而最终计算是通过前置任务的开始时间计算后置任务的开始时间。通过总结不难发现,计算包含两种模式,一种是由前置任务的时间顺推后置任务的时间,另一种是通过后置任务的时间逆推前置任务的时间。这两种模式的计算策略在下面给出了说明,假设i是j的前置任务,我们用时间类型的代号加任务标识来表示任务该时间类型的值,比如ESj表示任务j的最早开始时间,时间类型代号参照开篇的术语解释。
[0033]由前置任务的时间顺推后置任务的开始时间的计算逻辑如表格2所示:
[0034]表格2顺推计算时间逻辑
[0035]
关系类型I计算公式
FS (完成-开始)~ESj=EFi+l天 SS (开始-开始) ESj=ESi FF (完成-完成)~ ESj=EF1-Dj+Ι 天 SF (开始-完成)~ESj=ES1-Dj
[0036]由后置任务的时间逆推前置任务的开始时间的计算逻辑如表格3所示:
[0037]表格3逆推计算时间逻辑
[0038]
关系类型I计算公式FS (完成-开始) LSi=LSj-DiSS (开始-开始) LSi=LSjFF (完成-完成) LSi=LFj-Di+!天
【权利要求】
1.一种基于多级网络计划的进度计算方法,其特征在于: 所述进度计算通常包含4个步骤,分别是:正向计算、反向计算、最终计算和计算关键路径; (1)、正向计算 最早开始时间和最早完成时间是通过一个正向计算得出的; (2)、反向计算 最晚开始时间、最晚完成时间是通过一个反向计算得出的; (3)、最终计算 开始时间和完成时间是通过最终计算过程计算得出的; (4 )、计算关键路径 在(1)、(2)、(3)三个步骤中,计算得到了每个任务最早开始、完成时间,最晚开始、完成时间,开始、完成时间,根据关键任务的定义计算得出关键任务,关键任务组成的路径即为关键路径。
2.根据权利要求1所述的基于多级网络计划的算法实现,其特征在于:所述正向计算包括正向计算算法、calculateTask函数、getTimeByFowardTasks函数和getTimeByParentFowardTasks 函数; 正向计算算法用于根据项目中任务之间的依赖关系,由前向后正推,计算项目各个任务的最早开始时间和最早完成时间; calculateTask函数用于计算指定任务的最早开始时间; getT imeByFowardTasks函数用于根据指定任务的前置任务计算得出该任务的候选最早开始时间; getT imeByParentFowardTasks函数用于据指定任务的父任务或祖先任务的前置任务计算得出的该任务的候选最早开始时间。
3.根据权利要求1所述的基于多级网络计划的算法实现,其特征在于:所述反向计算包括反向 计算算法、calculateLastTime 函数、getTimeBySubsequenceTasks 函数、getTimeByParentSubsequenceTasks 函数; 反向计算算法用于根据项目中任务之间的依赖关系,由后向前逆推,计算项目各个任务的最晚开始时间和最晚完成时间; calculateLastTime函数用于计算指定任务的最晚开始时间和最晚完成时间;getT imeBySubsequenceTasks函数用于根据指定任务的后置任务计算得出该任务的候选最晚开始时间; getT imeByParentSubsequenceTasks函数用于根据指定任务的父或祖先的后置任务计算得出的该任务的候选最晚开始时间。
4.根据权利要求1所述的基于多级网络计划的算法实现,其特征在于:所述最终计算包括最终计算算法和calculateExpectTask函数, 最终计算算法用于根据项目中任务之间的依赖关系,由前向后正推,利用正向计算和反向计算的结果计算项目各个任务的最终的开始时间和完成时间; calculateExpectTask函数用于计算指定任务的开始时间、完成时间。
5.根据权利要求1所述的基于多级网络计划的算法实现,其特征在于:所述关键路径包括关键路径算法,关键路径算法用于根据项目中任务的最早开始、完成时间,最晚开始、完成时间,开始、完成时间来确定`关键任务。
【文档编号】G06Q10/06GK103729748SQ201410032701
【公开日】2014年4月16日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】王学敏, 单承方, 李琳, 杨鸽 申请人:北京神舟航天软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1