一种基于项目特性的关键链缓冲调整方法

文档序号:6359486阅读:445来源:国知局
专利名称:一种基于项目特性的关键链缓冲调整方法
技术领域
本发明涉及一种基于项目特性的关键链缓冲调整方法,特别是涉及一种在不确定环境下的基于项目特性的关键链缓冲调整方法。本发明属于优化调度技术领域。
背景技术
关键链方法自1997年由Goldratt提出以来,受到了学者们的广泛关注(详见 1997年《关键链》)。Goldratt指出,传统的项目管理方法假定所有任务的重要性相同,因此为所有的任务加入安全时间。然而,大多数的安全时间并不是必要的,甚至很可能造成总工期的大大增加。理论研究与实践均表明,影响项目总工期的瓶颈为项目中的关键链,需要对关键链上的任务进行保护。关键链是指在考虑优先约束与资源依赖性的情况下,决定项目总工期的一组任务,这组任务组成了项目网络中的最长路径。为了保护关键链任务,需要在适当的位置插入缓冲时间。项目缓冲插入在关键链之后,主要用于保护关键链上的任务。非关键链任务汇入关键链时需要插入汇流缓冲,以减小由非关键链任务延期给关键链带来的影响。在关键链调度理论中,非关键链上的活动在必要时才开始,以保证关键链任务有足够的资源。通过关键链调度方法可以产生相对稳定的调度方案,以应对项目中的不确定性。 而缓冲的大小对调度方案具有较大的影响,需要根据项目的不确定性程度,设置合适的缓冲。过大的缓冲会导致项目工期的增大,过小的缓冲则会减小调度方案的鲁棒性。因此,如何确定缓冲大小,是关键链调度方法应用到实际工程中的一个重点问题。经典的缓冲设置方法主要有剪切-粘贴法(Cut and Paste Method, C&PM)和根方差法(Root Square Error Method, RSEM),这两种方法都需要对项目的工期进行估计,主观性较强,并且没有考虑项目的特性。这往往导致最终产生的调度方案缓冲过大。在改进缓冲设置方面,研究者们首先尝试提出新的启发式策略来设置缓冲大小。 然而,这类新的启发式算法在解决多项目问题复杂度过高,实现难度大,难以在实际工程中得到应用。故现有工作多是对传统方法的调整与改进策略研究。关键链调度理论认为任务都倾向于发生延期。然而,在实际执行过程中,并非所有任务均发生延期,某些任务甚至会提前完成。这些提前完成的任务会给其存在的任务链提供额外的缓冲,提高该链对于不确定性的抵抗能力。由于忽略了这种额外缓冲,传统缓冲量化方法在多数情况下会得到比较大的缓冲。任务的不确定性随着项目的进行向后传递,其原因是任务间存在的约束。这些约束决定了项目对于不确定性的抵抗能力,即鲁棒性大小。任务在执行过程中面临的约束有时序约束和资源约束两类,分别由任务特性和资源特性所决定。因此,从项目调度鲁棒性角度考虑,在所有的项目特性当中,网络结构和资源需求作为两个影响时序约束和资源约束大小的关键因素,尤其不能忽略。总结而言,现有工作在缓冲设置问题上大多忽视了项目特性的影响,因而过分估计了项目的不确定性,在调度方案生成时设置过大的缓冲。在工程实际中,这种调度方案可能会造成大量的资源闲置,在多项目调度中甚至造成项目的大幅延期,导致总成本的增加。 因此,考虑项目特性的缓冲设置方法更有实际意义。本发明正是基于这样的考虑。

发明内容
本发明一种基于项目特性的关键链缓冲调整方法,其目的是针对项目实际执行过程中的不确定性,将两类重要的项目特性引入到关键链调度缓冲量化问题中,进而提出一种新的缓冲调整策略,克服经典方法缓冲设置过大的不足,从而在实际应用中增大缓冲利用比率,减少资源闲置和项目的交付时间。本发明一种基于项目特性的关键链缓冲调整方法,其设计思想是首先采用基于优先规则的启发式算法计算任务优先权,采用串行调度方法生成初始可行调度方案;然后通过计算自由时差确定关键链,并根据识别的关键链计算缓冲大小;最后采用调整策略调整缓冲大小并生成缓冲调度方案。基于上面的思想,下面具体介绍本发明的技术方案,具体设计步骤如下 第一步生成初始可行调度方案本发明采用最晚开始时间(Last Start Time,LST)作为优先规则计算任务的优先权,采用串行调度方法生成调度方案。设任务i的开始时间为STi,结束时间为FTi,紧后任务集合为S (i),任务数为η算法具体步骤为(一 )不考虑任务间资源约束,从最后一个任务开始依次往前调度任务,各任务的结束时间等于其最早开始的紧后任务的开始时间。记录任务的开始时间作为其最晚开始时间LST,初始化各任务最早开始时间EST为O ;(二)根据LST值从小到大对任务进行排序(即最晚开始时间小的任务先进行调度),生成优先调度集合E (S);(三)从E(S)中选取第一个任务i进行调度,令其开始时间STi= ESTi,判断任务 i执行时间段[STpFTi]内是否产生资源冲突;若资源使用量超过可用量,则令STi = STi+1, FTi = FVl重新进行判断;(四)若时间段[STi,FTi]内无资源冲突,任务i调度完成,更新其所有紧后任务的最早开始时间if FTi > ESTjthen ESTj = FTi, j e S (i)(五)从优先调度集合E(S)中删除任务i;若E(S)非空,转(三);否则,调度结束。第二步计算任务的自由时差,识别关键链本发明使用任务左右移操作来计算任务的自由时差,进而识别项目的关键链。对于任务i,若改变其开始时间STi,在不产生任何冲突(包含时序约束与资源约束)的情况下,项目中其他任务的开始时间均不发生变化,那么此操作就可以定义为任务移动。基于这样的定义,固定项目的执行时间段为[STtl, FTn+1](任务O和任务n+1为虚任务);即对于任务i,有STtl彡STi彡STn+1且FT0 ( FTi ( FTn+1,识别关键链的具体步骤为(一 )对于第一步生成的调度方案,从开始时间最晚的任务开始,从后往前依次选择任务i ;
6
( 二 )单步右移任务令任务i的开始时间STi = SVLFTi = FTi+Ι,判断时间段 [STi7FTi]内是否产生冲突(包括时序冲突与资源冲突);若产生冲突,取消此次右移操作, 即STi = STi-LFTi = FTi-I,任务i移动结束,选择下一个任务;若无冲突产生,对任务i继续执行单步右移操作;(三)当所有任务右移结束,记录此时任务的开始时间为最晚开始时间LSTi= STi, i = I, 2,…,η ;(四)对于此时的右移调度方案,从开始时间最早的任务开始,从前往后依次选择任务j ;(五)单步左移任务令任务j的开始时间STj= STj-LFTj = FTj-I,判断时间段 [STjjFTj]内是否产生冲突(包括时序冲突与资源冲突);若产生冲突,取消此次左移操作, 即S'. = STj+LFTj = FTfl,任务j移动结束,选择下一个任务;若无冲突产生,对任务j继续执行单步左移操作;(六)当所有任务左移结束,记录此时任务的开始时间为最早开始时间ESTi= STi, i = I, 2,…,η ;(七)计算任务的自由时差TSi= LSTi-ESTi, i = 1,2,· · ·,η ;若TSi = 0,则任务 i为关键链任务;否则为非关键链任务。第三步缓冲量化与调整缓冲的量化与调整分为以下几步(一 )计算网络复杂度与资源松紧度网络复杂度可定义为网络中存在的优先关系数目与理论存在的最大优先关系数目的比值(均不考虑虚任务),用于表示网络中的时序约束强度。其中,网络中存在的优先关系数目为每个任务的所有前驱结点(包括间接前驱结点)之和,最大优先关系数目为 η (η-1)/2,其中η表示非虚任务个数。因此网络复杂度可表示为
权利要求
1.一种基于项目特性的关键链缓冲调整方法,其特征在于它包括以下步骤步骤一生成初始可行调度方案采用最晚开始时间即Last Start Time, LST作为优先规则计算任务的优先权,采用串行调度方法生成调度方案;设任务i的开始时间为STi,结束时间为FTi,紧后任务集合为 S (i),任务数为η算法具体步骤为(一)不考虑任务间资源约束,从最后一个任务开始依次往前调度任务,各任务的结束时间等于其最早开始的紧后任务的开始时间;记录任务的开始时间作为其最晚开始时间 LST,初始化各任务最早开始时间EST为O ;(二)根据LST值从小到大对任务进行排序即最晚开始时间小的任务先进行调度,生成优先调度集合E (S);(三)从E(S)中选取第一个任务i进行调度,令其开始时间STi= ESTi,判断任务i执行时间段[STyFTi]内是否产生资源冲突;若资源使用量超过可用量,则令STi = ST^LFTi =FTdl重新进行判断;(四)若时间段[STi,FTi]内无资源冲突,任务i调度完成,更新其所有紧后任务的最早开始时间if FTi > ESTjthen ESTj = FTi, j e S(i)(五)从优先调度集合E(S)中删除任务i;若E (S)非空,转(三);否则,调度结束;步骤二 计算任务的自由时差,识别关键链使用任务左右移操作来计算任务的自由时差,进而识别项目的关键链;对于任务i, 若改变其开始时间STi,在不产生任何冲突即包含时序约束与资源约束的情况下,项目中其他任务的开始时间均不发生变化,那么此操作就可以定义为任务移动;基于这样的定义,固定项目的执行时间段为[STtl, FTn+1],任务O和任务n+1为虚任务;即对于任务i,有 ST0 ( STi ( STn+1且FT0 ( FTi ( FTn+1,识别关键链的具体步骤为(一)对于第一步生成的调度方案,从开始时间最晚的任务开始,从后往前依次选择任务i ;(二)单步右移任务令任务i的开始时间STi= ST^LFTi = FTi+1,判断时间段[STi, FTi]内是否产生时序冲突与资源冲突;若产生冲突,取消此次右移操作,即STi = STi-LFTi =FTi-L任务i移动结束,选择下一个任务;若无冲突产生,对任务i继续执行单步右移操作;(三)当所有任务右移结束,记录此时任务的开始时间为最晚开始时间LSTi= STi, i =I, 2, · · · , η ;(四)对于此时的右移调度方案,从开始时间最早的任务开始,从前往后依次选择任务j ;(五)单步左移任务令任务j的开始时间STj= STj-LFTj = FTj-I,判断时间段[STj, FTj]内是否产生时序冲突与资源冲突;若产生冲突,取消此次左移操作,即SI^ = STj+LFTj =FT,1,任务j移动结束,选择下一个任务;若无冲突产生,对任务j继续执行单步左移操作;(六)当所有任务左移结束,记录此时任务的开始时间为最早开始时间ESTi= STi, i=1,2, . . . , n ;(七)计算任务的自由时差TSi = LSTi-ESTi,i = 1,2,...,11;若151 = 0,则任务1为 关键链任务;否则为非关键链任务;步骤三缓冲量化与调整缓冲的量化与调整分为以下几步(一)计算网络复杂度与资源松紧度网络复杂度定义为网络中存在的优先关系数目与理论存在的最大优先关系数目的比 值,用于表示网络中的时序约束强度;其中,网络中存在的优先关系数目为每个任务的所有 前驱结点包括间接前驱结点之和,最大优先关系数目为n (n-1) /2,其中n表示非虚任务个 数,因此网络复杂度表示为所有的优先关系数
全文摘要
一种基于项目特性的关键链缓冲调整方法,包括以下步骤步骤1、生成初始可行调度方案;步骤2、计算任务的自由时差,识别关键链;步骤3、采用两种经典量化方法计算缓冲大小,选择较优者通过调整策略对缓冲大小进行调整;步骤4、生成缓冲调度方案,输出结果。本发明考虑了影响调度方案鲁棒性的两个重要因素,网络复杂度和资源松紧度。将其引入到缓冲量化方法中,使调度方案能更好地应对项目中的不确定性。该方法可以在保证调度方案的可行性的基础上得到合理的缓冲插入方案。它在优化调度技术领域里具有实用价值和广阔的应用前景。
文档编号G06Q10/06GK102609820SQ201210035939
公开日2012年7月25日 申请日期2012年2月17日 优先权日2012年2月17日
发明者林树民, 蔡开元, 郑征, 郭泽 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1