当前位置: 首页 > 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…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...