欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019112598818
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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采用的模式,j=1,…,J,gj=

1,...,Mj;{gJ+1,…,g2J}是调度顺序列表,gJ+1,…,g2J是1,…,J的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gJ+j表示第j个被调度的任务,即任务gJ+j是第j个被调度;

所述基于层次的个体随机生成方法包括如下步骤:步骤A1:生成执行模式列表:对每一个任务j随机选择一个其可以执行的模式,不妨设为m,则gj=m,j=1,…,J;

步骤A2:生成调度顺序列表:除第一层即0层和最后一层外,对每个层次随机排列层内任务;然后根据任务层次值从小到大把每层内随机排列的任务连接起来,形成个体的调度顺序列表部分基因{gJ+1,…,g2J};

步骤6:采用FBI&D方法改进初始当代种群中的所有个体并计算其适应度值;

所述FBI&D方法包括如下步骤:

步骤B1:令计次变量θ=1;对个体ch进行基于插入模式的串行个体解码获得所有任务的完成时间fj,j=1,…,J,及其适应度值fit;

步骤B2:把任务0变成任务J+1,任务J+1变成任务0,颠倒任务间的时序关系,根据任务完成时间fj从大到小重新排列个体ch中的调度顺序列表,即把个体中的基因gJ+j设置为倒数第j个完成的任务,j=1,…,J,形成个体步骤B3:令θ=θ+1,对个体 进行基于插入模式的串行个体解码获得所有任务的完成时间 及其适应度值步骤B4:若 那么令 转到步骤B2,否则转到步骤B5;

步骤B5:如果θ为偶数那么输出个体ch=ch,否则输出个体 其适应度值为fit,操作结束;

所述基于插入模式的串行个体解码包括如下步骤:步骤C1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间: F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量: 令循环控制变量δ=1;

步骤C2:取出任务j=gJ+δ,及其采用的模式m=gj;

步骤C3:计算任务j的完成时间

即:

步骤C3.1:令任务j的开始时间sj=rtj,令标记值flag=1;

步骤C3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};

步骤C3.3:从TF中取出一个值最小的元素,不妨设为fj′;

步骤C3.4:如果flag=1并且fj′-sj≥dj,m,那么转到步骤C3.7;否则转到步骤C3.5;

步骤C3.5:如果flag=0,那么令sj=fj′,flag=1;

步骤C3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即:如果有不满足则令flag=0;转到步骤C3.3;

步骤C3.7:令fj=sj+dj,m;

步骤C4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:其中:fj″是fj的前一个时刻;

步骤C5:更新[sj,fj)时段内可更新资源的剩余可用量:步骤C6:令δ=δ+1,如果δ≤J,则转到步骤C2,否则转到步骤C7;

步骤C7:获得所有任务完成时间fj,j=1,…,J;如果个体为不可行个体,即存在一个不可更新资源l满足 那么令个体的适应度值fit=lf+ms,否则令个体适应度值fit=ms,操作结束;

其中: 表示任务j的就绪时间; 表示τ时刻可更新资源k的剩余可用量;ms=fJ+1=max{fj|tj∈PRJ+1}为项目工期,即项目执行时间;

所述个体适应度值越小,个体越优;

步骤7:判断是否满足进化终止条件,如满足,则转到步骤13,否则转到步骤8;

所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;

步骤8:基于值的轮赌法选择一组遗传操作;

一组遗传操作包括交叉操作和变异操作;其中,交叉操作包括:层次交叉CO1、执行模式交叉CO2、调度顺序交叉CO3;变异操作包括:基于层次的调度顺序变异MT1、执行模式变异MT2、基于拓扑排序的调度顺序变异MT3;这样通过组合,可以得到9组遗传操作:Opr1:CO1+MT1、Opr2:CO1+MT2、Opr3:CO1+MT3、Opr4:CO2+MT1、Opr5:CO2+MT2、Opr6:CO2+MT3、Opr7:CO3+MT1、Opr8:CO3+MT2、Opr9:CO3+MT3;用OprFiti∈(0,1]表示第i组遗传操作的适应度值;

所述各种交叉操作描述如下:

(1)层次交叉CO1

CO1包括如下步骤:

步骤D1:如果在两个父体中存在层内所有任务在调度顺序列表中是连续排列的公共层次,那么在这些公共层次中随机选择一个层次,不妨设为l,转到步骤D2,否则令子体1等于父体1,子体2等于父体2,转到步骤D3;

步骤D2:交换父体1和父体2中l层次的任务调度顺序与执行模式,形成子体1和子体2;

步骤D3:输出子体1和子体2,操作结束;

(2)执行模式交叉CO2

不妨设父体1和父体2为: 子体1和子

体2为:

CO2包括如下步骤:

步骤E1:随机产生一个1到J的正整数α;

步骤E2:生成子体1:chc1的第α个到第J个基因来自于chp2,即 α≤j≤J,其余基因来自于chp1,即

步骤E3:生成子体2:chc2的第α个到第J个基因来自于chp1,即 α≤j≤J,其余基因来自于chp2,即

步骤E4:输出 和 操作结束;

(3)调度顺序交叉CO3

不妨设父体1和父体2为: 子体1和子

体2为:

CO3包括如下步骤:

步骤F1:随机产生一个J+1到2J的正整数α;

步骤F2:生成子体1:chc1的前α个基因来自于chp1,即 后2J-α个基因来自于chp2的调度顺序列表中删除基因值等于 后的基因列表;

步骤F3:生成子体2:chc2的前α个基因来自于chp2,即 后2J-α个基因来自于chp1的调度顺序列表中删除基因值等于 后的基因列表;

步骤F4:输出 和 操作结束;

所述各种变异操作描述如下:

(1)基于层次的调度顺序列表变异MT1MT1包括如下步骤:

步骤G1:如果在个体中存在层内所有任务在调度顺序列表中是连续排列的且层内任务数量大于1的层次,那么在这些层次中随机选择一个层次,不妨设为l,转到步骤G2,否则转到步骤G3;

步骤G2:从l中随机选择两个任务,在调度顺序列表中交换这两个任务;

步骤G3:基于层次的调度顺序列表变异操作结束;

(2)执行模式列表变异MT2

MT2包括如下步骤:

步骤H1:从执行模式列表{g1,…,gJ}中随机选择一位基因,不妨设为gj;

步骤H2:从任务j的执行模式中重新随机选择一个模式,不妨设为m,则gj=m;

步骤H3:执行模式列表变异操作结束;

(3)基于拓扑排序的调度顺序列表变异MT3MT3包括如下步骤:

步骤I1:从调度任务顺序列表{gJ+1,…,g2J}中随机选择一个基因,不妨设为gj;

步骤I2:如果在任务1至任务J中存在任务gj的父任务,那么从gj开始向前找到第一个父任务gj′,令位置值pos1=j′+1,否则令pos1=J+1;如果在任务1至任务J中存在任务gj的子任务,那么从gj开始向后找到第一个子任务gj″,令位置值pos2=j″-1,否则令pos2=2J;在[pos1,pos2]之间重新随机选择一个位置插入gj;

步骤I3:基于拓扑排序的调度顺序列表变异操作结束;

步骤9:对当代种群进行交叉变异操作形成新种群;

步骤9.1:令新种群为空;

步骤9.2:采用基于排序的轮赌法从当代种群中选择两个不同的个体作为父体;

步骤9.3:采用选中遗传操作中的交叉操作对两个父体进行交叉操作,生成两个子体;

步骤9.4:采用选中遗传操作中的变异操作分别对两个子体进行变异操作;

步骤9.5:把两个子体加入到新种群中;如果新种群的数量小于N个,转到步骤9.2,否则转到步骤10;

步骤10:采用FBI&D方法改进新种群中的所有个体并计算其适应度值,并更新遗传操作的适应度值;

不妨设被选中的那组遗传操作为第i组;对新种群中的所有个体经过FBI&D进行改进与解码后,所述更新遗传操作的适应度值的方法如下:其中:V1是新种群中不同个体所占的比例;V2取0、0.5或1,当新种群中的最优个体优于当代种群中的最优个体并且新种群的个体平均适应度值也优于当代种群的个体平均适应度值则取1,当新种群中的最优个体优于当代种群中的最优个体或新种群的个体平均适应度值优于当代种群的个体平均适应度值则取0.5,当新种群中的最优个体劣于当代种群中的最优个体并且新种群的个体平均适应度值也劣于当代种群的个体平均适应度值则取0;

是更新速率,ω∈[0,1]是权重系数;

步骤11:从当代种群和新种群从优到劣选出N个不同的个体形成下一代种群;

步骤12:令下一代种群为当代种群,转到步骤7;

步骤13:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间ms=fJ+1=max{fj|tj∈PRJ+1},否则该问题无可行调度方案。

2.根据权利要求1所述的一种使用分层自适应智能算法的多模资源受限项目调度方法,其特征在于:所述遗传操作的初始适应度值设置设为:OprFit1=1,OprFit2=1,OprFit3=0.4,OprFit4=1,OprFit5=1,OprFit6=0.4,OprFit7=0.6,OprFit8=0.6,OprFit9=

0.2。

3.根据权利要求1所述的一种使用分层自适应智能算法的多模资源受限项目调度方法,其特征在于:所述步骤8中基于值的轮赌法选择一组遗传操作的具体步骤如下:步骤8.1:根据遗传操作的适应度值计算第i组遗传操作被选中的概率步骤8.2:计算累计概率

步骤8.3:产生一个随机数λ∈[0,1),如果 那么选择第i组遗传操作Opri;选择遗传操作结束。

4.根据权利要求1所述的一种使用分层自适应智能算法的多模资源受限项目调度方法,其特征在于:所述步骤9.2中采用基于排序的轮赌法从当代种群中选择两个不同的个体作为父体的具体步骤如下:步骤9.2.1:对当代种群中的个体从优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;

步骤9.2.2:计算个体n被选中的概率 其中R>1为区分度系数;

步骤9.2.3:计算累计概率

步骤9.2.4:产生一个随机数λ1∈[0,1),如果 那么选择个体n;

步骤9.2.5:产生一个随机数λ2∈[0,1),如果 并且n′≠n,那么选择个体n′,转到步骤9.2.6,否则转到步骤9.2.5;

步骤9.2.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。