强化学习调度环境:析取图和离散事件仿真

news2025/7/14 6:46:03

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 何为析取图和离散事件仿真模型
    • 析取图模型
    • 离散事件仿真模型
  • 强化学习环境
  • 调度环境
    • 基于析取图的调度环境
    • 基于离散事件仿真的调度环境
  • 总结

近日有小伙伴在复现强化学习求解作业车间调度的文章代码问题时遇到一些疑惑,对于如何将车间调度问题转化为强化学习可以求解的序列决策问题文章中描述的不是很具体,导致不是很清楚怎么通过强化学习一步一步的动作选择得到调度解的。今天就通过生动形象的方式给大家讲一下目前常用的调度环境建立方法(析取图和仿真模型)的区别。

何为析取图和离散事件仿真模型

析取图模型

  析取图模型其实之间已经介绍很多了,析取图模型可由三元组G(N,C,E)进行表示:其中N为所有工序节点集合(包括了虚拟的起始节点Start和终止节点End),C为同一零件下由工艺决定的相邻工序之间关系的有向连接弧集合,用实线表示;E表示在可在同一机床上加工的工序间的析取弧集,用虚线表示。

  下图为一个简单的析取图模型,其中圆圈表示工序节点,节点内容表示工序名称,数字代表第几个零件的第几道工序,例如O11表示第1个零件的第1道工序。具有相同颜色的工序节点说明该类工序需要相同的机床。弧上的权重表示工序的加工时间。

  上图所示的析取图为尚未求解时候的状态,在进行求解时,需要确定同一机床上工序的先后顺序,即析取弧的方向,如果形成的图形是一个有向无环图,那么这个有向无环图将是一个具体可行的调度解。

  析取图进行一次实例化后所形成的可行解的有向无环图:

  在得到了可行解的有向无环图之后,需要通过拓扑排序将有向无环图G中的所有顶点排成一个具有明确的先后顺序的线性序列。当然拓扑排序不是唯一的,但是对一个有向无环图的所有拓扑排序对应的最后调度结果将是唯一的。按照下图的方式就可以一道一道工序依次进行安排,如后面动画所展示的那样。

离散事件仿真模型

  从广义上讲,析取图模型本质上也是一种仿真模型,但是这里所说的仿真模型特指狭义的,是按照时钟持续推进的方式,每到一个时刻,都会执行一些该时刻会发生的事件(event),即离散事件动态仿真(Discrete-Event Dynamic Simulation,DEDS),比如常见的仿真软件Plant Simulation、Arena等都是这种逻辑。后面的动画可以更加直观地展示。

强化学习环境

  强化学习的基本要素包括:环境、状态、动作、奖励、策略等,本文将着重介绍一下环境。环境是强化学习代理与之交互的部分,状态、动作、奖励其实都是基于环境的,所以环境建模的正确性决定了问题正确求解的前提。

  在游戏领域,环境就是整个游戏的建立机制,包括里面的场景、游戏规则、得分机制、支持的操作等。

  同理,围棋环境就是对棋子颜色、落子规则、输赢规则的描述。

调度环境

  求解调度问题,也应该相应的建立调度环境,调度环境可以理解为如何得到调度结果的过程,根据调度问题建模方法的不同,目前论文中主要有两种调度环境的建模方法:基于析取图基于离散事件仿真。调度环境的不同,也将决定状态、动作、奖励的设置方式不同。

基于析取图的调度环境

  目前很多论文其实都是采用的这种方法,但是没有具体描述交互过程。我之前的研究也是采用了这种方法(基于深度强化学习的自适应作业车间调度问题研究)。基于析取图得到调度结果的过程大致如下:首先从当前就绪工序集合中选择一道工序安排到机床,该工序的后置工序再加入到就绪工序集合中,从中选择下一个工序,依次进行直到所有的工序已调度完。可以看出,这种解码方式实际上是和强化学习与环境交互的思想是不谋而合的,所以析取图模型天然适合与强化学习进行结合。

  所以在这种情况下,强化学习中的t并不是指真实的时间,而应该是时间步(time step),即强化学习代理每执行一个action,time step就加1,就会安排一道工序,当所有工序安排完,一个epoch就结束,所以一个epoch的step长度就等于总工序数。这种调度环境下,工序在时间轴上的位置并不是依次向后的(见离散事件仿真动画)。
请添加图片描述

基于离散事件仿真的调度环境

  离散事件仿真里多了一个时钟的概念,就是在该环境下会有一个计时器,用于记录当前时间,一旦到达事件触发时刻(即决策时刻),事件就会发生。对于调度问题,决策时刻就是工件到达的时间和机床完成加工变成空闲的时间。工件到达事件发生,则工件进入机床队列(对于静态问题,默认已经到达在机床队列中等待);机床加工完成事件发生,则从其队列选择下一个工件进行加工。
请添加图片描述
  t=0时,假设所有机床空闲,则均从各自的队列中选择工件进行加工,加工一旦开始就会产生未来某一时刻的加工完成事件,加入到事件列表中,比如未来最早t=2时有机床完成加工,则时钟跳至t=2,执行对应事件,依次类推,直到调度完所有的工序。

  这种环境下,对于action的定义不是很明确,既可以按照每个事件作为一个动作,也可以按照一个动作执行多个当前时间下所有的事件,比如动画中t=0时刻就安排了3道工序。

  所以,该种环境下,各工序是按照各自的开始时间依次向后安排的。

总结

  本质上,这两种环境搭建方式没有什么优劣,还是要看其他要素的配合定义,也取决于个人习惯。

比较内容析取图仿真
视角工序时钟
step分派第几道工序决策时刻
epoch长度等于总工序数小于等于总工序数
动作对应一道工序对应一个或多个事件

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

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

相关文章

Python01(安装环境以及开发工具PyCharm)

目录 一、环境下载&安装 二、开发工具下载&安装 一、环境下载&安装 1、Python环境安装包下载 官方网址:https://www.python.org/downloads/windows/ 选择一个安装包进行下载,建议不要下载最新的。 2、环境安装 双击下载好的环境安装包进…

Rational rose 2007 下载和安装教程

文章目录Rational rose 简介一,下载Rational rose 2007二,安装Rational rose 2007三,激活Rational Rose 2007四,启动Rational Rose 2007Rational rose 简介 Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化…

云原生系列 【基于CCE Kubernetes编排实战】

✅作者简介: CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云享专家博主,掘金后端评审团成员 💕前言: 最近云原生领域热火朝天,那么云原生是什么?何为云原生&a…

基于交流潮流的电力系统多元件N-k故障模型研究(Matlab代码实现)【电力系统故障】

📋📋📋本文目录如下:⛳️⛳️⛳️ ​ 目录 1 概述 2 考虑多元件故障的交流潮流重要性度量(N-k) 3 考虑多元素故障的元素重要性度量 3 数学模型 1 概述 现代社会依赖于关键的基础设施系统,如电力…

【数据结构初阶】C语言从0到1实现希尔排序

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【数据结构初阶】 ✒️✒️本篇内容:深入剖析希尔排序 🚢🚢作者简介:计算机海洋的新进船长一枚,…

SpringBoot中的AOP使用

文章目录SpringBoot中的AOP使用1.AOP介绍2. AOP 编程术语2.1切面(Aspect)2.2连接点(JoinPoint)2.3切入点(Pointcut)2.4目标对象(Target)2.5通知(Advice)3.切入…

【经济调度】基于蝙蝠算法实现电力系统经济调度附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【Qt按钮基类】QAbstractButton[ 所有按钮基类 ]

【Qt按钮基类】QAbstractButton[ 所有按钮基类 ]Qt开启-》按钮基类 QAbstractButton一、setText (设置文本)二、text(获取文本)三、setIcon(设置图标)四、icon(获取图标)五、 iconSize (获取图标…

体系结构29_多处理机的互联网络

互连网络是将集中式系统或分布式系统中的结点连接起来所构成的网络,这些结点可能是处理器、存储模块或者其它设备,它们通过互连网络进行信息交换。在拓扑上,互连网络为输入和输出两组结点之间提供一组互连或映象(mapping&#xff…

通力科技通过注册:9个月营收3.4亿 项献忠家族色彩浓厚

雷递网 雷建平 11月25日浙江通力传动科技股份有限公司(简称:“通力科技”)日前通过注册,准备在深交所创业板上市。通力传动计划募资3.45亿元。其中,2亿元用于新增年产5万台工业减速机智能工厂技改项目,5041…

成为一名厉害的程序员,需要哪些必备知识

程序员在入职时,大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻。计算机基础知识对程序员来说很重要。计算机核心基础知识方面,算法、数据结构、组成原理、网络等涉及到的基础知识一定要彻底掌握,牢牢记住并融…

[附源码]java毕业设计智能视频推荐网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

3.90 OrCAD软件Annote命令下的每个选项的含义是什么?OrCAD软件Title Block中的原理图页数如何进行增加?

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

【自学前端】HTML篇已完结(附14节视频)

I have a dream,Front end development will not require additional training. 目录 内容预览 通过这里找视频: 1、内容仍然有所欠缺 2、目前以0基础再实战为主 3、目前未包含面试题 4、下一步的计划 5、希望收到反馈 内容预览 △ 目前纯HTML篇课程已经完成…

【项目实战:核酸检测平台】第三章 利其器

第三章 利其器 摘要:俗话说的好工欲善其事,必先利其器,框架搭的好,开发起来很舒服,搭的不好,开发起来就很痛苦。 一个程序员只会写业务代码,最多算是个码农,搭框架的本事、遇到难题的解决能力…

Docker学习(5)—— 在Docker上安装软件

一. 安装Tomcat 1. 下载最新版 (1) 拉取Tomcat镜像 docker pull tomcat (2) 查看是否拉取到Tomcat镜像 docker images tomcat (3) 创建Tomcat容器并启动 docker run -d -p 8080:8080 tomcat 这时访问tomcat首页报404错误,有以下两个原因:①防火…

[计算机毕业设计]大数据的B站数据分析与可视化

目录 前言 课题背景和意义 实现技术思路 数据爬取 数据可视化 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研…

为什么 NGINX 的 reload 不是热加载?

作者:刘维 这段时间在 Reddit 看到一个讨论,为什么 NGINX 不支持热加载?乍看之下很反常识,作为世界第一大 Web 服务器,不支持热加载?难道大家都在使用的 nginx -s reload 命令都用错了? 带着这个…

入职阿里必会199道SpringCloud面试题,你能掌握多少?

前言 Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。 Spring C…

linux用户及用户组的分类、管理

一、分类 1.用户和用户组分类 (1)用户分类 超级用户(root)——它具有一切权限,只有进行系统维护(例:建立用户)或其他必要情形下才用超级用户登录,以避免系统出现安全问…