首页 > 编程语言 >遗传算法求解车间调度问题(附MATLAB代码)

遗传算法求解车间调度问题(附MATLAB代码)

时间:2022-09-29 17:01:26浏览次数:42  
标签:机器 交叉 变异 调度 个体 MATLAB 遗传算法 工件

遗传算法求解车间调度问题(附MATLAB代码)_遗传算法


首先声明本文参考数据魔术师公众号的《遗传算法求解混合流水车间调度问题(附C++代码)》和《MATLAB 智能算法30个案例分析


今天小编为大家讲解遗传算法求解车间调度问题。小编最开始接触的智能优化算法就是遗传算法,刚开始学习的时候小编查阅了网上各种讲解遗传算法的教程,最后还借了一本关于遗传算法的书籍,现在想想当时是多么的蠢,网上看教程的时候看了各种概念、各种流程和各种改进方法,看了一段时间依然是不会用,于是小编痛定思痛,买了一本《MATLAB 智能算法30个案例分析》的书籍(注意小编不是为这本书做广告),最主要的是这本书里面有现成的MATLAB代码,其实学习任何代码小编觉得都是先模仿再超越,如果最开始的时候就能自己编出来,那小编只能佩服。

遗传算法求解车间调度问题(附MATLAB代码)_调度问题_02

废话不说,接下来小编带大家快速入门遗传算法。

文章目录:

1. 关于遗传算法的一个小故事

2. 遗传算法操作流程

3. 车间调度问题描述

4. 遗传算法求解车间调度问题方法

5. matlab源代码分享


1. 关于遗传算法的一个小故事

无论是遗传算法,还是什么其他智能优化算法无非都是一个框架,目的都是搜索某一问题的“最优解”,这里为什么加双引号,因为这类智能优化算法都有一个缺陷,那就是搜索的过程中容易陷入“局部最优”。

给大家举个生动形象的例子先让大家对遗传算法有一个直观的感受,比如说有6只公鸡5只母鸡1000米赛跑,第1个100米,2只公鸡2只母鸡分别位于前四名,这时剩下的4只公鸡3只母鸡肯定要想办法追上前面4只鸡,于是就想出“交叉”和“变异”两种方法,1只公鸡和1只母鸡“交叉”孕育出1个公鸡仔和1个母鸡仔,孕育结束后父代和母代不幸罹难,一共有3对鸡能通过“交叉”的方式繁衍出后代,那剩下的1只公鸡怎么办,这只公鸡发生基因突变,也就是“变异”成一只新的公鸡了.(大家请注意前4名的鸡没有发生变化,后7名的鸡发生“交叉”和“变异”后,鸡的总数还是11);第2个100米,同样还是有2只公鸡和2只母鸡位于前四名,只不过这里的前四名可能已经不是第1个100米前四名的那4只鸡,同样剩下的7只鸡依然进行“交叉”和“变异”,目的是能让自己跑得更快;……;一直到第10个100米,最后冲刺阶段,毕竟是赛跑理论上来说只能有1个冠军(不考虑并列第一),那么最后夺得冠军的那只鸡就是跑得最快,这只鸡可能是一开始的那11只鸡的一只,也可能是经过某些鸡之间“交叉”和“变异”繁衍出来的,总之这只鸡是最强的。这其实就是所谓的“优胜略汰”,跑得慢的鸡会被淘汰,只不过在淘汰之前会完成繁衍。


2. 遗传算法操作流程

接下来给出遗传算法的框架

1、初始化:依据每个种群的特征随机生成第一代种群的全部个体;

2、求个体适应度:计算每个个体的适应度;

3选择过程:依据一定的选择规范,选出一部分优秀个体参与交叉和变异操作;

4、交叉过程:群体中两两配对,交换部分染色体基因,完成交叉操作;

5、变异过程:随机改变个体中的部分基因,来实现变异操作;

6、终止判断:若新一代种群满足终止条件,停止算法迭代,记录此时的最优解为问题的最优解;否则,迭代次数加1,返回步骤2;

遗传算法求解车间调度问题(附MATLAB代码)_遗传算法_03


3. 车间调度问题描述

车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加工已知各工件的加工时间,优化目标是如何确定工件的加工顺序以及每阶段工件在机器上的分配情况,使得最大完工时间极小化。


4. 遗传算法求解车间调度问题方法

1.个体编码

当待加工的工件总数为k,工件ni的加工工序共为mj时,则个体表示为长度为遗传算法求解车间调度问题(附MATLAB代码)_调度问题_04,染色体前半部分表示所有工件在机器上的加工工序,后半部分表示工件每道工序的加工机器序号。如个体

遗传算法求解车间调度问题(附MATLAB代码)_最优解_05

该个体表达了4个加工工序都是2次的工件在3台机器上的加工顺序。其中前8位表示工件的加工顺序,为工件2->工件4->工件3->工件1->工件1->工件2->工件3->工件4;9到16位表示加工机器,依次为机器2->机器1->机器3->机器3->机器2->机器2->机器1->机器3。

2. 适应度值

染色体的适应度值为全部工件的完成时间,适应度值计算公式为

遗传算法求解车间调度问题(附MATLAB代码)_最优解_06

其中,time指全部任务完成时间。全部工件完成时间越短,该染色体越好。

3. 选择操作

采用轮盘赌法选择适应度较好的染色体,个体选择概率为

遗传算法求解车间调度问题(附MATLAB代码)_最优解_07

其中,遗传算法求解车间调度问题(附MATLAB代码)_调度问题_08表示染色体i在每次选择中被选中的概率

4.交叉操作

交叉操作首先从种群中随机选取两个染色体,并取出每个染色体的前遗传算法求解车间调度问题(附MATLAB代码)_调度问题_09位进行交叉。操作方法如下:交叉位置为5,只对个体前遗传算法求解车间调度问题(附MATLAB代码)_调度问题_09位进行交叉。

遗传算法求解车间调度问题(附MATLAB代码)_最优解_11

交叉后某些工件的工序多余(子代1的工件2,子代2的工件3),某些工件的工序缺失(子代1的工件3,子代2的工件2),因此,把工件工序多余的操作变为工件工序缺失的操作,并按交叉前个体的操作机器来调整后一半的加工机器。

5. 变异操作

变异算子首选从种群中选取变异个体,然后选择变异位置pos1和pos2,最后把个体中pos1和pos2位的加工工序以及对应的加工机器序号兑换,如下所示,变异位置为2和4。

遗传算法求解车间调度问题(附MATLAB代码)_遗传算法_12


5. matlab源代码分享(后台回复“GA车间调度”提取代码)

链接:https://pan.baidu.com/s/1CdfOSZlsdwPkk3NJo7gMDQ 

提取码:2egc 



标签:机器,交叉,变异,调度,个体,MATLAB,遗传算法,工件
From: https://blog.51cto.com/u_15810430/5723542

相关文章

  • 蚁群算法通俗讲解(附MATLAB代码)
    本文依然参考《MATLAB智能算法30个案例分析》一书,文末的源代码也来自本书今天小编与大家聊聊蚁群算法,蚁群算法一个显著的特点是蚂蚁在经过路径后会释放信息素,蚂蚁之间能够相......
  • 二进制部署k8s集群v1.23.9版本-21-安装LTS任务调度
    21.1、准备镜像192.168.1.200服务器操作lts-jobtracker镜像dockerpullharbor.qgutech.com/qx-apaas/lts-jobtracker:v1dockertag8f1e3d395515harbor.qgutech.com/......
  • Redhat 8 磁盘调度策略变化:NOOP改为NONE
    说明在redhat4/5/6/7版本中的​​NOOP​​​调度策略,从8开始修改为​​NONE​​,官方解释:noneImplementsafirst-infirst-out(FIFO)schedulingalgorithm.Itmerges......
  • Kubernetes资源调度
    一、无状态应用管理Deployment1-1、创建DeploymentapiVersion:apps/v1kind:Deploymentmetadata:labels:app:nginxname:nginxspec:replicas:5......
  • Linux 进程调度浅析
    概述操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说“某某函数比某某函数效率......
  • 基础知识(5) --Matlab中特殊符号使用总结
    前言:上篇文章分享了Matlab经常会遇到(),[],与{}三种符号,下面接着捋一捋其他的特殊符号使用方法,主要有:冒号'分号&  &&与|   || 或~非.点1、:冒号冒号的主要用途是用......
  • Matlab爬虫获取王者荣耀英雄皮肤
    前言:周末闲来无事,玩了几局王者荣耀,突发奇想怎么获取到王者荣耀里面的英雄皮肤,本期分享一下如何通过matlab爬虫批量提取王者荣耀的英雄皮肤关键字:王者荣耀、爬虫、Matlab首先......
  • 在Linux上运行matlab
    1.首先在集群上把matlab这个模块加载上。moduleloadmatlabXXX2.接下来运行。matlab-nodesktop-nosplash-rmatlabfilename(不加.m,可执行文件)也可以进入matlab环......
  • Matlab绘制特殊的图形
    1、指定坐标轴刻度值和标签自定义沿坐标轴的刻度值和标签有助于突出显示数据的特定方面。以下示例说明一些常见的自定义,例如修改刻度值的放置位置、更改刻度标签的文本和格......
  • 基于遗传算法的物流管理系统
    原型是车辆路径规划问题(VRP)使用SpringBoot+ElementUI+MySQL搭建网站。登录页面:有三个选项,对应三种用户登录,会进入不同页面。修改密码页面:可以修改多项用户信息,和登......