多时间约束柔性作业车间调度问题的改进遗传算法

本文关注的是柔性作业车间调度问题,不仅考虑加工时间,还包括运输时间和准备时间。提出了一种改进的遗传算法,通过3种策略生成初始解,采用人工配对交叉和自适应变异策略优化解。实验表明这种方法能有效降低最大完工时间、总准备时间和总运输时间,证明了算法的效率和性能。
摘要由CSDN通过智能技术生成

参考文献:An improved genetic algorithm for the flexible job shop scheduling problem with multiple time constraints

摘要

柔性作业车间调度问题是工厂调度中一个非常重要的问题。现有的研究大多只考虑每个作业的加工时间,然而作业往往需要运送到另一台机器进行下一个作业,而机器往往需要设置来加工下一个作业。此外,与这些步骤相关的次数增加了这个问题的复杂性。本文解决了柔性作业调度问题,该问题不仅包含加工时间,还包含准备时间和运输时间。在提出问题后,以最小化最大完工时间、最小化总准备时间和最小化总运输时间为目标,提出了一种改进的遗传算法进行求解。在改进的遗传算法中,通过3种不同的方法产生初始解,以提高初始种群的质量和多样性。然后,采用人工配对的交叉方法来保留好的解并有效地改善较差的解。此外,采用自适应权重机制动态改变种群中个体的变异概率和搜索范围。通过标准数据集的一系列实验,我们证明了我们方法的有效性和强大的性能。

1引言

柔性作业车间调度问题( FJSP )是对传统作业车间调度问题( JSP )进行扩展而提出的一种新型调度问题。传统的问题假设在特定的目标约束下,工件可以在机器上合理地执行。这些假设如下:每台机器都可以在零时间安装;只有一个作业可以同时执行;一个操作不能停止;每个作业在已知机器上都有一个定义的操作序列;并且每台机器上每次操作的加工时间已知。FSJP在传统JSP的基础上增加了机器选择,即作业可以在不同的机器上进行加工。求解FJSP等价于求解两个子问题。第一个是机器选择问题,为不同的操作选择合适的机器。第二个问题是寻找加工工件的最优顺序的作业排序问题。

随着越来越需要支持定制化的制造请求,小批量生产逐渐成为现代制造企业的一个重要方面,然而这种针对不同类型的可变生产增加了运输时间和安装时间。在某钢制家具离散型生产作业车间中,仅考虑加工时间状态的调度方案造成的实际生产时间与计划时间误差较大。原因在于生产过程中存在大量的非加工时间,包括运输时间和安装时间。因此,本文将加工时间、运输时间和准备时间考虑为FJSP的独立时间因素。同时,提出了一种改进的遗传算法来解决这个问题。为了加快收敛速度和提高解的质量,我们采用三种不同的方式生成初始解,既提高了初始解的质量又保留了其多样性。在遗传算子阶段,我们设计了更有效的交叉和变异算子,前者是通过人工交叉配对的方式进行交叉,后者是通过自适应权重的方法获得变异概率和邻域搜索范围。

1990年,布鲁克尔和Schile [ 1 ]率先解决了这个问题。此后,许多研究者对大规模组合优化问题进行了研究,并在研究过程中提出了许多方法。例如,佩泽拉等[ 2 ]和Zhang等[ 3 ]应用遗传算法( GA )求解FJSP。Gao等[ 4 ]和Yazdani等[ 5 ]利用变邻域搜索( VNS )算法求解该问题。Xu等[ 6 ]使用蚁群算法( ACO )求解FJSP。

然而,在求解涉及大规模组合优化的复杂问题时,单一算法容易陷入局部最优解或无法完全收敛。因此,许多学者采用混合算法求解FJSP。Yuan等[ 10 ]提出了一种求解FJSP的新型混合和声搜索( Hybrid Harmony Search,HHS )算法。Yuan和Xu [ 11 ]提出了一种求解FJSP的混合差分进化( HDE )算法。Shao等[ 12 ]将离散水波优化算法( IMMBO )用于阻塞流水车间调度问题。Meng等[ 13 ]利用候鸟优化求解一个集成的批量流水线调度问题。Gao等[ 14 ]和Zhang等[ 15 ]将GA和VNS相结合。Li等[ 16 ]利用GA和Tabu搜索( TS )求解FJSP。

该问题可分为单目标或多目标问题,优化目标采用最小化最大完工时间。例如,Teekeng等[ 17 ]使用总时间最小化作为单一优化目标。Ham等[ 18 ]考虑并行处理中的调度问题,以最大完工时间为优化目标。尽管如此,多目标问题的研究已经变得更加主流和有价值。Lu等[ 19 ]将总完工时间和资源消耗作为多个优化目标。Zhang等[ 20 ]将总时间、总机器工作量和总能耗作为多个目标进行组合。Hu和Wang [ 21 ]以最小化总完工时间、总机器工作量和最大机器工作量为目标。Gao等人[ 22、23]使用两个最小化准则的加权组合,总完工时间和提前或延迟交货的平均时间作为优化目标,并使用完工时间和提前和延迟的均值作为两个目标进行优化。

随着时间的推移,研究人员在求解FJSP时考虑了更多的现实因素。Karimi等[ 24 ]引入了工件在机器间移动所需的时间。Zandieh等[ 25 ]考虑了基于状态的维修( CBM ),认识到机器可能由于预防性维修、基本维修或不可预见的故障而不可用。Shen等[ 26 ]研究了序列相关的安装时间问题。Wang等[ 27 ]将模糊加工时间视为一个因素。Zhang等[ 28 ]在柔性作业车间调度问题中考虑了运输时间。

论文的其余部分安排如下。在第二节中,我们详细描述了带有多个时间约束的柔性作业车间问题并给出了一个实例。第3节对改进的遗传算法进行了描述,包括编码、解码、初始解的生成以及染色体遗传算子的详细介绍。在第四节中,我们给出了我们的算法在标准数据集上的实验和结果,并进行了比较。第五部分是结论和对未来研究的建议。

2问题描述

柔性作业车间调度问题是一个NP - hard问题。传统上,研究者只考虑加工时间。我们不仅考虑了工件在不同机器上的加工时间,还考虑了在实际调度过程中,工件在机器之间运输的时间以及工件加工前设置机器的时间。

问题描述如下。N个作业需要在M台机器上加工,每个作业可以包含一个或多个操作。每个操作只能由一台机器加工,是操作中任意一台机器的可选机器集合。当作业的一个操作完成后,就会转入下一个操作。如果作业的两个相邻作业使用同一台机器,则无需考虑运输时间。如果加工机器的两个相邻操作是相同的(即,做同样的事情),则无需考虑建立时间。为不同作业的不同加工选择合适的机器,合理安排作业顺序,可以减少最大作业完成时间、总作业运输时间和总安装时间。

我们考虑具有多个时间约束的FJSP问题,假设如下条件

(1) 每台机器一次只能处理一次操作。

( 2 )同一工件只能由一台机器同时加工,且工件一旦开始加工,加工过程不能中断。

( 3 )每个工件的加工顺序有各自的顺序。即每次操作完成后,将其发送给所选机器进行下一次操作。

( 4 )加工时间随加工设备的不同而不同。加工时间已知。

( 5 )同一工件在不同机器上相邻两个工序间行驶时,运输时间随工序所用机器的不同而变化,且运输时间已知。如果一个工件的两个连续工序在同一台机器上加工,则运输时间为0。

( 6 )不同的工序由于加工机器的选择而具有不同的安装时间,机器安装时间已知。如果一个工件的两个工序在同一台机器上连续加工,安装时间为0。

为了便于描述,定义了如下符号:

J1⁄4 { J1,J2,J3,. . . Jj,.. Jn }表示作业集合。M1⁄4 { M1,M2,M3,. . .米,.. Mm }表示机器集合。OMil表示在机器i上进行的第l次操作。Ojh是工件j的第h次操作。TJijh表示工件j第h次作业在机器i上加工所需的时间。SJijh表示工件j在机器i上第h次操作的允许开始时间. SMil表示机器i第l次运行的允许启动时间。SJMijh表示工件j在机器i上第h次作业的实际加工开始时间。CJijh表示工件j在机器i上第h次作业的完成时间。CMil表示机器i第l次作业的结束时间,setuptimejhm表示工件j第h次作业在机器m上的安装时间,transportjhie表示工件j第h次工序中工件在机器i和机器e之间的运输时间。CJj表示作业j的完成时间。C表示所有工件的最大完工时间。TAT为总设置时间。TMT为总运输时间。

为了便于理解,我们现在提供一个部分柔性作业车间调度问题的例子。表1表示不同工件在不同机器上的加工时间和准备时间。表中的'- '表示在指定的机器上不能加工相应的作业。

表2表示工件在不同机器之间的运输时间,具有不对称性。图1展示了一个没有设置和运输时间的甘特图,其中黄色的301表示第一个操作作业2在机器1 ( y轴)上需要4个时间单位( x轴)。图2显示了另一个甘特图,这个时间包括设置和运输时间。棕色101前面的浅粉色101需要2个时间单位( x轴)在机器2上执行作业1的第一次操作,设置时间为3个时间单位。绿色203前面有浅粉色203,下面有浅蓝色203,代表工件2在机器4上加工的第二次操作。加工前机器的安装时间为1,工件2从机器3运输到机器4的时间为4。

图。由图1和图2可知,考虑运输时间和调整时间的甘特图比不考虑运输时间和调整时间的甘特图多6个时间单位。然而在实际生产过程中,额外的6是有意义的。如果不考虑运输时间和安装时间,计划可靠性会很低。如果考虑运输时间和安装时间,这个计划会成为成为有效的生产指导。

3求解多时间约束FJSP的改进遗传算法

3.1 染色体编码

编码是一种将给定问题的可行解从解空间转换到算法能够处理的搜索空间的方法。有效编码表达了个体与可行解之间的关系,不会产生非法解。FJSP包含机器选择和排序两个子问题。我们使用机器选择子问题来识别哪台机器来执行作业的每个操作。我们利用作业排序子问题来确定机器上的工件加工顺序。

在本章节中,我们对染色体上的两个子问题进行编码,以找到可行的FJSP解。

(1)机器选择:对于机器选择,染色体长度为总操作次数。基因位置用整数表示,按照作业处理顺序从左到右排列。每个整数表示可选机器集中加工作业当前操作的序号。以表1和图3左半部分为例,基因串为1 - 2 - 1 - 3 - 2,表示操作O11在可选机器集中的第1台机器上加工,对应实际加工机器M1。继续,操作O12在可选机器集(实际机器M3)中的第二台机器上加工,依此类推。

(2)操作序列:对于操作测序,染色体长度为操作总数。每个基因由作业编号编码。作业编号出现的次数表示作业所需的操作次数。如图3右半部分所示,基因链为2 - 1 - 1 - 2 - 2,对应的加工序列为O11 - O21 - O12 - O22 - O23。

3.2 染色体解码

一个有效的解码方法会导致个体解产生更好的结果,因此我们使用全插入解码。如前所述,染色体包含机器选择和操作排序两个子问题的两部分。首先对机器选择进行解码,从左到右读取机器的染色体,并将其转换为机器序列矩阵Jm、工件加工时间矩阵T1和机器调整时间矩阵T2。Jm( j , h)表示作业j第h次加工作业的机器编号;T1( j , h)表示工件j的第h个加工时间;T2( j , h)表示工件j的第h台加工机器的安装时间;和T3( j , h)表示工件j的第h个加工步骤到机器的运输时间;Jm( j , h) . T1( j , h)、T2( j , h)、T3( j , h)相互对应。我们对这些进行解码,如公式所示。( 4 ) ~ ( 7 ):

在对机器部分进行解码后,我们通过从左到右读取操作染色体来解码操作序列。我们根据机器准备时间和工件运输时间对工序进行排序得到调度结果。

排序方法如下:

  • 如果操作Ojh是工件j的第一个操作,也是在机器i上的第一个操作,则在机器i安装完毕后立即进行。

  • 如果操作Ojh不是工件j的第一个操作,则在操作Oj ( h-1 )完成后,在Ojh到达机器i和机器i安装完毕后进行。

  • 当Ojh不是工件的第一项操作,且工件已经在机器i上加工完毕时,我们必须考虑TSEik是否足以加工下一项工作操作,假设TSik和TEik分别标记空闲时间的开始和结束。当k个工件在机器i上加工时,产生k - 1个空闲时间。此时,需要判断操作能否向前插入。主要步骤如下:

步骤1:判断先前的操作是否导致同一作业的两次重复操作序列,从而导致安装时间为0。

步骤2:计算MT1 (启动时间TSik加上建立时间Setuptimejhi)和MT2 (结束时间CJej ( h-1 ))加上时间Transporttimejhie ),取较大值。如果结束时间小于空闲时间TEik,则满足插入(图4 ),否则考虑下一个空闲时段。如果没有空闲时间满足插入条件,则将操作Ojh放在预定操作之后(图5 )。

本文通过归一化求和计算个体适应度值。具体实施步骤如下:

  1. 对种群进行解码,得到所有个体的完工时间、总运输时间和总安装时间,并分别对这3个指标进行归一化处理;

  1. 每个个体取这三个指标之和作为值fi。fi越小,个体质量越好;

按照fi值从小到大的顺序对所有个体进行排序,且具有相同fi值的个体的排序相同。等级ni越高,适应度值Fi越高,根据最差个体的等级max ( n ),适应度值的上限a等于max ( n )部分,因此,个体适应度值Fi 1 ü a maxn Þi 1 Þ。Fi的取值范围为[ 0 , a],Fi取值越高,个体质量越高。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱佩棋(代码版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值