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

摘要:

权利要求书:

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是资源种类数量;

获取任务j执行时需要的时间即工期dj和占用资源k的数量rj,k,rj,k≤Rk,j=1,…,J,k=1,…,K;

步骤2:计算任务的排序值rank和层次值lvl;

任务的排序值rank计算如下:

首先,计算任务j的自下而上排序值

对于没有子任务的结束任务J+1:

其它任务的自下而上排序值 采用如下递归公式进行计算:然后,计算任务j的自上而下排序值

对于没有父任务的开始任务0:

其它任务的自上而下排序值 采用如下递归公式进行计算:最后,计算任务j的排序值rankj,j=1,…,J;

任务的层次值lvl计算如下:

对于没有父任务的开始任务0:

lvl0=0     (6)

其它任务的层次值lvl采用如下递归公式进行计算:其中,j=1,…,J

步骤3:初始化当代种群;

基于层次和rank的个体生成方法生成一个个体,然后基于层次的个体随机生成方法生成剩余的N-1个不同个体,形成初始当代种群,N为种群规模,且为正偶数;

所述个体采用J位整数编码,其方法如下:ch={g1,…,gJ},基因gj是一个正整数,g1,…,gJ是一个满足任务时序约束的调度顺序,即任何任务都不能排在其父任务的前面,为1,…,J的一个排列,gj表示第j个被调度的任务,即任务gj是第j个被调度的;

所述基于层次和rank的个体生成方法包括如下步骤:步骤A1:令待处理任务集UT={t1,t2,…,tJ},令循环控制变量δ=1;

步骤A2:在UT中找出层次最小的任务集,从中选出一个rank最大的任务,不妨设为tj,从UT中取出tj,gδ=j;

步骤A3:令δ=δ+1,如果δ≤J,转到步骤A2;否则转到步骤A4;

步骤A4:获得一个个体{g1,…,gJ},操作结束;

所述基于层次的个体随机生成方法包括如下步骤:步骤B1:令待处理任务集UT={t1,t2,…,tJ},令循环控制变量δ=1;

步骤B2:从UT中随机取出一个层次值最小的任务,不妨设为tj,gδ=j;

步骤B3:令δ=δ+1,如果δ≤J,转到步骤B2;否则转到步骤B4;

步骤B4:获得一个个体{g1,…,gJ},操作结束;

步骤4:对当代种群中的每个个体进行基于插入模式的串行个体解码,获得其适应度值;

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

步骤C2:取出任务j=gδ;

步骤C3:计算任务j的开始时间sj和完成时间步骤C4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻的资源剩余可用量:其中:fj″是fj的前一个时刻;

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

步骤C7:获得所有任务的完成时间fj,及适应度值 操作结束;

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

其中: 表示τ时刻资源k的剩余可用量, 表示任务j的就绪时间;步骤

5:对当代种群进行N/2次基于层次的交叉操作生成新种群,对新种群中的每个个体进行基于层次的变异操作;

所述基于层次的交叉操作包括如下步骤:

步骤D1:基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2;

步骤D2:随机选择一个层次,不妨设其为层次l;

步骤D3:交换父体1和父体2中层次l的任务调度顺序,生成两个子体1和子体2,操作结束;

所述基于层次的变异操作描述如下:

步骤E1:产生一个随机数λ∈[0,1),如果λ

步骤E2:如果存在层内任务数量大于1的层次,那么从中随机选择一个,不妨设为l,转到步骤E3;否则转到步骤E4;

步骤E3:从l层中随机选择两个任务,并交换这两个任务;

步骤E4:基于层次的变异操作结束;

其中,pm为变异概率;

步骤6:对新种群中的每个个体进行基于插入模式的串行个体解码,获得其适应度值;

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

步骤8:判断是否满足第一阶段迭代终止条件,如满足,则第一阶段进化结束转到步骤

9,否则转到步骤5;

所述第一阶段终止条件为迭代到指定的代数TG1或连续迭代GG1代最优个体没有改进;

步骤9:对当代种群进行N次基于拓扑排序的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用基于拓扑排序的变异操作;

所述基于拓扑排序的参数化均匀交叉操作包括如下步骤:步骤F1:基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2,不妨设为:chp1、chp2,令循环控制变量δ=1,子体步骤F2:如果δ≤J则转到步骤F3,否则转到步骤F4;

步骤F3:产生一个随机数λ∈[0,1),如果λ<0.5,那么从chp1中取出首元素放到chc的尾部,并从chp2中删除该元素,否则从chp2中取出首元素放到chc的尾部,并从chp1中删除该元素;令δ=δ+1,转到步骤F2;

步骤F4:输出子体 操作结束;

所述基于拓扑排序的变异操作包括如下:

步骤G1:产生一个随机数λ∈[0,1),如果λ

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

步骤G3:基于拓扑排序的变异操作结束;

步骤10:对新种群中的每个个体采用FBI&D方法进行改进并计算其适应度值;

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

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

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

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

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

步骤12:判断是否满足第二阶段进化终止条件,如满足,则转到步骤13,转到步骤9;

所述第二阶段终止条件为迭代到指定的代数TG2或连续迭代GG2代最优个体没有改进;

步骤13:输出最优个体对应的调度方案,及其项目执行时间

2.根据权利要求1所述的一种基于分层两阶段智能算法的资源受限项目调度优化方法,其特征在于:所述步骤C3中计算任务j的开始时间sj和完成时间的具体步骤如下:

步骤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,那么转到步骤C3.7;否则转到步骤C3.5;

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

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

步骤C3.7:令fj=sj+dj,操作结束。

3.根据权利要求1所述的一种基于分层两阶段智能算法的资源受限项目调度优化方法,其特征在于:所述步骤D1和步骤F1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:步骤I1:对当代种群中的个体按优到劣进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;

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

步骤I3:计算累计概率:

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

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

步骤I6:个体选择操作结束。