当前位置: 首页 > news >正文

基于多动作深度强化学习的柔性车间调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 文献来源

🌈4 Python代码实现


💥1 概述

灵活作业车间调度问题(FJSP)在现代制造业中起着至关重要的作用,广泛用于各种制造工艺,例如半导体制造,汽车和纺织品制造(Brucker和Schlie,1990,Garey等人,1976,Jain和Meeran,1999,Kacem等人,2002)。它是一个广义作业车间调度问题(JSP),是计算机科学和运筹学中经典的NP-hard组合优化问题。在 FJSP 中,作业由一系列特定的连续操作组成,其中每个操作都分配给一组兼容机器中的合格机器,以优化一个或多个目标,例如 makespan、平均完成时间、最大流量时间、总延迟等(Chaudhry and Khan,2016,Xie et al.,2019)。与 JSP 问题相比,FJSP 更加复杂和灵活,因为属于作业的操作可以分配给一台或多台具有不同处理时间的兼容机器。

目前,解决NP-hard组合优化问题的现有方法可以归纳为两类:精确方法和近似方法。精确的方法,如数学规划,在整个解空间中寻找最优解,但由于它们的NP硬度,这些方法很难在合理的时间内解决大规模的调度问题(Li,Pan,&Liang,2010)。由于 FJSP 实例的棘手性,越来越多的近似方法(包括启发式、启发式和机器学习技术)被开发出来来解决现实世界问题的实例。通常,近似方法可以在计算工作量和结果计划的质量之间实现良好的权衡。特别是群体智能(SI)和进化算法(EA),如遗传算法(GA),粒子群优化(PSO),蚁群优化(ACO),人工蜂群等,在解决FJSP实例方面显示出优势。

尽管与精确的数学优化方法相比,SI和EA可以在合理的时间内解决FJSP,但这些方法在实时调度环境中并不适用,因为当底层算法需要大量迭代时,它们仍然可能遭受不可预测的极长计算时间以获得满意的解决方案。调度规则作为启发式方法的委托,广泛应用于实时调度系统,如考虑动态事件的中断。调度规则通常具有较低的计算复杂性,并且比数学规划和启发式更容易实现。通常,用于解决FJSP的调度规则可以分为两个基本类别:作业选择规则和机器选择规则。这些规则的设计和组合旨在最大限度地减少调度目标,例如平均流时间、平均迟到和最大迟到。然而,有效的调度规则通常需要大量的领域专业知识和试错(Zhang等人,2020),并且无法保证局部最优(Luo,2020)。

最近,深度强化学习(DRL)算法为解决具有共同特征的调度问题提供了一种可扩展的方法。一些基于学习的工作(Bengio, Lodi, & Prouvost, 2021)专注于其他类型的组合优化问题,例如旅行推销员问题(TSP)和车辆路线问题(VRP),但尚不清楚DRL已被用于研究复杂的调度问题,例如FJSP。这种知识差距促使我们为FJSP开发基于学习的方法。

通常,RL 代理根据以下行为与环境交互:代理首先接收状态st并选择一个操作一个t根据每个时间步的状态,然后获得奖励rt并转移到下一个州st+1.在 RL 的设置中,操作一个t从操作空间中选择一个.然而,本文用作业操作动作空间和机器动作空间构造了FJSP的分层多动作空间,这意味着RL的一般设置不能应用于FJSP。为了求解 FJSP,此 RL 设置涉及作业操作操作空间和机器操作空间。特别是,两个操作空间具有层次结构而不是平行结构。在每个时间步长,RL 代理从其符合条件的操作操作空间中选择一个操作操作,然后从其兼容的计算机操作空间中为所选操作选择计算机操作。兼容的机器操作空间与选定的操作操作相关。图1显示了FJSP的分层结构动作空间的示例。它包含四个以绿色显示的作业操作操作,每个作业操作操作都有一个紫色的兼容计算机操作空间

本文提出了一个端到端的深度强化框架,用于自动学习使用图神经网络解决灵活的作业车间调度问题 (FJSP) 的策略。在 FJSP 环境中,强化代理需要在每个时间步中安排属于一组兼容计算机中合格计算机上作业的操作。这意味着代理需要同时控制多个操作。这种多作用问题被表述为多重马尔可夫决策过程(MMDP)。为了求解MMDP,我们提出了一种多指针图网络(MPGN)架构和一种称为多近端策略优化(multi-PPO)的训练算法,以学习两个子策略,包括作业操作操作策略和机器操作策略,用于将作业操作分配给机器。MPGN 体系结构由两个编码器-解码器组件组成,它们分别定义作业操作操作策略和机器操作策略,用于预测不同操作和机器上的概率分布。我们引入了FJSP的析取图表示,并使用图神经网络嵌入调度过程中遇到的局部状态。计算实验结果表明,该智能体能够学习高质量的调度策略,在求解质量和启发式算法的运行时间上优于手工启发式调度规则。此外,在随机实例和基准实例上获得的结果表明,学习的策略在实际实例和具有多达 2000 个操作的更大规模实例上具有良好的泛化性能。

📚2 运行结果

 

 

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

🌈4 Python代码实现

相关文章:

基于多动作深度强化学习的柔性车间调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

出口亚马逊平衡车CE/UKCA认证注意事项

平衡车UKC认证 CE认证 认证项目:BS EN/EN71-1-2-3 UKCA认证标志与CE认证标志有什么不同? UKCA标记过程基本上遵循与CE标记相同的规则和规定。大多数制造商仍然可以根据测试结果和其他技术文档自行声明他们的产品,但在特定情况下,他们需要从第…...

云原生环境下的安全实践:保护应用程序和数据的关键策略

文章目录 云原生环境下的安全实践:保护应用程序和数据的关键策略一.安全措施和实践1. 身份和访问管理:2. 容器安全:3. 网络安全:4. 日志和监控:5. 持续集成和持续交付(CI/CD)安全:6.…...

vue 改变数据后,数据变化页面不刷新

文章目录 导文文章重点方法一:使用this.$forceUpdate()强制刷新方法二:Vue.set(object, key, value)方法三:this.$nextTick方法四:$set方法 导文 在vue项目中,会遇到修改完数据,但是视图却没有更新的情况 v…...

【Qt编程之Widgets模块】-006:QSortFilterProxyModel代理的使用方法

QSortFilterProxyModel是model的代理,不能单独使用,真正的数据需要另外的一个model提供,它的工鞥呢是对被代理的model(source model)进行排序和过滤。所谓过滤:也就是说按着你输入的内容进行数据的筛选,因为器过滤功能…...

上林赋 汉 司马相如

亡是公听然而笑曰:“楚则失矣,而齐亦未为得也。夫使诸侯纳贡者,非为财币,所以述职也。封疆画界者,非为守御,所以禁淫也。今齐列为东藩,而外私肃慎,捐国逾限,越海而田&…...

7.对象模型

对象模型 信号和槽 信号和槽是一种用于对象之间通信的机制。信号是对象发出的通知,槽是用于接收这些通知的函数。 当对象的状态发生变化时[按钮被点击],它会发出一个信号[clicked()],然后与该对象连接的槽函数将被自动调用。 若某个信号与多…...

机器学习——基本概念

如何选择合适的模型评估指标?AUC、精准度、召回率、F1值都是什么?如何计算?有什么优缺点? 选择合适的模型评估指标需要结合具体的问题场景,根据不同的需求来选择不同的指标。以下是几个常用的评估指标: AUC…...

Qt---感觉挺重要的部分

目录 一、讲述Qt信号槽机制与优势与不足 二、Qt信号和槽的本质是什么 三、描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别 四、描述QT的TCP通讯流程 服务端:(QTcpServer) 客户端:(QTcpSocket&#xf…...

springboot+vue家乡特色推荐系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家乡特色推荐系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…...

在Shell脚本中通过ssh从脚本运行函数

文章目录 在Shell脚本中通过ssh从脚本运行函数declare -f 和typset -f,这两个命令有什么区别declare -f 和typset -f,这两个命令可以通过ssh运行脚本中的函数吗如果我有main.sh和util.sh,并且在main.sh中引用了util.sh,该怎么办&a…...

简单学习一下 MyBatis 动态SQL使用及原理

MyBatis 是一个优秀的持久层框架,它提供了丰富的 SQL 映射功能,可以让我们通过 XML 或注解方式来定义 SQL 语句。它很大程度上简化了数据库操作,提高了开发效率。动态 SQL 是其中一个非常重要的功能,可以让我们根据不同的条件动态…...

WhatsApp如何让客户参与变得更简单?

WhatsApp对你的品牌来说可能和Twitter和Facebook一样重要,你可能已经把它们纳入你的社交媒体战略。 是的,WhatsApp不仅仅可以用来给同事发短信或与远方的亲戚视频聊天,它也适用于商业。 在发展WhatsApp业务时,小企业主得到了最优…...

记一次 MySQL 主从同步异常的排查记录,百转千回

本文主要内容如下: 一、现象 最近项目的测试环境遇到一个主备同步的问题: 备库的同步线程停止了,无法同步主库的数据更改。 备库报错如下: 完整的错误信息: Relay log read failure: Could not parse relay log even…...

Cpython的多线程技术之痛

历史原因 在Python官网下载的默认解释器是采用C语言编写的Cpython解释器。在Python语言开发之初,计算机都是单核CPU,每个单核CPU同一时刻只能运行一个线程。为了模拟多线程工作,这里采用了模拟机制,让不同线程根据时间片段&#…...

NDK OpenGL离屏渲染与工程代码整合

NDK​系列之OpenGL离屏渲染与工程代码整合,本节主要是对上一节OpenGL渲染画面效果代码进行封装设计,将各种特效代码进行分离解耦,便于后期增加其他特效。 实现效果: 实现逻辑: 1.封装BaseFilter过滤器基类&#xff0c…...

Python基础入门编程代码练习(二)

一、求1~100之间不能被3整除的数之和 循环条件&#xff1a;i<100循环操作 实现代码如下&#xff1a; def sums():sum 0for num in range(1, 101):if num % 3 ! 0:sum numprint("1~100之间不能被3整除的数之和为&#xff1a;%s" % (sum))sums() print("1~…...

C# | 对象池

对象池 文章目录 对象池前言什么是对象池对象池的优点对象池的缺点 实现思路示例代码 结束语 前言 当我们开发一个系统或者应用程序时&#xff0c;我们通常需要创建很多的对象&#xff0c;这些对象可能是线程、内存、数据库连接、文件句柄等等。在某些情况下&#xff0c;我们需…...

CSS小技巧之圆形虚线边框

虚线相信大家日常都用的比较多&#xff0c;常见的用法就是使用 border-style 控制不同的样式&#xff0c;比如设置如下边框代码&#xff1a; border-style: dotted dashed solid double;这将设置顶部的边框样式为点状&#xff0c;右边的边框样式为虚线&#xff0c;底部的边框样…...

QString与QByteArray互相转换的方法

QString与QByteArray互相转换的方法 [1] QString与QByteArray互相转换的方法QString转QByteArray方法QByteArray转QString方法QByteArray类同样不以’\0’为结尾QByteArray转QString&#xff0c;主要用buf.toHex()即可 [2] Qt开发串口通讯软件中的数据转换问题1.读取串口命令-Q…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...