单日排程结果
有效工时 10.5h / 班 21h / 日按吨位实际比例绘制。白班 103.2t + 晚班 87.53t = 190.73t,超出设备日产能 10.73t。数据为立邦 APS 演示会现场实测。
三个缺陷,都是模型问题
客户原话是「困扰我们好多年了」。这三条不是调参数能修的,因为它们分别来自产能单位用错、目标函数缺项、初值参数缺失。
按重量排产,不按工时
证据:设备产能 180t,实际排了 190t
重量不是产能单位。不同 SKU 的吨每小时差异巨大,用吨当产能必然超载或欠载。标准做法是给每个「产品 × 产线」定义速率加固定换产时间,把产能从重量翻译成时间。
洗机不内生于优化
证据:排序 → 洗机分析 → 插入洗机工单,三步手工
切换时间不进目标函数,排序就不会为省洗机而调整。事后插入永远得不到最优序,因为排序决策做完的那一刻,省洗机的机会已经错过了。
不考虑上一班次结束状态
证据:「他一定要知道上一缸是什么」
首尾不相连,砂型排序的价值被削掉一半。文献里这叫 initial setup state,是优化模型的初值参数,决定第一个作业的换产时间从矩阵哪一行取。
改造方向是行业标准,
不是我方发明
这一点值得在售前讲清楚:我们不是提出新概念,是把标杆系统二十年前就有的能力补齐。
把产能从重量翻译成时间
Product Wheel 十步法的第 4 步就是「按可用换产时间倒推最短轮周期」。标杆 APS 的通用建模是给每个产品与产线定义吨每小时加固定 setup 时间,而不是直接用重量当产能单位。
King (2009), Product Wheel Design
SAP PP/DS 与 Siemens Opcenter APS 的通用建模方式
把换产次数本身当优化目标
涂料行业的标杆论文说得很直接:设备清洗是涂料生产废物的主要来源,换产必须清洗,因此换产次数本身就是要最小化的目标,不是排完之后再统计的指标。
Adonyi et al. (2008), J. Cleaner Production 16(2)
DOI 10.1016/j.jclepro.2006.08.021
把上一班次状态作为模型初值
SAP PP/DS 的做法是把 Setup Group 挂在 Resource 上,资源上最后一个已排活动的 setup key 直接决定下一个活动的换产时间。文献里对应 setup carryover 与 setup crossover 两个概念。
Suerie & Stadtler (2003), Management Science 49(8)
Allahverdi (2015), EJOR 246(2), 345 至 378
不相关并行机上的整体求解
与本项目痛点匹配度最高的一篇:不相关并行机对应跨产线自动选线,加产能受限、序列相关 setup 时间与成本、仓容受限,用 relax-and-fix 启发式求解 MILP。
Araujo, Birgin, Kawamura & Ronconi (2021)
arXiv:2107.10738
我们最没把握的一件事
如果深色换浅色需要深度洗机,而中间插一个中间色反而更快,那么最优解可能包含纯粹为省洗机而插入的过渡批次。标准模型只在订单集合内排序,会直接漏掉这类解。
立邦有石膏、腻子、粉料等多种切换分类,很可能存在这种结构。它成立与否,决定求解器要不要支持插入非订单批次,也就决定了工期。
所以拿到切换矩阵后我们做的第一件事不是建模,是检测三角不等式。在那之前,任何工期承诺都是猜的。
切换时间矩阵(示意)
行为换出分类,列为换入分类,单位小时。
| A 深色 | B 中间色 | C 浅色 | |
|---|---|---|---|
| A 深色 | 0 | 1.5 | 4.0 |
| B 中间色 | 2.0 | 0 | 1.0 |
| C 浅色 | 0.5 | 0.8 | 0 |
绕一步 A → B → C = 1.5 + 1.0 = 2.5h
插入一个 B 批次反而省 1.5h
矩阵数值为示意。真实矩阵尚未拿到,这正是我们要向客户索取的第一份数据。
这个场景在国内
没有对标产品
国产 APS 的能力分布高度分化:离散有一堆产品,流程侧被石化与钢铁两个行业绑定。涂料这类中型批次流程场景落在中间。
| 阵营 | 代表 | 覆盖情况 |
|---|---|---|
| 离散排程 | 鼎捷 sAPS、汉得 HCMp、上海永凯、安达发 | 产品很多。鼎捷官网列的场景全是五金机加、注塑、电子零组件、汽配,明确只做离散 |
| 石化系流程 | 中控 InPlant APS、石化盈科 ProMACE | 面向炼厂与大型能源化工,模块是月度计划、原油数据库、装置停工检修。行业绑定极深 |
| 钢铁系 | 宝信 MES 作业计划管理 | 背靠宝武,炼钢与热轧冷轧机组作业排序 |
| 涂料这类中型流程 | 摩尔元数是唯一在官网列出「化工涂料」的 | 但它的排产产品是甘特图拖拽式人工排产加物料齐套分析,官网未提任何自动优化算法。有人做 MES,没人做优化排程 |
这既是机会也是风险。没有对标产品,意味着没有现成的功能基线可抄,客户也没有参照系去判断我们做得好不好。 所以验收锚点必须是那三个可量化的缺陷:班次不再超载、洗机时间下降、首尾相连生效。不能用模糊的「排得更好」。
核心求解不是大模型
会上双方已经达成过共识:排产本体理论上不用 AI。这个判断有公开评测数据支撑。
13 个前沿模型在 1132 个排产实例上的平均可行率。连产出一个满足硬约束的解都做不到。
SCHEDBench, EMNLP 2026 Findings
在本身无解的实例中,模型有 54% 的情况编造出根本不可能的计划。产能不足时它会给你一个假的可行方案。
PlanBench, arXiv:2409.13373
专门微调过的模型,距最优解仍差 21% 到 22%。而它的训练标签正是运筹求解器生成的。
Starjob, arXiv:2503.01877
大模型在本项目里只做两件事:从历史修改记录中归纳计划员的开单习惯,以及解释「这次洗机是因为什么」。排程本体用 OR-Tools CP-SAT,序列相关切换时间用 AddCircuit 加 only_enforce_if 建模,是标准写法。这两条旁路断了,排产照常运行。
我们现在还不知道什么
到目前为止的全部结论,来自一场演示会的观察加行业文献推断。没有一条是在你们的真实数据上验证过的。把这个讲清楚,比多列几个功能有用。
切换分类矩阵。洗机内生优化的全部基础,也是三角不等式检测的输入。拿不到就无法建模。
SKU 小时产能表。按工时排产的基础。数据稀疏的话会退化回按吨排,等于没改造。
排产全栏表的完整字段。数据模型无法定稿。
一次正式需求访谈。演示会不是需求访谈,目前所有需求都是从现象推断的。
现有第三方 APS 是替代还是并存。这决定接口对象是 SAP 还是现有 APS,也决定商务模式。
试点范围只做泉州工厂,还是要考虑多工厂差异。
开单量 1 的计算异常(演示中出现开单量 1 大于开单量 2)由谁修。
验收口径。本项目可以谈解质量改善,但在拿到数据前不承诺任何数字。