那些年被我们鄙视的车间调度规则

在这里插入图片描述

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

概念同步

  • 优先级规则(priority rule):根据某种方法为每个等待的作业分配一个数字(或值),并选择具有最小“值”的作业;
  • 启发式(heuristic):某种经验法则或单凭经验的方法;
  • 调度规则(scheduling rule):可由一个或多个优先级规则和/或启发式规则的组合组成;
  • 分派规则(dispatching rule):往往同调度规则。
    在不那么严谨的情况下,可以认为上述概念具有相同的含义。为了统一,本文中将采用“调度规则”的概念。

在这里插入图片描述

车间调度规则(启发式)是一类基于直观或专家经验构造的算法,一次性计算出计划调度问题每一个实例的一个可行解,例如最短工时优先(Shortest processing time,SPT)、最早交货期优先(Earliest due date,EDD)。

因为调度规则具有以下优点,在实际中得以广泛引用。

  • 实时性:启发式规则算法复杂度低,能较好地应用于动态实时调度和复杂大规模调度问题。
  • 灵活性:启发式规则可以根据实际情况进行调整和优化,以适应不同的生产环境和需求。
  • 可解释性强:启发式规则通常基于问题的特性和领域知识,易于理解和实现。

但也因其只考虑局部信息而存在短视性,针对不同问题、不同目标,启发式算法性能千差万别,泛化性较差。

在当下的学术环境下,调度规则几乎不再可能作为主要算法发表论文,而往往是作为被比较的对象出现。但是不得不说,在实际的车间调度环境下,当合理性大于最优性时,调度规则仍然是主力军,发挥着不可替代的作用,今天就详细地梳理一下,那些简单有效但被我们鄙视的车间调度规则。

1. 调度规则分类

1.1 优先级规则

  1. 简单优先级规则。这些规则通常是基于与特定作业相关的信息,如交货期、加工时间、剩余的工序数量、队列长度等。这些信息又可以详细地分为:加工时间(processing time)、交货期(due dates)、工序数(number of operation)、成本(costs)、准备时间(setup times)、到达时间(arrival times)、松弛率(slack)、机器(machines)、其他信息等。
  2. 简单优先级规则组合。在许多情况下,这些工作方法是根据某些信息将一个队列划分为两个或多个优先级组,并将不同的规则应用于不同的组。
  3. 加权优先级。按照一定权重将优先级规则或优先级规则组合通过加权的方式得到这些规则。

1.2 启发式调度规则

这些规则涉及一些更复杂的考虑,如预期的机器负荷、替代工艺路线的影响、调度替代工序等。这些规则通常与优先级规则一起使用。在某些情况下,启发式规则还可能涉及难以用数学描述的偏好操作,如通过目视检查时间表,在空闲时间段中插入作业。

1.3 其他规则

这些可能涉及为特定车间专门设计的规则,基于作业参数数学函数的优先级索引组合,或没有被归入到优先级规则和启发式规则中的规则。

2. 调度规则详解

2.1 简单优先级规则

2.1.1 加工时间相关

  1. SI(shortest imminent operation time):选择最短加工时间的工件,也称SPT(shortest processing time);
  2. SIS(shortest gross imminent operation time which includes processing plus setup):选择加工时间+准备时间最短的工件;
  3. LI(largest imminent operation time):选择最长加工时间的工件,也称LPT(longest processing time);
  4. LIS(largest gross imminent operation time):选择加工时间+准备时间最长的工件;
  5. SR(shortest remaining processing time):选择剩余加工时间最短的工件;
  6. LR(largest remaining processing time):选择剩余加工时间最长的工件;
  7. LRM(ongest remaining processing time excluding the operation under consideration):选择剩余加工时间(不包括当前工序)最长的工件;
  8. SIRIP:选择即将操作时间最短的作业,其中加工时间事先未知,由估计中的正态分布误差值确定;
  9. LSPON(longest subsequent operation):选择后置工序加工时间最长的工件;

2.1.2 交货期相关

  1. EDD(earliest due date):选择交货期最早的工件;
  2. OPNDD(earliest operation due date):选择工序交货期最早的工件,在工件进入车间时为每个工序分配相等间隔的交货期;

2.1.3 工序数相关

  1. FOPNR(fewest operations remaining):选择剩余工序数最少的工件;
  2. MOPNR(most operations remaining):选择剩余工序数最多的工件;
  3. LHALF(last half preference):分配给剩余工序数不超过总工序数一半的工件更高的优先级;
  4. FHALF(first half preference):分配给剩余工序数超过总工序数一半的工件更高的优先级;

2.1.4 成本相关

  1. Value:选择价值最高的工件;
  2. 1/C:选择单位拖期惩罚成本最高的工件;

2.1.5 准备时间相关

  1. NSUT(no setup time):选则 不需要准备时间的工件;
  2. MINSEQ:选择准备时间最小的工件或工件族;
  3. NB:针对具有顺序依赖准备时间的情况,选择从前一个工件切换到当前所需准备时间最短的工件;
  4. NB’:应用NB规则,但在调度中使用不同的工件作为第一个工件;
  5. NB’':从列中的所有值减去每列的最小准备时间值后,将NB规则应用于准备时间矩阵;

2.1.6 到达时间相关

  1. FIFO(first in, first out):先入先出;
  2. Random:随机选择;
  3. FASFO(first at shop, first out ):先到达先出;
  4. LIFO(last in, first out):后入先出;
  5. S-1:选择动态松弛(交货期前剩余工序的可用时间)最小的工件;
  6. S-2:选择静态松弛(交货期-到达时间)最小的工件;
  7. S-1/OP:选择动态松弛率(动态松弛与剩余工序数的比值)最小的工件;
  8. S-2/OP:选择静态松弛率(静态松弛与剩余工序数的比值)最小的工件;
  9. JSR(least job slack ratio):选择工件松弛率(工件松弛时间与交货期前可用时间的比值)最小的工件;
  10. RSPT1:选择工件松弛时间与剩余加工时间比值最小的工件;

2.1.7 机器相关

  1. MINQ:选择下道工序所需机器队列最短的工件;
  2. WINQ:选择下道工序所需机器工作量(可根据已加工工时或利用率反映)最少的工件;

2.1.8 其他信息

  1. ESD(earliest planned start date):选择工序计划开始时间最早的工件;

2.2 简单优先级规则组合

  1. FIFO/SI:对于等待超过一定时间的工件采用FIFO(23),如果所有工件的等待时间均未达到该值,则采用SI(1);
  2. $:将工件分为两类:高价值和低价值。先从高价值类通过FIFO选择工件,再从低价值类选择(使用参数p,即低价值类工件的比例);
  3. SMOVE:选择下道工序所需机器“关键”队列(表示加工时间最少)最短的工件,如果没有关键队列,使用FIFO(使用参数Q,用于改变任意机器的关键状态);
  4. ASIFIFO:在一定时间内使用SI(1),然后使用FIFO(23)重复此循环;
  5. SI+JSR:如果至少有一个工件松弛是负值,那么所有工件的优先级等于其松弛值,并使用规则S-1(27)。如果所有工件松弛均大于0,那么工件松弛率小于2倍最小松弛率的工件采用SI(1)计算优先级,队列中其他工件不考虑;
  6. 3CL-FIFO:将工件分为3个优先级组,并使用FIFO(23);
  7. SEQ:考虑在制品、等待时间和工序数;
  8. OPNDDP:根据SI选择工件,直到工件滞后于其工序交货期;
  9. DDNINQ:完成工序后离开车间或去到较小队列(<Q)机器的工件获得更高优先级,其内按照DD(10)选择;
  10. FCFS*S:如果等待工件数小于Q,则使用FIFO(23),否则使用SI(1);
  11. LOPN*S:如果等待工件数小于Q,则使用LI(3),否则使用SI(1);
  12. NINQ*S:选择将进入最短队列的工件,如果所有工件将进入具有超过Q个工件的队列,则使用SI(1);
  13. 2CLASS:根据下道工序的时间将工件随机分成两个队列,一定比例的工件进入高优先级队列,然后使用FIFO(23);
  14. 2C-SI:根据下道工序的时间构成两个优先级队列,,然后使用FIFO;
  15. 2C-TSI:优先选择松弛为负值的工件,然后使用SI(1);
  16. Cost/Time:首先使用SI选择任意“关键”工件,并选择拖期成本与工序时间比值最大的拖期(但拖期不严重)工件,然后在剩下的工件中根据SI选择;
  17. DDSU:选择交货期最早的工件,如交货期相同则选择不需要准备时间的工件;
  18. SI/Q:使用SI,但如果选定的作业将加入具有一定长度(或更大)队列的下一个机器,则使用SI尝试队列中的下一个作业(将之前选定的作业保留在队列中);
  19. SI/Q1Q2:分成三个队列,一个是下道工序去到“短”队列的工件集合,另外两个是“中”队列和“长”队列。三个队列依此使用SI选择工件;
  20. SOR:使用SI规则,但是优先考虑去到关键队列(只有少量工作等待的队列)的工件;
  21. SI/S-1:如果队列中的工件不会出现负松弛则使用SI,否则选择当前工序加工时间和松弛最小的工件;

2.3 加权优先级

通常,优先选择优先级索引最小的工件。

  1. PI1:同S-1(27),只是在交货期前可用时间上增加了一个权重 α \alpha α;
  2. P+S-1/OP:选择下一加工时间和每道工序剩余松弛时间加权和最小的工件;
  3. P+WKR:选择下一加工时间和剩余工时加权和最小的工件;
  4. P/WKR:选择下一加工时间与剩余工时加权比值最小的工件;
  5. P/TWK:选择下一加工时间与总工时比值最小的工件;
  6. P+WQ:选择下一加工时间与下一队列工时加权和最小的工件;
  7. MSR:选择工件交货期-下道工序工时-剩余工时最小的工件;
  8. RPT/RT:选择剩余加工时间与当前工件松弛比值最小的工件;
  9. PI3:选择当前时间与工序计划时间差值-
  10. PI4:基于规则60中参数和剩余工时的加权索引;
  11. P/OPNR:选择首道工序加工时间与剩余工序数比值最小的工件;
  12. P-SP:选择首道工序加工时间与下道工序加工时间差值最小的工件;
  13. P+NINQ:选择首道工序加工时间+下道工序队列长度之和最小的工件;
  14. (P+WQ)/P:选择首道工序加工时间+下道工序队列总工时之和/下道工序的加工时间比值最小的工件;
  15. SHOPNE:类似于规则1,但是工序时间是根据加权函数的平均值估计得到的;
  16. P16:基于剩余工序的交货期、运输时间和加工时间,以及当前工序的加工时间计算得到的优先级索引;
  17. P17:基于首道工序的可用时间、均值和方差的优先级索引;
  18. P18:基于交货期、运输时间和剩余加工时间的优先级索引;
  19. PI11:选择期望惩罚(工件提前完成有负惩罚或奖励)最高的工件;
  20. PI12:基于PI6以及PI6中工件完成后的索引值;
  21. PI13:用于并行处理器,基于给定时间段内的需求、加工时间和成本的优先级索引;
  22. PI14:基于在制品库存成本、加工成本、拖期成本、准备成本和时间、外部优先级的优先级索引;

2.4 启发式调度规则

  1. 可选工序:如果根据某种规则选择一个工件会导致其他工件变成“关键”(如负松弛),需要观察已选择工件的影响。如果其他工件受到影响,重复此过程;
  2. 可选工艺:研究通过另一组预定义的可选工艺来路由工件的影响:(a)使用SI(1)切换工艺;(b)使用LI(3)切换工艺;(c)随机切换工艺(24);
  3. 前瞻(Look Ahead):研究调度一个工件,在其完成前对于另一个会进入到当前队列的工件的影响(所有简单规则均只考虑了已经在队列的工件);
  4. P*S-1:应用SI(1)规则,除非该工件已经是最后一道工序且选择该工件可以避免拖期;
  5. SHOPNH:根据SI(1)规则选择工件,但是保持队列中的工件不动,选择另一个即将到达的加工时间更短的工件(保持机器空闲直到工件到达);
  6. DSIJ:使用S-1(27)选择队列中和将加入到该队列的工件;
  7. 插入(Insert):使用Look Ahead(81);如果下一机器存在空闲时间段,从对应队列中插入一个可以在关键工件到达前就可以完成的工件;
  8. 子集(Subset):确定关键工件,优先调度,然后围绕关键工件调度其他工件;
  9. Re-do:如果一个或多个工件在某个调度里拖期,调整交货期重新执行调度;
  10. 柔性(Flexibility):类似于插入(85)规则,但是在绘制甘特图后执行“压缩”;
  11. Manipulation:在绘制甘特图时尝试通过操控不同工序改进调度;
  12. Time Transcending Schedule:确定每个工件的优先级等级,调度最高优先级工件的下道工序,重新评估优先级并重复调度最高优先级工件的下道工序;

2.5 其他规则

  1. S-3:类似于S-1(27),但是所有工序的期望等待时间-每个工件的松弛;
  2. S-3/OP:类似于S-1/OP(29),但是松弛(分子)-预期的等待时间;
  3. MJSR:类似于JSR(31),但是每道工序的加工时间需要加上预期延迟时间;
  4. RSPT2:类似于RSPT1(32),但是需要对工件所有工序的松弛减掉预期等待时间;
  5. RSPWT1:类似于RSPT1(32),但是需要在分母加上预期等待时间;
  6. RSPWT2:类似于RSPT1(32),但是分子和分母需要分别减掉和加上工件所有工序的预期等待时间;
  7. RSWT1:选择工件松弛时间与预期的未来等待时间的比例最小的工件;
  8. RSWT2:类似于RSWT1(97),但是松弛时间需要减掉预期的未来等待时间;
  9. RSMWT:选择工件松弛时间/(标准移动时间+期望等待时间)比值最小的工件;
  10. XWINQ:选择下道工序将去到工时最少(包括当前和期望的)队列的工件;
  11. P+XWQ:选择当前工序加工时间与下一队列期望工时之和最小的工件;
  12. PI9:基于交期、剩余工序加工时间加权和、期望等待时间加权和、下一工序加工时间加权值的索引;
  13. PI10:选择交期前可用时间与剩余提前期(包括加工时间+期望等待时间)比值最小的工件;
  14. PI14:选择单位惩罚成本与完成时间和交期之差乘积最大的工件;
  15. PI15:类似于PI14(104),但是乘积需要再除以机器的总负荷;
  16. PI16:类似于PI14(104),但是乘积需要再除以给定工件在所有机器上的最大加工时间;
  17. PI17:类似于 PI14(104),但是乘积需要再除以给定工件在所有机器上的最小加工时间;
  18. OSF:工序松弛因子,基于工序交期、工序加工时间和工件到达时间的索引;
  19. PTF:加工时间因子,基于第 i i i个工件加工时间与工件在特定机器组上加工时间总和之积的索引;
  20. OUF:工序紧急因子,基于交期、工序数和所有工序的程度数计算出的索引;
  21. PCF:优先约束因子,基于作业优先约束的索引;
  22. SI/SI(F):通过减去某控制参数以更新松弛,从而允许延期。首先使用SI(1)规则,优先调度更新后松弛小于0的作业,然后再使用SI规则调度其他作业;
  23. F/SI(F):同112计算更新后松弛,如果更新后松弛小于0,则调度更新后松弛最小的作业,否则使用SI(1)规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松间沙路hba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值