CN111027856B - 基于二维多种群遗传算法的多模资源受限项目调度方法 - Google Patents

基于二维多种群遗传算法的多模资源受限项目调度方法 Download PDF

Info

Publication number
CN111027856B
CN111027856B CN201911259884.1A CN201911259884A CN111027856B CN 111027856 B CN111027856 B CN 111027856B CN 201911259884 A CN201911259884 A CN 201911259884A CN 111027856 B CN111027856 B CN 111027856B
Authority
CN
China
Prior art keywords
task
population
individual
sub
resource
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
CN201911259884.1A
Other languages
English (en)
Other versions
CN111027856A (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 CN201911259884.1A priority Critical patent/CN111027856B/zh
Publication of CN111027856A publication Critical patent/CN111027856A/zh
Application granted granted Critical
Publication of CN111027856B publication Critical patent/CN111027856B/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)
  • Management, Administration, Business Operations System, And Electronic Commerce (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={t0,t1,…,tJ,tJ+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;
获取任务间的时序关系,即任务j的父任务集PRj和子任务集SCj,任务j在其父任务j-∈PRj全部完工之前不能开始执行,j=0,1,…,J+1,t0没有父任务即
Figure GDA0003645526370000021
tJ+1没有子任务即
Figure GDA0003645526370000022
获取可更新资源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 GDA0003645526370000023
或存在一个任务j和可更新资源k满足
Figure GDA0003645526370000024
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令
Figure GDA0003645526370000025
Figure GDA0003645526370000026
其中:
Figure GDA0003645526370000027
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 GDA0003645526370000028
其中:
Figure GDA0003645526370000029
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 GDA0003645526370000031
那么该可更新资源是冗余的,去除可更新资源k:令
Figure GDA0003645526370000032
其中:j=1,…,J,
Figure GDA0003645526370000033
令K=K-1,mflg=0;
步骤3.6:如果不可更新资源l满足:
Figure GDA0003645526370000034
那么该不可更新资源是冗余的,去除不可更新资源l:令
Figure GDA0003645526370000035
其中:j=1,…,J,
Figure GDA0003645526370000036
令L=L-1,mflg=0;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的排序值rank和层次值lvl;
首先,计算任务j的平均执行时间
Figure GDA0003645526370000037
Figure GDA0003645526370000038
然后,计算任务的排序值rank:
对于没有子任务的结束任务J+1:
rankJ+1=0 (2)
其它任务的rank采用如下递归公式进行计算:
Figure GDA0003645526370000039
最后,计算任务的层次值lvl:
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (4)
其它任务的层次值采用如下递归公式进行计算:
Figure GDA00036455263700000310
其中:j=1,…,J
步骤5:初始化当代种群;
当代种群中包含S个子种群,每个子种群又包含N个个体,N>S,其初始化过程如下:
对每个当代子种群采用基于rank和任务最早完成时间的个体生成方法生成一个个体,然后采用基于层次的个体随机生成方法生成剩余的N-1个不同的个体;
所述个体采用2×J的二维整数编码,其方法如下:ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},基因对(gj,1,gj,2)是一对任务和执行模式编号,其中gj,1是任务编号,gj,2是执行模式编号,即任务gj,1采用执行模式gj,2,g1,1,g2,1,…,gJ,1是1,…,J的一个排列,为任务调度顺序,且满足任务的时序约束;
所述基于rank和任务最早完成时间的个体生成方法包括如下步骤:
步骤A1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间:
Figure GDA0003645526370000041
F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:
Figure GDA0003645526370000042
k=1,…,K;令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤A2:从UT中取出rank最大的任务,不妨设为tj,gδ,1=j,令模式m=1;
步骤A3:计算任务j的完成时间fj,即:
步骤A3.1:令任务j的开始时间
Figure GDA0003645526370000043
令标记值flag=1;
步骤A3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};
步骤A3.3:从TF中取出一个值最小的元素,不妨设为fj′
步骤A3.4:如果flag=1并且fj′-sj,m≥dj,m,那么转到步骤A3.7;否则转到步骤A3.5;
步骤A3.5:如果flag=0,那么令sj,m=fj′,flag=1;
步骤A3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即判断所有的k=1,…,K是否满足
Figure GDA0003645526370000044
如果有不满足则flag=0;转到步骤A3.3;
步骤A3.7:令fj,m=sj,m+dj,m
步骤A3.8:令m=m+1;如果m≤Mj则转到步骤A3.1,否则从
Figure GDA0003645526370000047
中取出完成时间最小的,不妨设其为
Figure GDA0003645526370000045
Figure GDA0003645526370000046
转到步骤A4;
步骤A4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure GDA0003645526370000051
k=1,…,K;其中:fj″是fj的前一个时刻;
步骤A5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000052
Figure GDA0003645526370000053
步骤A6:令δ=δ+1,如果δ≤J则转到步骤A2,否则转到步骤A7;
步骤A7:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
其中:
Figure GDA0003645526370000054
表示τ时刻可更新资源k的剩余可用量,
Figure GDA0003645526370000055
表示任务j的就绪时间;
所述基于层次的个体随机生成方法包括如下步骤:
步骤B1:令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤B2:从UT中找出层次值最小的任务,从中随机取出一个,不妨设为tj,gδ,1=j;
步骤B3:在tj的执行模式中随机选择一个,即在1,…,Mj中随机选择一个整数,不妨设为m;gδ,2=m
步骤B4:令δ=δ+1,如果δ≤J则转到步骤B2,否则转到步骤B5;
步骤B5:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
步骤6:采用FBI&D方法改进初始种群中的所有个体并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤C1:令计次变量θ=1;对个体ch进行基于插入模式的串行个体解码获得所有任务的完成时间fj,j=1,…,J,及适应度值fit;
步骤C2:把任务0变成任务J+1,任务J+1变成任务0,颠倒任务间的时序关系,即把任务的父任务集变成子任务集,子任务集变成父任务集,按任务完成时间从大到小对个体ch中的基因对(gj,1,gj,2)进行重新排列,即把个体中的基因gj,1设置为倒数第j个完成的任务,gj,2设置为倒数第j个完成的任务的执行模式,j=1,…,J,形成个体ch;
步骤C3:令θ=θ+1,对个体ch进行基于插入模式的串行个体解码获得所有任务的完成时间fj,j=1,…,J,及适应度值fit;
步骤C4:若fit<fit,那么ch=ch,fit=fit,fj=fj,j=1,…,J,转到步骤C2,否则转到步骤C5;
步骤C5:如果θ为偶数那么输出个体ch,否则输出个体ch,适应度值为fit,操作结束;
所述基于插入模式的串行个体解码包括如下步骤:
步骤D1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},F中的元素从小到大排列;令循环控制变量δ=1;令对应于F中各完成时间的可更新资源的剩余可用量:
Figure GDA0003645526370000061
k=1,…,K;
步骤D2:取出任务j=gδ,1,及其采用的模式m=gδ,2
步骤D3:计算任务j的完成时间
Figure GDA0003645526370000062
即:
步骤D3.1:令任务j的开始时间sj=rtj,令标记值flag=1;
步骤D3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};
步骤D3.3:从TF中取出一个值最小的元素,不妨设为fj′
步骤D3.4:如果flag=1并且fj′-sj≥dj,m,那么转到步骤D3.7;否则转到步骤D3.5;
步骤D3.5:如果flag=0,那么令sj=fj′,flag=1;
步骤D3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即判断所有的k=1,…,K是否满足
Figure GDA0003645526370000063
如果有不满足则flag=0,转到步骤D3.3;
步骤D3.7:令fj=sj+dj,m
步骤D4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure GDA0003645526370000064
k=1,…,K;其中:fj″是fj的前一个时刻;
步骤D5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000065
步骤D6:令δ=δ+1,如果δ≤J则转到步骤D2,否则转到步骤D7;
步骤D7:获得所有任务完成时间fj,j=1,…,J;计算适应度值fit,操作结束;
步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤8:判断是否需要进行子种群间的交流;如果需要则转到步骤9,否则转到步骤10;
所述是否需要进行子种群间的交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤9:进行子种群间的交流;
步骤9.1:令精英个体集
Figure GDA0003645526370000071
从每个当代子种群s即CPs中根据适应度值从优到劣选出当前TPS中尚不存在的1个个体,不妨设其为
Figure GDA0003645526370000072
Figure GDA0003645526370000073
放到TPS中,s=1,…,S;
步骤9.2:对每个CPs,s=1,…,S,依次从CPs和TPS中从优到劣选出N个不同的个体形成新的CPs
步骤10:每个子种群进行独立进化;
步骤10.1:对每个当代子种群进行N次基于偏好和拓扑排序的参数化均匀交叉操作形成新子种群;
步骤10.2:对每个新子种群中的每个个体进行变异操作;
步骤10.3:采用FBI&D方法改进每个新子种群中的所有个体并计算其适应度值;
步骤10.4:对于每个子种群从当代子种群和新子种群中从优到劣选出N个不同的个体作为下一代子种群,形成下一代种群,令下一代种群为当代种群,转到步骤7;
所述基于偏好和拓扑排序的参数化均匀交叉操作包括如下步骤:
步骤E1:采用基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体,不妨设为chp1、chp2,且chp1优于chp2;令循环控制变量δ=1,子体
Figure GDA0003645526370000074
步骤E2:如果δ≤J,则转到步骤E3,否则转到步骤E4;
步骤E3:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首基因对放到chc的尾部,并从chp2中删除具有相同任务编号的基因对,否则从chp2中取出首基因对放到chc的尾部,并从chp1中删除具有相同任务编号的基因对;令δ=δ+1,转到步骤E2;
步骤E4:输出子体
Figure GDA0003645526370000075
操作结束;
其中pb∈(0.5,1)为偏好率;
所述变异操作包括如下步骤:
步骤F1:产生一个随机数λ1∈[0,1),如果λ1≤pm则转步骤F2;否则转步骤F5;
步骤F2:随机选择一个基因对,不妨设为(gj,1,gj,2),产生一个随机数λ2∈[0,1),如果λ2<0.5则转步骤F3;否则转步骤F4;
步骤F3:从任务gj,1可以执行的模式中重新随机选择一个执行模式m,gj,2=m,转到步骤F5;
步骤F4:如果在任务1到任务J中,存在任务gj,1的父任务那么从(gj,1,gj,2)开始向前找到第一个父任务gj′,1,令位置值pos1=j′+1,否则令pos1=1;如果在任务1到任务J中,存在任务gj,1的子任务那么从(gj,1,gj,2)开始向后找到第一个子任务gj″,1,令位置值pos2=j″-1,否则令pos2=J;在[pos1,pos2]之间重新随机选择一个位置插入(gj,1,gj,2);
步骤F5:操作结束;
其中:pm∈(0,1]是变异率;
步骤11:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间
Figure GDA0003645526370000081
否则该问题无可行调度方案。
进一步的,所述适应度值fit的具体计算方法如下:
如果个体为不可行个体,即存在一个不可更新资源l满足
Figure GDA0003645526370000082
那么令个体的适应度值fit=lf+ms,否则令个体适应度值fit=ms,其中:
Figure GDA0003645526370000083
为项目执行时间;
所述适应度值fit越小,个体越优。
进一步的,所述步骤E1中基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体的具体步骤如下:
步骤E1.1:对当代子种群中的个体从优到劣进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤E1.2:计算个体n被选中的概率
Figure GDA0003645526370000084
n=1,…,N,R>1为区分系数;
步骤E1.3:计算累计概率A0=0,
Figure GDA0003645526370000085
n=1,…,N;
步骤E1.4:产生一个随机数λ1∈[0,1),如果An-1≤λ1<An,那么选择个体n;
步骤E1.5:产生一个随机数λ2∈[0,1),如果An′-1≤λ2<An′并且n′≠n,那么选择个体n′,转到步骤E1.6,否则转到步骤E1.5;
步骤E1.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。
本发明的有益效果在于:
(1)相对于传统的多模资源受限项目调度优化方法,本发明增加了预处理,对资源和模式进行了冗余和无效检查,去除冗余资源、冗余模式和无效模式,这样可以提高求解的速度;
(2)相对于启发式算法、结合启发式的半智能算法、及现有的基于分层编码的智能算法,本发明设计采用的编码方法,任何一个调度方案都有一个编码方案与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(3)相对于精确算法,本发明设计的算法可以适用于大规模问题的求解。
(4)相对于一般的基于优先级的编码方式,本发明在个体编码中考虑任务之间的时序关系,这样解码就比较简单,能有效提高解码的效率,进而提高算法的整体效率;
(5)针对基于拓扑排序的二维整数编码方法,本发明设计了一组简单有效的交叉和变异操作,有效提高了产生新个体的效率。
(6)相对于传统的非插入模式和并行解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行个体解码方法通常能找到更好的对应调度方案。
(7)相对于普通的单向解码方法,本发明设计采用的向前向后个体解码改进策略FBI&D增强了个体的邻域寻优能力,从而能提高了整个算法的寻优能力和搜索效率。
(8)相对于传统的随机初始化方法,本发明在初始化种群中播入了一个基于rank和最早完成时间的个体并采用了基于层次的个体随机生成方法生成初始种群中的剩余个体,这样可以使算法在最优解附近开始搜索,从而缩短算法的收敛时间。
(9)相对于传统的单种群进化策略,本发明设计采用的多种群协同进化策略,能有效避免各子种群进入局部最优和早熟,并加速各子种群的收敛,从而能提高整个算法效率。
附图说明
图1是本发明一种基于二维多种群遗传算法的多模资源受限项目调度方法的流程示意图。
图2是本发明实施例中任务间的时序关系图。
具体实施方式
下面结合图1、图2及实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
一个项目由编号为0至11的12个任务组成,其任务结构即时序关系如图2所示,其中t0和t11是人为增加的虚拟任务,即不占用项目工期也不占用资源,t1到t10的可执行模式,以及该模式下执行时需要的时间、占用可更新资源和不可更新资源的数量如表1所示。在该项目中可更新资源1在任意时刻的可使用量为18、可更新资源2在任意时刻的可使用量为16、不可更新资源1在整个项目工期中的可使用量为61、不可更新资源2在整个项目工期中的可使用量为62。
Figure GDA0003645526370000101
表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 GDA0003645526370000102
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 GDA0003645526370000111
获取项目中可更新资源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 GDA0003645526370000112
或存在一个任务j和可更新资源k满足
Figure GDA0003645526370000113
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
对于不可更新资源1,
Figure GDA0003645526370000114
对于不可更新资源2,
Figure GDA0003645526370000115
对于可更新资源1,对于所有的任务j都满足
Figure GDA0003645526370000116
j=1,…,10,对于可更新资源2,对于所有的任务j都满足
Figure GDA0003645526370000117
j=1,…,10;因此,则该问题可能存在可行的调度方案,转到步骤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 GDA0003645526370000121
对于可更新资源2:
Figure GDA0003645526370000122
因此不存在可更新资源k满足:
Figure GDA0003645526370000123
本项目不存在冗余的可更新资源;
执行步骤3.6:对于不可更新资源1:
Figure GDA0003645526370000124
对于不可更新资源2:
Figure GDA0003645526370000125
因此不存在不可更新资源l满足:
Figure GDA0003645526370000126
本项目不存在冗余的不可更新资源;
执行步骤3.7:由于mflg=1∧rflg=1,因此转到步骤3.8;
执行步骤3.8:预处理结束。
执行步骤4:计算任务的排序值rank和层次值lvl;
首先,计算任务j的平均执行时间
Figure GDA0003645526370000127
Figure GDA0003645526370000128
同理可得
Figure GDA0003645526370000129
结果如表2所示:
Figure GDA00036455263700001210
表2
然后,计算任务的排序值rank:
对于没有子任务的结束任务11:rank11=0.00;
对于任务10有一个子任务11,则有
Figure GDA00036455263700001211
同理可得其它任务的rankj,结果如表3所示:
rank<sub>1</sub> rank<sub>2</sub> rank<sub>3</sub> rank<sub>4</sub> rank<sub>5</sub> rank<sub>6</sub> rank<sub>7</sub> rank<sub>8</sub> rank<sub>9</sub> rank<sub>10</sub>
26.34 17.67 15.67 10.67 21.34 12.34 8.67 6.67 5.67 4.33
表3
最后,计算任务的层次值lvl:
任务0没有父任务,其层次值为lvl0=0;任务1有一个父任务0,则
Figure GDA0003645526370000131
同理,可以获得其它任务的层次值:lvl2=lvl3=1;
lvl4=lvl5=lvl8=lvl10=2;lvl6=3;lvl7=4;lvl9=5;lvl11=6。
执行步骤5:初始化当代种群;
取子种群数量S=3,子种群规模N=6;对每个子种群采用基于rank和任务最早完成时间的个体生成方法生成1个个体和基于层次的个体随机生成方法生成剩余的5个不同个体,形成初始种群。
基于rank和任务最早完成时间的个体生成方法生成一个个体的具体实施过程如下:
执行步骤A1:系统状态初始化,f0=0,
Figure GDA0003645526370000132
任务完成时间集F={f0,lf}={0,80};对应于F中各完成时间可更新资源的剩余可用量为:
Figure GDA0003645526370000133
Figure GDA0003645526370000134
δ=1;UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10};
执行步骤A2:由于rank1=26.34,rank2=17.67,…,rank10=4.33,从任务集UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10}中取出rank最大的任务,其为t1,则g1,1=1,令模式m=1;
执行步骤A3:计算任务1的完成时间;即执行步骤A3.1:令任务1的开始时间
Figure GDA0003645526370000135
令flag=1;执行步骤A3.2:在F={f0,lf}={0,80}中找出大于等于rt1=0的元素,组成集合TF={f∈F|f≥rt1=0}={f0,lf}={0,80};执行步骤A3.3:从TF={f0,lf}={0,80}中取出一个值最小的元素,其为f0=0,则TF={80};执行步骤A3.4:由于f0-s1,1=0-0=0<d1,1=3,转到步骤A3.5;执行步骤A3.5:由于此时flag=1,直接转到步骤A3.6;执行步骤A3.6:由于
Figure GDA0003645526370000136
Figure GDA0003645526370000137
f0=0时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则
Figure GDA0003645526370000138
执行步骤A3.4:由于flag=1且lf-s1,1=80-0=80>d1,1=3,转到步骤A3.7;执行步骤A3.7:f1,1=s1,1+d1,1=0+3=3;执行步骤A3.8:m=m+1=1+1=2,由于m=2≤M1=3,故转到步骤A3.1;执行步骤A3.1:令任务1的开始时间
s1,2=rt1=max{f0}=f0=0,令flag=1;执行步骤A3.2:在F={f0,lf}={0,80}中找出大于等于rt1=0的元素,组成集合TF={f∈F|f≥rt1=0}={f0,lf}={0,80};执行步骤A3.3:从TF={f0,lf}={0,80}中取出一个值最小的元素,其为f0=0,则TF={80};执行步骤A3.4:由于f0-s1,2=0-0=0<d1,2=4,转到步骤A3.5;执行步骤A3.5:由于此时flag=1,直接转到步骤A3.6;执行步骤A3.6:由于
Figure GDA0003645526370000141
f0=0时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则
Figure GDA0003645526370000142
执行步骤A3.4:由于flag=1且lf-s1,2=80-0=80>d1,2=4,转到步骤A3.7;执行步骤A3.7:f1,2=s1,2+d1,2=0+4=4;执行步骤A3.8:m=2+1=3,由于m=3≤M1=3,故转到步骤A3.1;……,这样不断重复执行步骤A3.1至步骤A3.8,直至m=4>M1=3,得到s1,1=0,s1,2=0,s1,3=0,f1,1=3,f1,2=4,f1,3=8,从f1,1=3,f1,2=4,f1,3=8中取出完成时间最小的f1,1=3,令f1=f1,1=3,s1=f1-d1,1=3-3=0,g1,2=1,转到步骤A4;
执行步骤A4:由于
Figure GDA0003645526370000143
则F=F∪{f1}={f0,lf}∪f1={f0,f1,lf}={0,3,80},增加f1=3时刻可更新资源的剩余可用量:
Figure GDA0003645526370000144
执行步骤A5:更新[s1,f1)=[0,3)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000145
执行步骤A6:δ=δ+1=1+1=2,由于δ=2≤J=10,转到步骤A2;
执行步骤A2:由于rank2=17.67,rank3=15.67,rank4=10.67,rank5=21.34,…,rank10=4.33,从任务集UT={t2,t3,t4,t5,t6,t7,t8,t9,t10}取出rank最大的任务,其为t5,则g2,1=5,令模式m=1;
执行步骤A3:计算任务5的完成时间;即执行步骤A3.1:令任务5的开始时间s5,1=rt5=max{f1}=f1=3,令flag=1;执行步骤A3.2:在F={f0,f1,lf}={0,3,80}中找出大于等于rt5=3的元素,组成集合TF={f1,lf}={3,80};执行步骤A3.3:从TF={3,80}中取出一个值最小的元素,其为3,则TF={80};执行步骤A3.4:由于3-3=0<d5,1=8,转到步骤A3.5;执行步骤A3.5:由于此时flag=1,直接转到步骤A3.6;执行步骤A3.6:由于
Figure GDA0003645526370000151
3时刻所有可更新资源的剩余可用量满足任务5的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={80}中取出一个值最小的元素,其为80,则
Figure GDA0003645526370000152
执行步骤A3.4:由于flag=1且80-3=77>d5,1=8,转到步骤A3.7;执行步骤A3.7:f5,1=s5,1+d5,1=3+8=11;执行步骤A3.8:m=1+1=2,由于m=2≤M1=3,故转到步骤A3.1;……,这样不断重复执行步骤A3.1至步骤A3.8,直至m=4>M5=3,得到s5,1=3,s5,2=3,s5,3=3,f5,1=11,f5,2=12,f5,3=13,从f5,1=11,f5,2=12,f5,3=13,中取出完成时间最小的f5,1=11,令f5=f5,1=11,s5=f5-d5,1=11-8=3,g2,2=1,转到步骤A4;
执行步骤A4:由于
Figure GDA0003645526370000155
则F={0,3,11,80},增加f5=11时刻可更新资源的剩余可用量:
Figure GDA0003645526370000153
执行步骤A5:更新[s5,f5)=[3,11)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000154
执行步骤A6:δ=2+1=3,由于δ=3≤J=10,转到步骤A2;
……
这样不断重复执行步骤A2至步骤A6,直至δ=11>J=10,确定所有基因对(g1,1,g1,2),…,(g10,1,g10,2),转到步骤A7;
执行步骤A7:获得个体ch1,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)},操作结束。
基于层次的个体随机生成方法生成一个个体的具体实施过程如下:
执行步骤B1:δ=1;UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10};
执行步骤B2:在任务集UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10}中找出层次值最小的任务,其为t1,t2,t3,从中随机取出一个,其为t1,则g1,1=1;
执行步骤B3:在t1的执行模式1、2、3中随机选择一个模式,其为模式3,即g1,2=3;
执行步骤B4:δ=δ+1=1+1=2,由于δ=2≤J=10,转到步骤B2;
执行步骤B2:在任务集UT={t2,t3,t4,t5,t6,t7,t8,t9,t10}中找出层次值最小的任务,其为t2,t3,从中随机取出一个,其为t2,则g2,1=2;
执行步骤B3:在t2的执行模式1、2、3中随机选择一个模式,其为模式3,即g2,2=3;
执行步骤B4:δ=2+1=3,由于δ=3≤J=10,转到步骤B2;
……
这样不断重复执行步骤B2至步骤B4,直至δ=11>J=10,确定所有基因对(g1,1,g1,2),…,(g10,1,g10,2),转到步骤B5;
执行步骤B5:获得个体ch1,2={(1,3),(2,3),(3,2),(8,2),(5,1),(10,3),(4,3),(6,2),(7,2),(9,2)},操作结束;
基于层次的个体随机生成方法生成当代子种群1中的其它不同个体如下:
ch1,3={(3,2),(2,1),(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)};
ch1,4={(3,3),(2,3),(1,1),(10,2),(4,3),(5,2),(8,2),(6,3),(7,1),(9,3)};
ch1,5={(2,3),(1,2),(3,1),(4,3),(10,2),(8,3),(5,1),(6,1),(7,2),(9,2)};
ch1,6={(3,1),(1,3),(2,2),(10,2),(4,2),(5,2),(8,1),(6,3),(7,2),(9,1)};
这样最终生成的初始当代子种群1为CP1={ch1,1,ch1,2,ch1,3,ch1,4,ch1,5,ch1,6};
同理,生成其它子种群的个体分别如下:
ch2,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch2,2={(3,3),(1,3),(2,2),(8,2),(10,1),(5,2),(4,1),(6,3),(7,2),(9,3)};
ch2,3={(3,1),(2,2),(1,1),(4,1),(10,2),(5,1),(8,3),(6,1),(7,2),(9,1)};
ch2,4={(1,2),(2,1),(3,1),(4,2),(5,3),(8,1),(10,1),(6,3),(7,1),(9,1)};
ch2,5={(1,1),(3,3),(2,3),(5,1),(4,2),(8,2),(10,1),(6,1),(7,1),(9,1)};
ch2,6={(1,3),(2,1),(3,1),(5,1),(4,1),(10,3),(8,3),(6,3),(7,1),(9,3)};
CP2={ch2,1,ch2,2,ch2,3,ch2,4,ch2,5,ch2,6};
ch3,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch3,2={(3,3),(1,3),(2,3),(4,1),(10,2),(8,2),(5,2),(6,3),(7,2),(9,1)};
ch3,3={(3,2),(1,1),(2,3),(5,1),(4,2),(10,1),(8,3),(6,3),(7,1),(9,1)};
ch3,4={(2,3),(1,2),(3,1),(10,3),(8,2),(5,1),(4,3),(6,2),(7,1),(9,3)};
ch3,5={(1,2),(3,3),(2,3),(5,3),(10,2),(4,3),(8,2),(6,3),(7,2),(9,3)};
ch3,6={(1,3),(2,1),(3,2),(10,3),(4,1),(5,3),(8,3),(6,1),(7,1),(9,2)};
CP3={ch3,1,ch3,2,ch3,3,ch3,4,ch3,5,ch3,6};
最终生成的初始当代种群为CP={CP1,CP2,CP3}。
执行步骤6:采用FBI&D方法改进初始种群中的所有个体并计算其适应度值;
对初始种群中的所有个体采用FBI&D方法改进并计算其适应度值,例如对子种群1中的ch1,4={(3,3),(2,3),(1,1),(10,2),(4,3),(5,2),(8,2),(6,3),(7,1),(9,3)}采用FBI&D方法改进并计算其适应度值的具体实施过程如下:
执行步骤C1:令θ=1,对个体ch1,4进行基于插入模式的串行个体解码获得所有任务完成时间:f1=11,f2=8,f3=10,f4=20,f5=20,f6=27,f7=28,f8=18,f9=36,f10=13,以及适应度值fit1,4=36;
执行步骤C2:把任务0变成任务11,任务11变成任务0,颠倒任务间的时序关系,即
Figure GDA0003645526370000171
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 GDA0003645526370000172
按任务完成时间从大到小对个体ch1,4中的基因对(gj,1,gj,2)进行重新排列,即把个体中的基因gj,1设置为倒数第j个完成的任务,gj,2设置为倒数第j个完成的任务的执行模式,j=1,…,10,形成个体ch1,4={(9,3),(7,1),(6,3),(5,2),(4,3),(8,2),(10,2),(1,1),(3,3),(2,3)};
执行步骤C3:θ=1+1=2,对个体ch1,4进行基于插入模式的串行个体解码获得各任务的完成时间:f1=28,f2=24,f3=19,f4=17,f5=25,f6=16,f7=9,f8=7,f9=8,f10=5,及其适应度值fit1,4=28;
执行步骤C4:由于fit1,4=28<fit1,4=36,因此ch1,4=ch1,4,fit1,4=fit1,4,fj=fj,j=1,…,10,转到步骤C2;
执行步骤C2:把任务0变成任务11,任务11变成任务0,颠倒任务间的时序关系,即
Figure GDA0003645526370000181
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 GDA0003645526370000182
按任务完成时间从大到小对个体ch1,4中的基因对(gj,1,gj,2)进行重新排列,即把个体中的基因gj,1设置为倒数第j个完成的任务,gj,2设置为倒数第j个完成的任务的执行模式,j=1,…,10,形成个体ch1,4={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)};
执行步骤C3:θ=3,对个体ch1,4进行基于插入模式的串行个体解码获得所有任务的完成时间:f1=3,f2=8,f3=13,f4=12,f5=12,f6=19,f7=20,f8=20,f9=28,f10=13,及其适应度值fit1,4=28;
执行步骤C4:由于fit1,4=fit1,4=28,转到步骤C5;
执行步骤C5:由于θ=3为奇数,故输出个体:ch1,4=ch1,4={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)},其适应度值fit1,4=28。
以上述个体ch1,4={(3,3),(2,3),(1,1),(10,2),(4,3),(5,2),(8,2),(6,3),(7,1),(9,3)}θ=1时的解码为例,所述基于插入模式的串行个体解码的具体实施过程如下:
执行步骤D1:系统状态初始化:f0=0,lf=80,任务完成时间集F={f0,lf}={0,80};对应于F中各完成时间可更新资源的剩余可用量为:
Figure GDA0003645526370000183
Figure GDA0003645526370000184
k=1,2,δ=1;
执行步骤D2:取出任务j=gδ,1=g1,1=3,及其采用的模式m=gδ,2=g1,2=3;
执行步骤D3:计算任务3的完成时间;即执行步骤D3.1:令任务3的开始时间
Figure GDA0003645526370000191
令flag=1;执行步骤D3.2:在F={f0,lf}={0,80}中找出大于等于rt3=0的元素,组成集合TF={f∈F|f≥rt3=0}={f0,lf}={0,80};执行步骤D3.3:从TF={f0,lf}={0,80}中取出一个值最小的元素,其为f0=0,则TF={80};执行步骤D3.4:由于f0-s3=0-0=0<d3,3=10,转到步骤D3.5;执行步骤D3.5:由于此时flag=1,直接转到步骤D3.6;执行步骤D3.6:由于
Figure GDA0003645526370000192
Figure GDA0003645526370000193
f0=0时刻所有可更新资源的剩余可用量满足任务3的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则
Figure GDA0003645526370000194
执行步骤D3.4:由于flag=1且lf-s3=80-0=80>d3,3=10,转到步骤D3.7;执行步骤D3.7:f3=s3+d3,3=0+10=10;
执行步骤D4:由于
Figure GDA0003645526370000195
则F=F∪{f3}={f0,lf}∪f3={f0,f3,lf}={0,10,80},增加f3=10时刻可更新资源的剩余可用量:
Figure GDA0003645526370000196
执行步骤D5:更新[s3,f3)=[0,10)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000197
执行步骤D6:δ=δ+1=1+1=2,由于δ=2≤J=10,转到步骤D2;
执行步骤D2:取出任务j=g2,1=2,及其采用的模式m=g2,2=3;
执行步骤D3:计算任务2的完成时间;即执行步骤D3.1:令任务2的开始时间s2=rt2=max{f0}=f0=0,令flag=1;执行步骤D3.2:在F={0,10,80}中找出大于等于rt2=0的元素,组成集合TF={0,10,80};执行步骤D3.3:从TF={0,10,80}中取出一个值最小的元素,其为0,则TF={10,80};执行步骤D3.4:由于0-0=0<d2,3=8,转到步骤D3.5;执行步骤D3.5:由于此时flag=1,直接转到步骤D3.6;执行步骤D3.6:由于
Figure GDA0003645526370000198
Figure GDA0003645526370000199
0时刻所有可更新资源的剩余可用量满足任务2的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={10,80}中取出一个值最小的元素,其为10,则TF={80};执行步骤D3.4:由于flag=1且10-0=10>d2,3=8,转到步骤D3.7;执行步骤D3.7:f2=0+8=8;
执行步骤D4:由于
Figure GDA0003645526370000207
则F={0,8,10,80},增加f2=8时刻可更新资源的剩余可用量:
Figure GDA0003645526370000201
执行步骤D5:更新[s2,f2)=[0,8)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000202
执行步骤D6:δ=2+1=3,由于δ=3≤J=10,转到步骤D2;
执行步骤D2:取出任务j=g3,1=1,及其采用的模式m=g3,2=1;
执行步骤D3:计算任务1的完成时间;即执行步骤D3.1:令任务1的开始时间s1=rt1=max{f0}=f0=0,令flag=1;执行步骤D3.2:在F={0,8,10,80}中找出大于等于rt1=0的元素,组成集合TF={0,8,10,80};执行步骤D3.3:从TF={0,8,10,80}中取出一个值最小的元素,其为0,则TF={8,10,80};执行步骤D3.4:由于0-0=0<d1,1=3,转到步骤D3.5;执行步骤D3.5:由于此时flag=1,直接转到步骤D3.6;执行步骤D3.6:由于
Figure GDA0003645526370000203
即在0时刻可更新资源1的剩余可用量不能满足任务1的需求,则flag=0,转到步骤D3.3;执行步骤D3.3:从TF={8,10,80}中取出一个值最小的元素,其为8,则TF={10,80};执行步骤D3.4:由于flag=0,故转到步骤D3.5;执行步骤D3.5:由于flag=0,则s1=8,flag=1;执行步骤D3.6:由于
Figure GDA0003645526370000204
8时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={10,80}中取出一个值最小的元素,其为10,TF={80};执行步骤D3.4:由于10-8=2<d1,1=3,转到步骤D3.5;执行步骤D3.5:由于此时flag=1,直接转到步骤D3.6;执行步骤D3.6:由于
Figure GDA0003645526370000205
10时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={80}中取出一个值最小的元素,其为80,则
Figure GDA0003645526370000206
执行步骤D3.4:由于flag=1且80-8=72>d1,1=3,转到步骤D3.7;执行步骤D3.7:f1=8+3=11;
执行步骤D4:由于
Figure GDA0003645526370000211
则F={0,8,10,11,80},增加f1=11时刻可更新资源的剩余可用量:
Figure GDA0003645526370000212
执行步骤D5:更新[s1,f1)=[8,11)时段内可更新资源的剩余可用量:
Figure GDA0003645526370000213
Figure GDA0003645526370000214
执行步骤D6:δ=3+1=4,由于δ=4≤J=10,转到步骤D2;
……
这样不断重复执行步骤D2至步骤D6,直至δ=11>J=10,转到步骤D7;
执行步骤D7:获得所有任务的完成时间:f1=11,f2=8,f3=10,f4=20,f5=20,f6=27,f7=28,f8=18,f9=36,f10=13,计算适应度值:由于
Figure GDA0003645526370000215
则该个体为可行个体,其适应度值fit1,4=ms1,4=max{f8,f9,f10}=36,操作结束。
同理,子种群1中的其它个体经FBI&D方法改进后变为:
ch1,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch1,2={(1,3),(2,3),(3,2),(8,2),(5,1),(10,3),(4,3),(6,2),(7,2),(9,2)};
ch1,3={(3,2),(2,1),(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)};
ch1,5={(2,3),(1,2),(3,1),(4,3),(10,2),(8,3),(5,1),(6,1),(7,2),(9,2)};
ch1,6={(3,1),(1,3),(2,2),(10,2),(4,2),(5,2),(8,1),(6,3),(7,2),(9,1)};
其适应度值分别为:fit1,1=96,fit1,2=30,fit1,3=105,fit1,5=106,fit1,6=111;
子种群2中的所有个体经FBI&D方法改进后变为:
ch2,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch2,2={(3,3),(1,3),(2,2),(8,2),(10,1),(5,2),(4,1),(6,3),(7,2),(9,3)};
ch2,3={(1,1),(5,1),(2,2),(3,1),(6,1),(8,3),(7,2),(10,2),(4,1),(9,1)};
ch2,4={(1,2),(2,1),(3,1),(4,2),(5,3),(8,1),(10,1),(6,3),(7,1),(9,1)};
ch2,5={(1,1),(3,3),(2,3),(5,1),(4,2),(8,2),(10,1),(6,1),(7,1),(9,1)};
ch2,6={(1,3),(2,1),(3,1),(5,1),(4,1),(10,3),(8,3),(6,3),(7,1),(9,3)};
其适应度值分别为:fit2,1=96,fit2,2=37,fit2,3=100,fit2,4=104,fit2,5=98,fit2,6=112;
子种群3中的所有个体经FBI&D方法改进后变为:
ch3,1={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch3,2={(1,3),(5,2),(2,3),(3,3),(6,3),(8,2),(7,2),(4,1),(10,2),(9,1)};
ch3,3={(3,2),(1,1),(2,3),(5,1),(4,2),(10,1),(8,3),(6,3),(7,1),(9,1)};
ch3,4={(2,3),(1,2),(3,1),(10,3),(8,2),(5,1),(4,3),(6,2),(7,1),(9,3)};
ch3,5={(1,2),(3,3),(2,3),(5,3),(10,2),(4,3),(8,2),(6,3),(7,2),(9,3)};
ch3,6={(1,3),(2,1),(3,2),(10,3),(4,1),(5,3),(8,3),(6,1),(7,1),(9,2)};
其适应度值分别为:fit3,1=96,fit3,2=31,fit3,3=101,fit3,4=23,fit3,5=34,fit3,6=108。执行步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
终止条件设为迭代TG=50代;
上述过程所生成的种群是初始化后改进的种群,当前只迭代进化了一代,不满足终止条件,因此转到步骤8。
执行步骤8:判断是否需要进行子种群间的交流;如果需要则转到步骤9,否则转到步骤10;
子种群间需要进行交流的条件设置为EFG=10,即每迭代10代,也即迭代代数是10的倍数时,子种群间需要进行交流,由于当前只迭代进化了一代,不满足子种群间交流的条件,因此转到步骤10。
执行步骤10:每个子种群进行独立进化;
执行步骤10.1:对每个子种群进行6次基于偏好和拓扑排序的参数化均匀交叉操作形成新子种群;
取偏好概率pb=0.7;其中对子种群CP1进行1次基于偏好和拓扑排序的参数化均匀交叉操作的具体实施过程如下:
执行步骤E1:采用基于排序的轮赌法从当代子种群1中随机选择两个不同的个体作为父体,即:执行步骤E1.1:对当代子种群1中的个体从优到劣进行排序,获得每个个体对应的排序值:rk1=3,rk2=2,rk3=4,rk4=1,rk5=5,rk6=6;执行步骤E1.2:取R=1+1/N=1+1/6=1.167,计算第1个个体ch1,1被选中的概率
Figure GDA0003645526370000231
同理A2=0.203,A3=0.149,A4=0.237,A5=0.128,A6=0.109;执行步骤E1.3:计算累计概率A0=0,
Figure GDA0003645526370000232
A3=0.526,A4=0.763,A5=0.891,A6=1.000;执行步骤E1.4:产生一个[0,1)的随机数,其为0.444,由于A2=0.377≤0.444<0.526=A3,因此选择ch1,3作为一个父体;执行步骤E1.5:产生一个[0,1)的随机数,其为0.795,由于A4=0.763≤0.795<0.891=A5,并且5≠3,因此选择ch1,5作为另一个父体;执行步骤E1.6:获得两个不同的个体ch1,3和ch1,5作为父体,个体选择操作结束;由于fit1,3=105<fit1,5=106,因此设:
chp1=ch1,3={(3,2),(2,1),(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)},
chp2=ch1,5={(2,3),(1,2),(3,1),(4,3),(10,2),(8,3),(5,1),(6,1),(7,2),(9,2)};令δ=1,
Figure GDA0003645526370000233
执行步骤E2:由于δ=1≤J=10,转到步骤E3;
执行步骤E3:生成一个[0,1)的随机数λ,其为0.75,由于λ=0.75>pb=0.7,故从chp2中取出首基因对放到chc的尾部,则chc={(2,3)},chp2={(1,2),(3,1),(4,3),(10,2),(8,3),(5,1),(6,1),(7,2),(9,2)},并从chp1中删除任务编号为2的基因对,则chp1={(3,2),(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)};δ=δ+1=1+1=2,转到步骤E2;
执行步骤E2:由于δ=2≤J=10,转到步骤E3;
执行步骤E3:生成一个[0,1)的随机数λ,其为0.39,由于λ=0.39<pb=0.7,从chp1中取出首基因对放到chc的尾部,则chc={(2,3),(3,2)},
chp1={(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)},并从chp2中删除任务编号为3的基因对,则chp2={(1,2),(4,3),(10,2),(8,3),(5,1),(6,1),(7,2),(9,2)};δ=δ+1=2+1=3,转到步骤E2;
……
这样不断重复执行步骤E2至步骤E3,直至δ=11>J=10,转到步骤E4;
执行步骤E4:输出子体ch′1,1=chc={(2,3),(3,2),(1,2),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)},操作结束;
同样地,经交叉后生成新子种群1中的其它个体如下:
ch′1,2={(2,3),(1,2),(3,1),(5,1),(6,1),(4,3),(7,1),(8,1),(9,1),(10,1)};
ch′1,3={(1,1),(5,1),(2,3),(3,3),(4,3),(6,1),(7,1),(9,3),(8,2),(10,2)};
ch′1,4={(1,3),(5,1),(2,3),(3,2),(6,1),(8,2),(10,3),(4,2),(7,2),(9,2)};
ch′1,5={(2,3),(3,2),(1,1),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)};
ch′1,6={(1,3),(2,3),(3,2),(8,2),(5,1),(10,3),(4,1),(6,1),(7,2),(9,2)};
这样生成的新子种群1为NP1={ch′1,1,ch′1,2,ch′1,3,ch′1,4,ch′1,5,ch′1,6};
同理,生成其它新子种群的个体分别如下:
ch′2,1={(3,3),(1,3),(5,1),(2,2),(8,2),(10,1),(4,1),(6,1),(7,2),(9,1)};
ch′2,2={(3,3),(1,3),(2,3),(8,2),(5,1),(4,2),(10,1),(6,1),(7,1),(9,1)};
ch′2,3={(1,3),(2,1),(3,3),(8,2),(5,1),(10,1),(4,1),(6,3),(7,2),(9,3)};
ch′2,4={(3,3),(1,3),(2,2),(5,1),(8,2),(10,1),(6,1),(4,1),(7,2),(9,3)};
ch′2,5={(1,1),(5,1),(3,3),(2,2),(6,1),(8,2),(10,1),(4,2),(7,2),(9,3)};
ch′2,6={(1,1),(3,3),(2,3),(5,1),(4,2),(6,1),(8,2),(10,1),(7,2),(9,1)};
NP2={ch′2,1,ch′2,2,ch′2,3,ch′2,4,ch′2,5,ch′2,6};
ch′3,1={(1,2),(2,1),(3,3),(5,3),(10,3),(4,1),(8,2),(6,3),(7,2),(9,3)};
ch′3,2={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,3)};
ch′3,3={(1,3),(3,3),(2,3),(5,3),(10,2),(4,3),(8,2),(6,3),(7,2),(9,3)};
ch′3,4={(1,3),(5,2),(2,3),(3,3),(6,3),(10,2),(8,2),(7,2),(4,3),(9,3)};
ch′3,5={(2,3),(3,2),(1,1),(5,1),(4,2),(10,3),(8,2),(6,3),(7,1),(9,1)};
ch′3,6={(1,2),(3,3),(5,1),(2,3),(6,1),(10,2),(4,3),(8,2),(7,2),(9,3)};
NP3={ch′3,1,ch′3,2,ch′3,3,ch′3,4,ch′3,5,ch′3,6};
这样生成的新种群为NP={NP1,NP2,NP3}。
执行步骤10.2:对所有新子种群中的每个个体进行变异操作;
取变异率pm=0.2;
对NP1进行变异操作的具体实施过程如下:
对于ch′1,1={(2,3),(3,2),(1,2),(4,1),(10,2),(8,1),(5,1),(6,1),(7,2),(9,2)};
执行步骤F1:随机生成一个[0,1)的随机数λ1,其为0.16,由于λ1=0.16<pm=0.2,则转到步骤F2;
执行步骤F2:随机选择一个基因对,其为(g4,1,g4,2)=(4,1),随机生成一个[0,1)的随机数λ2,其为0.93,由于λ2=0.93>0.5,则转到步骤F4;
执行步骤F4:由于在任务1到任务10中,存在任务4的父任务和子任务,故从(4,1)开始向前找任务4的第一个父任务g3,1=1,pos1=3+1=4,从(4,1)开始向后找任务4的第一个子任务g10,1=9,pos2=10-1=9,在[4,9]之间随机选择一个位置,其为6,进行插入;
执行步骤F5:操作结束;
这样,变异后的个体变为:ch′1,1={(2,3),(3,2),(1,2),(10,2),(8,1),(4,1),(5,1),(6,1),(7,2),(9,2)};
对于ch′1,2={(2,3),(1,2),(3,1),(5,1),(6,1),(4,3),(7,1),(8,1),(9,1),(10,1)};
执行步骤F1:随机生成一个[0,1)的随机数λ1,其为0.11,由于λ1=0.11<pm=0.2,则转到步骤F2;
执行步骤F2:随机选择一个基因对,其为(g6,1,g6,2)=(4,3),随机生成一个[0,1)的随机数λ2,其为0.27,由于λ2=0.27<0.5,则转到步骤F3;
执行步骤F3:从任务g6,1=4的执行模式中重新选择一个执行模式,其为模式1,则g6,2=1,转到步骤F5;
执行步骤F5:操作结束;
这样,变异后的个体变为:ch′1,2={(2,3),(1,2),(3,1),(5,1),(6,1),(4,1),(7,1),(8,1),(9,1),(10,1)}
对于ch′1,4={(1,3),(5,1),(2,3),(3,2),(6,1),(8,2),(10,3),(4,2),(7,2),(9,2)};
执行步骤F1:随机生成一个[0,1)的随机数λ1,其为0.37,由于λ1=0.37>pm=0.2,则转到步骤F5;
执行步骤F5:操作结束;
同理,经变异后新子种群1中的其它个体变为:
ch′1,3={(1,1),(5,1),(2,2),(3,3),(4,3),(6,1),(7,1),(9,3),(8,2),(10,2)};
ch′1,5={(2,3),(3,2),(1,1),(4,1),(8,1),(10,2),(5,1),(6,1),(7,2),(9,2)};
ch′1,6={(3,2),(1,3),(2,3),(8,2),(5,1),(10,3),(4,1),(6,1),(7,2),(9,2)};
经变异后新子种群2中的所有个体变为:
ch′2,1={(3,3),(1,3),(5,1),(2,3),(8,2),(10,1),(4,1),(6,1),(7,2),(9,1)};
ch′2,2={(3,3),(1,3),(2,3),(8,3),(5,1),(4,2),(10,1),(6,1),(7,1),(9,1)};
ch′2,3={(2,1),(3,3),(1,3),(8,2),(5,1),(10,1),(4,1),(6,3),(7,2),(9,3)};
ch′2,4={(3,3),(1,3),(2,2),(5,1),(8,2),(10,1),(6,1),(4,1),(7,2),(9,3)};
ch′2,5={(1,1),(5,1),(3,3),(2,2),(8,2),(6,1),(10,1),(4,2),(7,2),(9,3)};
ch′2,6={(1,1),(3,3),(2,2),(5,1),(4,2),(6,1),(8,2),(10,1),(7,2),(9,1)};
经变异后新子种群3中的所有个体变为:
ch′3,1={(1,2),(2,1),(3,3),(5,3),(10,3),(4,1),(8,2),(6,3),(7,2),(9,3)};
ch′3,2={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,3)};
ch′3,3={(1,3),(3,3),(2,3),(5,3),(6,3),(10,2),(4,3),(8,2),(7,2),(9,3)};
ch′3,4={(1,3),(5,2),(2,3),(3,3),(6,3),(10,2),(8,2),(7,2),(4,3),(9,3)};
ch′3,5={(2,3),(3,2),(1,1),(5,1),(4,2),(10,3),(6,3),(7,1),(8,2),(9,1)};
ch′3,6={(1,2),(3,3),(5,1),(2,3),(6,3),(10,2),(4,3),(8,2),(7,2),(9,3)}。
执行步骤10.3:采用FBI&D方法改进新子种群中的所有个体并计算其适应度值;
新子种群1中的所有个体经FBI&D方法改进后变为:
ch′1,1={(2,3),(3,2),(1,2),(10,2),(8,1),(4,1),(5,1),(6,1),(7,2),(9,2)};
ch′1,2={(2,3),(1,2),(3,1),(5,1),(6,1),(4,1),(7,1),(8,1),(9,1),(10,1)};
ch′1,3={(1,1),(5,1),(2,2),(3,3),(4,3),(6,1),(7,1),(9,3),(8,2),(10,2)};
ch′1,4={(1,3),(5,1),(2,3),(3,2),(6,1),(8,2),(10,3),(4,2),(7,2),(9,2)};
ch′1,5={(2,3),(3,2),(1,1),(4,1),(8,1),(10,2),(5,1),(6,1),(7,2),(9,2)};
ch′1,6={(3,2),(1,3),(2,3),(8,2),(5,1),(10,3),(4,1),(6,1),(7,2),(9,2)};
其适应度值分别为:fit′1,1=26,fit′1,2=97,fit′1,3=22,fit′1,4=30,fit′1,5=25,fit′1,6=30;
新子种群2中的所有个体经FBI&D方法改进后变为:
ch′2,1={(3,3),(1,3),(5,1),(2,3),(8,2),(10,1),(4,1),(6,1),(7,2),(9,1)};
ch′2,2={(3,3),(1,3),(2,3),(8,3),(5,1),(4,2),(10,1),(6,1),(7,1),(9,1)};
ch′2,3={(1,3),(5,1),(2,1),(3,3),(6,3),(7,2),(4,1),(9,3),(8,2),(10,1)};
ch′2,4={(3,3),(1,3),(2,2),(5,1),(8,2),(10,1),(6,1),(4,1),(7,2),(9,3)};
ch′2,5={(1,1),(5,1),(3,3),(2,2),(8,2),(6,1),(10,1),(4,2),(7,2),(9,3)};
ch′2,6={(1,1),(3,3),(2,2),(5,1),(4,2),(6,1),(8,2),(10,1),(7,2),(9,1)};
其适应度值分别为:fit′2,1=25,fit′2,2=21,fit′2,3=36,fit′2,4=31,fit′2,5=26,fit′2,6=100;
新子种群3中的所有个体经FBI&D方法改进后变为:
ch′3,1={(1,2),(2,1),(3,3),(5,3),(10,3),(4,1),(8,2),(6,3),(7,2),(9,3)};
ch′3,2={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,3)};
ch′3,3={(1,3),(3,3),(2,3),(5,3),(6,3),(10,2),(4,3),(8,2),(7,2),(9,3)};
ch′3,4={(1,3),(5,2),(2,3),(3,3),(6,3),(10,2),(8,2),(7,2),(4,3),(9,3)};
ch′3,5={(2,3),(3,2),(1,1),(5,1),(4,2),(10,3),(6,3),(7,1),(8,2),(9,1)};
ch′3,6={(1,2),(3,3),(5,1),(2,3),(6,3),(10,2),(4,3),(8,2),(7,2),(9,3)};
其适应度值分别为:fit′3,1=34,fit′3,2=96,fit′3,3=38,fit′3,4=37,fit′3,5=21,fit′3,6=32。
执行步骤10.4:对于每个子种群从当代子种群和新子种群中从优到劣选出6个不同的个体作为下一代子种群,形成下一代种群,令下一代种群为当代种群,转到步骤7;
根据适应度值,选择当代子种群1的ch1,2,ch1,4,和新子种群1的ch′1,1,ch′1,3,ch′1,4,ch′1,5,形成下一代子种群1,即GP1={ch1,2,ch1,4,ch′1,1,ch′1,3,ch′1,4,ch′1,5};同理,GP2={ch2,2,ch′2,1,ch′2,2,ch′2,3,ch′2,4,ch′2,5},GP3={ch3,2,ch3,4,ch3,5,ch′3,1,ch′3,5,ch′3,6}。
令CP1=GP1,则当代子种群1的所有个体为:
ch1,1={(1,3),(2,3),(3,2),(8,2),(5,1),(10,3),(4,3),(6,2),(7,2),(9,2)};
ch1,2={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)};
ch1,3={(2,3),(3,2),(1,2),(10,2),(8,1),(4,1),(5,1),(6,1),(7,2),(9,2)};
ch1,4={(1,1),(5,1),(2,2),(3,3),(4,3),(6,1),(7,1),(9,3),(8,2),(10,2)};
ch1,5={(1,3),(5,1),(2,3),(3,2),(6,1),(8,2),(10,3),(4,2),(7,2),(9,2)};
ch1,6={(2,3),(3,2),(1,1),(4,1),(8,1),(10,2),(5,1),(6,1),(7,2),(9,2)};
其适应度值分别为:fit1,1=30,fit1,2=28,fit1,3=26,fit1,4=22,fit1,5=30,fit1,6=25;
令CP2=GP2,则当代子种群2的所有个体为:
ch2,1={(3,3),(1,3),(2,2),(8,2),(10,1),(5,2),(4,1),(6,3),(7,2),(9,3)};
ch2,2={(3,3),(1,3),(5,1),(2,3),(8,2),(10,1),(4,1),(6,1),(7,2),(9,1)};
ch2,3={(3,3),(1,3),(2,3),(8,3),(5,1),(4,2),(10,1),(6,1),(7,1),(9,1)};
ch2,4={(1,3),(5,1),(2,1),(3,3),(6,3),(7,2),(4,1),(9,3),(8,2),(10,1)};
ch2,5={(3,3),(1,3),(2,2),(5,1),(8,2),(10,1),(6,1),(4,1),(7,2),(9,3)};
ch2,6={(1,1),(5,1),(3,3),(2,2),(8,2),(6,1),(10,1),(4,2),(7,2),(9,3)};
其适应度值分别为:fit2,1=37,fit2,2=25,fit2,3=21,fit2,4=36,fit2,5=31,fit2,6=26;
令CP3=GP3,则当代子种群3的所有个体为:
ch3,1={(1,3),(5,2),(2,3),(3,3),(6,3),(8,2),(7,2),(4,1),(10,2),(9,1)};
ch3,2={(2,3),(1,2),(3,1),(10,3),(8,2),(5,1),(4,3),(6,2),(7,1),(9,3)};
ch3,3={(1,2),(3,3),(2,3),(5,3),(10,2),(4,3),(8,2),(6,3),(7,2),(9,3)};
ch3,4={(1,2),(2,1),(3,3),(5,3),(10,3),(4,1),(8,2),(6,3),(7,2),(9,3)};
ch3,5={(2,3),(3,2),(1,1),(5,1),(4,2),(10,3),(6,3),(7,1),(8,2),(9,1)};
ch3,6={(1,2),(3,3),(5,1),(2,3),(6,3),(10,2),(4,3),(8,2),(7,2),(9,3)};
其适应度值分别为:fit3,1=31,fit3,2=23,fit3,3=34,fit3,4=34,fit3,5=21,fit3,6=32;
转到步骤7。
……
这样不断重复执行步骤7,8,10,7,8,10,……,7,8,10,迭代进化10代后,当代种群变为:
当代子种群1中的所有个体为:
ch1,1={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch1,2={(2,3),(1,2),(3,2),(4,2),(8,2),(5,3),(10,3),(6,3),(7,1),(9,3)};
ch1,3={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)};
ch1,4={(2,3),(1,2),(5,1),(3,2),(4,2),(6,1),(7,1),(8,2),(10,3),(9,3)};
ch1,5={(1,2),(2,3),(3,2),(4,3),(5,1),(10,2),(8,1),(6,1),(7,1),(9,2)};
ch1,6={(1,1),(2,1),(3,1),(8,1),(5,3),(4,3),(10,3),(6,3),(7,2),(9,3)};
其适应度值分别为:fit1,1=21,fit1,2=30,fit1,3=28,fit1,4=23,fit1,5=22,fit1,6=33;
当代子种群2中的所有个体为:
ch2,1={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch2,2={(1,3),(2,2),(3,3),(5,1),(8,3),(10,3),(4,3),(6,2),(7,1),(9,1)};
ch2,3={(1,1),(5,1),(2,3),(4,3),(3,1),(6,2),(7,2),(9,3),(10,3),(8,1)};
ch2,4={(1,3),(5,1),(2,2),(3,3),(4,3),(8,1),(6,1),(10,2),(7,2),(9,1)};
ch2,5={(1,3),(2,1),(5,2),(3,3),(8,1),(10,2),(6,1),(4,3),(7,2),(9,2)};
ch2,6={(1,3),(2,2),(3,3),(8,1),(10,2),(4,3),(5,3),(6,2),(7,1),(9,1)};
其适应度值分别为:fit2,1=18,fit2,2=21,fit2,3=26,fit2,4=25,fit2,5=31,fit2,6=23;
当代子种群3中的所有个体为:
ch3,1={(1,3),(5,2),(2,1),(3,3),(6,3),(7,2),(4,2),(8,1),(9,1),(10,1)};
ch3,2={(1,1),(5,1),(2,1),(3,1),(6,1),(4,2),(7,1),(8,1),(9,1),(10,1)};
ch3,3={(1,1),(5,1),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,2)};
ch3,4={(1,1),(5,3),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,1)};
ch3,5={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch3,6={(1,1),(3,3),(2,2),(5,1),(10,3),(8,3),(6,1),(4,1),(7,1),(9,1)};
其适应度值分别为:fit3,1=31,fit3,2=96,fit3,3=25,fit3,4=22,fit3,5=20,fit3,6=98。执行步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
种群迭代进化了10代,没有满足终止的条件,因此转到步骤8。
执行步骤8:判断是否需要进行子种群间的交流;如果满足则转到步骤9,否则转到步骤10;
种群迭代进化了10代,是10的倍数,满足了子种群间进行交流的条件,故转到步骤9。执行步骤9:进行子种群间的交流;
执行步骤9.1:令精英个体集
Figure GDA0003645526370000301
由于ch1,1是CP1中的最优个体,因此选择ch1,1作为精英个体
Figure GDA0003645526370000302
由于ch2,1是CP2中的最优个体且TPS中尚不存在个体ch2,1,因此选择ch2,1作为精英个体
Figure GDA0003645526370000303
由于ch3,5是CP3中的最优个体且TPS中尚不存在个体ch3,5,因此选择ch3,5作为精英个体
Figure GDA0003645526370000304
这样TPS中的个体分别为:
Figure GDA0003645526370000305
Figure GDA0003645526370000306
Figure GDA0003645526370000307
其适应度值分别为:
Figure GDA0003645526370000308
执行步骤9.2:对CP1,依次从CP1和TPS中从优到劣选出6个不同的个体形成新的CP1,其为
Figure GDA0003645526370000309
ch1,1、ch1,5、ch1,4、ch1,3,即
Figure GDA00036455263700003010
同理,
Figure GDA00036455263700003011
这样,经子种群间的交流后,当代子种群1即CP1中的所有个体变为:
ch1,1={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch1,2={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch1,3={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch1,4={(1,2),(2,3),(3,2),(4,3),(5,1),(10,2),(8,1),(6,1),(7,1),(9,2)};
ch1,5={(2,3),(1,2),(5,1),(3,2),(4,2),(6,1),(7,1),(8,2),(10,3),(9,3)};
ch1,6={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)};
其适应度值分别为:fit1,1=18,fit1,2=20,fit1,3=21,fit1,4=22,fit1,5=23,fit1,6=28;
当代子种群2即CP2中的所有个体变为:
ch2,1={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch2,2={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch2,3={(1,3),(2,2),(3,3),(5,1),(8,3),(10,3),(4,3),(6,2),(7,1),(9,1)};
ch2,4={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch2,5={(1,3),(2,2),(3,3),(8,1),(10,2),(4,3),(5,3),(6,2),(7,1),(9,1)};
ch2,6={(1,3),(5,1),(2,2),(3,3),(4,3),(8,1),(6,1),(10,2),(7,2),(9,1)};
其适应度值分别为:fit2,1=18,fit2,2=20,fit2,3=21,fit2,4=21,fit2,5=23,fit2,6=25;
当代子种群3即CP3中的所有个体变为:
ch3,1={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch3,2={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch3,3={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch3,4={(1,1),(5,3),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,1)};
ch3,5={(1,1),(5,1),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,2)};
ch3,6={(1,3),(5,2),(2,1),(3,3),(6,3),(7,2),(4,2),(8,1),(9,1),(10,1)};
其适应度值分别为:fit3,1=18,fit3,2=20,fit3,3=21,fit3,4=22,fit3,5=25,fit3,6=31;执行步骤10:每个子种群进行独立进化;
经独立进化后,CP1中的所有个体变为:
ch1,1={(1,1),(5,2),(2,3),(3,3),(4,3),(6,3),(7,1),(9,3),(8,2),(10,2)};
ch1,2={(2,3),(1,2),(5,1),(3,2),(4,2),(6,1),(7,1),(8,2),(10,3),(9,3)};
ch1,3={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch1,4={(1,2),(2,3),(3,2),(4,3),(5,1),(10,2),(8,1),(6,1),(7,1),(9,2)};
ch1,5={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch1,6={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
其适应度值分别为:fit1,1=28,fit1,2=23,fit1,3=18,fit1,4=22,fit1,5=21,fit1,6=20;
同理,CP2中的所有个体变为:
ch2,1={(1,3),(2,2),(3,3),(5,1),(8,3),(10,3),(4,3),(6,2),(7,1),(9,1)};
ch2,2={(1,3),(2,2),(5,2),(3,3),(6,1),(4,3),(8,3),(7,2),(9,1),(10,3)};
ch2,3={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch2,4={(1,3),(5,1),(2,2),(3,3),(4,3),(8,1),(6,1),(10,2),(7,2),(9,1)};
ch2,5={(1,3),(2,2),(3,3),(8,1),(10,2),(4,3),(5,3),(6,2),(7,1),(9,1)};
ch2,6={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
其适应度值分别为:fit2,1=21,fit2,2=26,fit2,3=20,fit2,4=25,fit2,5=23,fit2,6=18;
CP3中的所有个体变为:
ch3,1={(1,1),(5,1),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,2)};
ch3,2={(3,3),(1,1),(2,2),(5,1),(4,3),(8,3),(10,3),(6,2),(7,1),(9,1)};
ch3,3={(1,1),(5,2),(2,3),(3,3),(6,1),(4,3),(7,2),(8,1),(9,1),(10,2)};
ch3,4={(1,1),(3,3),(5,1),(2,3),(6,1),(8,3),(7,2),(4,2),(10,2),(9,1)};
ch3,5={(1,1),(5,3),(2,3),(3,3),(6,1),(4,3),(7,2),(10,3),(8,3),(9,2)};
ch3,6={(1,1),(5,3),(2,2),(3,3),(6,1),(10,3),(8,3),(4,1),(7,2),(9,1)};
其适应度值分别为:fit3,1=25,fit3,2=18,fit3,3=21,fit3,4=20,fit3,5=27,fit3,6=22。
……
这样不断重复执行步骤7至步骤10,迭代50代后,子种群1中的所有个体为:
ch1,1={(1,1),(3,2),(2,3),(5,1),(10,3),(8,1),(6,1),(4,3),(7,1),(9,2)};
ch1,2={(3,2),(1,1),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)};
ch1,3={(3,2),(1,2),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)};
ch1,4={(3,2),(1,1),(2,3),(5,2),(4,3),(8,2),(6,1),(7,1),(9,1),(10,1)};
ch1,5={(1,1),(2,1),(5,3),(3,3),(6,2),(7,2),(8,2),(4,2),(9,1),(10,3)};
ch1,6={(1,1),(3,2),(2,3),(5,1),(6,2),(10,3),(7,2),(8,1),(4,3),(9,1)};
其适应度值分别为:fit1,1=21,fit1,2=16,fit1,3=17,fit1,4=18,fit1,5=22,fit1,6=20;
子种群2中的所有个体为:
ch2,1={(3,3),(1,1),(2,3),(5,1),(4,3),(10,2),(8,3),(6,2),(7,1),(9,1)};
ch2,2={(1,1),(3,2),(2,3),(5,1),(10,3),(8,1),(6,1),(4,3),(7,1),(9,2)};
ch2,3={(3,2),(1,1),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)};
ch2,4={(1,2),(3,2),(2,2),(4,3),(10,1),(8,2),(5,2),(6,1),(7,1),(9,2)};
ch2,5={(3,2),(1,1),(2,3),(5,1),(10,2),(8,3),(4,3),(6,1),(7,2),(9,1)};
ch2,6={(3,2),(1,2),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)};
其适应度值分别为:fit2,1=19,fit2,2=21,fit2,3=16,fit2,4=23,fit2,5=20,fit2,6=17;
子种群3中的所有个体为:
ch3,1={(1,1),(3,2),(2,3),(5,1),(10,3),(8,1),(6,1),(4,3),(7,1),(9,2)};
ch3,2={(1,1),(2,1),(5,3),(3,3),(6,2),(7,2),(8,2),(4,2),(9,1),(10,3)};
ch3,3={(3,1),(2,3),(1,3),(8,3),(4,2),(10,3),(5,2),(6,1),(7,2),(9,3)};
ch3,4={(3,2),(1,1),(2,3),(5,2),(4,3),(8,2),(6,1),(7,1),(9,1),(10,1)};
ch3,5={(3,2),(1,1),(5,2),(2,3),(4,3),(6,2),(7,1),(9,3),(8,3),(10,1)};
ch3,6={(3,2),(1,1),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)};
其适应度值分别为:fit3,1=21,fit3,2=22,fit3,3=32,fit3,4=18,fit3,5=24,fit3,6=16;
转到步骤7;
执行步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
由于种群进化了TG=50代,满足了终止条件,进化结束,转到步骤11;
执行步骤11:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间
Figure GDA0003645526370000341
否则该问题无可行调度方案;
当代种群中最优的个体为ch3,6={(3,2),(1,1),(2,3),(5,1),(4,3),(6,2),(8,2),(7,1),(9,1),(10,1)},其为可行个体,对应的项目执行时间为ms=16,调度方案如表4所示。
Figure GDA0003645526370000342
表4
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

Claims (3)

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 FDA0003645526360000011
tJ+1没有子任务即
Figure FDA0003645526360000012
获取可更新资源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 FDA0003645526360000013
或存在一个任务j和可更新资源k满足
Figure FDA0003645526360000014
那么该问题不存在可行的调度方案,求解结束,否则转到步骤3;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令
Figure FDA0003645526360000015
Figure FDA0003645526360000016
其中:
Figure FDA0003645526360000017
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 FDA0003645526360000021
其中:
Figure FDA0003645526360000022
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 FDA0003645526360000023
那么该可更新资源是冗余的,去除可更新资源k:令
Figure FDA0003645526360000024
其中:j=1,…,J,
Figure FDA0003645526360000025
令K=K-1,mflg=0;
步骤3.6:如果不可更新资源l满足:
Figure FDA0003645526360000026
那么该不可更新资源是冗余的,去除不可更新资源l:令
Figure FDA0003645526360000027
其中:j=1,…,J,
Figure FDA0003645526360000028
令L=L-1,mflg=0;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的排序值rank和层次值lvl;
首先,计算任务j的平均执行时间
Figure FDA0003645526360000029
Figure FDA00036455263600000210
然后,计算任务的排序值rank:
对于没有子任务的结束任务J+1:
rankJ+1=0 (2)
其它任务的rank采用如下递归公式进行计算:
Figure FDA00036455263600000211
最后,计算任务的层次值lvl:
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (4)
其它任务的层次值采用如下递归公式进行计算:
Figure FDA0003645526360000031
其中:j=1,…,J
步骤5:初始化当代种群;
当代种群中包含S个子种群,每个子种群又包含N个个体,N>S,其初始化过程如下:
对每个当代子种群采用基于rank和任务最早完成时间的个体生成方法生成一个个体,然后采用基于层次的个体随机生成方法生成剩余的N-1个不同的个体;
个体ch采用2×J的二维整数编码,其方法如下:ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},基因对(gj,1,gj,2)是一对任务和执行模式编号,其中gj,1是任务编号,gj,2是执行模式编号,即任务gj,1采用执行模式gj,2,g1,1,g2,1,…,gJ,1是1,…,J的一个排列,为任务调度顺序,且满足任务的时序约束;
所述基于rank和任务最早完成时间的个体生成方法包括如下步骤:
步骤A1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},lf表示项目的最晚完成时间:
Figure FDA0003645526360000032
F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:
Figure FDA0003645526360000033
k=1,…,K;令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤A2:从UT中取出rank最大的任务,不妨设为tj,gδ,1=j,令模式m=1;
步骤A3:计算任务j的完成时间fj,即:
步骤A3.1:令任务j在模式m下的开始时间
Figure FDA0003645526360000034
令标记值flag=1;
步骤A3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};
步骤A3.3:从TF中取出一个值最小的元素,不妨设为fj′
步骤A3.4:如果flag=1并且fj′-sj,m≥dj,m,那么转到步骤A3.7;否则转到步骤A3.5;
步骤A3.5:如果flag=0,那么令sj,m=fj′,flag=1;
步骤A3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即判断所有的k=1,…,K是否满足
Figure FDA0003645526360000035
如果有不满足则flag=0;转到步骤A3.3;
步骤A3.7:令fj,m=sj,m+dj,m
步骤A3.8:令m=m+1;如果m≤Mj则转到步骤A3.1,否则从
Figure FDA0003645526360000041
中取出完成时间最小的,不妨设其为
Figure FDA0003645526360000042
对应的模式为
Figure FDA0003645526360000043
令任务j在模式为
Figure FDA0003645526360000044
情况下的完成时间
Figure FDA0003645526360000045
任务j的开始时间
Figure FDA0003645526360000046
转到步骤A4;
步骤A4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure FDA0003645526360000047
其中:fj″是fj的前一个时刻;
步骤A5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure FDA0003645526360000048
Figure FDA0003645526360000049
其中
Figure FDA00036455263600000410
为在[sj,fj)时段内其完成的任务的编号,
Figure FDA00036455263600000411
为任务j在模式
Figure FDA00036455263600000412
下执行时需要占用的可更新资源k的数量;
步骤A6:令δ=δ+1,如果δ≤J则转到步骤A2,否则转到步骤A7;
步骤A7:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
其中:
Figure FDA00036455263600000413
表示τ时刻可更新资源k的剩余可用量;
所述基于层次的个体随机生成方法包括如下步骤:
步骤B1:令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤B2:从UT中找出层次值最小的任务,从中随机取出一个,不妨设为tj,则对应基因对中的gδ,1=j,其中δ为该次循环控制变量;
步骤B3:在tj的执行模式中随机选择一个,即在1,…,Mj中随机选择一个整数,不妨设为m;则对应基因对中的gδ,2=m;
步骤B4:令δ=δ+1,如果δ≤J则转到步骤B2,否则转到步骤B5;
步骤B5:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
步骤6:采用FBI&D方法改进初始种群中的所有个体并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤C1:令计次变量θ=1;对个体ch进行基于插入模式的串行个体解码获得所有任务的完成时间fj,j=1,…,J,及适应度值fit;
步骤C2:把任务0变成任务J+1,任务J+1变成任务0,颠倒任务间的时序关系,即把任务的父任务集变成子任务集,子任务集变成父任务集,按任务完成时间从大到小对个体ch中的基因对(gj,1,gj,2)进行重新排列,即把个体中的基因gj,1设置为倒数第j个完成的任务,gj,2设置为倒数第j个完成的任务的执行模式,j=1,…,J,形成个体
Figure FDA0003645526360000051
步骤C3:令θ=θ+1,对个体
Figure FDA0003645526360000052
进行基于插入模式的串行个体解码获得所有任务的完成时间
Figure FDA0003645526360000053
及适应度值
Figure FDA0003645526360000054
步骤C4:若
Figure FDA0003645526360000055
那么
Figure FDA0003645526360000056
转到步骤C2,否则转到步骤C5;
步骤C5:如果θ为偶数那么输出个体ch,否则输出个体
Figure FDA0003645526360000057
适应度值为fit,操作结束;
所述基于插入模式的串行个体解码包括如下步骤:
步骤D1:系统状态初始化:令任务0的完成时间f0=0、任务完成时间集F={f0,lf},F中的元素从小到大排列;令循环控制变量δ=1;令对应于F中各完成时间的可更新资源的剩余可用量:
Figure FDA0003645526360000058
步骤D2:取出任务j=gδ,1,及其采用的模式m=gδ,2
步骤D3:计算任务j的完成时间
Figure FDA0003645526360000059
即:
步骤D3.1:令任务j的开始时间sj=rtj,令标记值flag=1;
步骤D3.2:在F中找出大于等于rtj的元素,并组成集合TF,即TF={f∈F|f≥rtj};
步骤D3.3:从TF中取出一个值最小的元素,不妨设为fj′
步骤D3.4:如果flag=1并且fj′-sj≥dj,m,那么转到步骤D3.7;否则转到步骤D3.5;
步骤D3.5:如果flag=0,那么令sj=fj′,flag=1;
步骤D3.6:判断fj′时刻所有可更新资源的剩余可用量是否满足任务j的需求,即判断所有的k=1,…,K是否满足
Figure FDA00036455263600000510
如果有不满足则flag=0,转到步骤D3.3;
步骤D3.7:令fj=sj+dj,m
步骤D4:如果fj在F中不存在,则F=F∪{fj},增加fj时刻可更新资源的剩余可用量:
Figure FDA0003645526360000061
其中:fj″是fj的前一个时刻;
步骤D5:更新[sj,fj)时段内可更新资源的剩余可用量:
Figure FDA0003645526360000062
步骤D6:令δ=δ+1,如果δ≤J则转到步骤D2,否则转到步骤D7;
步骤D7:获得所有任务完成时间fj,j=1,…,J;计算适应度值fit,操作结束;
步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤8:判断是否需要进行子种群间的交流;如果需要则转到步骤9,否则转到步骤10;
所述是否需要进行子种群间的交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤9:进行子种群间的交流;
步骤9.1:令精英个体集
Figure FDA0003645526360000063
从每个当代子种群s即CPs中根据适应度值从优到劣选出当前TPS中尚不存在的1个个体,不妨设其为
Figure FDA0003645526360000064
Figure FDA0003645526360000065
放到TPS中,其中s=1,…,S,S为当代种群中子种群的数量;
步骤9.2:对每个CPs,s=1,…,S,依次从CPs和TPS中从优到劣选出N个不同的个体形成新的CPs
步骤10:每个子种群进行独立进化;
步骤10.1:对每个当代子种群进行N次基于偏好和拓扑排序的参数化均匀交叉操作形成新子种群;
步骤10.2:对每个新子种群中的每个个体进行变异操作;
步骤10.3:采用FBI&D方法改进每个新子种群中的所有个体并计算其适应度值;
步骤10.4:对于每个子种群从当代子种群和新子种群中从优到劣选出N个不同的个体作为下一代子种群,形成下一代种群,令下一代种群为当代种群,转到步骤7;
所述基于偏好和拓扑排序的参数化均匀交叉操作包括如下步骤:
步骤E1:采用基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体,不妨设为chp1、chp2,且chp1优于chp2;令循环控制变量δ=1,子体
Figure FDA0003645526360000066
步骤E2:如果δ≤J,则转到步骤E3,否则转到步骤E4;
步骤E3:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首基因对放到chc的尾部,并从chp2中删除具有相同任务编号的基因对,否则从chp2中取出首基因对放到chc的尾部,并从chp1中删除具有相同任务编号的基因对;令δ=δ+1,转到步骤E2;
步骤E4:输出子体
Figure FDA0003645526360000071
操作结束;
其中pb∈(0.5,1)为偏好率;
所述变异操作包括如下步骤:
步骤F1:产生一个随机数λ1∈[0,1),如果λ1≤pm则转步骤F2;否则转步骤F5;
步骤F2:随机选择一个基因对,不妨设为(gj,1,gj,2),并产生一个随机数λ2∈[0,1),如果λ2<0.5则转步骤F3;否则转步骤F4;
步骤F3:从任务gj,1可以执行的模式中重新随机选择一个执行模式m,gj,2=m,转到步骤F5;
步骤F4:如果在任务1到任务J中,存在任务gj,1的父任务那么从(gj,1,gj,2)开始向前找到第一个父任务gj′,1,令位置值pos1=j′+1,否则令pos1=1;如果在任务1到任务J中,存在任务gj,1的子任务那么从(gj,1,gj,2)开始向后找到第一个子任务gj″,1,令位置值pos2=j″-1,否则令pos2=J;在[pos1,pos2]之间重新随机选择一个位置插入(gj,1,gj,2);
步骤F5:操作结束;
其中:pm∈(0,1]是变异率;
步骤11:如果当代种群中的最优个体为可行个体,那么输出最优个体对应的调度方案,及其项目执行时间
Figure FDA0003645526360000072
否则该问题无可行调度方案,其中PRJ+1是任务J+1的父任务集。
2.根据权利要求1所述的一种基于二维多种群遗传算法的多模资源受限项目调度方法,其特征在于:所述适应度值fit的具体计算方法如下:
如果个体为不可行个体,即存在一个不可更新资源l满足
Figure FDA0003645526360000073
那么令个体的适应度值fit=lf+ms,否则令个体适应度值fit=ms,其中:
Figure FDA0003645526360000074
为项目执行时间;
所述适应度值fit越小,个体越优。
3.根据权利要求1所述的一种基于二维多种群遗传算法的多模资源受限项目调度方法,其特征在于:所述步骤E1中基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体的具体步骤如下:
步骤E1.1:对当代子种群中的个体从优到劣进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤E1.2:计算个体n被选中的概率
Figure FDA0003645526360000081
R>1为区分系数;
步骤E1.3:计算累计概率
Figure FDA0003645526360000082
步骤E1.4:产生一个随机数λ1∈[0,1),如果
Figure FDA0003645526360000083
那么选择个体n;
步骤E1.5:产生一个随机数λ2∈[0,1),如果
Figure FDA0003645526360000084
并且n′≠n,那么选择个体n′,转到步骤E1.6,否则转到步骤E1.5;
步骤E1.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。
CN201911259884.1A 2019-12-10 2019-12-10 基于二维多种群遗传算法的多模资源受限项目调度方法 Active CN111027856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911259884.1A CN111027856B (zh) 2019-12-10 2019-12-10 基于二维多种群遗传算法的多模资源受限项目调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911259884.1A CN111027856B (zh) 2019-12-10 2019-12-10 基于二维多种群遗传算法的多模资源受限项目调度方法

Publications (2)

Publication Number Publication Date
CN111027856A CN111027856A (zh) 2020-04-17
CN111027856B true CN111027856B (zh) 2022-07-15

Family

ID=70205349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911259884.1A Active CN111027856B (zh) 2019-12-10 2019-12-10 基于二维多种群遗传算法的多模资源受限项目调度方法

Country Status (1)

Country Link
CN (1) CN111027856B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521627A (zh) * 2011-12-07 2012-06-27 中山大学 一种基于中间件的rfid系统阅读器去冗余算法
CN104217293A (zh) * 2014-09-04 2014-12-17 西安理工大学 一种求解多目标资源受限项目调度的有效方法
CN104268688A (zh) * 2014-09-25 2015-01-07 江南大学 基于爬山算法与鲶鱼效应粒子群算法交替作用的资源受限项目调度控制方法
CN108846570A (zh) * 2018-06-08 2018-11-20 武汉理工大学 一种解决资源受限项目调度问题的方法
CN109190857A (zh) * 2018-10-30 2019-01-11 武汉大学 一种基于多目标资源受限项目调度模型的优化算法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521627A (zh) * 2011-12-07 2012-06-27 中山大学 一种基于中间件的rfid系统阅读器去冗余算法
CN104217293A (zh) * 2014-09-04 2014-12-17 西安理工大学 一种求解多目标资源受限项目调度的有效方法
CN104268688A (zh) * 2014-09-25 2015-01-07 江南大学 基于爬山算法与鲶鱼效应粒子群算法交替作用的资源受限项目调度控制方法
CN108846570A (zh) * 2018-06-08 2018-11-20 武汉理工大学 一种解决资源受限项目调度问题的方法
CN109190857A (zh) * 2018-10-30 2019-01-11 武汉大学 一种基于多目标资源受限项目调度模型的优化算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
资源受限项目调度问题编码分析及进化优化;蔡冰琦;《万方学位论文库》;20150415;第1-67页 *

Also Published As

Publication number Publication date
CN111027856A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN109190857B (zh) 一种基于多目标资源受限项目调度模型的优化算法
CN111126800B (zh) 使用分层自适应智能算法的多模资源受限项目调度方法
US20180357610A1 (en) Method and system for collaborative scheduling of production and transportation based on shuffled frog leaping and path relinking algorithms
CN108880663A (zh) 基于改进遗传算法的天地一体化网络资源分配方法
Ni et al. A multi-graph attributed reinforcement learning based optimization algorithm for large-scale hybrid flow shop scheduling problem
CN105629927A (zh) 一种基于混合遗传算法的mes生产计划排产方法
CN113821318B (zh) 一种物联网跨域子任务组合协同计算方法及系统
CN111008745A (zh) 混合启发式与智能算法的多模资源受限项目调度优化方法
CN110991917B (zh) 采用两阶段遗传算法的多模资源受限项目调度优化方法
CN112711475A (zh) 一种基于图卷积神经网络的工作流调度方法及系统
CN110780985A (zh) 一种有限时间的并行任务调度方法与装置
CN110928648B (zh) 融合启发式和智能计算的云工作流分段在线调度优化方法
CN111026534B (zh) 云计算环境下基于多种群遗传算法的工作流执行优化方法
CN111090510A (zh) 混合启发式和遗传算法的两阶段云工作流调度优化方法
CN111027856B (zh) 基于二维多种群遗传算法的多模资源受限项目调度方法
CN110968428B (zh) 云工作流虚拟机配置和任务调度协同优化方法
CN112884368A (zh) 面向高端装备交货时间与延迟最小的多目标调度方法及系统
CN110928670B (zh) 云计算环境下基于偏序自适应遗传算法的工作流优化方法
CN114610058B (zh) 一种集群飞行器多任务分布式任务分配方法
CN111047183A (zh) 基于分层自适应智能计算算法的云工作流调度优化方法
CN110942209B (zh) 基于分层两阶段智能算法的资源受限项目调度优化方法
CN111078361A (zh) 基于分布式估计算法的云工作流调度优化方法
CN111026506A (zh) 采用多种群协同进化遗传算法的云工作流调度优化方法
CN110928669B (zh) 基于多种群遗传算法的能耗感知云工作流调度优化方法
CN110928671B (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