生产排程问题(Production Scheduling)在运筹学中归类为Job-Shop调度——N个订单(Job)在M台设备(Machine)上经过多道工序(Operation),每道工序有加工时间和资源约束,目标是找到一种排产顺序使某种目标函数最优(最短完工时间/最小延期/最低成本)。这个问题是NP-Hard的,精确求解只在极小规模下可行。工业实践中不追求最优解,而追求"足够好的可行解"——在合理计算时间内给出可执行、可调整的排产方案。APS(Advanced Planning and Scheduling)系统的工程价值就在这里。
排程方法
排程方法 | 求解策略 | 计算时间 | 解的质量 | 工业适用场景 |
规则排程 | 派工规则 | 秒级 | 中(局部最优) | 动态实时调度 |
遗传算法 | 启发式搜索 | 分钟级 | 中高(近优) | 中等规模静态排程 |
模拟退火 | 概率搜索 | 分钟级 | 中高(近优) | 多目标优化 |
约束规划 | CP求解器 | 秒-分钟 | 高 | 复杂约束排程 |
混合整数规划 | 精确求解 | 小时级 | 最优 | 小规模验证 |
规则排程(Dispatching Rules)是最简单也最常用的方法。FIFO(先到先服务)按订单到达顺序排产,SPT(最短加工时间优先)优先安排短工序提高设备利用率,EDD(最早交期优先)按交期紧迫程度排序。规则排程的优势是计算极快——O(N log N)排序即可完成,适合动态调度场景(插单/急单时秒级重新排序)。劣势是局部最优——FIFO不考虑交期紧迫度,EDD忽略加工时间差异,单一规则难以平衡多个目标。
遗传算法(Genetic Algorithm)用生物进化模型搜索解空间。将排产方案编码为"染色体"(工序排列序列),通过选择(适应度高的方案保留)、交叉(两个方案交换部分工序顺序)、变异(随机交换某两个工序)迭代进化。遗传算法的关键参数是种群大小(通常100-500)和迭代代数(500-2000代),总评估次数为种群×代数。每次评估需对排产方案做仿真计算(计算每道工序的开始/结束时间、资源占用冲突),计算量与订单数×工序数成正比。500个订单×20道工序的排程问题,遗传算法约需2-5分钟求解。
约束规划(Constraint Programming, CP)是近年来在工业排程中应用增长最快的方法。CP求解器(如Google OR-Tools CP-SAT、IBM CP Optimizer)将排程问题建模为约束满足问题——定义变量(工序开始时间)、约束(资源容量/工序先序/交期限制),求解器在搜索空间中剪枝寻找可行解。CP的优势是约束表达力强——替代工序(A设备坏了用B设备)、可选资源(同一工序可在C或D设备上加工)、互斥约束(同一设备同时只能做一个工序),这些复杂约束在CP框架中自然表达。遗传算法处理这些约束需设计复杂的罚函数,且容易产生不可行解。
数据输入
排程系统的数据输入由四个维度构成。
订单数据:订单编号、产品型号、数量、交期、优先级(普通/急单/客户指定)。订单数据来自ERP系统,排程系统通过接口拉取未排产的订单列表。数据时效要求不高——订单变更频率以天计,每日批量拉取即可。
工艺数据:工艺路线(Routing)定义产品的加工路径——工序序列、每道工序所需设备类型、标准工时。工艺路线可能有替代方案——主路线是设备A→B→C,替代路线是A→D→C(B设备不可用时用D替代)。工艺数据来自PLM(产品生命周期管理)或CAPP(计算机辅助工艺设计)系统,变更频率低。
设备数据:设备清单、设备能力(可加工的工序类型)、设备可用性(日历/班次/维护计划)。设备可用性需排除计划维护时段和已排产时段,剩余的才是可排产时间窗口。设备状态数据需实时——排程时需知道哪些设备当前在运行、哪些在维护、哪些空闲。
物料数据:物料可用性(库存是否充足、到货时间)。排程时需检查物料约束——如果某订单的原材料未到货,该订单即使设备空闲也不能排产。物料数据来自WMS(库存)和采购系统(到货计划),实时性要求中等——物料状态变化频率以小时计。
排程输出与动态调度
排程输出是工序级的排产计划:每个订单的每道工序在哪个设备上、什么时间开始、什么时间结束、由谁操作。排产计划下发到MES执行,MES返回执行进度——当前工序完成情况、实际工时、异常事件。
动态调度处理排产计划执行过程中的偏差。三类偏差需触发重排:插单/急单(新增高优先级订单,需在现有计划中插入)、设备故障(某设备不可用,需将其上排产工序转移到替代设备)、物料延期(某订单物料延迟到货,需将该订单后延或调整到物料到货后)。
动态调度的策略是局部重排而非全局重排。全局重排计算时间长且打乱已执行的计划——已经排产到第二道工序的订单不能被重排到第一道。局部重排只在受影响的时间窗口内重新优化——故障设备在接下来8小时的工序需重新分配到替代设备,8小时之后的计划不变。这种"滑动窗口"重排策略平衡了优化效果和计划稳定性。
冻结期(Frozen Period)是动态调度的重要概念。冻结期内的排产计划不可修改——通常设定为最近24-48小时的计划为冻结期,因为物料已备料、人员已排班、设备已调试,修改成本太高。冻结期外的计划可以调整,插单从冻结期后开始安排。
多目标优化
生产排程的目标函数不是单一的,而是多目标平衡。
最大完工时间(Makespan)= 所有订单最后一道工序结束时间的最大值。Makespan最小化意味着总生产时间最短,设备利用率最高。
延期量(Tardiness)= max(0, 实际完成时间 – 交期)。总延期量最小化是客户满意度导向的目标。
设备利用率= 有效加工时间 / 可用时间。利用率最大化是资产效率导向的目标。
换产次数= 不同产品型号切换的次数。换产次数最小化减少换产时间损失(每次换产需清洗设备、调整参数、试产验证)。
这些目标之间存在冲突——最大化设备利用率可能导致批量增大(减少换产),但批量增大可能延迟小批量急单的交期。多目标优化通常采用加权求和(Multi-Objective Weighted Sum)或Pareto前沿(多目标遗传算法NSGA-II)。加权求和中权重的设置需业务专家参与——不同企业的优先序不同,OEM代工企业重视交期(权重高),自有品牌企业重视利用率。
落地挑战
工艺路线复杂是排程建模的主要难点。真实产线的工艺路线不是简单的线性序列,而是有向图——多个并行工序(部件A和B可同时加工,完成后组装为成品C)、多个可选设备(工序X可在设备M或N上加工,工时不同)、回环工序(热处理后需检测,检测不合格需返工回到热处理)。有向图建模需在CP框架中用可选变量表达——工序X分配到M或N是布尔变量,求解器自动选择更优的分配。
约束条件多使可行解空间收缩。设备约束(同一设备同时只能做一个工序)、人员约束(焊接工序需有焊工资质的操作工)、模具约束(某产品需特定模具,模具同时只在一台设备上使用)、物料约束(物料齐套才能开工)、工艺约束(热处理后必须在4小时内进入下一道工序,否则材料氧化)。约束越多可行解越少,搜索空间收缩——有时找不到可行解,需放松低优先级约束(如忽略模具约束改为人工调配)。
优化目标冲突使排产方案的选择变成管理决策而非纯技术决策。运营部门要利用率最高,销售部门要交期最快,质量部门要换产最少(减少混料风险)。APS系统的角色不是替管理层做决策,而是提供多方案对比——"方案A:利用率85%但3个订单延期,方案B:利用率80%无延期但换产增加30%",由管理层选择。
TDengine在排程系统中作为设备状态和产能的实时数据源。设备运行状态(运行/待机/维护/故障)持续写入TDengine,排程系统查询设备近期的实际产能数据——实际加工时间与标准工时的偏差、设备MTBF(平均故障间隔)趋势,用于修正排程参数。排产结果存入TDengine作为历史数据,支持排产准确率分析——计划完工时间与实际完工时间的偏差统计,指导排程模型参数优化。
结语
APS在工业互联网离散制造中的价值不在于找到理论最优解,而在于在工业约束下快速生成可执行的排产方案。规则排程用于实时动态调度,遗传算法和约束规划用于中大规模静态排程,多目标优化框架处理冲突目标的方案比选。
落地障碍不在算法层而在数据层——工艺路线复杂度、约束条件密度、设备状态实时性,三者决定了排程方案的可信度。排产准确率的提升依赖模型参数的持续校正——实际工时与标准工时的偏差需反馈到排程模型,这是一个持续优化的闭环过程。

























