CN102945516B - 多级网络计划的进度分析方法 - Google Patents

多级网络计划的进度分析方法 Download PDF

Info

Publication number
CN102945516B
CN102945516B CN201210399362.3A CN201210399362A CN102945516B CN 102945516 B CN102945516 B CN 102945516B CN 201210399362 A CN201210399362 A CN 201210399362A CN 102945516 B CN102945516 B CN 102945516B
Authority
CN
China
Prior art keywords
plan
start time
time
node
expection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210399362.3A
Other languages
English (en)
Other versions
CN102945516A (zh
Inventor
陈凡
胡杨博
王学敏
王泉泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shenzhou Aerospace Software Technology Co.,Ltd.
Original Assignee
BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd filed Critical BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority to CN201210399362.3A priority Critical patent/CN102945516B/zh
Publication of CN102945516A publication Critical patent/CN102945516A/zh
Application granted granted Critical
Publication of CN102945516B publication Critical patent/CN102945516B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明基于多级网络计划模型公开了一种多级网络计划的进度分析方法,该方法首先建立了多级网络计划模型,然后进行以下步骤:1)提取多级网络计划;2)设置计划的前后置关系;3)设置计划任务模式;4)进行环路检测,检测计划之间的前后置关系是否形成环路;5)执行进度计算;6)记录进度计算结果。本发明以每条计划的计划开始时间、计划完成时间和计划工期为基础,根据计划之间的前后置关系和父子约束,计算出每条计划的期望开始时间、期望完成时间以及计划工期,以此为基础,用户可以寻找关键路径,系统地分析项目的最长工期、按时完成项目的概率等重要指标,从而,利用网络优化方法,达到节约成本、缩短工期的目的。

Description

多级网络计划的进度分析方法
技术领域
本发明涉及一种多级网络计划的进度分析方法。
背景技术
众所周知,航天型号工程是一项协作关系十分复杂、风险控制难度很大的群管理工程项目。随着我国航天事业的蓬勃发展,工程规模越发复杂,制约项目的因素愈来愈多,通过细化管理、寻求效益的压力愈来愈大。在这种情况下,如何顺利推进项目进度,使项目周密地控制在计划范围以内,保证项目“更快、更好”地实现目标,是一个急待解决的问题。目前,项目管理软件市场上,使用较多的是Primavera公司的P3,P6,微软公司的Project等。但在进度计算方面,P3,P6尚不支持多级网络计划的进度计算,Project只适合中小型项目管理,因此,在某些方面并不能满足航天工程项目的应用需求。而在多数项目管理软件中,甘特图以其容易理解、作图方便的特点得到了普遍应用。但是,其带有明显的计划性和主观性,难以表现大型复杂项目的全貌,不能清楚地表示活动之间的依赖性,也不能表示个别活动在项目中的相对重要性,因此其应用受到一定限制。如何突破以上限制,找到符合航天工程项目管理特点的、具有较强预测和协调能力的进度计算方法,成为一种挑战。
发明内容
为解决上述问题,本发明提出一种多级网络计划的进度分析方法,它根据计划之间的前后置关系和父子约束,计算出每条计划的期望开始时间、期望完成时间以及计划工期,以此为基础,用户可以寻找关键路径,系统地分析项目的最长工期、按时完成项目的概率等重要指标,从而,利用网络优化方法,达到节约成本、缩短工期的目的,并支持大规模的企业级应用。
为实现上述目的,本发明采用的技术方案如下:
一种多级网络计划的进度分析方法,其首先建立多级网络计划模型,然后进行以下步骤:
1)提取多级网络计划;
2)设置计划的前后置关系;
3)设置计划任务模式;
4)进行环路检测,检测计划之间的前后置关系是否形成环路;
5)执行进度计算;
6)记录进度计算结果。
本发明基于多级网络计划模型公开了一种多级网络计划的进度分析方法,它以每条计划的计划开始时间、计划完成时间和计划工期为基础,根据计划之间的前后置关系和父子约束,计算出每条计划的期望开始时间、期望完成时间以及计划工期,以此为基础,用户可以寻找关键路径,系统地分析项目的最长工期、按时完成项目的概率等重要指标,从而,利用网络优化方法,达到节约成本、缩短工期的目的。在此方法的基础上,通过应用自主研发的计算分析引擎和集成第三方图形化展示控件,基于神舟软件的AVPLAN项目管理平台,实现了网络计划分析功能,并支持大规模的企业级应用。
其有益效果是:
1.建立了多级网络计划模型,并在其基础上给出了多级网络计划的环路定义。
2.基于环路的定义,给出了环路检测方法和实现,通过优化,使其具有线性复杂度。
3.基于多级网络计划模型,提出了多级网络计划的进度计算的方法和实现,通过优化,使其具有线性复杂度,以支持大规模企业级应用。
附图说明
图1为父子关系图;
图2为前后置关系图;
图3为具有父子关系的有向图
图4为直接成环示意图;
图5为父子成环示意图;
图6为父子后置成环示意图;
图7为递归的父子后置成环示意图。
具体实施方式
本发明基于多级网络计划模型公开了一种多级网络计划的进度分析方法,它以每条计划的计划开始时间、计划完成时间和计划工期为基础,根据计划之间的前后置关系和父子约束,计算出每条计划的期望开始时间、期望完成时间以及计划工期,以此为基础,用户可以寻找关键路径,系统地分析项目的最长工期、按时完成项目的概率等重要指标,从而,利用网络优化方法,达到节约成本、缩短工期的目的。在此方法的基础上,通过应用自主研发的计算分析引擎和集成第三方图形化展示控件,基于神舟软件的AVPLAN项目管理平台,实现了网络计划分析功能,并支持大规模的企业级应用。
本发明首先建立多级网络计划模型,然后进行以下步骤:
1)提取多级网络计划;
2)设置计划的前后置关系;
3)设置计划任务模式;
4)进行环路检测,检测计划之间的前后置关系是否形成环路;
5)执行进度计算;
6)记录进度计算结果。
在所述步骤1)中,以大型项目为中心,按执行任务的单位的隶属层次,以自上而下的形式,对大型项目进行细化分解,直至将一个大型项目按照其内在结构或实施过程的顺序分解为相对独立、内容单一、便于核算和检查的工作单元,从而形成一棵工作分解结构树,抽取用户信息系统中的计划数据,作为计算的基础数据。
在所述步骤3)中,任务模式包含手动和自动两种,手动模式是指将计划的期望开始时间、期望完成时间和期望工期初始化为计划开始时间、计划完成时间和计划工期,且进度计算过程中不会依据“前后置关系”更改计划的期望开始时间、期望完成时间和期望工期;而自动模式是指在进度计算过程中,计划的期望开始时间、期望完成时间和期望工期会依据任务间的前后置关系和父子约束进行联动变化。
在所述步骤4)中,环路检测进一步包括以下步骤:
4.1)执行“向后搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向后搜索”过程的节点集合relationFindMap;
4.2)执行“向上搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向上搜索”过程的节点的集合parentFindMap;
4.3)执行“向下搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向下搜索”过程的节点的集合childFindMap;
4.4)检测环路,记录环路的集合cycleLoopList。
所述执行“向后搜索”过程的详细步骤是:
4.1.1)当前节点入栈S;
4.1.2)遍历当前节点的直接后置节点X,若遍历完毕,转到4.1.8),否则继续下面的步骤;
4.1.3)若X已存在于栈S中,说明存在环路,转到4.1.7),否则继续下面的步骤;
4.1.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.1.5)如果集合parentFindMap不包含X,执行“向上搜索”过程,参数为X的内部唯一标识iid;
4.1.6)如果集合childFindMap不包含X,执行“向下搜索”过程,参数为X的内部唯一标识iid,转到4.1.2);
4.1.7)记录环路到集合cycleLoopList;
4.1.8)当前节点从栈S中弹出,并把当前节点放入集合relationFindMap中。
所述执行“向上搜索”过程的详细步骤是:
4.2.1)当前节点入栈S;
4.2.2)获得当前节点的直接父节点X;
4.2.3)若X存在于栈S中,说明存在环路,转到4.2.6);
4.2.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.2.5)如果集合parentFindMap不包含X,执行“向上搜索”过程,参数为X的内部唯一标识iid;转到4.2.7);
4.2.6)记录环路到集合cycleLoopList;
4.2.7)当前节点从栈S中弹出,并把当前节点放入集合parentFindMap中。
所述执行“向下后搜索”过程的详细步骤是:
4.3.1)当前节点入栈S;
4.3.2)遍历当前节点的直接子节点X,若遍历完毕,转到4.3.7);
4.3.3)若X已存在于栈S中,说明存在环路,转到4.3.6);
4.3.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.3.5)如果集合childFindMap不包含X,执行“向下搜索”过程,参数为X的内部唯一标识iid;转到4.3.7);
4.3.6)记录环路到集合cycleLoopList;
4.3.7)当前节点从栈S中弹出,并把当前节点放入集合childFindMap中。
所述检测环路的详细步骤是:
4.4.1)从记录所有计划前后置关系的集合relationList中提取具有后置任务的计划的集合,记为A;
4.4.2)遍历计划集合A中的计划节点X,若遍历完毕,转到4.4.5),否则继续下面的步骤;
4.4.3)若记录执行过“向后搜索”过程的节点集合集合relationFindMap中不包括X,则对于X节点执行“向后搜索”过程,参数为X的iid;否则,转到4.4.2);
4.4.4)把当前节点X放入集合relationFindMap中,转到4.4.2);
4.4.5)返回环路集合cycleLoopList。
在所述步骤5)中,进度计算依据计划之间的前后置关系和父子约束,以计划开始时间、计划完成时间及计划工期为基础,计算出每条计划的预期开始时间、预期完成时间及预期工期;
在计算过程中遵循以下规则,其中:MAX()为取集合中元素的最大值,MIN()为取集合中元素的最小值,A→B表示把A赋值给B;
每条计划预期开始时间、预期完成时间及预期工期初始化过程为:计划开始时间→预期开始时间,计划完成时间→预期完成时间,计划工期→预期工期;
对于作业任务t,计算规则为:MAX({time|time=t的直接前置任务的预期完成时间或t的父任务的直接前置任务的预期完成时间})+1天→t的预期开始时间,t的预计工期不作变化,t的预期开始时间+t的预期工期→t的预期完成时间;
对于摘要任务z,计算规则为:MIN({time|time=z子任务的预期开始时间})→z的预期开始时间,MAX({time|time=z子任务的预期完成时间})→z的预期完成时间,z的预期完成时间-z的预期开始时间→z的预期工期;
执行进度计算进一步包括以下步骤:
5.1)遍历计划集合taskList中的计划节点X,若遍历完毕,则转到5.3),否则继续下面的步骤;
5.2)对于X节点执行“任务进度计算”过程,参数为X的内部唯一标识iid,转到5.1);
5.3)返同进度计算结果。
所述“任务进度计算”过程的详细步骤是:
5.2.1)如果nodeMap包含当前计划,结束该过程;
5.2.2)如果当前计划是摘要计划,转到5.2.7);否则继续执行下面的步骤;
5.2.3)执行“计算期望开始时间”过程,参数为当前计划iid,得到期望开始时间startTime1;
5.2.4)对于当前计划的父计划X执行“计算期望开始时间”过程,参数为X的内部唯一标识iid,得到一个“期望开始时间”的结果集R,MAX(R)→startTime2;
5.2.5)取startTime1和startTime2中较大的作为本计划的“期望开始时间”;
5.2.6)按照“作业计划工期不变原则”,期望开始时间+期望工期→期望结束时间,转到5.2.10);
5.2.7)遍历当前计划的所有子节点child,若遍历完毕,则转入5.2.9),否则继续下面的步骤;
5.2.8)若child不包含在集合nodeMap中,执行过程“任务进度计算”,参数为child的内部唯一标识iid;
5.2.9)从集合nodeMap中获得其所有子节点的“期望开始时间”,选取最小的为其“期望开始时间”;从集合nodeMap中获得其所有子节点的“期望结束时间”,选取最大的为其“期望结束时间”;
5.2.10)将计算结果存储到集合nodeMap中,结束过程;
上述“计算期望开始时间”过程的详细步骤是:
5.2.3.1)如果nodeMap包含当前计划,直接返同当前计划“期望开始时间”,结束过程;
5.2.3.2)遍历该计划所有直接前置节点X,若遍历结束,则转入5.2.3.4),否则继续下面的步骤;
5.2.3.3)对于每一个X,如果不包含在nodeMap集合中,执行过程“任务进度计算”,参数为X的内部唯一标识iid;
5.2.3.4)获取当前计划所有直接前置节点的“期望开始时间”集合T,MAX(T)+1天→期望开始时间t,返回期望开始时间t。
下面结合附图详细说明。
先介绍多级网络计划模型。在建立多级网络计划模型之前,先定义计划之间的相互关系,通过归纳,计划之间存在两种关系:父子关系和前后置关系,下面给出这两种关系的定义。
父子关系:两条计划A和B,如果计划A是B的上级计划,或者A是B的下级计划,则A、B两条计划拥有父子关系,称A是B的父计划或子计划。父子关系具有传递性,比如A是B的父,B是C的父,则A是C的父,C是A的子。我们图1表示父子关系,其中◇指向的是父,即A是B的父。注:本文中的“父”包含图论中的“父亲”和“祖先”,图论中的“父亲节点”,本文称为“直接父节点”。
前后置关系:它是计划之间的一种搭接关系,即计划A开始或完成一段时间后计划B才能开始或完成,则称A和B具有前后置关系。它包含四种逻辑关系:完成-开始、开始-开始、完成-完成和开始-完成。为了化繁为简,本文只选取四种逻辑关系之一“完成-开始”,简化的给出“前后置关系”的定义:设有两条计划A和B,只有计划A完成后,计划B才有可能开始执行,则计划A、B具有前后置关系,A为B的前置任务,B为A的后置任务。“前后置关系”具有传递性,比如A是B的前置任务,B是C的前置任务,则A是C的前置任务,C是A的后置任务。我们用单向箭头表示前后置关系,箭头指向的是后置任务,如图2所示,A是B的前置任务。如果A、B相邻,A是B的前置任务,我们称A为B的“直接前置任务”,B为A的“直接后置任务”。
航天型号项目经过逐级编制后形成一个多级网络计划。这个多级网络计划可以抽象为一个具有父子关系和前后置关系的有向图,如图3所示,它即为我们建立的多级网络计划模型。在此模型的基础上,我们给出一种多级网络计划的进度分析方法,其步骤如下。
步骤1.提取多级网络计划。
实施计算或分析之前,获得基础数据是必须的。航天型号项目计划,以产品研制为中心,按集团公司-研究院-研究所(事业部、厂)的层次,以自上而下的形式,对型号研制任务进行细化分解,直至将一个大型项目按照其内在结构或实施过程的顺序分解为相对独立、内容单一、便于核算和检查的工作单元,从而形成一棵工作分解结构(WBS)树,以便进行进度管理。我们将抽取用户信息系统中的型号计划数据到进度计算区,作为计算的基础数据。
步骤2.设置计划的前后置关系
任务“前后置关系”的存在是因为项目中的任务很少是同时发生的。通常,有些任务必须在其他任务开始之前开始或完成。而这种关系恰恰是衡量项目真实长度的关键因素。一个任务可以有多个前置任务和后置任务。设置任务的前后置关系不仅是进行进度计算的基础,而且可以使用户更直观地把握项目任务进程,判断项目工期,提高按时完成项目的效率。
步骤3.设置计划任务模式
任务模式包含手动和自动两种,手动模式是指将计划的期望开始时间、期望完成时间和期望工期初始化为计划开始时间、计划完成时间和计划工期,且进度计算过程中不会依据“前后置关系”更改计划的期望开始时间、期望完成时间和期望工期;而自动模式是指在进度计算过程中,计划的期望开始时间、期望完成时间和期望工期会依据任务间的前后置关系和父子约束进行联动变化。
通俗地说,手动模式、自动模式的应用是为了区分在进度计算过程中后置任务是否受前置任务的影响,以满足不同状态计划或不同应用场景的需要。例如,处于“已完成”或“已挂起”状态的计划一般是不需要根据前后置关系计算它的期望开始时间、期望完成时间和期望工期的,所以可以设为手动模式。对于手动模式、自动模式可以对单个任务进行设置,也可以对所有计划一起设置。
步骤4.环路检测。
在进行进度计算之前,要保证计划之间的前后置关系没有形成环路,否则,会造成进度计算的死锁。
首先,在抽象出来的具有父子关系的有向图中,给出环路的定义。
环路定义:设在一个具有父子关系的有向图中,存在一条从节点a到节点b的有向边,即a是b的前置任务,由此形成两个集合A和B。集合A包括节点a和与a具有父子关系的节点。集合B的形成是一个不断扩张的过程,扩张有两种方式:“直接后置节点”方式和“父子节点”方式。“直接后置节点”方式为将已有节点的直接后置节点加入集合的形式;“父子节点”方式为将已有节点的父子节点加入集合的形式。扩张步骤如下
(1)初始化集合B为空集。
(2)在集合B中新加入节点b,加入方式为“直接后置节点”方式。
(3)判断集合B是否有新加入的节点,如果有,则继续;如果没有,转到(5)。
(4)对于每个新加入的节点X,如果X是通过“直接后置节点”方式加入集合B的,则把X的父子节点(具有父子关系的所有节点,包含祖孙节点)和直接后置节点加入集合B;如果X是通过“父子节点”方式加入集合B的,则把X的直接后置节点加入到集合B。然后,转到(3)。
(5)返同集合B,结束扩张。
如果集合B与集合A有非空交集,则该图中存在一条包含A、B节点的环路。
以上给出的是环路形式化的定义,它主要包括以下几种情况:
(1)直接成环,如图4中A是B的前置任务,B同时又是A或A的父子节点的前置任务
(2)父子成环,如图5,A和B之间具有父子关系,同时它们又具有前后置关系。
(3)父子后置成环,如图6,A是B的前置任务,B的父子节点F的后置任务G又是A或A的父子节点的前置任务。
(4)递归的父子后置成环,如图7,在(3)的基础上,将节点G迭代为G的父子节点R,R又是A或A的父子节点的前置任务,所以成环。而R又可以迭代R的后置节点P,P又可迭代其父子节点,以此迭代下去,直至找不到后置节点或父子节点为止,只要存在一个节点是A或A的父子节点的前置任务,就意味着环路的存在。
依据环路的定义,基于深度优先遍历思想,我们给出了环路检测算法,它主要包括3个递归过程,分别为:<向后搜索>,<向上搜索>,<向下搜索>。它们共用的数据结构有:栈S,记录完成了<向后搜索>过程的节点集合relationFindMap,记录完成了<向上搜索>过程的节点的集合parentFindMap,记录完成了<向下搜索>过程的节点的集合childFindMap和记录环路的集合cycleLoopList。
过程1:向后搜索
输入:计划节点P的唯一标识,即其iid(计划的内部id)
说明:判断环路是否存在,并对输入节点P的直接后置节点分别执行<向后搜索>,<向上搜索>,<向下搜索>过程。
(1)输入节点P入栈S;
(2)遍历P的直接后置节点X,若遍历完毕,转到(8),否则继续下面的步骤;
(3)若X已存在于栈S中,说明存在环路,转到(7),否则继续下面的步骤;
(4)如果集合relationFindMap不包含X,执行<向后搜索>过程,参数为X的iid;
(5)如果集合parentFindMap不包含X,执行<向上搜索>过程,参数为X的iid;
(6)如果集合childFindMap不包含X,执行<向下搜索>过程,参数为X的iid,转到(2);
(7)记录环路到集合cycleLoopList;
(8)输入节点P从栈S中弹出,并把P放入集合relationFindMap中。
过程2:向上搜索
输入:计划节点P的唯一标识,即其iid(计划的内部id)
说明:判断环路是否存在,并对输入节点P的直接父亲节点分别执行<向后搜索>,<向上搜索>过程。
(1)计划节点P入栈S;
(2)获得P的直接父节点X;
(3)若X存在于栈S中,说明存在环路,转到(6);
(4)如果集合relationFindMap不包含X,执行<向后搜索>过程,参数为X的iid;
(5)如果集合parentFindMap不包含X,执行<向上搜索>过程,参数为X的iid;转到(7);
(6)记录环路到集合cycleLoopList;
(7)计划节点P从栈S中弹出,并把计划节点P放入集合parentFindMap中。
过程3:向下搜索
输入:计划节点P的唯一标识,即其iid(计划的内部id)
说明:判断环路是否存在,并对输入节点P的直接子节点分别执行<向后搜索>,<向下搜索>过程。
(1)计划节点P入栈S;
(2)遍历计划节点P的直接子节点X,若遍历完毕,转到(7);
(3)若X已存在于栈S中,说明存在环路,转到(6);
(4)如果集合relationFindMap不包含X,执行<向后搜索>过程,参数为X的iid;
(5)如果集合childFindMap不包含X,执行<向下搜索>过程,参数为X的iid;转到(7);
(6)记录环路到集合cycleLoopList;
(7)计划节点P从栈S中弹出,并把计划节点P放入集合childFindMap中。
环路检测算法:
输入:所有需要进度计算的计划集合taskList(包含了计划之间的父子关系),记录所有计划前后置关系的集合relationList。
输出:所有环路的集合cycleLoopList。
算法描述:
(1)遍历集合relationList,基于每个关系元素,提取具有后置任务的计划的集合,记为A;
(2)遍历计划集合A中的计划节点X,若遍历完毕,转到(5),否则继续下面的步骤;
(3)若集合relationFindMap中不包括X,则对于X节点执行<向后搜索>过程,参数为X的iid;否则,转到(2);
(4)把当前节点X放入集合relationFindMap中,转到(2);
(5)返同环路集合cycleLoopList。
值得说明的是,我们通过对集合relationFindMap,parentFindMap和childFindMap的维护,有效避免了对相同节点的重复搜索,从而降低了算法的复杂度。
步骤5.依据规则执行进度计算
完成了环路检测步骤,若系统中不存在环路,便可进行进度计算步骤。本发明的进度计算主要是依据计划之间的前后置关系和父子约束,以计划开始时间、计划完成时间及计划工期为基础,计算出每条计划的预期开始时间、预期完成时间及预期工期,并将计算结果提交给用户的过程。
在计算过程中总体上必须遵循以下规则,其中MAX()为取集合中元素的最大值,MIN()为取集合中元素的最小值,A→B表示把A赋值给B。
(1)每条计划预期开始时间、预期完成时间及预期工期初始化过程为:计划开始时间→预期开始时间,计划完成时间→预期完成时间,计划工期→预期工期。
(2)对于作业任务t,计算规则为:MAX({time|time=t的直接前置任务的预期完成时间或t的父任务(包括t的父亲和祖先)的直接前置任务的预期完成时间})+1天→t的预期开始时间,t的预计工期不作变化,t的预期开始时间+t的预期工期→t的预期完成时间。
(3)对于摘要任务z,计算规则为:MIN({time|time=z子任务(包括z的子孙节点)的预期开始时间})→z的预期开始时间,MAX({time|time=z子任务(包括z的子孙节点)的预期完成时间})→z的预期完成时间,z的预期完成时间-z的预期开始时间→z的预期工期。
根据进度计算的计算规则,给出其算法实现,它主要包括两个过程:<任务进度计算>和<计算期望开始时间>,它们公用的数据结构是公共集合nodeMap,这是一个哈希表,包括键值对的映射,key(键)为计划节点的唯一标识,即iid(内部id),value(值)为该计划进度计算的结果,这个集合用于存储进度计算的结果。
过程1:任务进度计算
输入:计划节点P的唯一标识,即其iid;
说明:该过程计算计划节点P的期望开始时间,期望结束时间和期望工期,将结果存储在集合nodeMap中。
(1)如果nodeMap包含计划节点P,结束该过程;
(2)如果计划节点P是摘要计划,转到(7);否则(该计划为作业计划),继续执行下面的步骤;
(3)执行过程<计算期望开始时间>,参数为计划节点Piid,得到期望开始时间startTime1;
(4)对于计划节点P的父计划X(包含它的父亲和祖先计划)分别执行过程<计算期望开始时间>,参数为X的iid,得到一个“期望开始时间”的结果集R,MAX(R)→startTime2;
(5)取startTime1和startTime2中较大的作为计划节点P的“期望开始时间”;
(6)按照“作业计划工期不变原则”,P的期望开始时间+P的期望工期→P的期望结束时间,转到(10);
(7)遍历计划节点P的所有子节点child,若遍历完毕,则转入(9),否则继续下面的步骤;
(8)若child不包含在集合nodeMap中,执行过程<任务进度计算>,参数为child的iid;
(9)从集合nodeMap中获得计划节点P所有子节点的“期望开始时间”,选取最小的为其“期望开始时间”;从集合nodeMap中获得其所有子节点的“期望结束时间”,选取最大的为其“期望结束时间”;
(10)将计算结果存储到集合nodeMap中,结束过程。
过程2:计算期望开始时间
输入:计划节点P的唯一标识,即其iid;
说明:该过程是基于计划节点P的直接前置节点,计算计划节点P的期望开始时间;
(1)如果nodeMap包含计划节点P,直接返同当前计划“期望开始时间”,结束过程;
(2)遍历计划节点P所有直接前置节点X,若遍历结束,则转入(4),否则继续下面的步骤;
(3)对于每一个X,如果不包含在nodeMap集合中,执行过程<任务进度计算>,参数为X的iid;
(4)获取计划节点P的所有直接前置节点的“期望开始时间”集合T,MAX(T)+1天→期望开始时间t,返同期望开始时间t。
进度计算算法:
说明:在计算之前会将手动模式的计划都添加到集合nodeMap中,以避免更改这些计划的期望时间和期望周期。
输入:所有需要进度计算的计划集合taskList(包含父子关系),记录计划前后置关系的集合relationList,公共集合nodeMap
输出:进度计算后的结果
算法描述:
(1)遍历计划集合taskList中的计划节点X,若遍历完毕,则转到(3),否则继续下面的步骤;
(2)对于X节点执行<任务进度计算>过程,参数为X的iid,转到(1);
(3)返同进度计算结果。
步骤6.记录进度计算结果
记录进度计算结果有两种策略,根据用户的不同需求可以定制不同的策略。
策略1:当用户点击保存按钮时,将进度计算所算出的结果保存在每条计划的预期开始时间、预期完成时间及预期工期字段,利用“比较甘特图”形式显示出它们与计划开始时间、计划结束时间和计划工期这两组时间之间的差异。
策略2:当用户点击保存按钮时,将计算结果中每条计划的预期开始时间、预期完成时间及预期工期直接覆盖该计划的计划开始时间、计划完成时间及计划工期,所以此时系统必须依据计划状态(即项目管理系统中计划的修改原则)判定是否能直接应用进度计算的结果,对于不能直接应用进度计算结果的计划必须依据项目管理系统的计划调整原则,发起相应的申请调整流程。
应用效果:
本文提出的多级网络计划的进度分析方法,已经在项目管理软件AVPLAN企业版3.3中得到应用,并在航天一院、中电29所得到用户较高的评价。实践表明网络计划功能具有较强的计划监控和协调功能,能够很好地满足型号研制过程中大型工程项目的多级网络计划分析与动态调整计划的业务需求;在项目整个实施过程,能够严格管控项目进度,从而,大大地缩短工期、提高效率,降低费用,对保障项目研制进度,提高项目质量起到了积极的促进作用。
上述的实施例并不对本发明所要求的保护范围构成任何形式的限制,本发明的权利要求书覆盖了所有的修改和变更,因此,针对上述实施例做出种种修改和变化均属于本发明的保护范围内。

Claims (3)

1.一种多级网络计划的进度分析方法,其特征在于:
首先建立多级网络计划模型,然后进行以下步骤:
1)提取多级网络计划;
2)设置计划的前后置关系;
3)设置计划任务模式;
4)进行环路检测,检测计划之间的前后置关系是否形成环路;
5)执行进度计算;
6)记录进度计算结果;
在所述步骤4)中,环路检测进一步包括以下步骤:
4.1)执行“向后搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向后搜索”过程的节点集合relationFindMap;
4.2)执行“向上搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向上搜索”过程的节点的集合parentFindMap;
4.3)执行“向下搜索”过程,参数为当前节点的内部唯一标识iid,记录执行过“向下搜索”过程的节点的集合childFindMap;
4.4)检测环路,记录环路的集合cycleLoopList;
所述执行“向后搜索”过程的详细步骤是:
4.1.1)当前节点入栈S;
4.1.2)遍历当前节点的直接后置节点X,若遍历完毕,转到4.1.8),否则继续下面的步骤;
4.1.3)若X已存在于栈S中,说明存在环路,转到4.1.7),否则继续下面的步骤;
4.1.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.1.5)如果集合parentFindMap不包含X,执行“向上搜索”过程,参数为X的内部唯一标识iid;
4.1.6)如果集合childFindMap不包含X,执行“向下搜索”过程,参数为X的内部唯一标识iid,转到4.1.2);
4.1.7)记录环路到集合cycleLoopList;
4.1.8)当前节点从栈S中弹出,并把当前节点放入集合relationFindMap中;
所述执行“向上搜索”过程的详细步骤是:
4.2.1)当前节点入栈S;
4.2.2)获得当前节点的直接父节点X;
4.2.3)若X存在于栈S中,说明存在环路,转到4.2.6);
4.2.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.2.5)如果集合parentFindMap不包含X,执行“向上搜索”过程,参数为X的内部唯一标识iid;转到4.2.7);
4.2.6)记录环路到集合cycleLoopList;
4.2.7)当前节点从栈S中弹出,并把当前节点放入集合parentFindMap中;
所述执行“向下搜索”过程的详细步骤是:
4.3.1)当前节点入栈S;
4.3.2)遍历当前节点的直接子节点X,若遍历完毕,转到4.3.7);
4.3.3)若X已存在于栈S中,说明存在环路,转到4.3.6);
4.3.4)如果集合relationFindMap不包含X,执行“向后搜索”过程,参数为X的内部唯一标识iid;
4.3.5)如果集合childFindMap不包含X,执行“向下搜索”过程,参数为X的内部唯一标识iid;转到4.3.7);
4.3.6)记录环路到集合cycleLoopList;
4.3.7)当前节点从栈S中弹出,并把当前节点放入集合childFindMap中;
所述检测环路的详细步骤是:
4.4.1)从记录所有计划前后置关系的集合relationList中提取具有后置任务的计划的集合,记为A;
4.4.2)遍历计划集合A中的计划节点X,若遍历完毕,转到4.4.5),否则继续下面的步骤;
4.4.3)若记录执行过“向后搜索”过程的节点集合relationFindMap中不包括X,则对于X节点执行“向后搜索”过程,参数为X的iid;否则,转到4.4.2);
4.4.4)把当前节点X放入集合relationFindMap中,转到4.4.2);
4.4.5)返回环路集合cycleLoopList;
在所述步骤5)中,进度计算依据计划之间的前后置关系和父子约束,以计划开始时间、计划完成时间及计划工期为基础,计算出每条计划的预期开始时间、预期完成时间及预期工期;
在计算过程中遵循以下规则,其中:MAX()为取集合中元素的最大值,MIN()为取集合中元素的最小值,A→B表示把A赋值给B;
每条计划预期开始时间、预期完成时间及预期工期初始化过程为:计划开始时间→预期开始时间,计划完成时间→预期完成时间,计划工期→预期工期;
对于作业任务t,计算规则为:MAX({time|time=t的直接前置任务的预期完成时间或t的父任务的直接前置任务的预期完成时间})+1天→t的预期开始时间,t的预计工期不作变化,t的预期开始时间+t的预期工期→t的预期完成时间;
对于摘要任务z,计算规则为:MIN({time|time=z子任务的预期开始时间})→z的预期开始时间,MAX({time|time=z子任务的预期完成时间})→z的预期完成时间,z的预期完成时间-z的预期开始时间→z的预期工期;
执行进度计算进一步包括以下步骤:
5.1)遍历计划集合taskList中的计划节点X,若遍历完毕,则转到5.3),否则继续下面的步骤;
5.2)对于X节点执行“任务进度计算”过程,参数为X的内部唯一标识iid,转到5.1);
5.3)返回进度计算结果;
所述“任务进度计算”过程的详细步骤是:
5.2.1)如果集合nodeMap包含当前计划,结束该过程,集合nodeMap用于存储计算计划节点的期望开始时间,期望结束时间和期望工期的结果;
5.2.2)如果当前计划是摘要计划,转到5.2.7);否则继续执行下面的步骤;
5.2.3)执行“计算期望开始时间”过程,参数为当前计划iid,得到期望开始时间startTime1;
5.2.4)对于当前计划的父计划X执行“计算期望开始时间”过程,参数为X的内部唯一标识iid,得到一个“期望开始时间”的结果集R,MAX(R)→startTime2;
5.2.5)取startTime1和startTime2中较大的作为本计划的“期望开始时间”;
5.2.6)按照“作业计划工期不变原则”,期望开始时间+期望工期→期望结束时间,转到5.2.10);
5.2.7)遍历当前计划的所有子节点child,若遍历完毕,则转入5.2.9),否则继续下面的步骤;
5.2.8)若child不包含在集合nodeMap中,执行过程“任务进度计算”,参数为child的内部唯一标识iid;
5.2.9)从集合nodeMap中获得其所有子节点的“期望开始时间”,选取最小的为其“期望开始时间”;从集合nodeMap中获得其所有子节点的“期望结束时间”,选取最大的为其“期望结束时间”;
5.2.10)将计算结果存储到集合nodeMap中,结束过程;
上述“计算期望开始时间”过程的详细步骤是:
5.2.3.1)如果nodeMap包含当前计划,直接返回当前计划“期望开始时间”,结束过程;
5.2.3.2)遍历该计划所有直接前置节点X,若遍历结束,则转入5.2.3.4),否则继续下面的步骤;
5.2.3.3)对于每一个X,如果不包含在nodeMap集合中,执行过程“任务进度计算”,参数为X的内部唯一标识iid;
5.2.3.4)获取当前计划所有直接前置节点的“期望开始时间”集合T,MAX(T)+1天→期望开始时间startTime,返回期望开始时间startTime。
2.如权利要求1所述的多级网络计划的进度分析方法,其特征在于:
在所述步骤1)中,以大型项目为中心,按执行任务的单位的隶属层次,以自上而下的形式,对大型项目进行细化分解,直至将一个大型项目按照其内在结构或实施过程的顺序分解为相对独立、内容单一、便于核算和检查的工作单元,从而形成一棵工作分解结构树,抽取用户信息系统中的计划数据,作为计算的基础数据。
3.如权利要求1所述的多级网络计划的进度分析方法,其特征在于:
在所述步骤3)中,任务模式包含手动和自动两种,手动模式是指将计划的期望开始时间、期望完成时间和期望工期初始化为计划开始时间、计划完成时间和计划工期,且进度计算过程中不会依据“前后置关系”更改计划的期望开始时间、期望完成时间和期望工期;而自动模式是指在进度计算过程中,计划的期望开始时间、期望完成时间和期望工期会依据任务间的前后置关系和父子约束进行联动变化。
CN201210399362.3A 2012-10-19 2012-10-19 多级网络计划的进度分析方法 Active CN102945516B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210399362.3A CN102945516B (zh) 2012-10-19 2012-10-19 多级网络计划的进度分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210399362.3A CN102945516B (zh) 2012-10-19 2012-10-19 多级网络计划的进度分析方法

Publications (2)

Publication Number Publication Date
CN102945516A CN102945516A (zh) 2013-02-27
CN102945516B true CN102945516B (zh) 2015-10-28

Family

ID=47728455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210399362.3A Active CN102945516B (zh) 2012-10-19 2012-10-19 多级网络计划的进度分析方法

Country Status (1)

Country Link
CN (1) CN102945516B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729748B (zh) * 2014-01-24 2017-03-29 北京神舟航天软件技术有限公司 基于多级网络计划的进度计算方法及其算法实现
CN104616098A (zh) * 2014-12-31 2015-05-13 国网山东省电力公司青岛供电公司 一种任务管理方法及系统
CN105045580A (zh) * 2015-06-30 2015-11-11 广州支点网络科技有限公司 一种复合行为驱动方法及装置
CN107230007A (zh) * 2016-03-23 2017-10-03 上海百姓网客齐集股份有限公司 目标任务量的预警系统及其方法
CN106779482A (zh) * 2017-02-17 2017-05-31 苏州大学 一种基于任务间优先关系约束的任务分配方法和系统
CN108960779A (zh) * 2018-07-04 2018-12-07 广东电网有限责任公司 电网工程管理方法
CN108985647B (zh) * 2018-07-27 2022-03-11 广船国际有限公司 一种项目计划的执行方法、装置、设备和存储介质
CN110334831B (zh) * 2019-03-26 2021-07-30 济南森坤科技有限公司 一种逐级控制项目组织多级计划体系定性工期优化方法
CN112184134B (zh) * 2019-07-02 2024-03-26 广联达科技股份有限公司 网络计划合理性评测维度设计法、评测方法、系统、装置
CN110378670B (zh) * 2019-07-17 2023-04-28 重庆大学 一种空间网络技术模型及其构建方法和应用
CN115080543A (zh) * 2022-06-30 2022-09-20 北京亚控科技发展有限公司 一种事件计划状态数字孪生方法、装置及设备
CN117273391A (zh) * 2023-11-07 2023-12-22 中航机载系统共性技术有限公司 一种复杂机载系统研制计划的管理方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101576980A (zh) * 2009-06-15 2009-11-11 用友软件股份有限公司 业务项目顺序的设置方法和装置
CN101788907A (zh) * 2010-01-04 2010-07-28 北京航空航天大学 组合服务精简测试用例的自动生成方法及装置
CN102523269A (zh) * 2011-12-08 2012-06-27 杭州电子科技大学 动态网络环境下高可靠性服务组合方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060265691A1 (en) * 2005-05-20 2006-11-23 Business Machines Corporation System and method for generating test cases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101576980A (zh) * 2009-06-15 2009-11-11 用友软件股份有限公司 业务项目顺序的设置方法和装置
CN101788907A (zh) * 2010-01-04 2010-07-28 北京航空航天大学 组合服务精简测试用例的自动生成方法及装置
CN102523269A (zh) * 2011-12-08 2012-06-27 杭州电子科技大学 动态网络环境下高可靠性服务组合方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
航天型号项目进度管理技术研究和系统实现;王俊;《中国优秀硕士学位论文全文数据库》;20080930;第17,20-22,58-61页 *

Also Published As

Publication number Publication date
CN102945516A (zh) 2013-02-27

Similar Documents

Publication Publication Date Title
CN102945516B (zh) 多级网络计划的进度分析方法
KR20190107117A (ko) 시스템들의 자동화 및 제어를 위한 인지 공학 기술을 위한 시스템 및 방법
CN102332125A (zh) 基于后继任务的工作流挖掘方法
CN104346143A (zh) 一种由ebom到mbom的数据转换方法
CN103607466B (zh) 一种基于云计算的广域多级分布式并行电网分析方法
CN105117421B (zh) 基于图结构匹配的社交网络分析方法
CN104123369A (zh) 一种基于图形数据库的配置管理数据库系统及实现方法
CN104361091A (zh) 一种大数据系统
CN114416855A (zh) 一种基于电力大数据的可视化平台及方法
CN109791492A (zh) 流水线相关树查询优化器和调度器
CN103729748A (zh) 基于多级网络计划的进度计算方法及其算法实现
CN104463355A (zh) 一种基于测试模型的小卫星测试规划系统
CN102799960B (zh) 面向数据模型的并行业务流程异常检测方法
Nagm-Aldeen et al. A literature review of business process modeling techniques
CN105404637A (zh) 数据挖掘方法和装置
CN102780766B (zh) 面向云制造的设计服务资源跨域组建方法
CN105184452B (zh) 一种适用于用电信息大数据计算的MapReduce作业依赖控制方法
CN106056299A (zh) 一种基于流程挖掘的决策支持方法及装置
Yang et al. Dynamic allocation for complex mobile crowdsourcing task with internal dependencies
CN101930566A (zh) 基于平行系统的水利实验模拟系统及实验模拟方法
CN104484230B (zh) 基于近数据计算原则的多卫星数据中心工作流调度算法
CN104331538A (zh) 基于模式指配的信息流程建模方法及系统
Szpyrka et al. Alvis language with time dependence
Balko et al. In-memory business process management
Li et al. Workflow scheduling algorithm based on control structure reduction in cloud environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee after: Beijing Shenzhou Aerospace Software Technology Co.,Ltd.

Address before: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee before: BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder