用遗传算法,开启研究车间调度问题之门

车间调度问题描述、分类,柔性作业车间调度问题描述,遗传算法的基本理论,遗传算法求解柔性车间调度问题及代码实现为主线,为你打开智能优化算法求解柔性作业车间调度问题之门。

#1.车间调度问题描述#

调度问题的一般性定义为:在一定的约束条件下,把有限的资源在时间上分配给若干个任务,以满足或优化一个或多个性能指标。

在制造业中,车间调度问题可以描述为n个工件在m台机器上加工;一个工件有多道工序,每道工序可以在若干机器上加工,并且必须按一些可行的工艺次序进行加工;每台机器可以加工工件的若干工序,并且在不同机器上加工的工序集可以不同,调度目标是将工件合理地安排到各机器,并合理地安排工件的加工次序和加工开始时间,使约束条件被满足,同时优化一些性能指标。

#2.车间调度问题的分类#

(1)单机调度问题 加工系统中只有一台机床,代加工的工件有且仅有一道工序,所有工件都在该机床上进行加工。

(2)并行机调度问题  加工系统中有多个完全相同的机床,每个工件只有一道工序,工件可以在任意一台机床上加工。

(3)开放车间调度问题  每个工件的工序之间的加工顺序是任意的。工件的加工路线可以在任何一道工序开始,在任何一道工序结束。工件的加工没有特定的技术路线约束,各个工件之间没有先后关系约束。

(4)流水车间调度  加工系统中有一组功能不同的机床,待加工的工件包含多道工序,每道工序在一台机床上加工,所有工件的加工路线相同,每个工件的工序之间有先后顺序约束。

(5)作业车间调度问题  加工系统中有一组功能不同的机床,待加工的工件包含多道工序,每道工序在一台机床上加工,工件的加工路线互不相同,每个工件的工序之间有先后顺序约束。

#3.柔性作业车间调度问题(FJSP)描述#

如下表,n个工件在 m 台机器上加工 ,按照工件的工艺路线要求,每个工件由一道或多道具有顺序约束的工序组成,每道工序可能有多台可以选择的机器进行加工。加工过程中,需要满足以下约束条件 。

(1)同一时刻,每道工序最多只能选择一台机器进行加工,一旦开始加工不能中断,直至加工完成。

(2)同一时刻,每台机器最多只能加工一道工序。

(3)同一工件的工序之间存在先后顺序约束 ,不同工件的工序之间不存在顺序约束。

(4)不同工件之间具有相同的加工优先等级。

图片

#4.遗传算法流程#

图片

#5.用遗传算法求解FJSP#

5.1编码

染色体编码是将所研究的问题的解用染色体的形式来表达的,这是遗传算法的关键。编码的目的是为了实现交叉、变异等类似生物界的遗传操作。必须考虑染色体的合法性、可行性、有效性,以及对问题解空间表达的完全性。良好的编码方式在后续遗传操作中易产生可行解,提高执行效率。

FJSP问题包括两个子问题:机器选择和工序排序。机器选择解决每道工序在可选机器集中的哪台机器上进行加工的问题。工序排序解决所有工序确定加工机器后的排序和开工时间问题。

(1)机器选择部分(MS)

机器选择部分染色体长度为T(总工序数)。每个基因位用整数表示,依次按照工件和工件工序的顺序进行排列,每个整数代表当前工序的加工机器在可选机器集中的顺序编号,并不是对应的机器号,这保证了后续交叉、变异等操作后产生的解仍然是可行解。

(2)工序排序部分(OS)

当工序的加工机器确定后,对工序的排序类似一般JSP。基于工序的编码方式进行编码,染色体的长度也等于T。每一个基因用工件号直接编码,工件号出现的顺序表示该工件工序间的先后加工顺序,即对染色体从左到右进行编译,对于第h次出现的工件号,表示该工件j的第h道工序,并且工件号的出现次数等于该工件的工序总数。

MSOS编码方式,如下图:

图片

注:具体编码过程及编码参考CSDN:用python实现遗传算法的编码及初始化

上面采用的编码方式是确定了机器,即MS部分,除此之外,还可以只用OS部分,省略MS部分来作为染色体,如:

[1]Xiuli Wu,Junjian Peng,Xiao Xiao,Shaomin Wu. An effective approach for the dual-resource flexible job shop scheduling problem considering loading and unloading[J]. Journal of Intelligent Manufacturing,2020(prepublish).

5.2 解码

解码运算并不是编码的简单反运算,按照不同的方法可以解码成活动调度、半活动调度和非延迟调度等类型。

对于FJSP问题,机器选择部分是确定的,工序排序部分存在大量可行解,因为任意两道工序之间可以插入无限的闲置时间。在不考虑任何两道连续工序之间存在的闲置时间的情况下,解码的三种调度类型可定义为:

(1)活动调度: 在不推迟其他操作或破坏优先顺序的条件下,其中没有一个操作可以提前加工。图b所示。

(2)半活动调度 在不改变机器上加工顺序的条件下,其中没有操作可以提前。图a所示。

(3)非延迟调度  至少存在一个工件等待加工时,对应不存在相应处于空闲的机器。

图片

注:具体解码过程及编码参考CSDN:解码部分代码及详细步奏(文末关键词回复获取)

5.3 初始化

种群初始化在进化算法中是一个关键问题,初始解的质量对遗传算法求解的速度和质量有非常大的影响。FJSP主流的三种初始化方式的可参考:

[2]Guohui Zhang,Liang Gao,Yang Shi. An effective genetic algorithm for the flexible job-shop scheduling problem[J]. Expert Systems With Applications,2010,38(4).

设计了全局初始化方式、局部初始化方式、随机初始化方式三种方式:

全局初始化方式(GS):

图片

局部初始化方式(LS):

图片

5.4 交叉

交叉的目的是利用父代个体经过一定操作组合后产生新个体,在尽量降低有效模式被破坏的概率基础上对解空间进行高效搜索。交叉操作是主要的遗传操作,GA的性能在很大程度上依赖于所使用的交叉操作。

对用MSOS编码的FJSP问题,交叉操作也分别针对MS、OS分别进行操作。

5.5变异

变异操作通过随机改变染色体的某些基因对染色体进行较小的扰动来生成新的个体,增加种群多样性,并在一定程度上影响GA的局部搜索能力。

图片

5.6 选择

选择操作的作用是使高性能的个体能以更高的概率生存,避免有效基因的损失,同时保持种群大小恒定,从而加快全局收敛性和提高计算效率。较常用的方法有轮盘赌、排序选择、种子选择、锦标赛选择。

(Brandimarte_data、Dauzere_data,Hurink_data通用)

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值