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

#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通用)

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

  1. 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc

    基于遗传算法的流水车间调度问题汇总,车间调度及其遗传算法,遗传算法车间调度,流水车间调度问题,置换流水车间调度问题,流水车间调度,流水车间调度问题代码,流水车间调度算法,任务调度遗传算法源码,遗传算法 ...

  2. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题

    文章目录 文中涉及源代码请参见,感兴趣的小伙伴可自行订阅下载! 数学建模源码集锦-基于多层编码遗传算法的车间调度算法应用实例 1. 关于遗传算法的一个小故事 2. 遗传算法操作流程 3. 车间调度问题 ...

  3. 复杂车间调度问题模型

    目录 复杂壳体零件制造车间调度方法研究 基于数字孪生的复杂产品离散装配车间动态调度 基于启发式算法的阻塞流水车间调度问题 多约束阻塞流水车间调度优化方法研究 基于元启发式的分布式车间调度方法研究 具有 ...

  4. 柔性作业车间调度问题研究-思考

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 作业车间调度vs柔性作业车间调度 深挖柔性作业车间调度 算法层面: 问题层面: 融合层面: 应用层面: 结语 最近一段时间写了一些算法原理相关的文章, ...

  5. 【优化算法】遗传算法GA求解混合流水车间调度问题(附C++代码)

    [优化算法]遗传算法GA求解混合流水车间调度问题(附C++代码) 00 前言 各位读者大家好,好久没有介绍算法的推文了,感觉愧对了读者们热爱学习的心灵.于是,今天我们带来了一个神奇的优化算法--遗传算 ...

  6. 【车间调度】基于matlab遗传算法求解车间调度问题(含甘特图)【含Matlab源码 2216期】

    ⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...

  7. 【车间调度】变邻域遗传算法求解柔性作业车间调度问题

    本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流. 混合优化算法优化策略 变邻域搜索算法是一种快速和有效的求解复杂组合优化问题的局部搜索算法,通过邻域结构的系统 ...

  8. 基于遗传算法解决柔性车间生产调度问题(附代码)

    本文章主要涉及以下工作:    (1)讲述了如何基于遗传算法解决柔性车间生产调度问题,包括编码.解码.初始化.交叉操作.变异操作.选择操作等.    (2)提供了相应的编程步骤,并完善了甘特图绘制以及 ...

  9. 求解作业车间调度问题的改进遗传算法

    作业车间调度问题的求解目标是得到一个科学.合理的调度方案. 一个科学.合理的调度方案能够有效提高生产效率.降低加工成本. 调度方案主要是确定各工件的加工次序和加工机器, 这是典型的 NP-hard 问 ...

最新文章

  1. PHP多进程编程初步
  2. an导入html5,H5-FLASH:AN HTML5-BASED FLASH RUNTIME
  3. 换服务器原网站数据会丢失吗,ecs服务器更换操作系统后原服务器数据还在吗?...
  4. 经典五子棋游戏项目需求文档【软件工程课程作业】
  5. 给计算机系统打补丁,为什么我的电脑需要打补丁?
  6. [Openstack] 使用heat模板创建stack
  7. MS .Net常见的持久层框架
  8. java rf14bug_让云平台发生重大宕机事故的15个方法
  9. 第一个Python程序--Python
  10. Flask教程(二十)flask-apscheduler
  11. 弘辽科技:淘宝狂欢大促怎么取消?要怎么做活动?
  12. 【九】分布式微服务架构体系详解——共识问题
  13. Postgres SQL 中的 时间格式转化常识
  14. thinkpad S3笔记本无线网速慢的解决方案
  15. 艾伟也谈项目管理,敏捷的坏态度
  16. Mac M1 nvm install失败问题
  17. splint 编译安装
  18. 数通学习笔记1 - 数据通信网络基础
  19. 【VBScript恶搞代码】关不掉的窗口
  20. PaddleOCR 打包出现问题及解决方法

热门文章

  1. Vue中使用quill富文本
  2. Apache OJB的分页处理
  3. 《穷爸爸和富爸爸》读后感
  4. 【Linux】线程互斥
  5. [LBS学习笔记3]redis geo地理位置查询分析
  6. js实现唐伯虎‘点‘秋香
  7. 计算机考研算什么学士学位
  8. 安居客新建表必须回答DBA的5个问题(DBRT规范)
  9. HDU 4411 Arrest
  10. python判断一个数是否为回文数