2. 生产排程基础

在进入算法与求解器工程之前,必须先建立一套“共同语言”。生产排程之所以复杂,往往不是算法本身难,而是问题边界没有被描述清楚:车间属于哪种类型、任务如何流动、约束来自哪里、优化目标是什么。如果这些基础概念混淆,后续无论用启发式规则还是混合整数规划,都会出现“模型与现场不一致”的致命问题。本节从车间类型、调度术语、性能指标和约束分类四个维度,搭建排程问题的标准描述框架。

一、核心原理:车间类型决定问题结构

车间类型描述的是“工件在设备之间的流动方式”,它直接决定可行解空间的大小和求解难度。最常见的分类包括:

  • 单机调度(Single Machine):所有任务在同一台设备上加工,只需决定加工顺序。它是理解调度规则的起点,例如 SPT(最短加工时间优先)可最小化平均流程时间。
  • 并行机调度(Parallel Machines):多台功能相同的设备并行工作,任务分配到某台机器并排序。关键问题是分配均衡与负载平衡。
  • 流水车间(Flow Shop):所有工件按相同工艺顺序经过多台设备,如先车削、再铣削、后热处理。顺序固定,难点在于设备间的等待与阻塞。
  • 作业车间(Job Shop):每个工件有自己独立的工艺路线,设备访问顺序不同。这是最经典也最难的排程问题之一,解空间呈组合爆炸。
  • 开放车间(Open Shop):工序没有固定先后顺序,可自由选择加工次序,常见于检测、返修等场景。

此外,实际生产中还存在柔性作业车间(FJSP),即同一道工序可由多台不同设备完成,需要在“选机”和“排序”之间联合决策。车间类型一旦确定,问题的数学结构、约束形式和适用算法范围就基本确定。

二、调度术语:建立精确的问题描述

调度领域有一套标准术语,用于无歧义地描述问题。常用术语包括:

术语含义示例
工件(Job)需要完成的生产任务订单 A、批次 B
工序(Operation)工件的一道加工步骤车削、钻孔、装配
机器(Machine)执行工序的资源CNC-01、装配线 2
加工时间(Processing Time)工序占用机器的时间pij = 45 min
释放时间(Release Time)工件最早可开始时间物料 8:00 到齐
交货期(Due Date)承诺完成时间订单 18:00 前交付
完工时间(Completion Time)工件最后工序结束时间Cj
拖期(Tardiness)超过交货期的时长Tj = max(0, Cj − dj)

在学术表达中,常用三元组 α|β|γ 描述调度问题:α 表示机器环境,β 表示约束与特征,γ 表示目标函数。例如 Jm || Cmax 表示作业车间、无额外约束、最小化最大完工时间。掌握这套记号,能快速判断问题属于哪一类,并检索对应的算法与求解器配置。

三、性能指标:优化目标必须可量化

排程不是“排得好看”,而是要在明确目标下求最优或近优。常见性能指标分为三类:

  • 时间类:最大完工时间 Cmax、平均流程时间、平均等待时间。适合关注产能与交付速度的场景。
  • 交付类:最大拖期 Tmax、总拖期 ΣTj、拖期工件数。适合订单交付导向的车间。
  • 成本类:换型次数、在制品库存、设备利用率、能耗。适合精益与成本控制场景。

关键提醒:多目标之间往往冲突。例如最小化 Cmax 可能增加换型次数,最小化拖期可能降低设备利用率。工程上通常采用加权求和、分层优化或帕累托前沿分析,而不是追求单一指标的极致。

四、约束分类:区分硬约束与软约束

约束是排程可行性的边界。按性质可分为:

  1. 硬约束:必须满足,否则解不可行。如设备同一时刻只能加工一个工件、工序先后顺序、物料可用时间。
  2. 软约束:尽量满足,允许违反但需付出惩罚。如优先客户订单、尽量减少换型、避免夜班。
  3. 工艺约束:由产品工艺路线决定,如必须先热处理后精加工。
  4. 资源约束:设备、模具、人员、夹具的可用性与容量限制。
  5. 时间约束:班次日历、维护窗口、释放时间与交货期。

在建模时,硬约束进入可行域,软约束进入目标函数。很多排程失败案例,都是因为把软约束误当硬约束,导致模型无解;或把硬约束当软约束,导致排出的计划现场无法执行。

五、案例场景:从订单到排程描述

假设某机加工车间收到 3 个订单,设备为 2 台 CNC。订单 A 工艺为“车→铣”,订单 B 为“铣→钻”,订单 C 为“车→钻”。这是一个典型的作业车间问题。若忽略换型时间,目标是最小化最大完工时间,则可描述为:

问题类型:Job Shop
机器数:2(CNC-01, CNC-02)
工件数:3(A, B, C)
目标函数:min Cmax
硬约束:
  1. 每台机器同一时刻仅加工一个工序
  2. 同一工件的工序按工艺顺序执行
  3. 工序不可抢占
软约束:
  1. 优先完成交期最近的订单
  2. 减少同机器上的换型次数

有了这段结构化描述,才能进一步选择求解器:小规模可用 CP-SAT 或 OR-Tools,大规模则需启发式或元启发式配合仿真评估。

六、误区与复盘

常见误区一:把流水车间当成作业车间建模,导致约束冗余、求解变慢。
常见误区二:只关注 Cmax,忽略拖期与换型,排出的计划“产能高但交付差”。
常见误区三:约束未分类,硬软混在一起,模型无解时无法定位原因。

复盘方法:每次排程前,先用三元组写出问题类型,再列出硬约束清单和软约束清单,最后确认目标函数。这个“三分钟描述”能避免 80% 的建模返工。

生产排程问题描述框架 车间类型 → 调度术语 → 性能指标 → 约束分类 车间类型 单机 / 并行机 流水车间 Flow Shop 作业车间 Job Shop 开放车间 / 柔性 FJSP 调度术语 工件 / 工序 / 机器 加工时间 pij 释放时间 / 交货期 三元组 α|β|γ 性能指标 Cmax 最大完工时间 ΣT 总拖期 换型次数 / 利用率 多目标加权 / 帕累托 约束分类 硬约束 软约束 工艺 / 资源 时间 / 班次 建模决策:硬约束 → 可行域 | 软约束 → 目标函数 问题类型 + 目标函数 + 约束清单 = 可求解的排程模型 示例:Job Shop | min Cmax | 机器不重叠、工序顺序、不可抢占 求解器选择依据 小规模精确求解:CP-SAT / MILP | 大规模:启发式 + 仿真评估

本节建立的描述框架,是后续所有算法与工程实现的输入规范。只有先把车间类型、术语、指标和约束说清楚,才能让求解器“听懂”现场语言,输出真正可执行的排程方案。