生产调度问题:基础概念&分类

前言

本科上的运筹学课程有讲到工件加工排序相关的问题,但讲得并不全面,考虑到以后工作可能会涉及到计算资源调度这方面的问题,打算这段时间尽可能地梳理相应的前置知识。

查到一本特别经典的教材《Scheduling》(Micha L. Pinedo),内容非常丰富全面(附上原文下载链接)。我大致翻了翻,也浏览了B站上专门学这本书的系列视频,感觉如果一股脑开始啃书的话并没有什么针对性。对我而言,这本书目前最大的用处就是帮助我认识生产调度问题的通用描述和基本分类,后续比较有用的可能就是定点查询,就是面向某一特定类别的调度问题去做专门的研究。基于这本书的主要内容,同时结合其他的资料,我打算先梳理实际生产调度问题的基础概念和分类,踏出学习的第一步。

基础概念:工程背景

如下图所示为制造系统信息流,比较清晰地展示了调度在企业生产制造中的功能定位。
制造系统信息流
书中特别对如下3个基本的调度术语做出了详细的解释。
Sequence:给定机器上的作业顺序。
Schedule:在一组更复杂的机器上分配作业。
Scheduling Policy:策略描述的是系统位于任何一种状态下的适当操作,通常用于随机设置。

问题分类:三元描述角度

先对调度问题的基本符号做出说明:通常情况下,作业数量和机器数量均为有限,分别为n、m;用(i, j)表示作业j在机器i上处理。
Processing time(pij):作业 j 在机器 i 上的处理时间。
Release date(rj):作业 j 可以开始的最早时间。
Due date(dj):作业 j 的承诺完成时间。
Weight(wj):作业 j 相对于系统中其他作业的重要性。可能表示将作业保留在系统中的实际成本,也可以代表为工作增加的价值。

实际生产过程中的调度问题比较多样,书中采用较为经典的α|β|γ(机器环境|约束限制|调度性能/目标)三元框架对调度问题进行描述,并且全面地阐释了每一元下的类别。

首先来看机器环境的类别。

书里面阐释了以下9种:single machine(1)、Identical machines in parallel(Pm)、Machines in parallel with different speeds(Qm)、Unrelated machines in parallel(Rm)、Flow shop(Fm)、Flexible flow shop(FFc)、Job shop(Jm)、Flexible job shop(FJc)、Open shop(Om),另外参考了一篇公众号文章,分类如下:
(1)单机调度:只有一台机器参与。
在这里插入图片描述

(2)并行机调度:有多台速度相同或不同的并行机可以参与作业,所有作业任务只有一道工序,作业任务可以在其中的任意一台完成。
在这里插入图片描述

(3)流水车间调度:有串行的 m 台机器,每个工件都必须经过每台机器加工,所有工件都必须遵循相同的加工路径。
在一台机器上完成加工后,工件进入下一台机器的队列中。如果所有的队列都遵循先入先出(FIFO)的规则,即在队列种等待时,工件不能插队,这种流水车间被称为置换(排列)流水车间。
在这里插入图片描述

当工件在某一加工阶段可以在多台机器上加工时,这种流水车间被称为柔性(flexible)或混合(hybrid)流水车间。
在这里插入图片描述

(4)作业车间调度:每个工件都可以有不同的加工线路,工件的加工顺序和加工时间都可以不同,每个作业仅能在一台机器上加工。
在这里插入图片描述

(5)柔性作业车间:作业车间与并行机环境的结合体,每个作业可以在一台或多台机器上加工。
在这里插入图片描述

(6)开放车间:有m台机器,每个工件在每台机器上都进行多次加工,但有些加工时间可以为 0,对每个工件的加工路径没有限制。允许调度者为每个工件确定加工路径,而不同的工件可以有不同的加工路径。
在这里插入图片描述

接着看约束限制的类别。

一个问题可以有多个约束条件,书中总共列了12个约束。
(1)Release dates (rj ) :表示工件 j 需要在提交日期 rj 之后才能开始,比如某些长江下的物料预计到达时间(齐套时间)、机器维修完成时间、人工设置的最早开始时间约束等等。
(2)Preemptions (prmp) :中断,允许计划员在任何时间中断一项作业而把另一项作业放到该机器上。同时该项被中断的作业已经完成的部分并不会丢失,之后重新返回到机器上加工完成剩下的作业即可。
(3)Precedence constraints (prec):优先约束,表示在一项作业开始前另一项或多项作业必须完成。
·如果每项作业最多有一个前置,最多有一个后置,这种优先约束被称为链式;
·如果作业最多有一个后置,约束称为入树;
·如果作业最多有一个前置,约束被称为出树;
·如果作业既有多个前置也有多个后置,约束被称为网状。
在这里插入图片描述

(4)Sequence dependent setup times (sjk) :顺序依赖准备时间,sjk 表示工件j和工件k之间的由加工顺序决定的准备时间。如果工件 j 是第1个,则 s0k 表示工件 k 的准备时间;如果工件 j 是最后一个,则 sj0 表示工件 j 之后的清理时间;如果工件 j 和工件 k 之间的准备时间还与机器i有关,则表示为 sijk。
在这里插入图片描述
(5)Job families (fmls) :实际上是更粗粒度的顺序依赖准备时间,表示两类工件之间的准备时间。在实际生产中,如果能把一些工件进行分类(成组技术),在较少的类别上定义准备时间能够减少很多工作量。
(6)Batch processing (batch(b)):批处理,一台机器可以同时加工 b 个工件。一个批量中各个工件的加工时间可以不完全相同,整个批次的完成时间取决于加工时间最长的工件。
(7)Breakdowns (brkdwn):机器故障,即机器不能连续使用。
(8)Machine eligibility restrictions (Mj ):机器使用限制,并不是所有机器都有能力加工工件 j,集合 Mj 表示可以加工工件j的机器集合。
(9)Permutation (prmu) :在流水车间调度问题中可能出现的约束时每台机器前的队列遵循FIFO规则,所有工件经过所有机器的顺序保持一致。
在这里插入图片描述
(10)Blocking (block):阻塞,如果一个流水车间在两台连续的机器之间只有有限的缓冲区,当缓冲区满的时候,上游的机器无法释放已经加工好的工件,将会阻塞上游机器加工别的工件。
(11)No-wait (nwt):无等待,工件不允许在两台连续的机器间等待,因此工件在第1台机器上的开始时间需要推迟来保证该工件可以不等待地通过流水车间。
(12)Recirculation (rcrc):再循环,工件经过同一台机器超过一次。
在这里插入图片描述

最后看调度目标。

书中列的6个调度目标如下。
(1)最小化最大完工时间
在这里插入图片描述
(2)最小化最大延迟时间
在这里插入图片描述
(3)最小化总加权完工时间
在这里插入图片描述
(4)最小化贴现总加权完工时间(加入了时间贴现的概念,越早完成的任务价值越高,越晚完成的任务价值越低。):
在这里插入图片描述
(5)最小化总加权延迟时间
在这里插入图片描述
(6)加权延迟作业数
在这里插入图片描述

参考资料

[1] Pinedo M L. Scheduling[M]. New York: Springer, 2012.
[2] 生产调度问题分类——机器视角
[3] 生产调度问题分类——约束视角

主要参考了scheduling书和以上2篇公众号文章,很多图都是参考的这两篇公众号文章,真的很形象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值