基于动态计划的项目工期优化.docx
《基于动态计划的项目工期优化.docx》由会员分享,可在线阅读,更多相关《基于动态计划的项目工期优化.docx(12页珍藏版)》请在冰豆网上搜索。
基于动态计划的项目工期优化
基于动态计划的项目工期优化
摘要:
工期是工程项目的一个重要指标,如安在有限的资源下进行工期操纵、工期优化也是工程治理人员面临的一个难题。
此刻最经常使用的打算治理方式如CPM,能够通过计算得出项目的关键途径来操纵工程进度,可是当项目的关键途径长度大于项目估量工期时,就需要对项目的工期进行优化,而此刻并无一种方便通用的工期优化算法。
基于这一背景,结合运筹学动态计划的相关理论,本文给出一种基于动态计划的项目工期优化算法。
关键字:
CPM;关键途径;工期优化;优化算法
Methodofprojectperiodoptimizationbasedondynamicprogramming
Abstract:
Periodisanimportantindicatorofaproject,howtocontrolandoptimizetheperiodofaprojectwithlimitedresourcesisalsoaproblemfacedbyprojectmanagers.NowthemostcommonlyusedprojectmanagementmethodssuchasCPM(criticalpathmethod),cancontroltheperiodbycalculatingthecriticalpathproject.Whentheprojectcriticalpathlengthislongerthantheexpectedtimeoftheproject,projectperiodoptimizationisneeded,butnowwedon’thaveaconvenientandgeneralmethodtooptimizetheperiodofaproject.Basedonthisbackground.,combinedwiththetheoryofdynamicprogramminginoperationsresearch,amethodofprojectperiodoptimizationbasedondynamicprogrammingispresentedinthispaper.
Keywords:
CPM;criticalpath;projectoptimization;optimizealgorithm
1.绪论
问题的提出
在项目网路打算中,综合考虑任务之间的顺序约束条件,时刻约束条件等取得的项目最长任务序列,称为项目的关键路径[1]。
项目的关键路径是制约项目工期的最长路经。
当项目的关键路径长度大于项目估量时就需要对项目的工期进行优化,工期优化的要紧思想确实是对关键路径上的任务进行工期紧缩,因为对非关键路径上的任务紧缩不能达到缩短项目工期的目的[2]。
一样来讲任务的工期紧缩量跟紧缩代价是成正比的,而且所有关键路径任务上的时刻紧缩总量的限度为不改变原有关键路径的构成,项目的工期紧缩往往都是一个反复迭代的过程。
在简单的情况下,任务网络中只存在一条关键路径,如图1(a)所示;在复杂的情况下,任务网络中会存在多条关键路径,如图1(b)所示。
本文第一给出简单情况下的项目工期优化方式,然后在此算法基础上给出复杂情况下的项目工期优化策略。
研究背景
关于施工进度打算系统,不论设计新系统或改良原有系统,都需要提出许多方案,乃至列出所有可行方案,再通过反复论证和比较,选出最正确方案。
一样来讲,原始施工进度打算只是为人们作出进度安排提供了一个基础模型。
它还可能潜在着一些尚未解决的矛盾和缺点:
如在时刻方面,可能超过了上级规定的期限;在资源方面可能显现供不该求的矛盾;或说在时刻与资源方面的潜力还远没有取得最正确的发挥。
因此关于任何一项施工任务还要运用最优化原理,去调整和改善原始施工进度打算,以作出最理想的进度安排。
当编制的施工网络打算计算工期大于合同工期时,在人力、材料、设备等资源有充沛保证的前提下,通过紧缩关键线路中工作的持续时刻,以知足工期的要求。
在施工方法上,选择紧缩时刻后对证量阻碍不大、有充沛备用资源、且缩短
工作持续工作时刻而增加费用最少的关键工作,并通过增加资源数量,增加工作班次,改良施工工艺等途经缩短关键工作的时刻。
在优化方式上,一样最经常使用的是图上计算的方式,即依照网络打算的关键线路和关键工作,在网络图的关键线路上一天天的紧缩活动时刻,直至计算工期达到合同工期为至。
该方式的优势是计算简单,缺点是在优化进程中可能显现某些非关键工作转变成关键工作,造成增加费用过大。
而且计算量大、优化速度慢。
面对原有方法的缺点,本文通过运筹学的动态计划有关知识,利用动态计划实现对工期的优化,同时实此刻matlab上的动态计划程序作业法,从而使优化进程加倍简便准确,节省了大量的计算量,同时节省了大量的人力、物力和时刻。
研究意义和目的
1.3.1研究意义
通过本文提出的工期优化算法,能够克服原有方式的缺点,取得问题的最正确解决方案,并能够成立数学模型,编制程序代码,实此刻matlab上的操作,为解决此类问题提供了快捷、高效的方式。
为以后此类问题的研究者提供必然的参考,而且在必然程度上提高了工期优化人员的工作效率,做到了合理的时刻分派和有效地资源配置。
1.3.2研究目的
1.结合工程治理专业背景及运筹学知识,学会运用运筹学理论知识解决实际问题,提高理论知识解决实际问题的能力。
2.将动态计划方式用于网络打算优化,成立了工期优化的动态计划数学模型,利用动态计划的递推方式,寻求工期优化的最优目标。
3.把握matlab的大体操作方式及编制程序代码的进程。
研究内容
通过对网络打算的研究,运用动态计划法对其进行有效的优化,调整和改善原始施工进度打算,以作出最理想的进度安排和资源配置。
本次研究针对工程项目中存在的以下的问题进行优化:
1)图上作业工期优化进程中可能显现某些非关键工作转变成关键工作,造成增加费用过大。
2)图上作业工期优化计算量大、优化速度慢。
3)图上作业工期优化迭代进程繁琐,易优化犯错。
研究方式与思路
本次研究运用运筹学动态计划方式解决网络打算的工期优化问题,通过matlab编程进行求解,并通过一个事例来验证算法。
本文研究思路如图2所示:
图2本文研究思路
2.理论基础
形式化概念
当项目任务网络中只有一条关键路径时,假设关键路径上面任务集合为c-set
w-set,因此,可知c-set的任务不存在时刻上的重叠。
设项目需要紧缩时刻的总量为t,对于
wi
c-set,其可紧缩的最大时刻量表示为lim(wi),一样来讲任务wi的紧缩代价取决于任务紧缩的工期量和任务的自身因素,比如任务的关键度、风险度等。
因此,任务wi的紧缩代价能够用代价函数g(wi,x)来表示,x表示紧缩的时刻量。
因此,定义任务wi的紧缩代价函数如下:
(1)
其中,k是常量,(wi)是调整因子,调整因子取决于任务的自身因素,若是只考虑任务的关键度
风险度
,对应的权值分别为c1和c2,那么调整因子能够简单的描述为
(wi)=c1*
(wi)+c2*
(wi)。
若是假设
|c-set|=K,那么关键路径任务的工期紧缩代价矩阵如下所示:
(2)
算法求解子集s-set
c-set和序对集合S(s-set),S(s-set)中的每一个元素都是一个序对(wi,xi),其中wi
s-set,
s-set中的每一个任务唯一映射到S(s-set)的一个序列,且知足约束P:
(3)
优化算法
依照以上描述,下面给出基于动态计划的单关键途径网络的工期优化算法。
参数S用来寄存最优选择序列,函数返回最小紧缩代价值。
优化算法描述如下:
FunctionD-OPT(S,c-set-{wi},t)
begin
if|c-set|=1
begin
wi←c-set中的任务;
将选择元组(w,t)加入列表S;
returng(wi,t);
end
wi←c-set中的第一个任务;/*不选择第一个关键途径任务的处置*/
max=D-OPT(S,c-set-{wi},t);/*被选择第一个关键途径的处置*/
tuple←
;
S1←
;/*初始化列表S1为空*/
forj=1tot
begin
S2←
;/*初始化列表S2为空/
temp←g(wi,j)+D-OPT(S2,c-set,t-j);
ifmax>temp
begin
max←temp
tuple←(wi,j);
S1←S2;
end
end
iftuple≠
将元组tuple加入S1,将S1中的所有元组加入S;
returnmax;
End
该算法实质是把问题划分成子问题,然后再递归求解,最终把最优的紧缩序对寄存在列表S中。
在此算法基础上,本节给出多关键路径网络的工期紧缩策略。
当项目任务网络中存在多条关键路径时,不能直接利用D-OPT优化算法进行求解。
因为此时网络中存在着并行的关键路径,如图1(b)所示。
依照关键路径的概念可知,紧缩并行关键路径一个分支上的任务工期并不能达到紧缩项目工期的目的,因此要想在并行关键路径上试图紧缩工期,必须对并行关键路径上的每一个条分支都紧缩相同的量,才能达到紧缩项目工期的目的。
另外,并行关键路径能够是嵌套存在的,确实是说把并行关键路径的一条分支看成是一个网络打算的话,那么那个子网中也存在并行关键路径,图1(b)中确实是存在嵌套的并行关键路径的一个例子。
依照上述分析,下面给出多关键路径网络的工期优化策略,该策略是以单关键路径网络的工期优化方式为基础。
先考虑无嵌套并行关键路径的情况,即并行关键路径的每个分支都是其所在分支网络的唯一的关键路径,并行关键路径的每个分支确信有一起的源点和汇点。
继续假设项目关键路径集合为c-set,此时c-set中的任务可能存在时刻重叠。
假设一个无嵌套的并行关键路径有c条分支,分支路径集合表示为p-set{p1,p2,…pc},其中对
ph
p-set,有ph
c-set,并且对于
px,py
p-set,且x≠y,都有px
py=
。
由于并行关键路径的每个分支都是在时刻上重叠的,因此在进行工期紧缩时,当且仅当各个分支路径同步紧缩,才能取得有效的项目工期紧缩。
因此能够把p-set中的各个分支路径看成是一个整体,作为一个特殊的任务W来看待,若是要对W紧缩工期量为x,则能够把每个路径分支看成是一个子网络的关键路径,依照优化算法D-OPT求得最小紧缩代价,即表示为:
(4)
依照以上假设后对并行关键路径处理,接着能够应用单关键路径网络的工期优化算法来解决多关键路径网络的工期紧缩问题。
若是考虑存在嵌套的并行关键路径,本文的思想是从最内层的并行关键路径出发,把它看成是一个整体性任务W,然后利用公式(4)求解W的紧缩代价,依照此种方式从内层向外层计算,直到所有的并行关键路径都处理完为止,处理完的网络能够看成是一个单关键路径网络,因此能够依照单关键路径网络的工期紧缩方式进行求解。
3.程序编写
依照前章所述算法,在matlab中编写程序代码如下:
function[max,S]=Dopt(S,cset,t,g)
%UNTITLEDSummaryofthisfunctiongoeshere
%Detailedexplanationgoeshere
iflength(cset)==1
max=g(cset
(1),t);
S=[S;[cset
(1),t]];
return;
end
w=cset
(1);
[max,S]=Dopt(S,cset(2:
end),t,g);
tuple=[];
s1=[];
forj=1:
t
s2=[];
ift~=j
[maxtmp,s2]=Dopt(s2,cset(2:
end),t-j,g);
temp=g(w,j)+maxtmp;
else
temp=g(w,j);
end
ifmax>temp
max=temp;
tuple=[w,j];
s1=s2;
end
end
ifisempty(tuple)
else
S=[s1;tuple];
end
return;
end
执行语句为:
[max,tmp]=Dopt(s,cset,t,g)
4.案例验证
该算法的实验验证如下:
假设一个项目进行WBS任务分解后的任务集合为:
w-set={w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13},基于WBS任务进行项目打算编制后,各WBS任务的要紧参数如表1所示。
表1任务打算时刻参数表
任务
原定工期(天)
W1
2
W2
8
W3
10
W4
15
W5
12
W6
23
W7
6
W8
6
W9
16
W10
14
W11
18
W12
12
项目的WBS任务上的强制性时刻限制条件如表2所示,假设任务上强制性时刻限制条件的添加都通过了打算编排过程中的强制限制冲突处理,每个任务上能够定义多个强制性时刻限制条件。
表2强制性时刻限制表
任务
强制性时间限制类型
强制限制时间
W4
强制开工限制
2011-01-07
W8
开工不晚于限制
2011-02-25
W8
开工不早于限制
2011-01-28
W10
完工不晚于限制
2011-03-10
该项目任务顺序依赖关系已经在打算编制过程中确信,并在编制过程中排除掉所有的异常情况。
并假设跨企业项目中的任务依赖关系都是完成--开始(FS)类型的依赖,因此能够假设项目任务的单代号网络图如图3所示。
图3项目原始网络打算
假设该项目的开始时刻为2011-1-5,计算任务的准确参数如表3所示。
表3进度计算后的任务时刻参数表
任务
工期
最早开始
最晚开始
最早结束
最晚结束
关键路径
W1
2
2011-01-05
2011-01-07
2011-01-07
2011-01-07
是
W2
8
2011-01-07
2011-01-20
2011-01-15
2011-01-28
否
W3
10
2011-01-07
2011-01-18
2011-01-17
2011-01-28
否
W4
15
2011-01-07
2011-01-07
2011-01-22
2011-01-22
是
W5
12
2011-01-15
2011-02-13
2011-01-27
2011-02-25
否
W6
23
2011-01-28
2011-01-28
2011-02-20
2011-02-20
是
W7
6
2011-01-22
2011-01-22
2011-01-28
2011-01-28
是
W8
6
2011-01-28
2011-02-25
2011-02-03
2011-03-03
否
W9
16
2011-02-20
2011-02-20
2011-03-08
2011-03-08
是
W10
14
2011-01-28
2011-02-24
2011-02-11
2011-03-10
否
W11
18
2011-03-08
2011-03-08
2011-03-26
2011-03-26
是
W12
12
2011-03-08
2011-03-14
2011-03-20
2011-03-26
否
W13
5
2011-03-26
2011-03-26
2011-03-31
2011-03-31
是
其中关键路径集合为c-set={w1,w4,w6,w7,
w9,w11,w13},若是项目的预定工期为2011-3-25,则可知项目的工期超过预定工期6天。
通过本文提出的工期优化算法对该项目进行工期优化,依照图3判断本项目为单关键路径工期优化,假设关键路径任务的工期紧缩代价矩阵如表4所示。
表4关键线路任务工期紧缩代价表
wt
1
2
3
4
5
6
W1
W4
W6
W7
W9
W11
W13
运行程序后取得如下结果:
即依照本文的优化算法取得最优的工期紧缩方案为:
s-set={w6,w11},
S(s-set)={(w6,4),(w11,2)}。
紧缩后并无改变关键途径,并以最小代价对项目工期紧缩了6天。
5.总结
项目的工期优化具有很强的实际意义,目前在该领域也提出了很多的优化方式。
因为运筹学知识有限,本文提出的工期优化方式适合项目的工期紧缩代价能够进一步定量化的项目。
同时,由本文思路能够看出,本文的算法没有提出非关键线路在优化后可能变成关键线路这一情形下的解决方法。
针对这一情形,本文的解决思路是,运用优化算法进行计算后,验证关键线路是不是发生改变,若是没有发生转变,那么工期优化取得解决。
若是关键线路发生转变,那么从头利用优化算法对改变后的关键线路进行优化,以此类推。
6.参考文献
[1]Rand,.Criticalchainthetheoryofconstructionappliedtoprojectmanagement[J].InternationalJournalofProjectManagement,2020,18(3):
173-177.
[2]Rolf,AndreasS.Schulz,FrederikStork.Slovingprojectschedulingproblemsbyminimumcutcomputation[J].ManagementScience,2003,49(3):
330-350.
[3]刘莉.动态计划法解工期优化问题[J].科技广场,:
78-79.
[4]胡运权.运筹学基础及应用[M].哈尔滨大学出版社,
[5]运筹学教材编写组.运筹学[M].清华大学出版社(修订版),