本文以典型离散制造场景为背景,剖析Excel/基础ERP排产在插单响应中失效的技术根源,结合JVS-APS系统实践,详解如何将设备日历、人员技能、模具占用、物料齐套等硬约束结构化建模,并通过任务锁定、影响范围分析、局部重排等机制实现可落地的动态计划生成。
引言:为什么插单一小时,车间停工两小时?
在很多制造业:销售紧急插入一张订单,计划员花1小时调整Excel排程表,结果车间反而停工2小时------设备空转、工人待料、在制品积压。这不是执行问题,而是排程模型与真实生产约束脱节的技术问题。

本文不讲概念,只讲可验证、可复现的技术实现逻辑。我们将从约束建模→影响识别→计划再生→策略配置四个环节,拆解一套面向离散制造的有限产能排程(Finite Capacity Scheduling)落地路径。
一、问题定位:传统排程为何无法响应插单?
1.1 约束缺失:'无限产能'假设导致计划不可执行
传统工具(如Excel或未启用高级排程模块的ERP)通常仅输入设备理论工时(如'CNC-A每日可用8小时'),但忽略以下必须参与计算的硬约束:
-
设备日历:非工作日、维保时段、班次切换间隙(如夜班结束至早班开始间1.5小时不可用);
-
辅资源状态:某专用模具当前被订单#A占用,换模耗时45分钟,且仅1套库存;
-
人员技能矩阵:工序'热处理校准'仅3名持证技工可操作,当前2人已排班至其他产线;
-
物料齐套性:BOM中关键外协件'阀体ZK-07'当前库存为0,采购在途预计3天后到货。
✅ 技术提示:若这些字段未作为数据库实体建模(如
resource_calendar、tooling_usage、skill_certification、material_availability_view),则所有排程结果均为理想推演,不具备执行可行性。
1.2 影响不可见:缺乏依赖图谱导致'全盘重排'
插单触发后,系统无法自动识别:
-
哪些已开工工序会因物料/模具冲突而中断?
-
哪些设备因换模顺序被阻塞?
-
哪些后续订单因前置工序延迟而连锁延期?
根本原因在于:未构建工序级资源依赖图(Resource Dependency Graph)。每个工序节点需关联:


无此结构,插单即等于'重置整个DAG图',必然引发全量重算。
二、技术实现:有限产能排程的关键组件
2.1 约束统一建模:四维资源视图
JVS-APS采用四维约束融合建模,所有维度均需支持实时状态查询与占用预测:
| 维度 | 数据实体示例 | 必须支持的操作 |
|---|---|---|
| 主资源 | machine_schedule(含设备状态、维保计划、班次映射) |
按时间窗口查可用槽位 |
| 辅资源 | tooling_allocation(记录每套模具当前占用订单、预计释放时间) |
支持换模时间叠加计算 |
| 人力资源 | staff_skill_matrix(技工ID × 工序技能 × 排班日期) |
按技能+班次联合过滤 |
| 物料资源 | material_availability_snapshot(库存+在途+替代料BOM展开) |
实时齐套校验(非静态快照) |

⚠️ 注意:若物料齐套校验仍调用ERP静态库存表(未集成采购在途、替代料规则、质检冻结量),则'齐套'判断必失真。
2.2 插单响应流程:局部重排的技术路径
当新订单ORD-NEW-001插入时,系统执行以下确定性步骤:
-
影响范围扫描 :遍历所有未完工订单,匹配其工序对
ORD-NEW-001所需资源的占用冲突(时间重叠 + 资源类型+数量匹配); -
锁定保护识别 :过滤出
status IN ('released', 'started')且lock_flag = true的工序,排除其调整; -
冲突子图提取 :基于依赖图,仅提取与
ORD-NEW-001及受影响工序构成的最小连通子图(Sub-DAG); -
增量重排引擎:对该子图内所有工序,在满足四维约束前提下,重新求解最优起止时间(可选启发式算法如SPT或精确求解器);
-
结果验证输出 :生成结构化任务清单(含
operation_id,machine_code,start_time,end_time,required_tooling,material_check_status)。


三、工程实践:如何让规则真正'活'起来?
3.1 将隐性规则显性化为可配置策略
避免将工艺路线、替代料规则、班次逻辑写死在代码中。推荐采用策略模式(Strategy Pattern)+ 配置中心:
-
交付优先策略 :按
delivery_date ASC排序候选工序,再进行资源分配; -
大客户保供策略 :对
customer_tier = 'VIP'订单,强制保留其首道工序时间窗,冲突资源需主动腾挪; -
换模最小化策略 :同设备连续加工时,按
tooling_code聚类,减少换模频次(需在重排目标函数中加入换模惩罚项)。
所有策略均通过JSON Schema定义,前端配置,后端动态加载,无需重启服务。
3.2 关键验证点(上线前必测)
| 验证项 | 测试方法 | 合格标准 |
|---|---|---|
| 模具占用冲突识别 | 插入订单A(用T-8821),再插订单B(同模具) | 系统标记B的工序为'等待中',并给出预计释放时间 |
| 人员技能越界拦截 | 指派无认证人员至'高压测试'工序 | 前端禁用选择,API返回error: skill_mismatch |
| 物料齐套动态校验 | BOM中替代料生效,但主料缺货 | 计划生成时自动选用替代料,并标记substituted: true |
| 任务锁定保护 | 对已报工工序设置lock_flag=true | 插单后该工序时间窗完全不变 |
结语:排程不是排机器,是排'约束协同'
在离散制造场景中,一次有效的插单响应,本质是:
✅ 将物理世界的硬约束(模具、人、料、日历)转化为可计算的数据实体;
✅ 构建工序级资源依赖图,使影响范围可量化、可追踪;
✅ 用局部重排替代全量重算,保障计划稳定性;
✅ 把专家经验沉淀为可配置、可灰度、可回滚的策略模块。
如果你正在评估APS系统或优化现有排程流程,建议从这四点出发,逐项验证------因为真正的'智能排程',不在算法多炫酷,而在约束建模是否真实、完整、可执行。
欢迎在评论区分享你的制造排程实践:你遇到过哪些'计划很满,车间不动'的具体约束?是如何技术化解决的?