CN111126800B - 使用分层自适应智能算法的多模资源受限项目调度方法 - Google Patents

使用分层自适应智能算法的多模资源受限项目调度方法 Download PDF

Info

Publication number
CN111126800B
CN111126800B CN201911259881.8A CN201911259881A CN111126800B CN 111126800 B CN111126800 B CN 111126800B CN 201911259881 A CN201911259881 A CN 201911259881A CN 111126800 B CN111126800 B CN 111126800B
Authority
CN
China
Prior art keywords
task
individual
population
scheduling
fitness value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911259881.8A
Other languages
English (en)
Other versions
CN111126800A (zh
Inventor
张利
纪仁全
李研彪
单晓杭
叶必卿
计时鸣
谢毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201911259881.8A priority Critical patent/CN111126800B/zh
Publication of CN111126800A publication Critical patent/CN111126800A/zh
Application granted granted Critical
Publication of CN111126800B publication Critical patent/CN111126800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06312Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Strategic Management (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Marketing (AREA)
  • Biomedical Technology (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Physiology (AREA)
  • Genetics & Genomics (AREA)
  • Artificial Intelligence (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Factory Administration (AREA)

Abstract

本发明公开了一种使用分层自适应智能算法的多模资源受限项目调度方法,包括以下步骤:获取调度优化所需信息;判断是否存在可行方案;进行预处理;计算任务的层次值;初始化当代种群;改进当代种群计算个体适应度值;选择一组遗传操作对当代种群进行交叉变异操作形成新种群;改进新种群计算个体适应度值,更新遗传操作的适应度值;由当代和新种群形成新的当代种群;直到满足迭代终止条件输出调度优化结果。本发明采用分层、自适应、拓扑排序、插入式串行解码、FBI&D等技术方法,提高了算法的寻优能力和搜索效率,适用于大规模问题求解。

Description

使用分层自适应智能算法的多模资源受限项目调度方法
技术领域
本发明涉及计算机技术、信息技术和系统工程领域,具体涉及一种资源受限项目调度优化方法,更具体的说,尤其涉及一种使用分层自适应智能算法的多模资源受限项目调度方法。
背景技术
资源受限项目调度问题RCPSP(Resource-Constrained Project SchedulingProblem)是指在满足资源及任务时序关系约束下,如何科学合理地分配资源、安排任务执行顺序确定其开始和完成时间,以实现既定目标如:工期、费用等的最优化。RCPSP涉及诸多工业和生活领域,例如化工、半导体生产、物流、钢铁制造、工程管理、芯片制造、软件开发、铁路调度、港口调度以及飞机航线制定和大型运动会比赛安排等,具有很强的应用背景。RCPSP可进一步分为单模式资源受限项目调度问题SRCPSP和多模式资源受限项目调度问题MRCPSP,其中SRCPSP中每个任务只有一种执行模式,资源为可更新资源,任务的工期和资源需求量是确定的;而MRCPSP中任务有多种执行模式,资源包括可更新资源和不可更新资源,且任务的各种执行模式对应的工期和资源需求量均不相同。因此SRCPSP可以认为是MRCPSP的一个特例,相比于SRCPSP,MRCPSP是一个更复杂的问题,但其更具有实际意义。
在现阶段求解RCPSP的方法主要分为:1)精确算法,如:0-1整数规划和分支定界法;2)启发式算法,如:基于优先规则的启发式算法、分离弧法和局部搜索计算等;3)智能算法,如:遗传算法、粒子群优化算法、蚁群算法等。其中精确算法尽管在理论上能够得到最优解,但计算时间通常无法接受,一般只适用于小规模问题,启发式算法基于一定的启发式规则可以快速得到问题的解,但通常不能保证解的质量,智能算法基于计算智能,采用改进的启发式规则和搜索方式在合理的时间内找到近优解或满意解,但其效率通常依赖于算法本身的设计及问题的类型。
发明内容
为了克服现有启发式算法、半启发式半智能算法搜索空间的不完备性及现有的智能算法中进化操作单一、不能动态适应种群的变化,求解效率不高等问题,本发明提供了一种使用分层自适应智能算法的多模资源受限项目调度方法,有效减少了资源受限的项目调度问题的求解时间、提高了求解质量。
本发明解决其技术问题所采用的技术方案如下:一种使用分层自适应智能算法的多模资源受限项目调度方法,包括以下步骤:
步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;
获取项目任务集T={tj|j=0,1,...,J,J+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;
获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj,任务j在其父任务j-∈PRj全部完工之前不能开始执行,j=0,1,…,J+1,t0没有父任务即
Figure GDA0003595718490000021
tJ+1没有子任务即
Figure GDA0003595718490000022
获取可更新资源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满足
Figure GDA0003595718490000023
或存在一个任务j和可更新资源k满足
Figure GDA0003595718490000024
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令
Figure GDA0003595718490000025
Figure GDA0003595718490000026
其中:
Figure GDA0003595718490000027
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:令
Figure GDA0003595718490000031
其中:
Figure GDA0003595718490000032
k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;
步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;
步骤3.5:如果可更新资源k满足:
Figure GDA0003595718490000033
那么该可更新资源是冗余的,去除可更新资源k:令
Figure GDA0003595718490000034
其中:j=1,…,J,
Figure GDA0003595718490000035
令K=K-1,mflg=0;
步骤3.6:如果不可更新资源l满足:
Figure GDA0003595718490000036
那么该不可更新资源是冗余的,去除不可更新资源l:令
Figure GDA0003595718490000037
其中:j=1,…,J,
Figure GDA0003595718490000038
令L=L-1,mflg=0;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的层次值
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (1)
其它任务的层次值采用如下递归公式进行计算:
Figure GDA0003595718490000039
步骤5:初始化当代种群;
采用基于层次的个体随机生成方法生成N个不同的个体形成当代种群,N为种群规模,且为正偶数;
个体ch采用2J位整数编码,其方法如下:ch={g1,…,gJ,gJ+1,…,g2J},基因gj是一个正整数,其中,{g1,…,gJ}是执行模式列表,gj表示任务j采用的模式,j=1,…,J,gj=1,...,Mj,例如:g1=2表示任务1采用模式2;{gJ+1,…,g2J}是调度顺序列表,gJ+1,…,g2J是1,…,J的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gJ+j表示第j个被调度的任务,即任务gJ+j是第j个被调度,例如gJ+1=3,表示第1个调度的任务是3号任务;
所述基于层次的个体随机生成方法包括如下步骤:
步骤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,形成个体
Figure GDA0003595718490000041
步骤B3:令θ=θ+1,对个体
Figure GDA0003595718490000042
进行基于插入模式的串行个体解码获得所有任务的完成时间
Figure GDA0003595718490000043
及其适应度值
Figure GDA0003595718490000044
步骤B4:若
Figure GDA0003595718490000045
那么令
Figure GDA0003595718490000046
转到步骤B2,否则转到步骤B5;
步骤B5:如果θ为偶数那么输出个体ch=ch,否则输出个体
Figure GDA0003595718490000047
其适应度值为fit,操作结束;
所述基于插入模式的串行个体解码包括如下步骤:
步骤C1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间:
Figure GDA0003595718490000048
F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:
Figure GDA0003595718490000049
令循环控制变量δ=1;
步骤C2:取出任务j=gJ+δ,及其采用的模式m=gj
步骤C3:计算任务j的完成时间
Figure GDA0003595718490000051
即:
步骤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的需求,即:
Figure GDA0003595718490000052
如果有不满足则令flag=0;转到步骤C3.3;
步骤C3.7:令fj=sj+dj,m
步骤C4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure GDA0003595718490000053
其中:fj″是fj的前一个时刻;
步骤C5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure GDA0003595718490000054
步骤C6:令δ=δ+1,如果δ≤J,则转到步骤C2,否则转到步骤C7;
步骤C7:获得所有任务完成时间fj,j=1,…,J;如果个体为不可行个体,即存在一个不可更新资源l满足
Figure GDA0003595718490000055
那么令个体的适应度值fit=lf+ms,否则令个体适应度值fit=ms,操作结束;
其中:
Figure GDA0003595718490000056
表示任务j的就绪时间;
Figure GDA0003595718490000057
表示τ时刻可更新资源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为:
Figure GDA0003595718490000061
子体1和子体2为:
Figure GDA0003595718490000062
CO2包括如下步骤:
步骤E1:随机产生一个1到J的正整数α;
步骤E2:生成子体1:chc1的第α个到第J个基因来自于chp2,即
Figure GDA0003595718490000063
Figure GDA0003595718490000064
其余基因来自于chp1,即
Figure GDA0003595718490000065
步骤E3:生成子体2:chc2的第α个到第J个基因来自于chp1,即
Figure GDA0003595718490000066
Figure GDA0003595718490000067
其余基因来自于chp2,即
Figure GDA0003595718490000068
步骤E4:输出
Figure GDA0003595718490000069
Figure GDA00035957184900000610
操作结束;
(3)调度顺序交叉CO3
不妨设父体1和父体2为:
Figure GDA0003595718490000071
子体1和子体2为:
Figure GDA0003595718490000072
CO3包括如下步骤:
步骤F1:随机产生一个J+1到2J的正整数α;
步骤F2:生成子体1:chc1的前α个基因来自于chp1,即
Figure GDA0003595718490000073
后2J-α个基因来自于chp2的调度顺序列表中删除基因值等于
Figure GDA0003595718490000074
后的基因列表;
步骤F3:生成子体2:chc2的前α个基因来自于chp2,即
Figure GDA0003595718490000075
后2J-α个基因来自于chp1的调度顺序列表中删除基因值等于
Figure GDA0003595718490000076
后的基因列表;
步骤F4:输出
Figure GDA0003595718490000077
Figure GDA0003595718490000078
操作结束;
所述各种变异操作描述如下:
(1)基于层次的调度顺序列表变异MT1
MT1包括如下步骤:
步骤G1:如果在个体中存在层内所有任务在调度顺序列表中是连续排列的且层内任务数量大于1的层次,那么在这些层次中随机选择一个层次,不妨设为l,转到步骤G2,否则转到步骤G3;
步骤G2:从l中随机选择两个任务,在调度顺序列表中交换这两个任务;
步骤G3:基于层次的调度顺序列表变异操作结束;
(2)执行模式列表变异MT2
MT2包括如下步骤:
步骤H1:从执行模式列表{g1,…,gJ}中随机选择一位基因,不妨设为gj
步骤H2:从任务j的执行模式中重新随机选择一个模式,不妨设为m,则gj=m;
步骤H3:执行模式列表变异操作结束;
(3)基于拓扑排序的调度顺序列表变异MT3
MT3包括如下步骤:
步骤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进行改进与解码后,所述更新遗传操作的适应度值的方法如下:
Figure GDA0003595718490000081
其中:V1是新种群中不同个体所占的比例;V2取0、0.5或1,当新种群中的最优个体优于当代种群中的最优个体并且新种群的个体平均适应度值也优于当代种群的个体平均适应度值则取1,当新种群中的最优个体优于当代种群中的最优个体或新种群的个体平均适应度值优于当代种群的个体平均适应度值则取0.5,当新种群中的最优个体劣于当代种群中的最优个体并且新种群的个体平均适应度值也劣于当代种群的个体平均适应度值则取0;
Figure GDA0003595718490000082
是更新速率,ω∈[0,1]是权重系数;
步骤11:从当代种群和新种群从优到劣选出N个不同的个体形成下一代种群;
步骤12:令下一代种群为当代种群,转到步骤7;
步骤13:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间ms=fJ+1=max{fj|tj∈PRJ+1},否则该问题无可行调度方案。
进一步的,所述遗传操作的初始适应度值设置设为:OprFit1=1,OprFit2=1,OprFit3=0.4,OprFit4=1,OprFit5=1,OprFit6=0.4,OprFit7=0.6,OprFit8=0.6,OprFit9=0.2。
进一步的,所述步骤8中基于值的轮赌法选择一组遗传操作的具体步骤如下:
步骤8.1:根据遗传操作的适应度值计算第i组遗传操作被选中的概率
Figure GDA0003595718490000091
步骤8.2:计算累计概率
Figure GDA0003595718490000092
步骤8.3:产生一个随机数λ∈[0,1),如果
Figure GDA0003595718490000093
那么选择第i组遗传操作Opri;选择遗传操作结束。
进一步的,所述步骤9.2中采用基于排序的轮赌法从当代种群中选择两个不同的个体作为父体的具体步骤如下:
步骤9.2.1:对当代种群中的个体从优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤9.2.2:计算个体n被选中的概率
Figure GDA0003595718490000094
其中R>1为区分度系数;
步骤9.2.3:计算累计概率
Figure GDA0003595718490000095
步骤9.2.4:产生一个随机数λ1∈[0,1),如果
Figure GDA0003595718490000096
那么选择个体n;
步骤9.2.5:产生一个随机数λ2∈[0,1),如果
Figure GDA0003595718490000097
并且n′≠n,那么选择个体n′,转到步骤9.2.6,否则转到步骤9.2.5;
步骤9.2.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。
本发明的有益效果在于:
(1)相对于传统的多模资源受限项目调度优化方法,本发明增加了预处理,对资源和模式进行了冗余和无效检查,去除冗余资源、冗余模式和无效模式,这样可以提高求解的速度。
(2)相对于启发式算法、结合启发式的半智能算法、及现有的基于分层编码的智能算法,本发明设计采用的编码方法,任何一个调度方案都有一个编码方案与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(3)相对于精确算法,本发明设计的算法可以适用于大规模问题的求解。
(4)相对于一般的基于优先级的编码方式,本发明任务调度顺序采用的基于拓扑排序的整数编码方法考虑了任务之间的时序关系,这样解码就比较简单,能有效提高解码的效率,进而提高了算法的整体效率。
(5)相对于传统的非插入模式和并行解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行解码方法通常能找到更好的对应调度方案。
(6)相对于普通的单向解码方法,本发明设计采用的向前向后个体解码改进策略FBI&D增强了个体的邻域寻优能力,从而能提高了整个算法的寻优能力和搜索效率。
(7)本发明采用自适应遗传操作,可以根据遗传操作的适应度值动态选择适合的遗传操作,有利于产生更优的个体和保持种群的多样性。
(8本发明)在遗传操作中采用改进的基于分层技术的交叉变异操作,即可以保证实现全域搜索,同时又提高了寻优能力和搜索效率。
(9)本发明采用由当代种群和新种群合并产生下一代种群的策略,可以保证最优个体被遗传到下一代,使算法单调收敛。
(10)相对于传统的随机初始化方法,本发明在初始化种群时采用了基于分层的拓扑排序,使算法可以从满足层次编码的适应度值比较好的个体附近开始搜索,可以提高搜索效率,缩短搜索时间。
附图说明
图1是本发明一种使用分层自适应智能算法的多模资源受限项目调度方法的流程示意图。
图2是本发明实施例中任务间的时序关系图。
具体实施方式
下面结合图1、图2及实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
一个项目由编号为0至11的12个任务组成,其任务结构即任务间的时序关系如图2所示,其中t0和t11是人为增加的虚拟任务,即不占用项目工期也不占用资源,t1到t10的可执行模式,以及该模式下执行时需要的时间、占用可更新资源和不可更新资源的数量如表1所示。在该项目中可更新资源1在任意时刻的可使用量为18、可更新资源2在任意时刻的可使用量为16、不可更新资源1在整个项目工期中的可使用量为61、不可更新资源2在整个项目工期中的可使用量为62。
Figure GDA0003595718490000101
Figure GDA0003595718490000111
表1
针对上述案例,如图1所示,一种使用分层自适应智能算法的多模资源受限项目调度方法,包括以下实施步骤:
执行步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;
获取项目的任务集T={t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11},其中任务0和任务11,即t0和t11是虚拟任务,任务1到任务10,即t1,…,t10是实际需要调度的任务;
获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj
Figure GDA0003595718490000112
SC0={t1,t2,t3};PR1={t0},SC1={t4,t5,t8};PR2={t0},SC2={t6,t8,t10};PR3={t0},SC3={t7,t8};PR4={t1},SC4={t9};PR5={t1},SC5={t6};PR6={t2,t5},SC6={t7};PR7={t3,t6},SC7={t9};PR8={t1,t2,t3},SC8={t11};PR9={t4,t7},SC9={t11};PR10={t2},SC10={t11};PR11={t8,t9,t10},
Figure GDA0003595718490000113
获取项目中可更新资源k在任意时刻的可使用量Rk:R1=18,R2=16;获取不可更新资源l在整个项目工期中的可使用量Nl:N1=61,N2=62;
获取任务j在模式m下执行时需要的时间dj,m和占用的可更新资源数量rj,m,k、不可更新资源数量nj,m,l:d1,1=3,r1,1,1=7,r1,1,2=0,n1,1,1=8,n1,1,2=9;d1,2=4,r1,2,1=1,r1,2,2=7,n1,2,1=8,n1,2,2=7;d1,3=8,r1,3,1=2,r1,3,2=7,n1,3,1=6,n1,3,2=6;……;d10,3=7,r10,3,1=2,r10,3,2=2,n10,3,1=4,n10,3,2=6;
执行步骤2:如果存在不可更新资源l满足
Figure GDA0003595718490000114
或存在一个任务j和可更新资源k满足
Figure GDA0003595718490000115
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
对于不可更新资源1,
Figure GDA0003595718490000121
对于不可更新资源2,
Figure GDA0003595718490000122
对于可更新资源1,对于所有的任务j都满足
Figure GDA0003595718490000123
对于可更新资源2,对于所有的任务j都满足
Figure GDA0003595718490000124
因此,则该问题可能存在可行的调度方案,转到步骤3。执行步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
执行步骤3.1:mflg=0,rflg=0;由于不存在rj,m,k>Rk及nj,m,l>Nl,j=1,…,10,m=1,…,Mj,k=1,2,l=1,2,因此本项目不存在无效模式;
执行步骤3.2:由于mflg=0,因此令mflg=1,转到步骤3.3;
执行步骤3.3;由于存在任务7及其模式2和模式3满足:d7,2=5<d7,3=8,r7,2,1=8≤r7,3,1=8,r7,2,2=0<r7,3,2=1,n7,2,1=3≤n7,3,1=3,n7,2,2=3<n7,3,2=4,因此对于任务7来说,模式3是冗余的,从任务7中去除模式3:令M7=3-1=2,rflg=0;
执行步骤3.4:由于rflg=0,因此令rflg=1,转到步骤3.5;
执行步骤3.5:对于可更新资源1:
Figure GDA0003595718490000125
对于可更新资源2:
Figure GDA0003595718490000126
因此不存在可更新资源k满足:
Figure GDA0003595718490000127
本项目不存在冗余的可更新资源;
执行步骤3.6:对于不可更新资源1:
Figure GDA0003595718490000128
对于不可更新资源2:
Figure GDA0003595718490000129
因此不存在不可更新资源l满足:
Figure GDA00035957184900001210
本项目不存在冗余的不可更新资源;
执行步骤3.7:由于mflg=1∧rflg=1,因此转到步骤3.8;
执行步骤3.8:预处理结束。
执行步骤4:计算任务的层次值;
t0没有父任务,其层次值为lvl0=0;
t1只有一个父任务t0,则
Figure GDA0003595718490000131
同理,可以获得其它任务的层次值:lvl2=lvl3=1;lvl4=lvl5=lvl8=lvl10=2;lvl6=3;lvl7=4;lvl9=5;lvl11=6。
执行步骤5:初始化当代种群;
取种群规模N=10;
基于层次的个体随机生成方法生成一个个体的具体实施过程如下:
执行步骤A1:生成执行模式列表:对于任务1,在其可执行模式1、2、3中随机选择一个模式,其为模式1,即g1=1;对于任务2,在可执行模式1、2、3中随机选择一个模式,其为模式1,即g2=1;……,同理,随机选择剩余任务的执行模式:g3=2,g4=1,g5=1,g6=3,g7=1,g8=1,g9=2,g10=2;
执行步骤A2:生成调度顺序列表:随机排列层次1内的任务,其为3,1,2,随机排列层次2内的任务,其为10,8,4,5,……,同理,随机排列层次3、4、5内的任务分别为:6;7;9,将层次1至层次5内的任务排列依次连接,形成个体的调度顺序列表部分的基因{g11,g12,…,g20}={3,1,2,10,8,4,5,6,7,9};
通过步骤A1和步骤A2生成个体ch1={1,1,2,1,1,3,1,1,2,2;3,1,2,10,8,4,5,6,7,9};
基于层次的个体随机生成方法生成当代种群中的其它个体如下:ch2={1,3,3,1,2,3,2,1,1,1;3,2,1,4,5,10,8,6,7,9};ch3={3,2,3,1,2,2,2,2,1,3;3,1,2,8,5,10,4,6,7,9};ch4={1,2,2,2,2,2,1,2,3,2;3,2,1,5,4,8,10,6,7,9};ch5={1,3,2,1,2,1,1,3,2,3;2,3,1,5,10,8,4,6,7,9};ch6={2,3,2,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};ch7={2,1,2,3,1,2,1,2,1,1;3,2,1,8,10,5,4,6,7,9};ch8={1,2,3,2,1,1,2,1,3,3;2,3,1,8,10,5,4,6,7,9};ch9={1,3,2,1,2,3,2,1,3,2;3,2,1,10,4,8,5,6,7,9};ch10={1,1,2,3,2,1,2,1,1,2;1,2,3,5,10,4,8,6,7,9};
这样最终生成的初始当代种群为CP={ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10}。
执行步骤6:采用FBI&D方法改进初始当代种群中的所有个体并计算其适应度值;
例如对初始当代种群中的ch8={1,2,3,2,1,1,2,1,3,3;2,3,1,8,10,5,4,6,7,9}采用FBI&D方法改进并计算其适应度值的具体实施过程如下:
执行步骤B1:令θ=1,对个体ch8进行基于插入模式的串行个体解码获得所有任务完成时间:f1=9,f2=6,f3=10,f4=14,f5=17,f6=19,f7=24,f8=15,f9=32,f10=16,以及适应度值fit8=32;
执行步骤B2:把任务0变成任务11,任务11变成任务0,颠倒任务间的时序关系,即:
Figure GDA0003595718490000141
SC0={t8,t9,t10};PR10={t0},SC10={t2};PR9={t0},SC9={t4,t7};PR8={t0},SC8={t1,t2,t3};PR7={t9},SC7={t3,t6};PR6={t7},SC6={t2,t5};PR5={t6},SC5={t1};PR4={t9},SC4={t1};PR3={t7,t8},SC3={t11};PR2={t6,t8,t10},SC2={t11};PR1={t4,t5,t8},SC1={t11};PR11={t1,t2,t3},
Figure GDA0003595718490000142
根据任务完成时间fj从大到小重新排列个体ch8中的调度顺序列表,即把个体中的基因gJ+j设置为倒数第j个完成的任务,j=1,…,10,形成个体
Figure GDA0003595718490000143
执行步骤B3:θ=1+1=2,对个体
Figure GDA0003595718490000144
进行基于插入模式的串行个体解码获得所有任务的完成时间:
Figure GDA0003595718490000145
Figure GDA0003595718490000146
及其适应度值
Figure GDA0003595718490000147
执行步骤B4:由于
Figure GDA0003595718490000148
Figure GDA0003595718490000149
转到步骤B2;
执行步骤B2:把任务11变成任务0,任务0变成任务11,颠倒任务间的时序关系,即:
Figure GDA00035957184900001410
SC0={t1,t2,t3};PR1={t0},SC1={t4,t5,t8};PR2={t0},SC2={t6,t8,t10};PR3={t0},SC3={t7,t8};PR4={t1},SC4={t9};PR5={t1},SC5={t6};PR6={t2,t5},SC6={t7};PR7={t3,t6},SC7={t9};PR8={t1,t2,t3},SC8={t11};PR9={t4,t7},SC9={t11};PR10={t2},SC10={t11};PR11={t8,t9,t10},
Figure GDA00035957184900001411
根据任务完成时间fj从大到小重新排列个体ch8中的调度顺序列表,即把个体中的基因gJ+j设置为倒数第j个完成的任务,j=1,…,10,形成个体
Figure GDA0003595718490000151
执行步骤B3:θ=1+2=3,对个体
Figure GDA0003595718490000152
进行基于插入模式的串行个体解码获得所有任务的完成时间:
Figure GDA0003595718490000153
Figure GDA0003595718490000154
及其适应度值
Figure GDA0003595718490000155
执行步骤B4:由于
Figure GDA0003595718490000156
转到步骤B5;
执行步骤B5:由于θ=3为奇数,故输出个体
Figure GDA0003595718490000157
其适应度值fit8=26。
以上述个体ch8={1,2,3,2,1,1,2,1,3,3;2,3,1,8,10,5,4,6,7,9}θ=1时的解码为例,所述基于插入模式的串行个体解码的具体实施过程如下:
执行步骤C1:系统状态初始化:任务0的完成时间f0=0,
Figure GDA0003595718490000158
任务完成时间集F={f0,lf}={0,80};对应于F中各完成时间可更新资源的剩余可用量为:
Figure GDA0003595718490000159
Figure GDA00035957184900001510
δ=1;
执行步骤C2:取出任务j=g10+1=g11=2,及其采用的模式m=g2=2;
执行步骤C3:计算任务2的完成时间;即执行步骤C3.1:令任务2的开始时间
Figure GDA00035957184900001511
令flag=1;执行步骤C3.2:在F={f0,lf}={0,80}中找出大于等于rt2=0的元素,组成集合TF={f∈F|f≥rt2=0}={f0,lf}={0,80};执行步骤C3.3:从TF={f0,lf}={0,80}中取出一个值最小的元素,其为f0=0;执行步骤C3.4:由于f0-s2=0-0=0<d2,2=6,转到步骤C3.5;执行步骤C3.5:由于此时flag=1,直接转到步骤C3.6;执行步骤C3.6:由于
Figure GDA00035957184900001512
f0=0时刻所有可更新资源的剩余可用量满足任务2的需求,因此直接转到步骤C3.3;执行步骤C3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80;执行步骤C3.4:由于flag=1且lf-s2=80-0=80>d2,2=6,转到步骤C3.7;执行步骤C3.7:f2=s2+d2,2=0+6=6;
执行步骤C4:由于
Figure GDA0003595718490000161
则F=F∪{f2}={f0,lf}∪f2={f0,f2,lf}={0,6,80},增加f2=6时刻可更新资源的剩余可用量:
Figure GDA0003595718490000162
执行步骤C5:更新[s2,f2)=[0,6)时段内可更新资源的剩余可用量:
Figure GDA0003595718490000163
执行步骤C6:δ=δ+1=1+1=2,由于δ=2≤J=10,转到步骤C2;
执行步骤C2:取出任务j=g10+2=g12=3,及其采用的模式m=g3=3;
执行步骤C3:计算任务3的完成时间;即执行步骤C3.1:令任务3的开始时间s3=rt3=max{f0}=f0=0,令flag=1;执行步骤C3.2:在F={0,6,80}找出大于等于rt3=0的元素,组成集合TF={0,6,80};执行步骤C3.3:从TF={0,6,80}中取出一个值最小的元素,其为0;执行步骤C3.4:由于0-0=0<d3,3=10,转到步骤C3.5;执行步骤C3.5:由于此时flag=1,直接转到步骤C3.6;执行步骤C3.6:由于
Figure GDA0003595718490000164
0时刻所有可更新资源的剩余可用量满足任务3的需求,因此直接转到步骤C3.3;执行步骤C3.3:从TF={6,80}中取出一个值最小的元素,其为6;执行步骤C3.4:由于6-0=6<d3,3=10,转到步骤C3.5;执行步骤C3.5:由于此时flag=1,直接转到步骤C3.6;执行步骤C3.6:由于
Figure GDA0003595718490000165
f2=6时刻所有可更新资源的剩余可用量满足任务3的需求,因此直接转到步骤C3.3;执行步骤C3.3:从TF={80}中取出一个值最小的元素,其为80;执行步骤C3.4:由于flag=1且80-0=80>d3,3=10,转到步骤C3.7;执行步骤C3.7:f3=0+10=10;
执行步骤C4:由于
Figure GDA0003595718490000168
则F={0,6,10,80},增加f3=10时刻可更新资源的剩余可用量:
Figure GDA0003595718490000166
执行步骤C5:更新[s3,f3)=[0,10)时段内可更新资源的剩余可用量:
Figure GDA0003595718490000167
Figure GDA0003595718490000171
执行步骤C6:δ=2+1=3,由于δ=3≤J=10,转到步骤C2;
……
这样不断重复执行步骤C2至步骤C6,直至δ=11>J=10,转到步骤C7;
执行步骤C7:获得所有任务完成时间:f1=9,f2=6,f3=10,f4=14,f5=17,f6=19,f7=24,f8=15,f9=32,f10=16,由于
Figure GDA0003595718490000172
Figure GDA0003595718490000173
则该个体为可行个体,故个体适应度值为fit8=ms8=f11=max{f8,f9,f10}=32,操作结束。
同理,当代种群中的其它个体经FBI&D方法改进后变为:
ch1={1,1,2,1,1,3,1,1,2,2;3,1,2,10,8,4,5,6,7,9};ch2={1,3,3,1,2,3,2,1,1,1;1,5,2,3,6,7,8,4,9,10};
ch3={3,2,3,1,2,2,2,2,1,3;3,1,2,8,5,10,4,6,7,9};ch4={1,2,2,2,2,2,1,2,3,2;3,2,1,5,4,8,10,6,7,9};
ch5={1,3,2,1,2,1,1,3,2,3;2,3,1,5,10,8,4,6,7,9};ch6={2,3,2,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};
ch7={2,1,2,3,1,2,1,2,1,1;3,2,1,8,10,5,4,6,7,9};ch9={1,3,2,1,2,3,2,1,3,2;3,2,1,10,4,8,5,6,7,9};
ch10={1,1,2,3,2,1,2,1,1,2;1,2,3,5,10,4,8,6,7,9};
其适应度值分别为:fit1=106,fit2=26,fit3=26,fit4=103,fit5=102,fit6=28,fit7=97,fit9=32,fit10=101。
执行步骤7:判断是否满足进化终止条件,如满足,则转到步骤13,否则转到步骤8;
终止条件设为连续迭代GG=20代最优个体没有改进;
由于是初始化种群,迭代进化了一代,没有满足迭代终止条件,因此转到步骤8。
执行步骤8:基于值的轮赌法选择一组遗传操作;
基于值的轮赌法选择一组遗传操作的具体实施过程如下:执行步骤8.1:根据遗传操作的适应度值计算各组遗传操作被选中概率:
Figure GDA0003595718490000174
Figure GDA0003595718490000175
同理,A2=0.161,A3=0.065,A4=0.161,A5=0.161,A6=0.065,A7=0.097,A8=0.097,A9=0.032;执行步骤8.2:计算累计概率:
Figure GDA0003595718490000176
Figure GDA0003595718490000181
同理,
Figure GDA0003595718490000182
Figure GDA0003595718490000183
执行步骤8.3:产生一个[0,1)之间的随机数,其为0.919,由于
Figure GDA0003595718490000184
因此选择第8组遗传操作,即调度顺序交叉和执行模式变异,选择遗传操作结束;
其中,遗传操作中各种交叉操作的具体实施过程说明如下:
(1)层次交叉CO1
不妨设ch1和ch6为父体1和父体2,层次交叉操作的具体实施步骤如下:
执行步骤D1:在ch1和ch6的两个父体中,层次1、2、3、4、5内的所有任务在调度顺序列表中都是连续排列,因此从中随机选择一个,其为层次2,层次2内的任务包括任务4、5、8、10,转到步骤D2;
执行步骤D2:交换父体1和父体2中层次2内的任务的调度顺序与执行模式,形成子体1和子体2;如表2所示:
基因 g<sub>1</sub> g<sub>2</sub> g<sub>3</sub> g<sub>4</sub> g<sub>5</sub> g<sub>6</sub> g<sub>7</sub> g<sub>8</sub> g<sub>9</sub> g<sub>10</sub> g<sub>11</sub> g<sub>12</sub> g<sub>13</sub> g<sub>14</sub> g<sub>15</sub> g<sub>16</sub> g<sub>17</sub> g<sub>18</sub> g<sub>19</sub> g<sub>20</sub>
父体1 1 1 2 1 1 3 1 1 2 2 3 1 2 10 8 4 5 6 7 9
父体2 2 3 2 2 2 1 2 2 3 2 3 2 1 4 8 10 5 6 7 9
子体1 1 1 2 2 2 3 1 2 2 2 3 1 2 4 8 10 5 6 7 9
子体2 2 3 2 1 1 1 2 1 3 2 3 2 1 10 8 4 5 6 7 9
表2
执行步骤D3:输出子体1和子体2,操作结束;
(2)执行模式交叉CO2
不妨设ch1和ch6为父体1和父体2,执行模式交叉操作的具体实施步骤如下:
执行步骤E1:随机产生一个1到10之间的正整数,其为4;
执行步骤E2:生成子体1,子体1的第4个到第10个基因来自于父体2,其余基因来自于父体1;如表3所示;
执行步骤E3:生成子体2,子体2的第4个到第10个基因来自于父体1,其余基因来自于父体2;如表3所示;
执行步骤E4:输出子体1和子体2,操作结束;
Figure GDA0003595718490000185
Figure GDA0003595718490000191
表3
(3)调度顺序交叉CO3
不妨设ch1和ch6为父体1和父体2,调度顺序交叉操作的具体实施步骤如下:
执行步骤F1:随机产生一个11到20之间的正整数,其为14;
执行步骤F2:生成子体1:子体1的前14个基因g1,…,g14来自于父体1,后6个基因来自于父体2的调度顺序列表中删除基因值等于父体1中第11、12、13、14个基因值后的基因列表;如表4所示;
执行步骤F3:生成子体2:子体2的前14个基因g1,…,g14来自于父体2,后6个基因来自于父体1的调度顺序列表中删除基因值等于父体2中第11、12、13、14个基因值后的基因列表;如表4所示;
执行步骤F4:输出子体1和子体2,操作结束;
Figure GDA0003595718490000192
表4
其中,遗传操作中各种变异操作的具体实施过程说明如下:
(1)基于层次的调度顺序列表变异MT1
不妨设ch1为要进行MT1操作的个体;
执行步骤G1:在ch1中,由于层次1、2内的所有任务在调度顺序列表中都是连续排列的且层内任务数量大于1,因此从中随机选择一个层次,其为2,转到步骤G2;执行步骤G2:从层次2中随机选择两个任务,其为t10和t5,在调度顺序列表中交换这两个任务,如表5所示;执行步骤G3:基于层次的调度顺序列表变异操作结束;
Figure GDA0003595718490000193
表5
(2)执行模式列表变异MT2
不妨设ch1为要进行MT2操作的个体;
执行步骤H1:从执行模式列表{g1,…,g10}中随机选择一位基因,其为g8;执行步骤H2:从任务8的执行模式中重新随机选择一个执行模式,其为模式2,则g8=2,如表6所示;执行步骤H3:执行模式列表变异操作结束;
基因 g<sub>1</sub> g<sub>2</sub> g<sub>3</sub> g<sub>4</sub> g<sub>5</sub> g<sub>6</sub> g<sub>7</sub> g<sub>8</sub> g<sub>9</sub> g<sub>10</sub>
变异前 1 1 2 1 1 3 1 1 2 2
变异后 1 1 2 1 1 3 1 2 2 2
表6
(3)基于拓扑排序的调度顺序列表变异MT3
不妨设ch1为要进行MT3操作的个体;
执行步骤I1:从调度任务顺序列表{g11,…,g20}中随机选择一个基因,其为任务g16即任务4,执行步骤I2:由于在任务1至任务10中存在其父任务与子任务,故向前找到第一个父任务,其为任务g12即任务1,则位置值pos1=12+1=13,向后找到第一个子任务,其为任务g20即任务9,则位置值pos2=20-1=19。在g12和g20之间即[13,19]之间重新随机选择一个位置进行插入,其为g19,如表7所示;执行步骤I3:基于拓扑排序的调度顺序列表变异操作结束;
基因 g<sub>11</sub> g<sub>12</sub> g<sub>13</sub> g<sub>14</sub> g<sub>15</sub> g<sub>16</sub> g<sub>17</sub> g<sub>18</sub> g<sub>19</sub> g<sub>20</sub>
变异前 3 1 2 10 8 4 5 6 7 9
变异后 3 1 2 10 8 5 6 7 4 9
表7
执行步骤9:对当代种群进行交叉变异操作形成新种群;
执行步骤9.1:令新种群为空;
执行步骤9.2:采用基于排序的轮赌法从当代种群中随机选择两个不同的个体作为父体,即:执行步骤9.2.1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得每个个体的排序值:rk1=10,rk2=1,rk3=2,rk4=9,rk5=8,rk6=4,rk7=6,rk8=3,rk9=5,rk10=7;执行步骤9.2.2:令R=1+1/N=1.1,计算个体ch1被选中的概率
Figure GDA0003595718490000201
同理A2=0.148,A3=0.135,A4=0.069,A5=0.076,A6=0.111,A7=0.092,A8=0.122,A9=0.101,A10=0.083;执行步骤9.2.3:计算累计概率
Figure GDA0003595718490000202
Figure GDA0003595718490000211
Figure GDA0003595718490000212
执行步骤9.2.4:产生一个[0,1)的随机数,其为0.894,由于
Figure GDA0003595718490000213
因此选择ch9作为第一个父体;执行步骤9.2.5:产生一个[0,1)的随机数,其为0.343,由于
Figure GDA0003595718490000214
且3≠9,因此选择ch3作为第二个父体;步骤9.2.6:获得两个不同的个体ch9和ch3作为父体,个体选择操作结束。
执行步骤9.3:对父体ch9和ch3采用选中遗传操作中的交叉方法即调度顺序交叉操作生成两个子体ch′1={1,3,2,1,2,3,2,1,3,2;3,2,1,8,5,10,4,6,7,9}和ch′2={3,2,3,1,2,2,2,2,1,3;3,1,2,10,4,8,5,6,7,9};
执行步骤9.4:对子体ch′1进行选中遗传操作中的变异操作即执行模式列表变异操作,其变为ch′1={1,3,3,1,2,3,2,1,3,2;3,2,1,8,5,10,4,6,7,9},对子体ch′2进行选中遗传操作中的变异方法即执行模式列表变异操作,其变为ch′2={3,2,3,1,2,2,2,2,3,3;3,1,2,10,4,8,5,6,7,9};
执行步骤9.5:将经过交叉变异后的子体ch′1和ch′2加入到新种群NP中,由于NP的数量为2小于10,故转到步骤9.2;
……
这样不断重复执行步骤9.2至步骤9.5,直至|NP|=10,操作结束。
经交叉变异操作后形成的新种群的剩余个体为:
ch′3={1,1,2,1,2,3,2,1,3,2;3,2,1,10,4,8,5,6,7,9};ch′4={3,3,2,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};
ch′5={1,1,2,1,1,2,1,1,2,2;3,1,2,10,8,4,5,6,7,9};ch′6={1,3,2,1,2,2,2,1,3,2;3,2,1,10,4,8,5,6,7,9};
ch′7={2,3,1,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};ch′8={2,1,2,3,1,2,1,3,1,1;3,2,1,8,10,5,4,6,7,9};
ch′9={1,3,3,2,2,3,2,1,1,1;1,5,2,3,8,10,4,6,7,9};ch′10={3,2,3,1,2,2,1,2,1,3;3,1,2,8,5,6,7,4,9,10};
新种群NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10}。
执行步骤10:采用FBI&D方法改进新种群中的所有个体并计算其适应度值,并更新遗传操作的适应度值;
新种群NP中的所有个体经过FBI&D改进后变为:
ch′1={1,3,3,1,2,3,2,1,3,2;1,5,2,3,6,7,4,9,10,8};ch′2={3,2,3,1,2,2,2,2,3,3;1,5,3,2,6,7,4,9,10,8};
ch′3={1,1,2,1,2,3,2,1,3,2;3,2,1,10,4,8,5,6,7,9};ch′4={3,3,2,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};
ch′5={1,1,2,1,1,2,1,1,2,2;3,1,2,10,8,4,5,6,7,9};ch′6={1,3,2,1,2,2,2,1,3,2;3,2,1,10,4,8,5,6,7,9};
ch′7={2,3,1,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};ch′8={2,1,2,3,1,2,1,3,1,1;3,2,1,8,10,5,4,6,7,9};
ch′9={1,3,3,2,2,3,2,1,1,1;1,5,2,3,8,10,4,6,7,9};ch′10={3,2,3,1,2,2,1,2,1,3;3,1,2,8,5,6,7,4,9,10};
其适应度值分别为:fit′1=32,fit′2=32,fit′3=112,fit′4=32,fit′5=101,fit′6=27,fit′7=108,fit′8=97,fit′9=26,fit′10=22;
根据新种群中所有个体的编码和适应度值更新第8组遗传操作的适应度值,取
Figure GDA0003595718490000224
ω=0.3,由于新种群所有个体的编码都是不同的,因此V1=1;又由于当代种群中的最优个体的适应度值为26,个体平均适应度值为
Figure GDA0003595718490000221
新种群最优个体的适应度值为22,个体平均适应度值为
Figure GDA0003595718490000222
因此V2=1;则
Figure GDA0003595718490000223
执行步骤11:从当代种群和新种群中从优到劣选出N个不同的个体形成下一代种群;
根据适应度值,选择当代种群的ch2,ch3,ch6,ch8,ch9和新种群的ch′1,ch′2,ch′6,ch′9,ch′10形成下一代种群,即GP={ch2,ch3,ch6,ch8,ch9,ch′1,ch′2,ch′6,ch′9,ch′10}。
执行步骤12:令下一代种群为当代种群,转到步骤7;
令CP=GP,则当代种群的所有个体为:
ch1={1,3,3,1,2,3,2,1,1,1;1,5,2,3,6,7,8,4,9,10};ch2={3,2,3,1,2,2,2,2,1,3;3,1,2,8,5,10,4,6,7,9};
ch3={2,3,2,2,2,1,2,2,3,2;3,2,1,4,8,10,5,6,7,9};ch4={1,2,3,2,1,1,2,1,3,3;1,5,3,2,6,7,4,9,10,8};
ch5={1,3,2,1,2,3,2,1,3,2;3,2,1,10,4,8,5,6,7,9};ch6={1,3,3,1,2,3,2,1,3,2;1,5,2,3,6,7,4,9,10,8};
ch7={3,2,3,1,2,2,2,2,3,3;1,5,3,2,6,7,4,9,10,8};ch8={1,3,2,1,2,2,2,1,3,2;3,2,1,10,4,8,5,6,7,9};
ch9={1,3,3,2,2,3,2,1,1,1;1,5,2,3,8,10,4,6,7,9};ch10={3,2,3,1,2,2,1,2,1,3;3,1,2,8,5,6,7,4,9,10};
其适应度值分别为:fit1=26,fit2=26,fit3=28,fit4=26,fit5=32,fit6=32,fit7=32,fit8=27,fit9=26,fit10=22;转到步骤7。
执行步骤7:判断是否满足进化终止条件,如满足,则转到步骤13,否则转到步骤8;
终止条件设为连续GG=20代最优个体没有改进;由于只迭代进化到第二代,没有满足迭代终止条件,因此转到步骤8。
执行步骤8:基于值的轮赌法选择一组遗传操作;
基于值的轮赌法选择一组遗传操作的过程如下:执行步骤8.1:根据适应度值计算各组遗传操作被选中概率Ai
Figure GDA0003595718490000231
A1=0.159,A2=0.159,A3=0.064,A4=0.159,A5=0.159,A6=0.064,A7=0.096,A8=0.108,A9=0.032;执行步骤8.2:计算累计概率
Figure GDA0003595718490000232
Figure GDA0003595718490000233
执行步骤8.3:产生一个[0,1)之间的随机数,其为0.721,由于
Figure GDA0003595718490000234
因此选择第6组遗传操作,即执行模式交叉和基于拓扑排序的调度顺序列表变异;选择遗传操作结束。
执行步骤9:对当代种群进行交叉变异操作形成新种群;
执行步骤9.1:令新种群为空;
执行步骤9.2:采用基于排序的轮赌法从当代种群中随机选择两个不同的个体,其为ch8和ch9
执行步骤9.3:对父体ch8和ch9采用选中遗传操作中的交叉方法即执行模式交叉操作生成两个子体ch′1={1,3,2,2,2,3,2,1,1,1;3,2,1,10,4,8,5,6,7,9}和ch′2={1,3,3,1,2,2,2,1,3,2;1,5,2,3,8,10,4,6,7,9};
执行步骤9.4:对子体ch′1进行选中遗传操作中的变异操作即基于拓扑排序的调度顺序列表变异操作,其变为ch′1={1,3,2,2,2,3,2,1,1,1;3,2,1,10,4,8,5,6,7,9},对子体ch′2进行选中遗传操作中的变异操作即基于拓扑排序的调度顺序列表变异操作,其变为ch′2={1,3,3,1,2,2,2,1,3,2;1,5,2,3,8,6,10,4,7,9};
执行步骤9.5:将经过交叉变异后的子体ch′1和ch′2加入到新种群NP中,由于NP的数量为2小于10,故转到步骤9.2;
……
这样不断重复执行步骤9.2至步骤9.5,直至|NP|=10,操作结束。
经交叉变异操作后形成的新种群的剩余个体为:
ch′3={3,2,3,2,1,1,2,1,3,3;3,2,1,8,5,10,4,6,7,9};ch′4={1,2,3,1,2,2,2,2,1,3;1,5,2,3,6,7,4,9,10,8};
ch′5={1,3,2,1,2,2,2,2,3,3;3,2,1,10,4,8,5,6,7,9};ch′6={3,2,3,1,2,3,2,1,3,2;1,5,3,2,6,7,4,9,10,8};
ch′7={3,2,3,1,2,3,2,1,3,2;3,1,2,8,5,6,7,4,10,9};ch′8={1,3,3,1,2,2,1,2,1,3;1,2,3,5,6,7,4,9,10,8};
ch′9={3,2,3,1,2,2,2,2,1,1;3,1,2,8,5,10,6,4,7,9};ch′10={1,3,3,2,2,3,2,1,1,3;1,5,2,3,10,4,6,7,9,8};
新种群NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10}。
执行步骤10:采用FBI&D方法改进新种群中的所有个体并计算其适应度值,并更新遗传操作的适应度值;
新种群NP中的所有个体经过FBI&D改进与解码后变为:
ch′1={1,3,2,2,2,3,2,1,1,1;3,2,1,10,4,8,5,6,7,9};ch′2={1,3,3,1,2,2,2,1,3,2;1,5,2,3,8,6,10,4,7,9};
ch′3={3,2,3,2,1,1,2,1,3,3;3,2,1,8,5,10,4,6,7,9};ch′4={1,2,3,1,2,2,2,2,1,3;1,5,2,3,6,7,4,9,10,8};
ch′5={1,3,2,1,2,2,2,2,3,3;3,2,1,10,4,8,5,6,7,9};ch′6={3,2,3,1,2,3,2,1,3,2;1,5,3,2,6,7,4,9,10,8};
ch′7={3,2,3,1,2,3,2,1,3,2;3,1,2,8,5,6,7,4,10,9};ch′8={1,3,3,1,2,2,1,2,1,3;1,3,2,5,10,8,6,4,7,9};
ch′9={3,2,3,1,2,2,2,2,1,1;3,1,2,8,5,10,6,4,7,9};ch′10={1,3,3,2,2,3,2,1,1,3;1,5,2,3,10,4,6,7,9,8};
其适应度值分别为:fit′1=26,fit′2=27,fit′3=31,fit′4=21,fit′5=27,fit′6=37,fit′7=37,fit′8=18,fit′9=26,fit′10=26;
根据新种群中所有个体的编码和适应度值更新第6组遗传操作的适应度值,取
Figure GDA0003595718490000243
ω=0.3,由于新种群所有个体的编码都是不同的,因此V1=1;又由于当代种群中的最优个体的适应度值为22,个体平均适应度值为
Figure GDA0003595718490000241
新种群最优个体的适应度值为18,个体平均适应度值为
Figure GDA0003595718490000242
因此V2=1;则
OprFit6=0.8×0.400+0.2×(0.3×1+0.7×1)=0.520。
执行步骤11:从当代种群和新种群中从优到劣选出N个不同的个体形成下一代种群;
根据适应度值,选择当代种群的ch1,ch2,ch4,ch9,ch10和新种群的ch′1,ch′4,ch′8,ch′9,ch′10形成下一代种群,其中即GP={ch1,ch2,ch4,ch9,ch10,ch′1,ch′4,ch′8,ch′9,ch′10}。
执行步骤12:令下一代种群为当代种群,转到步骤7;
令CP=GP,则当代种群的所有个体为:
ch1={1,3,3,1,2,3,2,1,1,1;1,5,2,3,6,7,8,4,9,10};ch2={3,2,3,1,2,2,2,2,1,3;3,1,2,8,5,10,4,6,7,9};
ch3={1,2,3,2,1,1,2,1,3,3;1,5,3,2,6,7,4,9,10,8};ch4={1,3,3,2,2,3,2,1,1,1;1,5,2,3,8,10,4,6,7,9};
ch5={3,2,3,1,2,2,1,2,1,3;3,1,2,8,5,6,7,4,9,10};ch6={1,3,2,2,2,3,2,1,1,1;3,2,1,10,4,8,5,6,7,9};
ch7={1,2,3,1,2,2,2,2,1,3;1,5,2,3,6,7,4,9,10,8};ch8={1,3,3,1,2,2,1,2,1,3;1,3,2,5,10,8,6,4,7,9};
ch9={3,2,3,1,2,2,2,2,1,1;3,1,2,8,5,10,6,4,7,9};ch10={1,3,3,2,2,3,2,1,1,3;1,5,2,3,10,4,6,7,9,8};
其适应度值分别为:fit1=26,fit2=26,fit3=26,fit4=26,fit5=22,fit6=26,fit7=21,fit8=18,fit9=26,fit10=26;转到步骤7。
……
这样不断重复步骤7至步骤12,直到进化终止条件满足,即连续20代最优个体没有改进,当代种群为:
ch1={2,3,3,3,1,1,1,1,1,3;1,3,5,2,4,10,8,6,7,9};ch2={3,3,3,2,1,2,2,3,1,1;1,3,5,2,6,8,7,4,9,10};
ch3={2,3,3,3,1,1,1,3,1,3;1,3,5,2,4,10,8,6,7,9};ch4={2,3,3,2,1,2,1,3,2,2;1,3,5,2,6,8,7,4,9,10};
ch5={2,3,3,2,1,2,2,3,1,1;1,3,5,2,6,8,7,4,9,10};ch6={1,3,2,3,1,2,2,1,1,3;1,3,2,5,6,10,7,8,4,9};
ch7={1,3,2,3,1,2,1,1,1,3;1,3,2,5,4,8,6,7,10,9};ch8={2,3,3,2,3,2,1,3,1,3;1,3,5,2,4,10,8,6,7,9};
ch9={2,3,3,2,3,2,1,3,2,2;1,3,5,2,4,10,8,6,7,9};ch10={2,3,3,2,1,2,1,3,3,2;1,3,5,2,6,8,7,4,9,10};
其适应度值分别为:fit1=17,fit2=25,fit3=18,fit4=22,fit5=21,fit6=20,fit7=16,fit8=19,fit9=24,fit10=23;
执行步骤13:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间ms=fJ+1=max{fj|tj∈PRJ+1},否则该问题无可行调度方案;
当代种群中最优的个体为ch7={1,3,2,3,1,2,1,1,1,3;1,3,2,5,4,8,6,7,10,9},其为可行个体,对应的项目执行时间为ms7=16,对应的调度方案如表8所示。
Figure GDA0003595718490000261
表8
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

Claims (4)

1.一种使用分层自适应智能算法的多模资源受限项目调度方法,其特征在于:包括以下步骤:
步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;
获取项目任务集T={tj|j=0,1,…,J,J+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;
获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj,任务j在其父任务j-∈PRj全部完工之前不能开始执行,j=0,1,…,J+1,t0没有父任务即
Figure FDA0003595718480000011
tJ+1没有子任务即
Figure FDA0003595718480000012
获取可更新资源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满足
Figure FDA0003595718480000013
或存在一个任务j和可更新资源k满足
Figure FDA0003595718480000014
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令
Figure FDA0003595718480000015
Figure FDA0003595718480000016
其中:
Figure FDA0003595718480000017
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:令
Figure FDA0003595718480000021
其中:
Figure FDA0003595718480000022
k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;
步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;
步骤3.5:如果可更新资源k满足:
Figure FDA0003595718480000023
那么该可更新资源是冗余的,去除可更新资源k:令
Figure FDA0003595718480000024
其中:j=1,…,J,
Figure FDA0003595718480000025
令K=K-1,mflg=0;
步骤3.6:如果不可更新资源l满足:
Figure FDA0003595718480000026
那么该不可更新资源是冗余的,去除不可更新资源l:令
Figure FDA0003595718480000027
其中:j=1,…,J,
Figure FDA0003595718480000028
令L=L-1,mflg=0;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的层次值
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (1)
其它任务的层次值采用如下递归公式进行计算:
Figure FDA0003595718480000029
步骤5:初始化当代种群;
采用基于层次的个体随机生成方法生成N个不同的个体形成当代种群,N为种群规模,且为正偶数;
个体ch采用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,形成个体
Figure FDA0003595718480000031
步骤B3:令θ=θ+1,对个体
Figure FDA0003595718480000032
进行基于插入模式的串行个体解码获得所有任务的完成时间
Figure FDA0003595718480000033
及其适应度值
Figure FDA0003595718480000034
步骤B4:若
Figure FDA0003595718480000035
那么令
Figure FDA0003595718480000036
转到步骤B2,否则转到步骤B5;
步骤B5:如果θ为偶数那么输出个体ch=ch,否则输出个体
Figure FDA0003595718480000037
其适应度值为fit,操作结束;
所述基于插入模式的串行个体解码包括如下步骤:
步骤C1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间:
Figure FDA0003595718480000038
F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:
Figure FDA0003595718480000039
令循环控制变量δ=1;
步骤C2:取出任务j=gJ+δ,及其采用的模式m=gj
步骤C3:计算任务j的完成时间
Figure FDA0003595718480000041
即:
步骤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的需求,即:
Figure FDA0003595718480000042
如果有不满足则令flag=0;转到步骤C3.3;
步骤C3.7:令fj=sj+dj,m
步骤C4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure FDA0003595718480000043
其中:fj″是fj的前一个时刻;
步骤C5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure FDA0003595718480000044
步骤C6:令δ=δ+1,如果δ≤J,则转到步骤C2,否则转到步骤C7;
步骤C7:获得所有任务完成时间fj,j=1,…,J;如果个体为不可行个体,即存在一个不可更新资源l满足
Figure FDA0003595718480000045
那么令个体的适应度值fit=lf+ms,否则令个体适应度值fit=ms,操作结束;
其中:
Figure FDA0003595718480000046
表示任务j的就绪时间;
Figure FDA0003595718480000047
表示τ时刻可更新资源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为:
Figure FDA0003595718480000051
子体1和子体2为:
Figure FDA0003595718480000052
CO2包括如下步骤:
步骤E1:随机产生一个1到J的正整数α;
步骤E2:生成子体1:chc1的第α个到第J个基因来自于chp2,即
Figure FDA0003595718480000053
α≤j≤J,其余基因来自于chp1,即
Figure FDA0003595718480000054
步骤E3:生成子体2:chc2的第α个到第J个基因来自于chp1,即
Figure FDA0003595718480000055
α≤j≤J,其余基因来自于chp2,即
Figure FDA0003595718480000056
步骤E4:输出
Figure FDA0003595718480000057
Figure FDA0003595718480000058
操作结束;
(3)调度顺序交叉CO3
不妨设父体1和父体2为:
Figure FDA0003595718480000061
子体1和子体2为:
Figure FDA0003595718480000062
CO3包括如下步骤:
步骤F1:随机产生一个J+1到2J的正整数α;
步骤F2:生成子体1:chc1的前α个基因来自于chp1,即
Figure FDA0003595718480000063
后2J-α个基因来自于chp2的调度顺序列表中删除基因值等于
Figure FDA0003595718480000064
后的基因列表;
步骤F3:生成子体2:chc2的前α个基因来自于chp2,即
Figure FDA0003595718480000065
后2J-α个基因来自于chp1的调度顺序列表中删除基因值等于
Figure FDA0003595718480000066
后的基因列表;
步骤F4:输出
Figure FDA0003595718480000067
Figure FDA0003595718480000068
操作结束;
所述各种变异操作描述如下:
(1)基于层次的调度顺序列表变异MT1
MT1包括如下步骤:
步骤G1:如果在个体中存在层内所有任务在调度顺序列表中是连续排列的且层内任务数量大于1的层次,那么在这些层次中随机选择一个层次,不妨设为l,转到步骤G2,否则转到步骤G3;
步骤G2:从l中随机选择两个任务,在调度顺序列表中交换这两个任务;
步骤G3:基于层次的调度顺序列表变异操作结束;
(2)执行模式列表变异MT2
MT2包括如下步骤:
步骤H1:从执行模式列表{g1,…,gJ}中随机选择一位基因,不妨设为gj
步骤H2:从任务j的执行模式中重新随机选择一个模式,不妨设为m,则gj=m;
步骤H3:执行模式列表变异操作结束;
(3)基于拓扑排序的调度顺序列表变异MT3
MT3包括如下步骤:
步骤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进行改进与解码后,所述更新遗传操作的适应度值的方法如下:
Figure FDA0003595718480000071
其中:V1是新种群中不同个体所占的比例;V2取0、0.5或1,当新种群中的最优个体优于当代种群中的最优个体并且新种群的个体平均适应度值也优于当代种群的个体平均适应度值则取1,当新种群中的最优个体优于当代种群中的最优个体或新种群的个体平均适应度值优于当代种群的个体平均适应度值则取0.5,当新种群中的最优个体劣于当代种群中的最优个体并且新种群的个体平均适应度值也劣于当代种群的个体平均适应度值则取0;
Figure FDA0003595718480000072
是更新速率,ω∈[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组遗传操作被选中的概率
Figure FDA0003595718480000081
步骤8.2:计算累计概率
Figure FDA0003595718480000082
步骤8.3:产生一个随机数λ∈[0,1),如果
Figure FDA0003595718480000083
那么选择第i组遗传操作Opri;选择遗传操作结束。
4.根据权利要求1所述的一种使用分层自适应智能算法的多模资源受限项目调度方法,其特征在于:所述步骤9.2中采用基于排序的轮赌法从当代种群中选择两个不同的个体作为父体的具体步骤如下:
步骤9.2.1:对当代种群中的个体从优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤9.2.2:计算个体n被选中的概率
Figure FDA0003595718480000084
其中R>1为区分度系数;
步骤9.2.3:计算累计概率
Figure FDA0003595718480000085
步骤9.2.4:产生一个随机数λ1∈[0,1),如果
Figure FDA0003595718480000086
那么选择个体n;
步骤9.2.5:产生一个随机数λ2∈[0,1),如果
Figure FDA0003595718480000087
并且n′≠n,那么选择个体n′,转到步骤9.2.6,否则转到步骤9.2.5;
步骤9.2.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。
CN201911259881.8A 2019-12-10 2019-12-10 使用分层自适应智能算法的多模资源受限项目调度方法 Active CN111126800B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911259881.8A CN111126800B (zh) 2019-12-10 2019-12-10 使用分层自适应智能算法的多模资源受限项目调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911259881.8A CN111126800B (zh) 2019-12-10 2019-12-10 使用分层自适应智能算法的多模资源受限项目调度方法

Publications (2)

Publication Number Publication Date
CN111126800A CN111126800A (zh) 2020-05-08
CN111126800B true CN111126800B (zh) 2022-07-22

Family

ID=70498162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911259881.8A Active CN111126800B (zh) 2019-12-10 2019-12-10 使用分层自适应智能算法的多模资源受限项目调度方法

Country Status (1)

Country Link
CN (1) CN111126800B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111674795B (zh) * 2020-05-27 2021-08-24 浙江工业大学 一种跨层跨巷道穿梭车仓储系统的任务调度方法
CN111857988B (zh) * 2020-06-19 2022-11-18 北京航空航天大学 一种基于任务管理系统的容器任务调度方法及装置
CN112148446B (zh) * 2020-09-22 2024-05-14 华中科技大学 一种用于多技能资源受限项目调度的进化策略方法
CN114462764A (zh) * 2021-12-22 2022-05-10 上海新时达电气股份有限公司 多层多口提升机的调度方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671361A (en) * 1995-09-28 1997-09-23 University Of Central Florida Priority rule search technique for resource constrained project scheduling
CN106250650A (zh) * 2016-08-15 2016-12-21 北京理工大学 高通量仿真中模型的资源分配与优化方法
CN109190857A (zh) * 2018-10-30 2019-01-11 武汉大学 一种基于多目标资源受限项目调度模型的优化算法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671361A (en) * 1995-09-28 1997-09-23 University Of Central Florida Priority rule search technique for resource constrained project scheduling
CN106250650A (zh) * 2016-08-15 2016-12-21 北京理工大学 高通量仿真中模型的资源分配与优化方法
CN109190857A (zh) * 2018-10-30 2019-01-11 武汉大学 一种基于多目标资源受限项目调度模型的优化算法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Pareto排序和混沌加权的多目标项目调度;张师博华等;《计算机集成制造系统》;20120615(第06期);全文 *
基于拓扑排序资源约束下多项目调度优化算法;刘金定等;《西华大学学报(自然科学版)》;20081115(第06期);全文 *

Also Published As

Publication number Publication date
CN111126800A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
CN111126800B (zh) 使用分层自适应智能算法的多模资源受限项目调度方法
CN109190857B (zh) 一种基于多目标资源受限项目调度模型的优化算法
CN113034026B (zh) 基于Q-learning和GA的多目标柔性作业车间调度自学习方法
CN108880663A (zh) 基于改进遗传算法的天地一体化网络资源分配方法
CN114186749B (zh) 基于强化学习及遗传算法的柔性车间调度方法及模型
CN111461402B (zh) 物流排程优化方法及装置、计算机可读存储介质、终端
CN110991917B (zh) 采用两阶段遗传算法的多模资源受限项目调度优化方法
CN111008745A (zh) 混合启发式与智能算法的多模资源受限项目调度优化方法
CN116245346A (zh) 基于多种群遗传算法和局部搜索的多无人机任务分配方法
CN112884368B (zh) 高端装备交货时间与延迟最小的多目标调度方法及系统
CN111090510A (zh) 混合启发式和遗传算法的两阶段云工作流调度优化方法
CN110928648B (zh) 融合启发式和智能计算的云工作流分段在线调度优化方法
CN111026534B (zh) 云计算环境下基于多种群遗传算法的工作流执行优化方法
CN112148446A (zh) 一种用于多技能资源受限项目调度的进化策略算法
CN110942209B (zh) 基于分层两阶段智能算法的资源受限项目调度优化方法
CN114610058B (zh) 一种集群飞行器多任务分布式任务分配方法
CN111027856B (zh) 基于二维多种群遗传算法的多模资源受限项目调度方法
CN110968428B (zh) 云工作流虚拟机配置和任务调度协同优化方法
CN113723695B (zh) 一种基于场景的再制造调度优化方法
CN115577741A (zh) 基于自适应模因搜索解决双向环路布局问题的方法
CN110928670B (zh) 云计算环境下基于偏序自适应遗传算法的工作流优化方法
CN111047183A (zh) 基于分层自适应智能计算算法的云工作流调度优化方法
CN111062528A (zh) 基于多解码智能算法的多模资源受限项目调度优化方法
CN110928671B (zh) 基于层次与负载均衡遗传算法的云工作流调度优化方法
CN102289749A (zh) 基于多智能体协同进化的任务排序方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Ji Renquan

Inventor after: Zhang Li

Inventor after: Li Yanbiao

Inventor after: Shan Xiaohang

Inventor after: Ye Biqing

Inventor after: Ji Shiming

Inventor after: Xie Yi

Inventor before: Zhang Li

Inventor before: Ji Renquan

Inventor before: Li Yanbiao

Inventor before: Shan Xiaohang

Inventor before: Ye Biqing

Inventor before: Ji Shiming

Inventor before: Xie Yi

CB03 Change of inventor or designer information