基于POX交叉的遗传算法求解车间调度

news2024/12/23 8:21:30

        对于流水车间调度问题,n个工件在m台设备上加工,已知每个工件每个工序使用的机器和每个工件每个工序所用时间,通过决策每个机器上工件的加工顺序和每个工序的开始时间,使完成所有工序所用时间(makespan)最小。具有下列约束:

  1. 不同工件的工序之间没有顺序约束。
  2. 某个工序一旦开始加工就不能中断。
  3. 每个机器在某一时刻只能加工一个工序。
  4. 机器不发生故障。

本文使用基于工序的编码方式,重点讲述(precedence operation crossover)POX交叉算子,通过遗传算法对流水车间调度问题进行求解。

基于工序的编码方式

        基于工序的编码方式:这种编码方法中,每个工件的工序都用工件序号表示,根据工件需要在色体重出现的次数表示工序。对于一个n个工件在m台机器上加工的调度问题,其染色体由n×m个基因组成,每个工件的序号在染色体中出现m次,从左到右扫描染色体,工件序号第k次出现,表示该工件的第k道工序。这种编码方式具有解码和置换染色体后总能得到可行解的优点。

        对于3个工件,每个工件3个工序的调度问题,一条染色体的例子及其对应的解释如下(图中注释为[工件-工序]序列,比如3-2表示3号工件第2道工序:

211312332
2-11-11-23-11-32-23-23-32-3

解码

        将染色体看作工序的有序序列,根据工序在该序列上的顺序进行解码。工序的开始时间是该工件紧前工序完工时间机器紧前工序完工时间中的大值,工序的结束时间是工序的开始时间与工序的加工时间之和。特别的,对于每个工件的第1个工序,由于不存在工件紧前工序,因此开始时间是机器紧前工序完工时间,如果不存在机器紧前工序,那么开始时间为时刻0。工件紧前工序是指该工序所属工件该工序的前1道工序,机器紧前工序是指该工序所用机器该工序的前1道工序。下图展示了各工序的开工时间的判断依据:

 POX交叉算子

        POX(precedence operation crossover)交叉算子得到的子代总是可行的。染色体p1 和p2 交叉生成两个子代c1 和c2,交叉过程如下:

1)随机划分工件集为两个非空子集J1 和J2;

2)复制p1中属于工件集J1 中工件的工序到c1,复制p2中属于工件集J1 中工件的工序到c2,保留它们的位置;

3)复制p1中属于工件集J2 中工件的工序到c2,复制p2中属于工件集J2 中工件的工序到c1,保留它们的顺序。

 该小节内容完,后续内容再更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】应用层协议 -- HTTP协议

文章目录 1. 认识HTTP协议2. 认识URL3. HTTP协议格式3.1 HTTP请求协议格式3.2 HTTP响应协议格式 4. HTTP的方法5. HTTP的状态码6. HTTP的Header7. Cookie和Session 1. 认识HTTP协议 协议。网络协议的简称,网络协议是通信计算机双方必须共同遵守的一组约定&#xff0…

直线导轨的主要功能

直线导轨是一种常见的机械结构,用于工业机器人、数控机床和其他自动化装置中。它的作用是提供一个准确的直线运动轨道,使得设备能够在预定的路径上进行精确的移动。 直线导轨作为一种重要的机械基础件,在现代工业中得到了广泛的应用。它主要的…

双非二本想进嵌入式行业?

二本的话学历上会吃点亏,但也没有特别夸张。嵌入式毕竟是技术岗,主要还是看自己的技术能力。嵌入式的话,在北上广深,稍微好点的企业研究生学历都能开到20K以上,本科生会低个2K左右,像大疆、华为更高&#x…

Too many files with unapproved license: 2 See RAT report

解决方案 mvn -Prelease-nacos -Dmaven.test.skiptrue -Dpmd.skiptrue -Dcheckstyle.skiptrue -Drat.numUnapprovedLicenses100 clean install 或者 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.numUnapprovedLicenses100 clean install

CPLD在线升级

文章目录 前言一、JTAG芯片介绍二、JTAG协议分析1.TAP状态机 前言 CPLD(Complex Programmable Logic Device)是一种可编程逻辑器件,可以用于实现数字逻辑电路的功能。CPLD通常包含可编程逻辑单元(如逻辑门阵列)和可编…

单向链表SingleLink

1.实现单向链表 public class SingleLink {private Node head;private int size;private class Node{private Object data;private Node next;public Node(Object data) {this.data data;}}public SingleLink() {// TODO Auto-generated constructor stubhead null;size 0;}…

Android 通用带箭头提示窗

简介 自定义PopupWindow, 适用于提示类弹窗。 使用自定义Drawable设置带箭头的背景,测试控件和弹窗的尺寸,自动设置弹窗的显示位置,让箭头指向锚点控件的中间位置,且根据锚点控件在屏幕的位置,自动适配弹窗显示位置。…

作为前端应该了解的后端常识

1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 什么是服务端 服务端,又称后端、server 端前端是用户可见、可操作的部分,如树枝树叶服务端为前端提供 “支撑”和 “营养”&…

Ubuntu22.04 locale出错

问题: locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory 解决参考&#xff…

下载Google113版本无更新组件,禁止更新

自动化测试下载谷歌驱动需要与浏览器版本一致,需要设置google浏览器禁止自动更新,这样google就可以不再自动更新了,目的是防止浏览器更新后,那么浏览器驱动也需要同时更新,这样在工作中会十分麻烦。 因此这里提供无更…

day45-SpringMVC

0目录 SpringMVC 1.2.3 1.SpringMVC 1.1 引入依赖&#xff1a; <!--SpringMVC的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0&…

如何在 docker hub 分享自己的镜像?看完不踩坑

前言&#xff1a;前几天vip课讲了如何创建配置jenkins容器&#xff0c;怕大家踩坑&#xff0c;我提前打好了jenkins镜像&#xff0c;直接让大家通过命令去拉取镜像就可以了。 然而&#xff0c;很多好学的同学来问这个是怎么操作的。今天就来聊一聊&#xff0c;怎么将自己打好的…

centos 8安装A10显卡驱动-AI人工智能

centos 8安装A10显卡驱动命令:./NVIDIA-Linux-x86_64-535.54.03.run --kernel-source-path/usr/src/kernels/4.18.0-147.el8.x86_64 安装完毕; 测试: 检查驱动版本号: nvidia-smi 验证驱动模块已加载: lsmod | grep nvidia

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

CMIP6数据处理及在气候变化、水文、生态等领域技术教程

详情点击链接&#xff1a;最新CMIP6数据处理及在气候变化、水文、生态等领域技术教程 一&#xff0c;CMIP6中的模式比较计划 1.1 GCM 全球气候模型&#xff08;Global Climate Model, GCM&#xff09;&#xff0c;也被称为全球环流模型或全球大气模型&#xff0c;是一种用于…

vue项目中为高德地图信息窗体添加点击事件踩坑

这里遇到了一个坑&#xff0c;在给信息窗体中的内容添加点击事件时&#xff0c;信息窗体弹出的时候点击事件自动执行了。在此记录一下踩坑和解决过程。 部分代码如下&#xff1a; this.map.on(click, e > {const item {val: 1234,name: zhang}const content <li οnc…

快解析内网穿透帮我实现零成本自建网站

我是一名 90后&#xff0c;大概就是大家嘴里“别人家的孩子”&#xff0c;大学学的是IT专业&#xff0c;毕业后结婚、生子一切按部就班 。随波逐流工作了几年&#xff0c;父母年龄变大&#xff0c;培养孩子投入也增加&#xff0c;逐渐开销变大&#xff0c;可是我的薪资还处于中…

【设计模式】详解观察者模式

文章目录 1、简介2、观察者模式简单实现抽象主题&#xff08;Subject&#xff09;具体主题&#xff08;ConcreteSubject&#xff09;抽象观察者&#xff08;Observer&#xff09;具体观察者&#xff08;ConcrereObserver&#xff09;测试&#xff1a; 观察者设计模式优缺点观察…

使用serverless实现从oss下载文件并压缩

公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱), 然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问…

springboot解决跨域

跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。但这个保护机制也带来了新的问题&#xff0c;它的问题是给不同站点之间的正常调用&…