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

news2025/1/14 2:45:00

        对于流水车间调度问题,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,保留它们的顺序。

JBX交叉算子

基于工件的交叉(job-based crossover ,JBX)

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

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

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

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

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

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

相关文章

58寸透明屏的画质怎么样?

58寸透明屏是一种新型的显示屏技术,它具有透明度高、色彩鲜艳、清晰度高等特点,可以广泛应用于商业展示、户外广告、智能家居等领域。 首先,58寸透明屏的透明度高。 透明屏采用了先进的光学技术,使得屏幕在显示图像的同时&#x…

ubuntu 18.04 磁盘太满无法进入系统

安装了一个压缩包,装了一半提示磁盘空间少导致安装失败。我也没在意,退出虚拟机打算扩展硬盘。等我在虚拟机设置中完成扩展操作,准备进入虚拟机内部进行操作时,发现登录不进去了 shift 登入GUN GRUB设置项的问题 网上都是在开机…

Rust vs Go:常用语法对比(十三)

题图来自 Go vs. Rust: The Ultimate Performance Battle 241. Yield priority to other threads Explicitly decrease the priority of the current process, so that other execution threads have a better chance to execute now. Then resume normal execution and call f…

在centos 7系统docker上构建mysql 5.7

一、VM上已经安装centos 7.9,且已完成docker的构建 二、安装mysql5.7 安装镜像:[rootlocalhost lll]# docker pull mysql:5.7 查看镜像[rootlocalhost lll]# docker images 根据镜像id构建mysql容器,且分配端口号[rootlocalhost lll]# dock…

勘探开发人工智能应用:断层识别

1 断层识别 断层是地下岩层在受到挤压或拉伸力作用下,因脆性变形而形成的地层错断,是一种重要的地质构造特征。断层检测和解释是从地震剖面中认识岩层结构和储层特性的重要步骤。 1.1 数据描述 合成地震数据: 每一个合成地震数据都是由地质模型的反射系数与雷克子波进行褶…

chrome插件推荐

chrome插件推荐 chrome的一些插件, 真的能很大程度上提升我们的工作效率。而且chrome的插件极其丰富, 基本你想要的功能,都能找到对应的插件,接下来给大家推荐几个我自己在用的。 插件 1、Momentum 新标签页 简介: 超漂亮的新标签页面。每日更新精彩背景壁纸图片&…

124.【SpringBoot 源码刨析C】

SpringBoot源码刨析C (三)、SpringBoot核心功能2.Web4.数据响应与内容协商(1).响应JSON(1.1)jackson.jarResponseBody(1.1.1)、返回值解析器(1.1.2)、返回值解析器原理 (1.2).SpringMVC到底支持哪些返回值(…

一遍过JavaSE基础知识

文章目录 前言安装Java Development Kit (JDK)安装jdk配置开发环境验证是否安装配置成功 编写第一个Java程序hello world运行Java程序的流程 数据类型和变量数据类型变量 程序逻辑控制条件语句循环语句跳转语句 数组声明和创建数组访问数组元素数组长度遍历数组多维数组 面向对…

OpenAI大模型生态与ChatGLM ||学习大模型我们需要掌握些什么?

首先我们来看OpenAI系列模型: OpenAI 并不只有一个模型,而是提供了涵盖文本、码、对话、语音、图像领域的一系列模型。 语言类大模型 其中语言类大模型包括: GPT-3、GPT-3.5、GPT-4系列模型。 并且,OpenAI在训练GPT-3的同时训练了参数不同、…

Disulfo ICG Amine,二磺酸吲哚菁绿氨基,应用于多种生物大分子以及药物的检测

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ Disulfo-ICG-Amine试剂 | 基础知识概述(部分): 中文名称:二磺酸吲哚菁绿氨基 英文名称:Disulfo-ICG-Amine,Disulfo ICG NH2 CAS号:N/A 分子式&#xf…

【Gray Hat Python】构建自己的windows调试器

环境准备 windows10 64bit python3.7 64bit 打开可执行文件,创建进程 定义变量 以下代码用 ctypes 定义了调用 windows API 需要的结构 my_debugger_define.py import ctypesWORD ctypes.c_ushort DWORD ctypes.c_ulong LPBYTE ctypes.POINTER(ctypes.c_uby…

微软5年敏捷转型策略:成功的16个关键

许多管理者怀疑规模化敏捷组织是否可行。微软成功地实现了为期五年的大规模敏捷转型表明,答案是肯定的。微软已不是一艘巨型军舰,而更像是同步行进的快艇组成的舰队:数百个团队中以协调的方式进行敏捷和Scrum。依赖关系如何处理?团…

常用自动化测试工具有哪些?

1、Appium AppUI自动化测试 Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构,核心是一…

Java Swing(C/S模式)特效雨滴系统界面

调节不同参数,生成不同特效: ------------------界面截图--------------------- package org.jd.data.netty.big.window.chat.frame.ui.controller.center; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.*;/*** 设计模式: 单例模式* * 自定义线…

Docker 数据管理及网络通信 Dockerfile

一、Docker 的数据管理 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1、数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目…

华为OD机试真题 Java 实现【阿里巴巴找黄金宝箱(II)】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、题目关键点:2、大白话的意思就是3、比如4、思路这不就来了 五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于…

STM32单片机蓝牙APP语音识别智能记忆汽车按摩座椅加热通风儿童座椅

实践制作DIY- GC00160---智能记忆汽车按摩座椅 一、功能说明: 基于STM32单片机设计---智能记忆汽车按摩座椅 二、功能说明: 电路组成:STM32F103CXT6最小系统LD3322语音识别模块OLED显示3个ULN2003步进电机(分别对应 前后距离、座…

小学期笔记——天天酷跑1

文件快照(File snapshot)通常是指对文件系统中某个特定时间点的文件或文件夹的快照或副本。它记录了文件或文件夹在某一时刻的状态,包括文件的内容、属性、权限、位置等信息。 文件快照通常用于数据备份、恢复和版本控制等目的。通过捕捉文件…

Stable-Diffusion-Webui部署SDXL0.9报错参数shape不匹配解决

问题 已经在model/stable-diffusion文件夹下放进去了sdxl0.9的safetensor文件,但是在切换model的时候,会报错model的shape不一致。 解决方法 git pullupdate一些web-ui项目就可以,因为当前项目太老了,没有使用最新的版本。

Windows10 任务栏图标的控制

文章目录 前言一、任务栏系统图标设置二、任务栏应用软件图标设置总结前言 在windows系统中,有一个常用功能,那就是在任务栏上图标化加载一些应用。为特殊目的,我们可以把一些常用软件启动后以图标形式摆放任务栏的右下角(例如QQ,微信)。不同的Window版本有不同的任务栏…