【技术实现步骤摘要】
采用两阶段遗传算法的多模资源受限项目调度优化方法
本专利技术涉及计算机技术、信息技术和系统工程领域,具体涉及一种多模资源受限项目调度优化方法,更具体的说,尤其涉及一种采用两阶段遗传算法的多模资源受限项目调度优化方法。
技术介绍
资源受限项目调度问题RCPSP(Resource-ConstrainedProjectSchedulingProblem)是指在满足资源及任务时序关系的约束下,如何科学合理地分配资源、安排任务执行顺序确定其开始和完成时间,以实现既定目标如:工期、费用等的最优化。随着越来越多的现代企业采用趋于面向项目的组织结构和管理模式,RCPSP具有很强的工程背景,广泛存在于建筑工程、软件开发、飞机及轮船制造等单件或小批量生产方式的企业中。RCPSP可进一步分为单模资源受限项目调度问题SRCPSP和多模资源受限项目调度问题MRCPSP,其中SRCPSP中每个任务只有一种执行模式,资源为可更新资源,任务的工期和资源需求量是确定的;而MRCPSP中任务有多种执行模式,资源包括可更新资源和不可更新资源,且任务的各种执行模式 ...
【技术保护点】
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:计算任务的层次值:
对于没有父任务的开始任务0,其层次值为:
lvl0=0(1)
其它任务的层次值采用如下递归公式进行计算:
步骤5:初始化当代种群;
基于层次和任务最早完成时间的个体生成方法生成N个不同个体,形成初始当代种群,N为种群规模,且为正偶数;
所述个体采用2J位整数编码,其方法如下:ch={g1,…,gJ;gJ+1,…,g2J},基因gj是一个正整数,其中,{g1,…,gJ}是执行模式列表,gj表示任务j采用的模式,gj=1,...,Mj,j=1,…,J;{gJ+1,…,g2J}是调度顺序列表,gJ+1,…,g2J是1,…,J的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gJ+j表示第j个被调度的任务,即任务gJ+j是第j个被调度的;
所述基于层次和任务最早完成时间的个体生成方法包括如下步骤:
步骤A1:根据任务层次值从小到大随机排列除t0与tJ+1以外的任务,即层次值小的排在大的前面,具有相同层次值的则随机排列,形成个体的调度顺序列表即基因{gJ+1,…,g2J};
步骤A2:基于任务最早完成时间的个体串行解码方法生成个体执行模式列表即基因{g1,…,gJ},获得其适应度值fit;
步骤A3:输出一个个体ch={g1,…,gJ,gJ+1,…,g2J},操作结束;
所述基于任务最早完成时间的个体串行解码方法包括如下步骤:
步骤B1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间:F中的元素从小到大排列;令循环控制变量δ=1;令对应于F中各完成时间的可更新资源的剩余可用量:k=1,…,K;
步骤B2:取出任务j=gJ+δ,令模式m=1;
步骤B3:计算任务j的完成时间fj,即:
步骤B3.1:令任务j的开始时间令标记值flag=1;
步骤B3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};
步骤B3.3:从TF中取出一个值最小的元素,不妨设为fj′;
步骤B3.4:如果flag=1并且fj′-sj,m≥dj,m,那么转到步骤B3.7;否则转到步骤B3.5;
步骤B3.5:如果flag=0,那么令sj,m=fj′,flag=1;
步骤B3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即判断所有的k=1,…,K是否满足如果有不满足则flag=0;转到步骤B3.3;
步骤B3.7:令fj,m=sj,m+dj,m;
步骤B3.8:令m=m+1;如果m≤Mj则转到步骤B3.1,否则从中取出完成时间最小的令转到步骤B4;
步骤B4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:其中:fj″是fj的前一个时刻;
步骤B5:更新[sj,fj)时段内可更新资源的剩余可用量:
步骤B6:令δ=δ+1,如果δ≤J则转到步骤B2,否则转到步骤B7;
步骤B7:获得执行模式列表{g1,…,gJ},计算个体的适应度值fit,操作结束;
其中:表示τ时刻资源k的剩余可用量,表示任务j的就绪时间;
步骤6:对当代种群进行N/2次基于层次的调度顺序交叉操作生成新种群,对新种群中的每个个体采用基于层次的调度顺序变异操作;
所述基于层次的调度顺序列表交叉操作包括如下步骤:
步骤C1:基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2;
步骤C2:随机选择一个层次,不妨设为l;
步骤C3:交换父体1的调度顺序列表和父体2的调度顺序列表中层次l的任务的调度顺序,并清空执行模式列表,生成两个子体1和子体2,操作结束;
所述基于层次的调度顺序列表变异操作包括如下步骤:
步骤D1:产生一个随机数λ∈[0,1),如果λ<pm,则转到步骤D2,否则转到步骤D4;
步骤D2:如果存在层内任务数量大于1的层次,那么从中随机选择一个,不妨设为l,转到步骤D3;否则转到步骤D4;
步骤D3:从l层中随机选择两个任务,在调度顺序列表中交换这两个任务;
步骤D4:基于层次的调度顺序列表变异操作结束;
其中:pm∈(0,1]是变异率;
步骤7:对新种群中的每个个体采用基于任务最早完成时间的个体串行解码方法生成个体执行模式列表并计算其适应度值;
步骤8:从当代种群和新种群中从优到劣选出N个不同的个体形成新的当代种群;
步骤9:判断是否满足第一阶段迭...
【专利技术属性】
技术研发人员:单晓杭,王嘉梁,李研彪,张利,叶必卿,谢毅,
申请(专利权)人:浙江工业大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。