混合启发式与智能算法的多模资源受限项目调度优化方法技术

技术编号:23787845 阅读:29 留言:0更新日期:2020-04-15 00:55
本发明专利技术公开了一种混合启发式与智能算法的多模资源受限项目调度优化方法,包括以下步骤:获取调度所需信息;判断是否存在可行的调度方案;进行预处理;初始化当代种群并解码获得适应度值;计算适应度值的平均偏差,进行加强型混合单双点交叉操作形成新种群;对新种群进行加强型混合单双点变异操作;从当代和新种群中选出N个不同的个体形成新的当代种群;直到满足进化终止条件输出调度优化结果。本发明专利技术采用了混合动态关键任务优先调度的启发式方法和遗传算法、动态的个体选择操作及加强型混合单双点遗传操作等方法,提高了搜索效率和质量。

Hybrid heuristic and intelligent algorithm for multi-mode resource constrained project scheduling optimization

【技术实现步骤摘要】
混合启发式与智能算法的多模资源受限项目调度优化方法
本专利技术涉及计算机技术、信息技术和系统工程领域,具体涉及一种多模资源受限项目调度优化方法,更具体的说,尤其涉及一种混合启发式与智能算法的多模资源受限项目调度优化方法。
技术介绍
资源受限项目调度问题RCPSP(Resource-ConstrainedProjectSchedulingProblem)是指在满足资源及任务时序关系的约束下,如何科学合理地分配资源、安排任务执行顺序确定其开始和完成时间,以实现既定目标如:工期、费用等的最优化。随着越来越多的现代企业采用趋于面向项目的组织结构和管理模式,RCPSP广泛存在于建筑工程、软件开发、飞机及轮船制造等单件或小批量生产方式的企业中,具有很强的工程应用背景。RCPSP可进一步分为单模式资源受限项目调度问题SRCPSP和多模式资源受限项目调度问题MRCPSP,其中SRCPSP中每个任务只有一种执行模式,资源为可更新资源,任务的工期和资源需求量是确定的;而MRCPSP中任务有多种执行模式,资源包括可更新资源和不可更新资源,且任务的各种执行模式对应的活动工期和资源需求量均不相同。因此SRCPSP可以认为是MRCPSP的一个特例,相比于SRCPSP,MRCPSP是一个更复杂的问题,但其更具有实际意义。在现阶段求解RCPSP的方法主要分为:1)精确算法,如:0-1整数规划和分支定界法;2)启发式算法,如:基于优先规则的启发式算法、分离弧法和局部搜索计算等;3)智能算法,如:遗传算法、粒子群优化算法、蚁群算法等。其中精确算法尽管在理论上能够得到最优解,但计算时间通常无法接受,一般只适用于小规模问题,启发式算法基于一定的启发式规则可以快速得到问题的解,但通常不能保证解的质量,智能算法基于计算智能,采用改进的启发式规则和搜索方式在合理的时间内找到近优解或满意解,但其效率通常依赖于算法本身的设计及问题的类型。
技术实现思路
为了克服精确算法无法适用于大规模问题、传统启发式算法不能保证解的质量及传统智能计算方法存在搜索空间过大,其效率依赖于编码与解码、进化迭代策略的设计及控制参数的选择等方面的不足,本专利技术提供了一种混合启发式与智能算法的多模资源受限项目调度优化方法,有效减少了求解时间,提高了求解质量。本专利技术解决其技术问题所采用的技术方案如下:一种混合启发式与智能算法的多模资源受限项目调度优化方法,包括以下步骤:步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;获取项目任务集T={t0,t1,…,tJ,tJ+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj,任务j在其父任务j-∈PRj全部完工之前不能开始执行,j=0,1,…,J+1,t0没有父任务即tJ+1没有子任务即获取可更新资源k在任意时刻的可使用量Rk,k=1,…,K,K是可更新资源种类数量;获取不可更新资源l在整个项目工期中的可使用量Nl,l=1,…,L,L是不可更新资源种类数量;获取任务j在模式m下执行时需要的时间即工期dj,m和占用的可更新资源k的数量rj,m,k、不可更新资源l的数量nj,m,l;j=1,…,J,m=1,…,Mj,k=1,…,K,l=1,…,L,其中Mj是可供任务j选择采用的模式数量;步骤2:如果存在不可更新资源l满足或存在一个任务j和可更新资源k满足那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1;步骤3.2:如果mflg=0,那么令mflg=1,转到步骤3.3;否则转到步骤3.4;步骤3.3:如果存在任务j,模式m和m′满足:dj,m′≤dj,m,rj,m′,k≤rj,m,k,nj,m′,l≤nj,m,l,m′≠m,k=1,…,K,l=1,…,L;那么对于任务j模式m是冗余的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;步骤3.5:如果可更新资源k满足:那么该可更新资源是冗余的,去除可更新资源k:令其中:j=1,…,J,令K=K-1,mflg=0;步骤3.6:如果不可更新资源l满足:那么该不可更新资源是冗余的,去除不可更新资源l:令其中:j=1,…,J,令L=L-1,mflg=0;步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;步骤3.8:预处理结束;步骤4:基于个体随机生成操作生成N个不同的个体,形成初始当代种群,并对当代种群中的每个个体进行个体解码,获得个体的适应度值;其中N是种群规模;所述个体采用J位整数编码,其方法如下:ch={g1,…,gJ},基因gj表示任务j执行时采用的模式,gj=1,…,Mj,例如:g1=2表示任务1执行时采用模式2;所述个体随机生成操作描述如下:对于每一个任务j,j=1,…,J,从可以执行该任务的模式中随机选择一个模式m,即gj=m;所述个体解码采用基于动态关键任务优先调度的启发解码方法,包括如下步骤:步骤A1:计算任务的排序值rank:对于没有子任务的任务J+1,rankJ+1=0;其它任务的rank采用如下递归公式进行计算:步骤A2:系统状态初始化:令任务0的完成时间f0=0、完成时间集F={f0,lf},F中的元素从小到大排列;对应于F中各完成时间可更新资源k的剩余可用量为:k=1,…,K;令就绪任务集令要调度的任务集UT={t1,t2,…,tJ};令要调度任务的父任务中还没有完成调度的任务集P(tj)=PRj-{t0},j=1,…,J;把UT中的移到RT中;步骤A3:从RT中取出关键任务,即任务就绪时间与rank之和最大的任务,不妨设为任务j,取出任务j采用的模式m=gj;步骤A4:计算任务j的完成时间即:步骤A4.1:对rj,m,k>0的每种可更新资源k找出其剩余可用量满足任务j的且开始时间点大于rtj的时间段AUj,k,不妨设步骤A4.2:找出所有可更新资源的剩余可用量都满足任务j的公共时间段:不妨设步骤A4.3:在AUj中找出满足υj-νj≥dj,m的最早时间段[νj,υj];步骤A4.4:令任务j的开始时间sj=vj,结束时间fj=sj+dj,m;步骤A5:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量本文档来自技高网
...

【技术保护点】
1.一种混合启发式与智能算法的多模资源受限项目调度优化方法,其特征在于:包括以下步骤:/n步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;/n获取项目任务集T={t

【技术特征摘要】
1.一种混合启发式与智能算法的多模资源受限项目调度优化方法,其特征在于:包括以下步骤:
步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;
获取项目任务集T={t0,t1,...,tJ,tJ+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;
获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj,任务j在其父任务j-∈PRj全部完工之前不能开始执行,j=0,1,…,J+1,t0没有父任务即tJ+1没有子任务即
获取可更新资源k在任意时刻的可使用量Rk,k=1,…,K,K是可更新资源种类数量;获取不可更新资源l在整个项目工期中的可使用量Nl,l=1,…,L,L是不可更新资源种类数量;
获取任务j在模式m下执行时需要的时间即工期dj,m和占用的可更新资源k的数量rj,m,k、不可更新资源l的数量nj,m,l;j=1,…,J,m=1,…,Mj,k=1,…,K,l=1,…,L,其中Mj是可供任务j选择采用的模式数量;
步骤2:如果存在不可更新资源l满足或存在一个任务j和可更新资源k满足那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1;
步骤3.2:如果mflg=0,那么令mflg=1,转到步骤3.3;否则转到步骤3.4;
步骤3.3:如果存在任务j,模式m和m′满足:dj,m′≤dj,m,rj,m′,k≤rj,m,k,nj,m′,l≤nj,m,l,m′≠m,k=1,…,K,l=1,…,L;那么对于任务j模式m是冗余的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;
步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;
步骤3.5:如果可更新资源k满足:那么该可更新资源是冗余的,去除可更新资源k:令其中:j=1,…,J,令K=K-1,mflg=0;
步骤3.6:如果不可更新资源l满足:那么该不可更新资源是冗余的,去除不可更新资源l:令其中:j=1,…,J,令L=L-1,mflg=0;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:基于个体随机生成操作生成N个不同的个体,形成初始当代种群,并对当代种群中的每个个体进行个体解码,获得个体的适应度值;
其中N是种群规模;
所述个体采用J位整数编码,其方法如下:ch={g1,…,gJ},基因gj表示任务j执行时采用的模式,gj=1,…,Mj;
所述个体随机生成操作描述如下:对于每一个任务j,j=1,…,J,从可以执行该任务的模式中随机选择一个模式m,即gj=m;
所述个体解码采用基于动态关键任务优先调度的启发解码方法,包括如下步骤:
步骤A1:计算任务的排序值rank:对于没有子任务的任务J+1,rankJ+1=0;其它任务的rank采用如下递归公式进行计算:
步骤A2:系统状态初始化:令任务0的完成时间f0=0、完成时间集F={f0,lf},F中的元素从小到大排列;对应于F中各完成时间可更新资源k的剩余可用量为:令就绪任务集令要调度的任务集UT={t1,t2,…,tJ};令要调度任务的父任务中还没有完成调度的任务集P(tj)=PRj-{t0},j=1,…,J;把UT中的移到RT中;
步骤A3:从RT中取出关键任务,即任务就绪时间与rank之和最大的任务,不妨设为任务j,取出任务j采用的模式m=gj;
步骤A4:计算任务j的完成时间

即:
步骤A4.1:对rj,m,k>0的每种可更新资源k找出其剩余可用量满足任务j的且开始时间点大于rtj的时间段AUj,k,不妨设
步骤A4.2:找出所有可更新资源的剩余可用量都满足任务j的公共时间段:不妨设
步骤A4.3:在AUj中找出满足υj-νj≥dj,m的最早时间段[νj,υj];
步骤A4.4:令任务j的开始时间sj=vj,结束时间fj=sj+dj,m;
步骤A5:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:其中:fj″是fj的前一个时刻;
步骤A6:更新[sj,fj)时段内可更新资源的剩余可用量:



步骤A7:在所有中删除tj,把UT中的移到RT中;
步骤A8...

【专利技术属性】
技术研发人员:谢毅桂奉献余浩楠
申请(专利权)人:浙江工商大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1