资源多约束进度网络的风险评估

进修社 人气:2.07W

摘要:在项目管理中由于项目庞大、持续周期长、影响因素繁多,不可避免地会面对潜在的风险。本文对项目潜在的风险进行评估,让项目的管理者对项目有一个长远的认识,防范风险于未然。本文应用资源多约束下项目进度调度(resource-constrained project scheduling problem,RCPSP)问题模型,对进度风险评估系统进行了需求分析和模块划分,设计了系统的框架层次、数据库、资源多约束下的蒙式仿真算法,给出了依据仿真结果计算进度风险和成本风险的统计思路。

资源多约束进度网络的风险评估

关键词:进度风险评估;成本风险;资源多约束;蒙式仿真

引言

项目管理是通过项目经理和项目组织的努力,运用系统理论和方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目特定目标的管理方法体系。项目管理的对象是项目,即一系列的临时任务,它的目的是通过运用科学的项目管理技术,更好地实现项目目标。项目管理的职能与其它管理的职能是完全一致的,即是对组织的资源进行计划、组织、指挥、控制。资源是指项目所在的组织中可得到的、为项目所需要的那些资源,包括人员、资金、技术、设备等,在项目的管理中,时间是一种特殊的资源。项目管理的任务是对项目及其资源的计划、组织、协调、控制。

任何项目的策划和执行都包含大量不同的活动及各种人力、物力资源。资源是项目执行过程中不可缺少的重要组成部分,而这些资源的有效的可用量往往是有限的。有的资源是可循环利用的,而有些则是一次性的。如何以最佳方式安排执行项目中的各个活动,以使其顺利完成,就构成了资源受限下项目进度调度问题的基本概念。

资源约束下项目调度问题(resource-constrained project scheduling problem,RCPSP)是一类应用范围十分广泛的组合优化问题,它研究在资源稀缺的情况下满足资源的约束,合理安排任务的开始时间和结束时间,从而在资源最优利用的同时实现既定目标的最优化。它被证明是一种强NP难题。资源约束下项目调度问题模型丰富,根据资源类型和项目结构的不同可以分为众多种类,许多组合优化问题是RCPSP的特殊情形。例如作业车间(job shop)调度,流水车间(flow shop)调度等。此外RCPSP广泛存在于建筑工程,软件开发,飞机和轮船制造等单件或小批量生产方式的企业中。因此研究RCPSP具有重要的理论和现实意义,可以广泛应用于实际。

近年来,RCPSP得到了许多扩充。鉴于应用背景和目标函数的不同,RCPSP可扩展为时间/费用权衡问题(TCTP),资源水平问题(RLP)和净现值(NPV)问题等。进一步考虑不确定因素,又产生了随机调度问题。作为项目调度的有效工具,甘特图、关键路径法和计划评审技术已广泛应用于各种项目调度问题。在算法方面,尤其是求解算法(包括智能算法)得到了广泛而深入的讨论,同时得到了许多成功应用。

一、系统需求分析与设计

本文在功能方面,针对管理者的日常需求,将资源多约束下进度风险评估系统功能分为:项目管理,资源管理,项目网络图(任务属性设置),项目仿真,项目仿真版本管理等项功能。

项目管理:对项目的任务节点信息和节点之间的约束关系等进行记录和管理,并可以对项目进行资源分配。

资源管理:对资源的属性和数量等进行记录和管理。

项目网络图:展示项目各个任务节点之间的约束关系,形成网络图。可以对每个非概要任务节点进行任务属性的设置和资源需求的设置,为仿真进行准备。

项目仿真:对设置好任务节点属性的项目进行带资源约束的仿真或不带资源约束的仿真。

项目仿真版本管理:管理所有项目仿真好的版本.可以选择某个版本进行查看,也可以删除某个版本。

因此,本系统包括项目管理模块、项目网络图模块、仿真版本和新仿真模块、仿真结果模块、资源管理模块。

项目管理模块:提供了必要的项目管理及资源分配功能。用户可以对项目进行管理,例如,通过读人XML配置文件添加项目、修改项目描述、查看项目XML文件等功能。用户也可以将已经存在的资源分配给某一个具体项目,以便为有资源约束的仿真做准备。

项目网络图模块:展示项目的任务节点信息和它们的相互关系,以网络图的形式表示出来。用户可以通过点击某个具体节点设置它的属性(统计学分布、期望、方差等)和需求资源的情况,为带资源的仿真和不带资源的仿真做进一步准备。

仿真版本和新仿真模块:管理和显示已经存在的仿真版本和新建一个版本开始仿真。用户可以选择一个已经存在的仿真版本进行查看或者删除,也可以新建某个项目的一个版本,进行一定次数的带资源的仿真或不带资源的仿真。

仿真结果模块:展示某个版本的仿真结果,以图表的方式展现如关键路径、平均工期、任务关键路径概率、总工期区间分布、进度风险、成本风险、进度成本联合风险等信息。用户可以通过浏览这些图表形式的仿真结果,直观地了解系统对于项目的风险评估信息,方便地做出最有利的决策。

资源管理模块:管理和显示资源的相关信息,用户可以创建、修改、删除某个资源。也可以设置资源的相关属性(名称、数量、是非为消耗性资源等)。

二、大数据多约束进度风险评估算法

本算法的核心类似银行家算法,运用到了拓扑排序和队列的相关知识,其思路是:枚举出所有可能的全拓扑资源分配序列(按优先级剔除部分),然后对其逐一进行模拟比较,算出最优分配序列。在分配资源和计算节点工期的过程中,按照银行家算法的思想,节点在申请资源的时候直接申明所需的最大资源,而且项目尽量满足节点的申明,除非超过拥有资源的最大数量。这样使得至少有一个节点是出于就绪状态的,避免死锁。

具体步骤:

A.输入项目基本信息和结构(输入项目XML)。

B.输入项目资源信息

C.输入项目每个节点的统计学属性、优先级关系和资源需求。

D.按照优先级计算项目节点的全拓扑排序资源分配序列。

E.按顺序选择一个资源分配序列进行模拟。

F.将所有人度为零的节点加入等待队列。

G.按顺序给等待队列节点分配资源,如果节点资源满足则把它改为加入就绪队列并将其所有后继节点人度减一。

H.如果就绪队列不为空,则计算节点工期,按最小工期的`节点推进项目。否则说明没有就绪节点,本资源分配序列无法完成,返回E。

I.计算在等待队列的节点的等待资源时间。

J.计算完成节点的成本。

K.回收完成节点的资源,将其剔除就绪队列。

L.如果所有节点都已经完成则本资源分配序列结束,计算总工期。否则返回F。

M.如果所有资源分配序列都已经模拟过则算法结束,否则返回E。

N.输出任务等待的时间和等待的资源。

0.输出项目总工期和总成本。

算法流程图如图2所示。

设Sequence_List为资源分配序列数组,Sequence为资源分配序列,Wait List为等待队列,Ready_List为就绪队列,Task_List为节点列表。算法的伪代码可以表示为:

Foreach Sequence in Sequence_List

Foreach task in Task_ List

If (gree=0)then

Wait_(task) For i=l to th do

Forj=l to Wait_t do

If(Wait_t[j]!=Sequence[i])

Continue

If(allocateResource(Wait_t[j])=OK)

Ready_(task)

For k=l to h do

eed[k]-

Wait_ve(task)

If(Ready_List!=null)

minValue←Findmin(Ready_List)

Duration+=minValue;

Foreach task in Wait_List

time+=minValue

For i=l to Ready_t do

If(Ready_List[i]e<=minValue)

Mo ney+= getMo ney(Ready_List [i])

recycleRe source (Ready_List[i])

Ready_List[i]ve(task)

Else

Ready_List[i]e-=minValue

Else

Finish()

本系统的资源约束仿真算法还运用到了关键路径算法,它为资源约束仿真算法的子过程。其算法步骤如下: