Job Shop Schedule 生产调度问题 (一) 简介

本文介绍了Job Shop Schedule Problem(JSP),一个经典的组合优化问题,常见于生产制造和项目管理。JSP涉及在有限资源约束下,优化产品加工顺序以最小化总消耗。文章通过一个实例展示了JSP的基本概念,包括流程约束、设备限制和目标是最小化最晚工序完成时间。此外,还提到了Disjunctive Graph模型在求解JSP中的应用,以及如何通过元启发算法进行近似求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生产调度问题(Job Shop Schedule Problem)是一个非常经典的组合优化问题,在生产制造、项目管理的计划排班上广泛存在;学界对这个课题的研究已经超过50年了,建立了各种理论模型并提出了多种算法,应该说该问题属于最难处理的组合优化问题之一,一方面实际的业务逻辑会相当复杂,学界讨论的很多表现良好模型太过理想化,不太好直接应用到实际,另一方面问题规模的扩大很容易引起计算量的指数增长,无论采用哪种算法都不可能完全解决性能问题。我们先通过一个简单直观的例子来了解JSP的概念。
假设某个工厂每天需要生产三个产品,它们各自属于不同的类型,有不同的加工流程:
在这里插入图片描述
工厂内有三台加工设备来进行产品的各个工艺流程。对于某个产品的一个工艺,会有一台指定的设备进行加工,相应的也有个固定的加工耗时;对于每台设备,容量只有1单位,即同一时间只能加工一个产品。如下图所示,虚线框框起来的工艺属于同一台设备,右上角的红色数字表示加工耗时
在这里插入图片描述
我们现在的任务就是需要安排所有产品的工艺流程在各个设备上的加工开始时间,下图是一种最直接的安排方式,一个产品加工完后再安排下一个
在这里插入图片描述
这种安排方式的最晚完成时间(一般称之为makespan)是27h。显然这种安排方式太低效,事实上最优的安排方式如下图所示,这是的makespan是14h
在这里插入图片描述
上面的例子就是最基本的JSP的一个实例。JSP可以描述为在满足资源(设备、人员、时间等)约束的情况下安排加工序列,使得总消耗(时间、成本)最小的问题。最基本的JSP就如上面的例子所示,只有两个约束和一个目标:

  • 流程内的工序必须按照工艺顺序进行,即后一道工序必须在前一道工序完成后才开始
  • 设备同一时间只能处理一个工序
  • 最小化最晚的工序完成时间

具体的数学表述:我们定义一个集合 J J J,每个元素job就代表了某种产品的加工工艺流程;一个包含m个元素的集合 M M M,每个元素表示了一台设备;一个集合 O O O,每个元素代表了某个产品的某个加工工序,也就是说对于每个 v ∈ O v \in O vO,都属于某个 J v ∈ J J_v \in J JvJ,并且需要某个确定的 M v ∈ M M_v \in M MvM来加工,相对的处理时间为 t v t_v tv。自定义一个符号 → \to 来表示集合 O O O里的序列关系,即如果 v → w v \to w vw,那么 J v = J w J_v=J_w Jv=Jw,并且不存在 x ∉ { v , w } x \notin \{v,w\} x/{ v,w}使得 v → x v \to x vx或者 x → w x \to w xw。我们需要确定每个工序 v ∈ O v \in O vO的开始时间 S v S_v Sv,使得
m a x v ∈ O ( S v + t v ) (1) max_{v \in O}(S_v+t_v) \ta

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值