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

生产调度问题分类——约束视角

在这里插入图片描述

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

文章目录

  • 提交日期
  • 中断
  • 优先约束
  • 顺序依赖准备时间
  • 工件族
  • 批处理
  • 故障
  • 机器适用限制
  • 排列
  • 阻塞
  • 无等待
  • 再循环

生产调度问题是实际工作中广泛存在的运筹学问题,可以描述为“给定若干加工任务,根据已有的生产条件,对任务按照一定的生产加工步骤进行安排,并在时间上分配有限的资源,使得某项性能指标最优”。从数学建模方面来说,生产调度问题就是,对于给定的生产任务进行建模,在满足特定的约束条件下,使得目标函数值达到最优或者近似最优。

生产调度问题起源于上世纪50年代,对该问题的研究具有重要的实用价值,吸引了大量国内外研究人员的关注,人们尝试从不同的科学领域去解决该问题,但是大部分车间调度问题属于NP-Hard问题(作业车间调度问题:P还是NP),目前还无法证实P=NP,因此NP问题无法在多项式时间内解决,即无法获得全局最优解。

1979年,Graham等提出了三元组 α ∣ β ∣ γ \alpha|\beta|\gamma αβγ表示法来描述调度问题。其中 α \alpha α表示机器环境, β \beta β描述了工件加工特征和详细约束, γ \gamma γ代表调度性能指标。

上一篇文章中(生产调度问题分类——机器视角),详细介绍了 α \alpha α域即机器环境,本文将重点说明 β \beta β域。

提交日期

提交日期也称为释放日期(release date),表示工件 j j j需要在提交日期 r j r_j rj及之后才能开始

陆续抵达的车间调度问题中需要考虑此约束,同时在一些其他场景下,如物料预计到达时间(齐套时间)机器维修完成时间人工设置的最早开始时间等,也均可等效为这种约束。

提交时间

中断

中断(prmp)含义是不必将一个作业在其加工完成之前一直保留在机器上。它允许计划员在任何时间中断一项作业的加工,而把另一项作业放到该机器上。一项中断的作业已经完成的部分不会丢失,即当一项中断的作业重新返回到机器上时,仅需要加工完剩下的作业即可。

在一些机加工车间中,部分机床存在多工作台,机床正在加工的同时,其他工作台正在准备,如果准备的工件优先级较高,可以切换工作台从而中断正在进行的工件。其实这个约束在实际场景中并不是很常见,所以大多数论文中也都会假设工件不允许中断

中断

优先约束

优先约束(prec)其实可以出现在任意的机器环境中,其表示在一项作业开始加工前,另一项或多项作业必须先完成

  • 如果每项作业最多有一个前置,最多有一个后置,这种优先约束称为链式
  • 如果作业最多有一个后置,该约束称为入树
  • 如果作业最多有一个前置,则称为出树
  • 如果作业可以既可以有多个前置也可以有多个后置,则称为网状

存在多个生产过程指定作业顺序装配作业场景下,均会存在这种约束。

优先约束

顺序依赖准备时间

s j k s_{jk} sjk表示工件 j j j和工件 k k k之间的由加工顺序决定的准备时间。如果工件 j j j是第1个,则 s 0 k s_{0k} s0k表示工件 k k k准备时间;如果工件 j j j是最后一个,则 s j 0 s_{j0} sj0表示工件 j j j之后的清理时间。如果工件 j j j和工件 k k k之间的准备时间还与机器有关,那么就表示为 s i j k s_{ijk} sijk

在需要夹治具的机加工(尤其是大件)场景中需要考虑此约束,因为不同的工件需要的夹治具不同,夹治具的拆卸和安装时间也不同,导致工件在按照不同顺序加工时的准备时间也不同;此外,在流水线型的装配制造中,不同的工件需要的物料种类和数量不同,甚至还需要重新准备线体。

顺序依赖准备时间

工件族

工件族(fmls)是将 n n n个工件划分为 F F F个类(每一类就是一个工件族)。同一族的工件可能加工时间不同,但都可在同一机器上加工且两者之间不需要准备时间。当机器切换工件族(如从族 g g g切换到族 h h h)时,需要一定的准备时间。如果这个准备时间取决于工件族 g g g h h h且是顺序依赖的,那么就表示为 s g h s_{gh} sgh;如果准备时间仅依赖于后置工件族 h h h,那么表示为 s h s_h sh;如果不依赖于任何工件族,则表示为 s s s

工件族实际上是更粗粒度的顺序依赖准备时间。顺序依赖准备时间定义的是两个工件之间的准备时间,而工件族则是两类工件之间的准备时间

这在实际中是有现实意义的。因为某些工件之间仅仅存在较小的差别(比如颜色),对于生产准备没有影响,如果定义到每两个工件之间的准备时间,对于品种较多的工厂来说是非常耗时的一项工作。而如果能把一些工件进行分类(成组技术),在较少的类别上定义准备时间势必减少很多工作量。

工件族

批处理

一台机器可同时加工 b b b b > 1 b>1 b>1)个工件,即加工批量为 b b b,这种为批处理( b a t c h ( b ) batch(b) batch(b))。一个批量中各个工件的加工时间可以不全相同,批次中的最后一个工件都完成后整个批次才算完成,即整个批次的完成时间取决于加工时间最长的工件

此约束在热处理等场景中非常常见,热处理炉具有一定容积,可同时放入多个工件进行处理。

批处理

故障

机器故障(brkdwn)意味着机器不能连续使用,需要进行维修或保养。

其实在休息、节假日期间,机器也不工作(无人车间暂不考虑),所以更准确的叫法是机器停机

故障

机器适用限制

当机器环境是 m m m台并行机( P m P_m Pm)时,机器适用限制( M j M_j Mj)是指并不是所有 m m m台机器都有能力加工工件 j j j,集合 M j M_j Mj表示可以加工工件 j j j的机器集合。

在实际车间环境中,当工件对机器有特殊要求或机器不具备特定的人/模治具时,可能会导致并不是所有的机器都可加工该工件。

机器适用限制
( M 1 = { m 1 , m 3 } , M 2 = { m 1 , m 2 } , M 3 = { m 3 } ) (M_1=\{m_1,m_3\},M_2=\{m_1,m_2\},M_3=\{m_3\}) M1={m1,m3},M2={m1,m2},M3={m3}

排列

在流水车间调度问题中可能出现的约束是每台机器前的队列遵循FIFO规则,即所有工件经过所有机器的顺序保持一致,这种调度问题也称为排列(置换)流水车间调度问题

排列

阻塞

阻塞(block)是可能出现在流水车间中的现象。如果一个流水车间在两台连续的机器之间只有有限的缓冲区,那么可能出现当缓冲区满的时候,上游的机器不允许释放已经加工好的工作,此时就会阻止或阻塞那台机器加工别的工作。

阻塞

无等待

无等待(nwt)是流水车间中可能出现的另一种现象。工件不允许在两台连续的机器间等待,即一个工件在第1台机器上的开始时间不得不推迟,以保证该工件可以不必等待任何机器而通过流水车间。

在一些具有特定要求的车间中,如轧钢厂,不允许钢板等待,因为在热轧过程中需要保持一定温度,如果等待时间过长会导致冷却而无法达到温度要求。

无等待流水车间调度

再循环

在作业车间或柔性作业车间中,当一个工件可能经过一台机器或加工中心超过一次的时候,发生再循环(recrc),或称为可重入(reentrant)。

该约束广泛出现在许多工业制造过程中,如半导体制造、印刷电路板制造以及需要多次热处理的机加工制造等。

再循环

相关文章:

  • 如何通过主数据管理开启数据治理
  • 1+x中级题目练习复盘(20220917 1+X 中级理论考试20221023 1+X 中级理论考试20221119 1+X 中级理论考试)
  • Jenkins常用插件安装及全局配置
  • springcloud第4季 负载均衡的介绍3
  • 使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码
  • python内置函数 V
  • ReentrantLock 原理
  • vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程
  • ip地址开发场景问题
  • 若依分离版 —引入echart连接Springboot后端
  • 南京观海微电子---Vitis HLS的工作机制——Vitis HLS教程
  • 51单片机学习9 串口通讯
  • 为wordpress特定分类目录下的内容添加自定义字段
  • 2021年XX省赛职业院校技能大赛”高职组 计算机网络应用赛项 网络构建模块竞赛真题
  • vscode使用Runner插件将.exe文件统一放到一个目录下
  • 【347天】每日项目总结系列085(2018.01.18)
  • 07.Android之多媒体问题
  • crontab执行失败的多种原因
  • HTML5新特性总结
  • JS 面试题总结
  • Laravel Mix运行时关于es2015报错解决方案
  • Mysql优化
  • PAT A1017 优先队列
  • Vue 2.3、2.4 知识点小结
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 创建一种深思熟虑的文化
  • 从零开始在ubuntu上搭建node开发环境
  • 聊一聊前端的监控
  • 软件开发学习的5大技巧,你知道吗?
  • 听说你叫Java(二)–Servlet请求
  • 小而合理的前端理论:rscss和rsjs
  • 移动端唤起键盘时取消position:fixed定位
  • const的用法,特别是用在函数前面与后面的区别
  • # 达梦数据库知识点
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $.ajax中的eval及dataType
  • (145)光线追踪距离场柔和阴影
  • (2)(2.10) LTM telemetry
  • (4)(4.6) Triducer
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (论文阅读30/100)Convolutional Pose Machines
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)shell调试方法
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net mvc部分视图
  • .NET构架之我见
  • .NET开发者必备的11款免费工具
  • .NET性能优化(文摘)
  • ??javascript里的变量问题
  • @DateTimeFormat 和 @JsonFormat 注解详解