CN111027856B - 基于二维多种群遗传算法的多模资源受限项目调度方法 - Google Patents
基于二维多种群遗传算法的多模资源受限项目调度方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000002068 genetic effect Effects 0.000 title claims abstract description 12
- 238000004891 communication Methods 0.000 claims abstract description 14
- 238000003780 insertion Methods 0.000 claims abstract description 14
- 230000037431 insertion Effects 0.000 claims abstract description 14
- 238000005457 optimization Methods 0.000 claims abstract description 9
- 108090000623 proteins and genes Proteins 0.000 claims description 30
- 239000013256 coordination polymer Substances 0.000 claims description 27
- 238000010276 construction Methods 0.000 claims description 9
- 230000035772 mutation Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000838698 Togo Species 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06312—Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary 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是需要调度的实际任务数量;
获取可更新资源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选择采用的模式数量;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令 其中:k=1,…,K,l=1,…,L;令Mj=Mj-1;
步骤3.2:如果mflg=0,那么令mflg=1,转到步骤3.3;否则转到步骤3.4;
步骤3.3:如果存在任务j,模式m和m′满足:dj,m′≤dj,m,rj,m′,k≤rj,m,k,nj,m′,l≤nj,m,l,m′≠m,k=1,…,K,l=1,…,L;那么对于任务j模式m是冗余的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;
步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的排序值rank和层次值lvl;
然后,计算任务的排序值rank:
对于没有子任务的结束任务J+1:
rankJ+1=0 (2)
其它任务的rank采用如下递归公式进行计算:
最后,计算任务的层次值lvl:
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (4)
其它任务的层次值采用如下递归公式进行计算:
其中: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表示项目的最晚完成时间:F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:k=1,…,K;令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤A2:从UT中取出rank最大的任务,不妨设为tj,gδ,1=j,令模式m=1;
步骤A3:计算任务j的完成时间fj,即:
步骤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.7:令fj,m=sj,m+dj,m;
步骤A6:令δ=δ+1,如果δ≤J则转到步骤A2,否则转到步骤A7;
步骤A7:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
所述基于层次的个体随机生成方法包括如下步骤:
步骤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,操作结束;
所述基于插入模式的串行个体解码包括如下步骤:
步骤D2:取出任务j=gδ,1,及其采用的模式m=gδ,2;
步骤D3:计算任务j的完成时间
步骤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.7:令fj=sj+dj,m;
步骤D6:令δ=δ+1,如果δ≤J则转到步骤D2,否则转到步骤D7;
步骤D7:获得所有任务完成时间fj,j=1,…,J;计算适应度值fit,操作结束;
步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤8:判断是否需要进行子种群间的交流;如果需要则转到步骤9,否则转到步骤10;
所述是否需要进行子种群间的交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤9:进行子种群间的交流;
步骤9.2:对每个CPs,s=1,…,S,依次从CPs和TPS中从优到劣选出N个不同的个体形成新的CPs;
步骤10:每个子种群进行独立进化;
步骤10.1:对每个当代子种群进行N次基于偏好和拓扑排序的参数化均匀交叉操作形成新子种群;
步骤10.2:对每个新子种群中的每个个体进行变异操作;
步骤10.3:采用FBI&D方法改进每个新子种群中的所有个体并计算其适应度值;
步骤10.4:对于每个子种群从当代子种群和新子种群中从优到劣选出N个不同的个体作为下一代子种群,形成下一代种群,令下一代种群为当代种群,转到步骤7;
所述基于偏好和拓扑排序的参数化均匀交叉操作包括如下步骤:
步骤E2:如果δ≤J,则转到步骤E3,否则转到步骤E4;
步骤E3:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首基因对放到chc的尾部,并从chp2中删除具有相同任务编号的基因对,否则从chp2中取出首基因对放到chc的尾部,并从chp1中删除具有相同任务编号的基因对;令δ=δ+1,转到步骤E2;
其中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]是变异率;
进一步的,所述适应度值fit的具体计算方法如下:
所述适应度值fit越小,个体越优。
进一步的,所述步骤E1中基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体的具体步骤如下:
步骤E1.1:对当代子种群中的个体从优到劣进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取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。
表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: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},
获取项目中可更新资源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;
对于不可更新资源1,对于不可更新资源2,对于可更新资源1,对于所有的任务j都满足j=1,…,10,对于可更新资源2,对于所有的任务j都满足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:
执行步骤3.7:由于mflg=1∧rflg=1,因此转到步骤3.8;
执行步骤3.8:预处理结束。
执行步骤4:计算任务的排序值rank和层次值lvl;
表2
然后,计算任务的排序值rank:
对于没有子任务的结束任务11:rank11=0.00;
对于任务10有一个子任务11,则有
同理可得其它任务的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:
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,
执行步骤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的开始时间令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:由于 f0=0时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则执行步骤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:由于f0=0时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则执行步骤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;
执行步骤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:由于3时刻所有可更新资源的剩余可用量满足任务5的需求,因此直接转到步骤A3.3;执行步骤A3.3:从TF={80}中取出一个值最小的元素,其为80,则执行步骤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;
执行步骤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,颠倒任务间的时序关系,即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},按任务完成时间从大到小对个体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,颠倒任务间的时序关系,即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},按任务完成时间从大到小对个体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时的解码为例,所述基于插入模式的串行个体解码的具体实施过程如下:
执行步骤D2:取出任务j=gδ,1=g1,1=3,及其采用的模式m=gδ,2=g1,2=3;
执行步骤D3:计算任务3的完成时间;即执行步骤D3.1:令任务3的开始时间令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:由于 f0=0时刻所有可更新资源的剩余可用量满足任务3的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={lf}={80}中取出一个值最小的元素,其为lf=80,则执行步骤D3.4:由于flag=1且lf-s3=80-0=80>d3,3=10,转到步骤D3.7;执行步骤D3.7:f3=s3+d3,3=0+10=10;
执行步骤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:由于 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;
执行步骤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:由于即在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:由于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:由于10时刻所有可更新资源的剩余可用量满足任务1的需求,因此直接转到步骤D3.3;执行步骤D3.3:从TF={80}中取出一个值最小的元素,其为80,则执行步骤D3.4:由于flag=1且80-8=72>d1,1=3,转到步骤D3.7;执行步骤D3.7:f1=8+3=11;
执行步骤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,计算适应度值:由于则该个体为可行个体,其适应度值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被选中的概率同理A2=0.203,A3=0.149,A4=0.237,A5=0.128,A6=0.109;执行步骤E1.3:计算累计概率A0=0,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)},
执行步骤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:令精英个体集由于ch1,1是CP1中的最优个体,因此选择ch1,1作为精英个体由于ch2,1是CP2中的最优个体且TPS中尚不存在个体ch2,1,因此选择ch2,1作为精英个体由于ch3,5是CP3中的最优个体且TPS中尚不存在个体ch3,5,因此选择ch3,5作为精英个体这样TPS中的个体分别为:
这样,经子种群间的交流后,当代子种群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;
当代种群中最优的个体为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所示。
表4
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。
Claims (3)
1.一种基于二维多种群遗传算法的多模资源受限项目调度方法,其特征在于:包括以下步骤:
步骤1:形式化多模资源受限项目调度问题,获取调度优化所需的信息;
获取项目任务集T={tj|j=0,1,...,J,J+1};其中tj表示任务j,即编号为j的任务,t0与tJ+1是人为增加的虚拟任务,即不占用项目工期也不占用资源,J是需要调度的实际任务数量;
获取可更新资源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选择采用的模式数量;
步骤3:进行预处理:对模式和资源进行冗余和无效检查,去除冗余模式、无效模式和冗余资源;
步骤3.1:令模式标记值mflg=0、资源标记值rflg=0;如果存在rj,m,k>Rk或nj,m,l>Nl,那么对于任务j模式m是无效的,在任务j中去除模式m:令 其中:k=1,…,K,l=1,…,L;令Mj=Mj-1;
步骤3.2:如果mflg=0,那么令mflg=1,转到步骤3.3;否则转到步骤3.4;
步骤3.3:如果存在任务j,模式m和m′满足:dj,m′≤dj,m,rj,m′,k≤rj,m,k,nj,m′,l≤nj,m,l,m′≠m,k=1,…,K,l=1,…,L;那么对于任务j模式m是冗余的,在任务j中去除模式m:令其中:k=1,…,K,l=1,…,L;令Mj=Mj-1,rflg=0;
步骤3.4:如果rflg=0,那么令rflg=1,转到步骤3.5;否则转到步骤3.7;
步骤3.7:如果mflg=1∧rflg=1,那么转到步骤3.8,否则转到步骤3.2;
步骤3.8:预处理结束;
步骤4:计算任务的排序值rank和层次值lvl;
然后,计算任务的排序值rank:
对于没有子任务的结束任务J+1:
rankJ+1=0 (2)
其它任务的rank采用如下递归公式进行计算:
最后,计算任务的层次值lvl:
对于没有父任务的开始任务0,其层次值为:
lvl0=0 (4)
其它任务的层次值采用如下递归公式进行计算:
其中: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表示项目的最晚完成时间:F中的元素从小到大排列;令对应于F中各完成时间可更新资源的剩余可用量:k=1,…,K;令循环控制变量δ=1;令待处理任务集UT={t1,t2,…,tJ};
步骤A2:从UT中取出rank最大的任务,不妨设为tj,gδ,1=j,令模式m=1;
步骤A3:计算任务j的完成时间fj,即:
步骤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.7:令fj,m=sj,m+dj,m;
步骤A6:令δ=δ+1,如果δ≤J则转到步骤A2,否则转到步骤A7;
步骤A7:获得一个个体ch={(g1,1,g1,2),…,(gJ,1,gJ,2)},操作结束;
所述基于层次的个体随机生成方法包括如下步骤:
步骤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,形成个体
所述基于插入模式的串行个体解码包括如下步骤:
步骤D2:取出任务j=gδ,1,及其采用的模式m=gδ,2;
步骤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.7:令fj=sj+dj,m;
步骤D5:更新[sj,fj)时段内可更新资源的剩余可用量:
步骤D6:令δ=δ+1,如果δ≤J则转到步骤D2,否则转到步骤D7;
步骤D7:获得所有任务完成时间fj,j=1,…,J;计算适应度值fit,操作结束;
步骤7:判断是否满足终止条件,如满足则进化结束转到步骤11,否则转到步骤8;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤8:判断是否需要进行子种群间的交流;如果需要则转到步骤9,否则转到步骤10;
所述是否需要进行子种群间的交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤9:进行子种群间的交流;
步骤9.2:对每个CPs,s=1,…,S,依次从CPs和TPS中从优到劣选出N个不同的个体形成新的CPs;
步骤10:每个子种群进行独立进化;
步骤10.1:对每个当代子种群进行N次基于偏好和拓扑排序的参数化均匀交叉操作形成新子种群;
步骤10.2:对每个新子种群中的每个个体进行变异操作;
步骤10.3:采用FBI&D方法改进每个新子种群中的所有个体并计算其适应度值;
步骤10.4:对于每个子种群从当代子种群和新子种群中从优到劣选出N个不同的个体作为下一代子种群,形成下一代种群,令下一代种群为当代种群,转到步骤7;
所述基于偏好和拓扑排序的参数化均匀交叉操作包括如下步骤:
步骤E2:如果δ≤J,则转到步骤E3,否则转到步骤E4;
步骤E3:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首基因对放到chc的尾部,并从chp2中删除具有相同任务编号的基因对,否则从chp2中取出首基因对放到chc的尾部,并从chp1中删除具有相同任务编号的基因对;令δ=δ+1,转到步骤E2;
其中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]是变异率;
3.根据权利要求1所述的一种基于二维多种群遗传算法的多模资源受限项目调度方法,其特征在于:所述步骤E1中基于排序的轮赌法从当代子种群中随机选择两个不同的个体作为父体的具体步骤如下:
步骤E1.1:对当代子种群中的个体从优到劣进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤E1.6:获得两个不同的个体n和n′作为父体,个体选择操作结束。
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)
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 | 武汉大学 | 一种基于多目标资源受限项目调度模型的优化算法 |
-
2019
- 2019-12-10 CN CN201911259884.1A patent/CN111027856B/zh active Active
Patent Citations (5)
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)
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 |