第30卷 第2期运 筹 与 管 理
Vol.30,No.2
2021年2月OPERATIONSRESEARCHANDMANAGEMENTSCIENCE
Feb.2021
收稿日期:2019 04 10
基金项目:西南石油大学青年教师“过学术关”基金资助项目(201899010145);西南石油大学科研启航计划项目(2018QHR004);西南石油大学人文专项基金(
2018RW005);国家自然科学基金(71871176)作者简介:宁敏静(1985 ),女,河南新乡人,讲师,博士,研究方向为项目管理及优化;郑小强(1981 ),男,副教授,博士,研究方向为能源替代行为决策;何正文(
1967 ),男,山西运城人,教授,博士,研究方向为项目管理及优化。基于随机活动工期的现金流动态均衡前摄性
与反应性项目调度优化
宁敏静1, 郑小强1, 何正文2
(1.西南石油大学经济管理学院,四川成都637001;2.西安交通大学管理学院,陕西西安710049)
摘 要:承包商的现金流动态均衡对不确定条件下项目的顺利实施有重要影响。作者研究基于随机活动工期的现
金流动态均衡前摄性及反应性项目调度问题,目标是在随机活动工期条件下,为承包商生成现金流均衡基准进度,并根据执行过程中的实际情况,动态地对其进行反应性调整。首先,通过建立前摄性调度优化模型生成基准进度,并提出两个反应性调度策略对其进行调整。其次,为以上诸模型的求解设计了模拟退火和禁忌搜索相结合的混合算法tabu SA。最后,针对前摄性调度模型,在随机生成的算例集合上对算法进行测试,并进行大规模仿真实验。研究结果可以为随机活动工期下承包商保持现金流动态均衡、确保项目顺利实施,提供定量化决策支持。关键词:现金流均衡项目调度;前摄性;反应性;禁忌搜索和模拟退火嵌套算法;随机活动工期中图分类号:C935;F224 文章标识码:A 文章编号:1007 3221(2021)02 0117 07 doi:10.12005/orms.2021.0050
ProactiveandReactiveCashFlowDynamicallyBalanc
edProject
SchedulingOptimizationBasedonRandomActivitiesDurations
NINGMin jing1,ZHENGXiao qiang,HEZheng wen
2
(1.SchoolofEconomicsandManagement,SouthwestPetroleumUniversity,Chengdu637001,China;2.SchoolofManagement,Xi’anJiaotongUniversity,Xi’an710049,China)
Abstract:Itisimportanttoimplementprojectssuccessfullyandsmoothly,thecontractors’cashflowofwhichisbalancedinuncertaincircumstances.Theauthorsstudyproactiveandreactivecashflowbalancedprojectschedu lingproblembasedonrandomduration
ofactivities.Thepurposeofthispaperistogenerateabaselinescheduleforthecontractorandtoadjustitdynamicallyduringtheprojectexecutingprocess.Theproactiveschedulingoptimizationmodelisconstructedandthentheauthorsprovidetworeactiveoptimizationmodelstoadjustthebaselineschedule.Further,ahybridalgorithm,tabu SA,isdevelopedtosolvethestudiedproblem.Ultimately,fortheproactiveschedulingmodel,experimentisconductedonthestandardprojectinstancessetandfurtherlargescalereactivesimulationsareperformedoneachinstance.Theresearchcouldprovidedecisionsupportsforthecontractorstoensurecashflowtobebalancedintheenvironmentswithrandomactivitiesduration.Keywords:cashflowbalanceprojectscheduling;proactive;reactive;tabu SA;randomactivityduration
0 引言
在实际的项目管理中,管理者经常会遇到资金短缺的情况,导致项目拖期、甚至是资金链断裂进
而导致项目失败[1,2]。现实中因资金链断裂导致
项目失败的案例时有出现,例如“巨人大厦”项目
因资金链断裂,最终导致烂尾等。大型项目工期长且面临高度不确定性,活动工期波动、资源配置等都会对项目进度计划形成干扰,进而影响项目的现金流。因此,本文研究基于随机活动工期的现金流动态均衡项目调度问题,旨在为项目承包商安排一
个合理的调度计划,合理使用业主的支付以弥补资金缺口,确保项目的顺利实施。本文的研究可以为随机活动工期下承包商保持现金流入与流出的动态均衡,提供定量化决策支持,具有重要的现实意义。
前摄性及反应性项目调度是处理不确定扰动的常用调度方法[3]。VandeVonder等[4]列举了多个插入时间缓冲的方法,发现开始时间关键度法由于关注活动权重及其变化性特征,因而效果最好。Lambrechts等[5]研究了资源可用量不确定时生成基准进度的方法。Bruni等[6]通过一种可调整的鲁棒优化模型进行资源分配,以最小化最坏情形下的项目工期。寿涌毅和王伟[7]构建了工期不确定的资源受限项目调度的鲁棒优化数学模型,求解结果具有较强鲁棒性。张静文等[8]对关键链方法中的二次资源冲突困境进行了有效研究。马咏等[9]研究了柔性资源约束下的前摄性调度问题,通过资源柔性增加进度鲁棒性。
关于反应性调度,VandeVonder等[10]针对多个活动发生中断的情况提出新的反应性调度算法,以最小化进度偏差。Yang和Geunes[11]研究了潜在活动是否发生情况未知时的反应性调度问题,目标是最小化拖期费用的权重和。Deblaere等[12]研究多模式资源约束反应性调度,开发精确算法和启发式算法进行求解。张沙清等[13]针对任务拖期而导致的调度计划变更,提出资源流约束的反应调度算法。王艳婷等[14]研究了比较两种资源分配方式与三类反应性调度策略组合而成的六种反应性策略。崔晓等[15]研究了考虑信息处理成本的反应性调度问题,以确定最优的信息处理投入。
基于上述观点,本文亦采用前摄性及反应性调度方法进行研究。在本文的后续部分,首先构建问题优化模型,构建前摄性调度模型,为承包商生成一个现金流均衡的基准进度,再提出两个反应性调度模型,对不确定扰动进行调整;接着设计求解算法;然后用大量算例对算法进行验证并进行反应性仿真实验;最后总结全文。
1 问题界定及优化模型
本文采用AoN(Activity on Node)网络表示项目活动之间的逻辑关系。各活动工期为服从一定均值分布的随机变量,活动执行时产生一定的费用,完成后获得相应挣值。合同总价款为所有活动的挣值之和。要求项目必须在计划截止时间之前完成。项目采用里程碑支付方式,每次支付量基于承包商获得的累计挣值按支付比例计算,业主须在最后一次支付时付清全部剩余合同价款。
活动工期的随机性特征可能会对项目造成干扰,因此,在制定基准进度时应该考虑计划的稳定性。为了确保进度计划在执行过程中的稳定性,要求计划的鲁棒性不得低于一个设定的阈值,该值通过对活动工期随机分布的估计,结合项目总时间裕量,由项目管理者权衡决定。由此,前摄性调度模型可以界定为:在截止日期及鲁棒性阈值约束下,合理地安排活动开始时间,以实现承包商现金流均衡。
在项目实际执行过程中,各活动工期按照逻辑关系,依次变成确定值。若活动工期波动剧烈,则基准进度很可能发生中断。每次中断发生时,反应性调度模型被调用,以重新生成可行的基准进度,因此,反应性调度其实是一个多阶段决策过程。每个中断点的调度策略有两种:策略1(最小扰动策略)和策略2(现金流均衡策略)。
为了表述方便,表1总结了模型中用到的所有符号的含义。
表1 符号定义表
符号符号含义
相关参数i表示活动i,i=0,1,…,N+1,其中活动0和N+1分别是虚开始活动和虚结束活动μ(di)活动i的工期的均值
σ(di)活动i的工期的标准差
cv(d
i
)活动i的工期的离散系数
c
i
活动i的费用
πi活动i完成后获得的挣值
U项目的合同总价款
D项目的截止时间
Robu 项目进度计划的鲁棒性阈值
θ支付比例
ik支付活动,ik=1,2…,iK
ξi活动i的权重系数,等于活动工期的标准差占所有的活动工期标准差之和的比重,即ξ
i=σ(d
i
)/∑
N+1
i=0
σ(di)
8
1
1运 筹 与 管 理 2021年第30卷
SUCCi活动i的所有紧后活动的集合,i=0,1,…,N
BiBi=minj∈SUCCisbj
-sbi-μ(di),i=0,1,…,N;BN+1=D-sb
N+1pk第k次支付的支付量,pk=θ
·∑i∈
PAk
πi,k=1,2,…,K-1;pK=U-∑K-1
k=1pk
PAk第k-1次支付至第k次支付之间已完成的活动集合,PAk={i:sbik-1+μ(dii-1)<sbi+μ(di) sb
ik+μ(di
k)}FAtt时刻已经开始的活动集合,FAt={i:sb
i+μ(di
) t},t=0,1,2,…,DFPtt时刻已完成的里程碑活动集合,FPt={ik:sb
ik+μ(di
k) t}Gtt时刻项目的累计资金缺口,Gt=∑i∈FAkci-∑ik∈FPt
pk
,t=0,1,2,…,DGmax项目实施过程中的最大累计现金流缺口,Gmax=maxt=0,1,…,D{Gt
}T
中断发生的时刻F
T
reactive和proactive的区别T时刻已经完成的活动集合P
T
T时刻正在进行的活动集合UT
T时刻尚未开始的活动集合
dTi
T时刻活动i的工期wi活动i的不稳定性权重系数
Loss
T
中断发生时项目进行调整所引起的损失值
决策变量
sbi前摄性调度模型中活动的计划开始时间,非负整数,i=0,1,…,N+1sTi
反应性调度模型中活动的实际开始时间,非负整数,i=0,1,…,N+1
1.1 前摄性调度模型
根据上述对问题的界定,基于随机活动工期的现金流均衡项目调度问题的前摄性调度模型可构建如下。这里,活动工期采用其随机分布的均值μ(di)。minGmax=maxt=0,1,…,D{∑i∈FAt
c
i-∑ik∈FPt
pk}(1)s.t.sb
i=
0(2)sbi+μ(di) sb
j,(i,j)∈A(3)sbN+1 D(4)∑N+1
i=0
(ξiBi) Robu
(5)
pk=θ∑i∈PAk
πi,
k=1,2,…,K-1pK=U-∑k-1
k=1
p{
k
(6)sb
i为非负整数i
=0,1,…,N+1(7)
以上模型中,目标要求式(1)最小化项目承包商的最大累计现金缺口Gmax;约束条件式(2)定义项目的开始时刻;式(3)为网络优先关系约束;式(
4)为项目工期约束;式(5)为鲁棒性阈值约束;式(6)计算每次的支付量;式(7)是决策变量的定义域约束。注意,若Robu
设置得过高,会造成模型无解;过低则不能起到保证基准进度稳定性的作用,因此,项目管理者必须审慎地权衡,以确保进度计划的可行性和稳定性。1.2 反应性调度模型
根据前摄性调度模型生成的现金流动态均衡基准进度,可建立基于两种策略的反应性调度模型分别如下。
1)最小扰动策略
minLossT=∑i∈UT
wi
(sTi-sb
i)(8)
s.t.sTi=sbi
,
i∈FTUPT
(9)sTj sTi+dTi,j∈UT
; (i,j)∈A(10)sTi为非负整数,
i=0,1,…,N+1(11)
以上模型中,目标函数式(8)最小化活动开始
时间延迟所引起的总损失值LossT
,使得项目尽可
能地按照基准计划稳定实施;约束条件式(9)将T时刻已经完成和已经开始但未完成的活动开始时间定义为其基准开始时间;式(10)满足活动间的优先关系约束;式(11)为决策变量的定义域约束。注意,反应性调度是一个多阶段决策过程,每次中
断发生时,需要更新开始时间sbi
。策略1中承包商最终的最大累计资金缺口可按下式计算得到
Grealmax=maxt=0,1,k,sTN+1{∑
i∈FAt
ci+∑
T t
LossT
-∑
ik∈FPt
pk}
其中,FAt={i:si+dTi t},FPt={ik:si
k+dT
ik t}。2)现金流均衡策略
minGTmax=maxt=0,1,k,sTN+
1{∑i∈FAt
ci+
∑
T t
cT
-∑
ik∈FPt
pk}
(12) s.t.cT=∑
i∈UT
wi
(sTi-sbi)(13)
(9),(10),(11)
上述模型中,目标要求式(12)最小化项目承
包商实际最大累计现金缺口GT
max
;约束条件式(13)计算得到中断发生时承包商调整基准计划的费用;其余各约束则与策略1中相同。同理,每次中断发生时都要对基准进度进行更新。在策略2
下,承包商最终最大累计资金缺口Greal
max可通过对基准进度进行若干次调整的GT
max
取最大值而得到。9
11第2期 宁敏静,等:基于随机活动工期的现金流动态均衡前摄性与反应性项目调度优化
2 算法设计
鉴于研究问题的复杂性,这里采用禁忌搜索和模拟退火相嵌套的混合算法tabu SA进行求解。针对特定的优化问题,目前已有多种不同的混合算法被开发出来,文献[16]提出与遗传算法相结合的混合算法,通过优势互补,克服单一算法的不足,增强算法的搜索效率。基于体搜索的遗传算法虽然收敛速度快,但其生成邻点等操作较为复杂,计算量较大。本文选用t
abu SA算法,兼具全局搜索与记忆性等优点,由当前解生成邻点解的操作简单易行,计算量相对较小,并且更易于编程实现。2.1 解的表示及初始可行解的生成
开始时间偏移量列表SL:该列表由N+1个开始时间偏移裕量εi∈[0,li-ei]构成,其中,ei和li分别是活动i的最早和最晚开始时间,通过CPM(criticalpathmethod)法计算得到。初始可行解SLini
按如下方式构造:计算各活动的时间窗[0,li-ei],在时间窗内为各活动选择一个εi
,并计算各活动的开始时间,若sb
N+1
D,且
∑N+1
i=0
(ξiBi) Robu
,则接受S
Lini
作为可行解。否则,重复该步操作,直到生成可行的SLini
为止。2.2 邻点生成及其性质
对于当前列表SLcur
,随机选择一个εi并将其值改变为区间[0,li-ei
]中的另一值,计算各活动的开始时间,若sb
N+1
D且∑N+1
i=0
(ξiBi
) Robu
,则得到一个可行邻点S
Lneir
;否则,重复上述操作直至获得一个可行邻点SLneir
为止。
通过对问题模型特征的分析,针对该邻点生成方式,提出邻点生成的相关性质。给定一个可行的进度安排,以支付时间Tk(k=1,2,…,K)为边界,该进度计划被分割成了若干段,即(0,T1),(T1,T2),…,(Tk-1,Tk)。通过这些区间和边界,我们可以定义两组活动集合,
Wk和Wk′,分别表示如下:
Wk={i|Tk-1<sb
i
+μ(di)<Tk
},Wk′={i|sb
i+μ(di)=Tk
},k=1,2,…,K通过分析研究问题的特征,以这两类活动集合为基础,两个改进邻点生成的性质具体表述如下:
性质1 在生成邻点的过程中,如果以该邻点解为基础得到的两组活动集合Wk和Wk′(k=1,2,…,K),与当前解的两组活动集合相同,则该邻点是无效的,可以省略搜索。
证明 在项目执行过程中,在(Tk-1,Tk
)内发生的活动费用将在支付时刻Tk被补偿。因此,
随着活动费用的累积,承包商的累计资金缺口在Tk-1时刻达到最大。在Tk时刻,如果获得的支付少于在此时刻发生的总费用,则该最大缺口将继续增加;否则,将会减小。可见,在(Tk-1,Tk]内,最大资金缺口必将发生在时刻Tk-1或Tk。不难看出,在性质1的条件下,(Tk-1,Tk]内的最大资金缺口将保持不变,整个项目执行过程中的最大资金缺口Gmax也将保持不变。因此,该邻点是无效的,可以省略搜索。
性质2 在生成邻点的过程中,如果某些活动的开始时间发生改变,使得一个或多个活动从Wk′流向Wk,而其他活动仍然保留在原来的集合里,则该邻点是无效的,可以省略搜索。
证明 如果一个或多个活动从Wk′流向Wk,而其他活动仍然保留在原来的集合里,则时刻Tk-1上的累计现金流出随着Wk中活动数目的增多而增加。然而,Wk中的活动要在时刻Tk才能被支付,从而发生在时刻Tk-1上的累计现金流入保持不变。我们可以看到,在给定条件下,承包商在(Tk-1,Tk)内的累计资金缺口是增大的。在时刻Tk,由于在(Tk-1,Tk]内完成的活动没有发生变化,承包商的资金缺口将保持不变。综上,在性质2的给定条件下,(Tk-1,Tk]上的最大资金缺口(发生在时刻Tk-1或Tk)将进一步增加或保持不变,这导致项目执行过程中的最大累计资金缺口不会改善。因此,该邻点是无效的,可以省略搜索。2.3 算法参数设置
·初始温度:初始温度T0通过式子得到VGmax/lnPr,其中VGmax是初始解的50个邻点中目标函数值的最大绝对差值,Pr是初始接受概率,设为0
.97。·退火速率:从初始温度开始,温度按照比率cool(0<cool<1)持续下降,设为0.95。
·迭代次数:在某一固定温度下的迭代次数step达到10·N时,进行降温处理。
·终止温度:温度降至终止温度T_end=0.1时算法终止。该参数与终止条件相匹配。
·禁忌列表:均采用“先进先出FIFO(First in First out)”的原则进行更新:当算法从当前解向选定的邻点移动时,该移动的逆向移动从底部加入禁忌列表,避免算法重新退回到当前解;与此同时,最早进入列表的逆向移动从顶部移出,列表中其余逆向移动向上递进一位。所有位于禁忌列表中的逆向移动都是被禁止的,但是,如果一个被禁止的逆向移动能够生成比当前最好解还要好的邻点时,那
021运 筹 与 管 理 2021年第30卷
么它的禁忌状态可以被激活,以使算法能够移动到
该邻点上,从而避免错失问题的最好解。
2.4 混合算法tabu SA的搜索过程
将禁忌搜索嵌套在模拟退火中,算法终止条件是由模拟退火确定,步骤如下。
步骤1 输入初始温度T
0
、冷却速率cool(0<coo<1)、终止温度T_end,在每一温度下的迭代步数Num。初始化禁忌列表TL。给定初始解S0及
其目标函数值G0
max
。
步骤2 循环温度设定:temp=T
0
。
步骤3 循环迭代步数设定:step=0。
步骤4 在temp下由S0生成一个邻点S1,检查生成该邻点的移动是否位于禁忌列表TL中,若是转步骤5;否则,转步骤6。
步骤5 计算邻点下的目标函数值G1
max
。若
VG
max=G1
max
-G0
max
<0,激活生成该邻点移动的禁忌
状态,并更新禁忌列表,转步骤6;否则,转步骤4。
步骤6 计算邻点下的目标函数值G1
max
。若
VG
max=G1
max
-G0
max
<0,则接受S1:S0=S1,G0
max
=
G1
max
。否则,生成一个位于[0,1]之内均匀分布的
随机数Rnd,若Rnd exp(VG
max
/temp2),则接受
S1:S0=S1,G0
max=G1
max
;反之,拒绝S1。
步骤7 step=step+1。若step Num,转步骤
4;否则,转步骤8。
步骤8 按冷却速率将温度下降到一定的比例:temp=temp cool。若T
0
>T_end,转步骤3;否则,转步骤9。
步骤9 输出搜索到的结果,即最终的S0和
G0
max
,搜索结束。
3 算法测试及仿真分析
3.1 算法测试
针对前摄性调度模型,测试混合算法tabu SA及其他两个单独算法。算例由ProGen算例生成
器[17]依据如下参数的不同设置得到:N、D(即项目工期的扩大倍数ρ)、Robu 、K、θ,其中,参数N取值为4种,其余各参数取值为3种,每种参数组合下生成的算例数为10个,由此得到4×3×3×3×3×10=3240个算例,参数设置见表2。算法评价指标:满意解距离已知最好解的平均相对偏差ard(%)、满意解距离已知最好解的最大相对偏差mrd(%)、各自到的已知最好解的个数num、搜索到的重复解的个数nrs、搜索路径的分散性程度dis、剔除的可行但无效解的比率pei_IM1(%)、pei_IM2(%)。其中,dis等于搜索过程中所有邻点的分散性dp之和,本文规定当ε
i
→εj(i=j且εi≠
ε
j
)时,dp=1,当ε
i
→εj(i≠j)时dp=2。使用相同的初始解和终止条件,当搜索时长达到100×(N-2)s时算法终止(由实验确定)。采用VisualC++2010编程,在CPU为2.1GHz,内存为2.00GB的个人计算机上运行。结果如表3所示。
三个算法的比较。首先,混合算法tabu SA在ard、mrd和num上都分别优于SA。这表明tabu SA中的禁忌列表发挥了作用,在搜索过程中避免搜索重复解。这可以通过nrs来证明:tabu SA的nrs明显小于SA的nrs。其次,对于ard和num来说,混合算法tabu SA优于TS,对于规模较大的问题尤其如此。tabu SA的随机性(由SA带来)可以保证整个解空间都可能被搜索到,而TS在同样的终止条件下,解空间不能被完全搜索,导致错过满意解。dis可以证明:tabu SA的dis明显高于TS的dis。可知,在目前实验条件下,混合算法tabu SA比单独算法的求解效率更高。
两个性质的效果。首先,所有的pei_IM1和pei_IM2都大于0,但是都随着N的增加而降低。这表明两个性质在搜索过程中发挥了作用,但随着问题规模的增长,当前解的邻域随之变大,导致新生成的邻点落在IM1和IM2所描述的区间里的概率变小,进而使其效率下降。其次,对于所有这三个算法来说,pei_IM1都大于pei_IM2,即IM1比IM2更有利于提升算法的搜索效率。这表明生成邻点的过程与IM1所描述的区间更匹配。再次,TS的pei_IM1和pei_IM2大于SA和tabu SA的。在每次迭代过程中,TS的搜索路径在同一邻域里多次跳跃,有助于
邻点落在IM1和IM2所描述的区间里,而SA和tabu SA的搜索路径更无章可遁,进而落在以上区间的概率更低。
表2 ProGen的参数取值
参数取值
非虚活动的算例数N10,20,30,40
算例的起始和终止活动数从1,2,3中随机选取
最大紧前和紧后活动数3
活动i的期望工期μ(d
i
)从[10,20]中均匀地随机选取
活动i工期的标准差σ(d
i
)从[1,5]中均匀地随机选取
活动i的费用c
i
从[10,20]中均匀地随机选取
活动i的挣值π
i
γci,γ从[1.3,1.5]中均匀地随机选取截止日期DρCmax,Cmax为项目最早完成时间鲁棒性阈值Robu ξrobumax,robumax为项目的最大鲁棒值截止日期的扩大倍数ρ1.2,1.3,1.4
鲁棒性阈值的扩大倍数ξ0.25,0.5,0.75
支付次数K3,4,5
支付比例θ0.7,0.8,0.9
1
2
1
第2期 宁敏静,等:基于随机活动工期的现金流动态均衡前摄性与反应性项目调度优化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论