💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文内容如下:🎁🎁🎁

 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

基于非支配排序遗传算法NSGA-II的柔性作业车间调度问题研究

摘要

柔性作业车间调度问题(Flexible Job Shop Scheduling Problem, FJSP)是传统作业车间调度问题的拓展,具有更高的复杂性和灵活性。NSGA-II作为一种有效的多目标优化算法,在解决FJSP方面展现出强大的能力。本文详细探讨了NSGA-II在FJSP中的应用,包括算法原理、染色体编码、交叉变异操作、实验设计与结果分析等,旨在为实际生产调度提供有效的解决方案。

关键词

NSGA-II;柔性作业车间调度问题;多目标优化;染色体编码;交叉变异

一、引言

在现代制造业中,作业车间调度是提高生产效率、降低成本的关键环节。传统作业车间调度问题(Job Shop Scheduling Problem, JSP)要求工件按照特定工艺路线在固定机器上加工,而柔性作业车间调度问题(FJSP)则允许同一工序在多台不同机器上加工,增加了调度的灵活性和复杂性。由于FJSP涉及多个冲突目标,如最小化最大完工时间(Makespan)、最小化总延迟时间(Total Tardiness)、最小化总机器负荷(Total Machine Load)等,传统的单目标优化方法难以满足需求,因此需要采用多目标优化算法进行求解。NSGA-II作为一种基于Pareto支配的遗传算法,通过非支配排序、拥挤距离计算和精英保留策略,能够有效逼近Pareto最优解集,成为解决FJSP的常用方法。

二、NSGA-II算法原理

2.1 非支配排序

非支配排序是NSGA-II的核心环节,它将种群中的个体按照支配关系进行分层。若个体A不受种群中其他任何个体支配,则A属于第一层Pareto前沿,赋予最低的排序等级;移除第一层个体后,在剩余个体中继续寻找不受支配的个体,赋予第二层排序等级,依此类推,直到所有个体都被赋予排序等级。这种排序方式确保了不受支配的个体具有更高的繁殖机会。

2.2 拥挤距离计算

为维持种群多样性,避免算法过早收敛到局部最优解,NSGA-II引入了拥挤距离的概念。拥挤距离表示在解空间中,一个个体周围个体的密度。对于同一Pareto前沿上的个体,拥挤距离越大,说明该个体周围的个体越稀疏,被选中的概率越高。计算方法是对解集在各个目标维度上进行排序,然后计算每个个体与其相邻个体目标值的差值的总和。

2.3 精英保留策略

为防止在进化过程中丢失优良个体,NSGA-II采用精英保留策略。在每一代进化中,将当前种群与上一代种群合并,然后根据排序等级和拥挤距离选出优秀个体,组成新的种群。这种策略保证了优秀个体能够保留并参与下一代繁殖,加速算法收敛。

三、FJSP问题描述与模型建立

3.1 问题描述

FJSP中,有若干个需要加工的工件(Job),每个工件包含若干道工序(Operation),每道工序可以在若干台机器上进行加工。每台机器在任意时刻只能加工一个工序,且每个工件的工序之间存在严格的先后顺序。与传统JSP不同,FJSP允许同一工序在多台机器上加工,引入了机器选择的决策。

3.2 优化目标

FJSP的目标是同时优化多个冲突目标,常见的目标包括:

  • 最小化最大完工时间(Makespan):即所有工件完成加工的最晚时间,反映了生产系统的整体效率。
  • 最小化总延迟时间(Total Tardiness):衡量工件是否按时交付的指标,总延迟时间越小,说明生产计划的准时性越高。
  • 最小化总机器负荷(Total Machine Load):反映机器的使用强度,总机器负荷越小,机器的利用率越均衡,有助于延长机器寿命。

3.3 数学模型

设J={1,2,⋯,n}为工件集合,Oij​表示工件i的第j道工序,M={1,2,⋯,m}为机器集合,Mij​⊆M为工序Oij​可选的机器集合,pijk​为工序Oij​在机器k上的加工时间。定义决策变量xijkl​,若工序Oij​在机器k上的第l个位置加工,则xijkl​=1,否则xijkl​=0。同时定义Ci​为工件i的完工时间,Ti​=max{0,Ci​−di​}为工件i的延迟时间(di​为工件i的交货期),Lk​为机器k的总负荷。则FJSP的数学模型可表示为:

  • 目标函数:
    • minf1​=maxi∈J​Ci​(最小化最大完工时间)
    • minf2​=∑i∈J​Ti​(最小化总延迟时间)
    • minf3​=∑k∈M​Lk​(最小化总机器负荷)
  • 约束条件:
    • 工序顺序约束:对于工件i,若j1​<j2​,则工序Oij1​​必须在工序Oij2​​之前加工。
    • 机器唯一性约束:同一时刻一台机器只能加工一个工序。
    • 决策变量约束:∑k∈Mij​​∑l=1nk​​xijkl​=1,其中nk​为机器k上加工的工序总数。

四、NSGA-II在FJSP中的应用

4.1 染色体编码

染色体编码方式直接影响算法性能。对于FJSP,常用的编码方式是两段式编码,第一段表示工序的加工顺序,第二段表示每道工序所选择的机器。例如,假设有三个工件,工件1包含两个工序,工件2包含三个工序,工件3包含两个工序,则染色体的第一段可以表示为[1,2,1,3,2,3,2],其中1代表工件1,2代表工件2,3代表工件3,该序列表示工序的加工顺序为:工件1的第一道工序,工件2的第一道工序,工件1的第二道工序,工件3的第一道工序,工件2的第二道工序,工件3的第二道工序,工件2的第三道工序;染色体的第二段可以表示为[2,1,3,1,2,2,1],其中每个数字代表该工序所选择的机器编号,例如数字2表示该工序在机器2上进行加工。

4.2 初始化种群

随机生成一组初始个体作为种群。每个个体按照上述染色体编码方式进行编码,确保满足工序顺序约束和机器唯一性约束。初始化种群的大小应根据问题规模和计算资源进行合理设置,一般较大的种群能够提供更多的搜索空间,但会增加计算复杂度。

4.3 适应度评估

根据FJSP的目标函数,计算每个个体的适应度值,即各个目标函数的值。例如,对于最小化最大完工时间目标,个体的适应度值可以取最大完工时间的倒数;对于最小化总延迟时间目标,适应度值可以取总延迟时间的倒数;对于最小化总机器负荷目标,适应度值可以取总机器负荷的倒数。为了综合考虑多个目标,可以采用加权和法或基于Pareto支配的方法进行适应度评估。

4.4 选择操作

根据非支配排序和拥挤距离计算的结果,采用锦标赛选择或轮盘赌选择等方式选择个体进行繁殖。锦标赛选择是从种群中随机选取一定数量的个体,比较它们的非支配排序等级和拥挤距离,选择等级低且拥挤距离大的个体作为父代;轮盘赌选择则是根据个体的适应度值计算选择概率,适应度值越高的个体被选中的概率越大。

4.5 交叉操作

交叉操作旨在通过交换两个父代染色体的部分信息,产生新的后代。在FJSP中,需要根据染色体编码的特点选择合适的交叉操作。例如,可以分别对工序序列和机器选择序列进行交叉。对于工序序列,可以采用单点交叉、两点交叉或均匀交叉等方式;对于机器选择序列,可以采用基于工序的交叉方式,确保交叉后的机器选择仍然满足工序的可选机器范围。

4.6 变异操作

变异操作通过随机改变染色体中的某些基因,引入新的基因信息,增加种群的多样性。在FJSP中,可以采用交换变异、插入变异、反转变异等方式。对于工序序列,可以随机选择两个位置,交换这两个位置上的工序;对于机器选择序列,可以随机选择一个工序,改变其选择的机器编号,但要确保新选择的机器在工序的可选机器范围内。

4.7 精英保留与种群更新

将当前种群与上一代种群合并,根据非支配排序和拥挤距离计算的结果,从合并后的种群中选出优秀个体,组成新的种群。精英保留策略保证了优秀个体能够保留并参与下一代繁殖,同时通过引入新的个体,维持种群的多样性。

4.8 终止条件判断

判断是否满足终止条件,例如达到最大迭代次数或找到满足要求的解。若满足终止条件,则输出Pareto最优解集;否则,返回步骤4.4,继续进行进化。

五、实验设计与结果分析

5.1 实验环境与参数设置

实验采用MATLAB平台进行算法实现,硬件环境为Intel Core i7处理器,16GB内存。算法参数设置如下:种群大小为100,最大迭代次数为200,交叉概率为0.8,变异概率为0.1。

5.2 测试算例

选用国际标准算例进行测试,以验证算法的有效性。测试算例包含不同规模的工件和机器数量,以及不同的工序加工时间和机器选择范围。

5.3 实验结果

运行NSGA-II算法,得到一组Pareto最优解集。通过绘制Pareto前沿图,可以直观地观察到不同目标之间的权衡关系。例如,在最小化最大完工时间和最小化总延迟时间的目标下,Pareto前沿上的解表示在给定最大完工时间的情况下,能够达到的最小总延迟时间,决策者可以根据实际生产需求选择合适的解。

5.4 结果分析

与传统的单目标优化算法和其他多目标优化算法(如MOEA/D、NSPSO等)进行对比分析,评估NSGA-II在求解FJSP方面的性能。结果表明,NSGA-II能够有效地找到一组非支配解集,在收敛性和多样性方面表现良好,能够为决策者提供更多的选择方案。同时,NSGA-II对参数设置具有一定的鲁棒性,在不同的参数组合下仍能保持较好的求解质量。

六、结论与展望

6.1 结论

本文深入研究了基于NSGA-II的柔性作业车间调度问题,详细阐述了算法原理、染色体编码、交叉变异操作等关键环节,并通过实验验证了算法的有效性。实验结果表明,NSGA-II能够有效地解决FJSP的多目标优化问题,找到一组Pareto最优解集,为实际生产调度提供了有效的解决方案。

6.2 展望

尽管NSGA-II在解决FJSP方面表现出色,但仍存在一些局限性。未来的研究可以从以下几个方面进行改进:

  • 参数优化:进一步研究算法参数(如种群大小、交叉概率、变异概率等)对求解质量的影响,采用自适应参数调整策略,提高算法的性能。
  • 算法融合:结合其他优化算法(如粒子群优化算法、模拟退火算法等)的优点,设计混合算法,以克服NSGA-II的局部最优解问题。
  • 实际应用拓展:将NSGA-II应用于更复杂的实际生产场景,如考虑机器故障、动态订单插入等因素的调度问题,进一步提高算法的实用性和鲁棒性。
  • 结合深度学习:随着深度学习技术的发展,探索将深度学习与NSGA-II相结合的方法,利用深度学习模型学习问题的特征和规律,指导算法的搜索过程,提高求解效率和智能性。

📚2 运行结果

主函数部分代码:

clear
clc
close all
tic;
%% 
NINDA=1;        
NINDB=0;        
MAXGEN=100;     
XOVR=0.6;
MUTR=0.2;     
NIND=100;         
space=' ';
% problem data
AA=textread ('10-10.txt');  
Pcolor=textread('color1.txt');
tic
handles.calculation_listbox1=[];
handles.calculation_edit1=[];
handles.solution=[];
%% 
pop.Jm=[];              
pop.T=[];               
pop.PNumber=[];         
pop.MPNumber=[];        
pop.JmNumber=[];        
pop.WNumber=[];       
pop.Maxchrom=[];      
pop.PP=[];              
pop.Number=[];          
pop.NIND=NIND;         

%% 
Nondominatedset.S=[];
Nondominatedset.Objv=[];
Nondominatedset.number=[];

pop=time(AA,pop);
gen=0;
%% 
Chrom=newsolution(pop,NINDA,NINDB);
ObjV=[];
[ObjV(:,1),ObjV(:,2)]=caln(Chrom,pop);

%% 
while gen<MAXGEN
   
    SelCh1=across(Chrom,XOVR,pop);
    SelCh2=aberranceJm(SelCh1,MUTR,pop);
    [makespan1,RMn]=caln(SelCh2,pop);
    SelCh3=[SelCh2;Chrom];
    makespan1=[makespan1;ObjV(:,1)];
    RMn=[RMn;ObjV(:,2)];
 
    [Chrom,ObjV,Nondominatedset]=NSGA2_select(SelCh3,makespan1,RMn,pop,Nondominatedset);
 
    gen=gen+1;
    
    makespan1=ObjV(:,1);
    RMn=ObjV(:,2);

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]丁云明,陈荔,张昕瑞.基于深度强化学习的柔性作业车间调度问题[J].控制工程,2024,31(07):1185-1194.DOI:10.14107/j.cnki.kzgc.20220608.

[2]周伟,孙瑜,李西兴,等.混合遗传变邻域搜索算法求解柔性车间调度问题[J].计算机工程与设计,2024,45(07):2041-2049.DOI:10.16208/j.issn1000-7024.2024.07.017.

🌈Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐