你只要在制造型企业的会议室里聊到生产协同,“AI排产”现在绝对是个高频词。做数字化转型的想引入,车间计划员则半信半疑:“电脑排出来的单,我真能照着干吗?”我过去几年参与过的排产类项目,几乎都在这两种视角之间来回拉锯。最后反复验证出来的结论其实很朴素:AI排产,核心是排产,不是AI。
这句话不是说AI没用,而是说如果企业没把排产问题本身理清楚,上再多的模型、算法、算力,结果依然是一堆“看起来很智能、实际没法用”的演示。反过来,当约束、目标、数据和人的操作边界都清晰了,哪怕只用启发式规则加一点点寻优,也能明显改善交付水平和现场节奏。这篇文章想把这里面的经验拆开,聊聊什么才是排产项目的真正难点,以及AI到底能在哪个环节帮上忙。
1. 先别急着上AI,先搞清楚排产在解决什么问题
1.1 排产不是“排个顺序”这么简单
很多人一提排产,下意识觉得就是“把订单按交期排个先后顺序”。真正的车间排产远不止这个。它要做的是把客户订单、物料齐套情况、设备产能、模具工装、人员技能、切换时间、在制品库存这些变量放在一起,回答一个非常现实的问题:在未来几天或几周里,每个工作中心在哪个时间段加工哪个订单的哪道工序,才能既满足交付,又不让现场出现窝工等料。
我在项目里习惯把计划体系分成四层看:经营计划关注的是公司层面的资源投入;主生产计划解决的是“卖什么、造什么、造多少”;物料需求计划解决的是“什么时候采购、什么时候投产”;到了车间排产这个层面,才真正落到“哪台机器、哪个人、什么时候、干什么活”。前几层如果没理清楚,排产怎么排都是空中楼阁。很多AI排产项目失败,不是算法不先进,而是数据和业务规则根本支撑不到最底层。
还有一层常见误解来自边界不清。计划员嘴上说“排产乱”,实际乱的可能是销售承诺太随意、物料齐套率太低、现场频繁插单,这些都不是一个排产工具能单独解决的。所以做项目时我一般会先让客户回答一个问题:你的排产范围是单车间、多车间,还是供应链级的协同?范围定不下来,后面做模型一定会反复返工。
1.2 这三种需求我见得最多,基本都是“伪需求”
第一种叫“智能经验替代”。老板听说老师傅能排好,想用AI把这套经验学下来。但老师傅脑子里的经验通常不是一套全球最优策略,而是一堆针对特定异常情况的局部处理手法,比如“这台机器做这种料容易粘模,放到夜班开”“这种客户插单必须优先照顾”。你把这些变成规则可以,指望AI自己学出来,没有结构化的历史数据基本不可能。
第二种叫“一键排产幻觉”。领导希望系统点一下按钮,所有工序像变魔术一样自动排好。可现场每天都有来料延误、设备报警、人员请假,真正的可用排产方案必须支持人工调整和快速重排。系统如果只能给“一次性结果”,上线一周就会被弃用。
第三种是“报表式排产”。有些项目做完了只是把Excel排程变成可视化甘特图,根本没有形成闭环——排好的计划没反馈到执行端,实际开工时间、完工数量没人维护。结果系统看的是理想状态,车间干的是现实状态,两张皮越走越远。AI再强也补不上这种反馈断点。
我遇到这类需求时,通常会先泼冷水:先确认基础数据、流程边界、异常处理方式有没有准备好;如果没准备好,补上一个APS模块比砸钱上AI更实际。因为排产系统真正要活下来,靠的是计划体系、规则、数据和操作习惯,AI只是最后那层优化器。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心是排产:把老师傅的经验变成计算机能理解的规则
2.1 所有约束要先变成可检查的规则
“AI排产”里面,最容易出彩也最容易翻车的就是约束建模。常见约束可以分成几类:设备约束,某一台机器或生产线在同一时刻只能加工一个任务,但不同类型订单在不同机器上的加工速度,可能差出两倍以上;物料约束,有些工序开工时必须齐套,有些可以分批流转;人员约束,操作工有技能矩阵,夜班人数往往比白班少;工艺约束,部分工序之间有严格先后顺序,比如热处理之后必须冷却多少小时才能进行机加工;切换约束,模具颜色、规格切换会产生时间和材料损耗。
我常用的方法是组织一次“约束访谈”,请计划员、班组长、工艺工程师一起坐下来,把平时处理异常的规则一条条列出来。这时候会有一个很普遍的现象:同一个规则,计划员说应该这样,班组长说应该那样。落到系统里到底听谁的?必须放到项目例会上吵清楚,否则排出来的计划,大概率一半人满意一半人抵触。
把约束写成代码逻辑之前,建议先做一份约束清单表格,明确每条约束属于硬约束还是软约束。硬约束是不满足就不能执行,比如设备能力、安全要求;软约束是希望尽量满足,比如同系列订单尽量连在一起减少切换,但万一冲突,可以牺牲一些以保交期。硬约束与软约束分不清楚,是排产模型后续调整困难的主要来源。我见过不止一个项目,一开始把“减少切换”设成硬约束,结果系统为了少切换,把某个紧急订单排到两周后,销售那边直接炸锅。
2.2 数据质量比算法选择重要得多
做排产项目,有一句话我会反复讲:数据质量决定项目生死。AI算法、优化算法能处理复杂的计算关系,但没有干净、完整、及时的数据支撑,模型再漂亮也落不了地。这里的核心数据至少包括四部分:订单数据(包括交期、优先级、数量),工艺路线数据(每道工序在哪些设备上能做、标准工时、准备时间),资源数据(设备日历、班次、停机维护计划、额定产能),库存与物料状态(在库、在途、齐套情况)。
先别追求把所有指标一步到位。我一般建议数据准备分成三步走:第一步,把静态基础数据清洗干净——工艺路线必须和实际生产一致,工时不能只看标准值,最好结合历史实际工时修正;第二步,把动态订单和库存数据接通,最好用ERP和MES做接口,尽量减少人工导表;第三步,建立每日反馈机制,让完工数量、不良品数量、设备状态这些数据能自动回传,这样系统才能第二天正常滚排。
有一次做离散机加项目,现场ERP里的工艺路线,居然有40%的物料号没有完整工序。计划员平时是自己拿Excel补的。这种状态直接上AI等于让模型在残缺地图上找路。后来团队花了三周补齐工艺路线,没换任何算法,只靠基于交期优先的规则排产,交付准时率便提升了十多个百分点。这件事给我的触动很大,所谓AI赋能,前提是先把数据土壤养好。
2.3 目标函数不是“越复杂越好”
排产目标天然互相冲突。计划员想要按时交付,销售想要最短交期,车间想要尽量少切换、提高产出效率,财务想要降低库存。做模型时如果不把这些目标拆成优先级,直接搞一个大加权求和,最后往往得到一个人人都能用、但又人人都不满意的结果。
实践中应用比较顺的是“分层目标”设计。第一层硬约束:所有排产结果必须满足设备日历、工艺顺序,不安排超产能任务。第二层主要目标:交付准时率最高,或者延迟最小。第三层次要目标:切换次数少、库存占用低、产能负荷均衡。这三个层次有优先级:先满足第二层,再在第二层结果差不多的情况下优化第三层。算法做出来的不是数学上的绝对最优,而是在重要指标上达到可接受的次优解。
在评价指标上,我比较喜欢看三个核心指标:计划达成率(实际完成数量与计划数量之比)、按时交付率、总切换时长。这三个指标能直观暴露排产做得好不好。系统上线前,需要先用历史一个月的真实工单回测,把排产结果和人工实际执行结果对比。如果连历史数据都跑不过老师傅,就不要急着上线,一定是约束或目标设得不对,而不是算法不够强。
3. AI在排产里的真实角色与边界
3.1 当前真正在用的四类技术路线
大家都说AI排产,但实际上生产现场真正跑得好的是四种路线混用。第一种是启发式规则,比如按交期最早先排(EDD)、按加工时间最短先排(SPT)、按关键比排序,这些规则简单、计算快、可解释性强,常被用做初始方案生成,也是老师傅最能理解的一种。第二种是运筹优化,包括混合整数规划、约束规划,也就是用OR-Tools、CPLEX这类求解器建数学模型求最优解,适合规模相对不那么大、约束特别清晰的场景。第三种是元启发式算法,比如遗传算法、模拟退火、禁忌搜索,不追求理论最优,而是在有限时间内找到“足够好”的解,适合排产规模大、约束复杂的情况。第四种是仿真方法,把排产结果放到离散事件仿真环境里跑一遍,看看瓶颈和波动在哪里。
这四类路线可以这样理解:启发式规则是排产的地基,运筹优化像精密测量,元启发式像熟练工匠的多次试错,仿真就是试验场。深度学习、强化学习倒不是不能用,但目前在量产排产里更多止步于试点,核心问题有两个:一是难以处理大量硬约束,二是结果解释性差,计划员不敢用。真正在车间创造价值的AI排产,通常是用规则引擎保障可行性,再用优化算法提升质量,最后通过仿真做验证。
如果用表格来对比,大致是这样:
| 技术路线 | 优点 | 局限 | 典型场景 |
|---|---|---|---|
| 启发式规则 | 简单快速、可解释 | 容易陷入局部较优 | 初始方案、快速重排 |
| 运筹优化(MILP/CP) | 最优性或最优性边界明确 | 规模扩大后求解时间剧增 | 中小规模、约束严格的排产 |
| 元启发式 | 适应大规模、复杂约束 | 参数调优有经验门槛 | 多机台、多订单的柔性车间 |
| 仿真 | 能看到动态波动、瓶颈效应 | 本身不给出方案,只做评估 | 瓶颈分析与方案验证 |
3.2 为什么黑盒式AI在排产里容易翻车
排产项目跟人脸识别、文本生成这类AI应用有一个本质差别:生产排产的错误是有实物代价的。一个方案排错了,物料上线了、模具换好了,却不适合当前紧急需求,损失的不仅是时间,还可能是整条产线的信任。很多计划员面对AI生成的黑盒方案,第一个问题是:“你凭什么这么排?如果我把设备换成B线,为什么还会拖期?”
如果AI模型不能解释清楚每条建议背后的约束与优先级,计划员只能被迫全盘接受或全盘推翻。这样系统使用率一定很低。另一个更隐蔽的问题是泛化性。历史数据里没有出现过的产品结构、没有出现过的瓶颈局面,深度学习模型往往表现得很差。今天设备故障、明天订单合并、后天工艺变更,现实世界变化太多,训练数据根本覆盖不了。
所以,我在项目里始终坚持一个原则:AI算法负责做优化搜索,但约束逻辑和目标优先级必须通过规则引擎显式呈现。换句话说,AI的输入输出要被约束检查层包裹住。AI给出的解,如果违反硬约束,直接禁止;如果某项指标异常,要给计划员明确的提示,指出是哪一项软约束让了出来。系统不是在“替人决定”,而是在“帮人判断”。
3.3 工具选型:不要上来就自研算法
一听到“AI排产”,不少团队第一反应是要招几个算法工程师,从零写一个调度引擎。我不能说完全不能做,但纯自研的风险确实很高——排产项目里算法代码往往只占20%到30%,剩下全是数据接口、约束配置、可视化、权限、异常处理这类工业软件该干的活。这些活看起来不起眼,却决定了系统能不能在生产环境里长期存活。
大多数情况我会建议先看商业APS。现在成熟的APS系统大多内置了有限产能排产、甘特图交互、规则配置等功能,有些还提供优化器接口。选APS时重点不只在它的算法有多强,更在于它的数据模型能不能快速适配你的工艺路线,以及计划员在界面上好不好操作。某些大型ERP厂商也带排产模块,但往往颗粒度太粗,适合做产供销平衡,不宜做车间约束排产。
如果预算有限,也可以走“轻量自研”路线:使用开源运筹优化工具作为核心计算引擎,前端自己花时间做交互,逐步接入ERP或MES数据。这样开发的周期通常不短,而且需要团队具备业务梳理能力。做这个选择前要想清楚:公司内部有没有一个既懂算法又愿意长期蹲车间的人。如果没有,不要盲目上自研,否则最后大概率会做成研究项目而不是生产系统。
4. 一套可复制的落地实操方法
4.1 阶段一:先圈定范围,把产能口径统一
第一步不是选择算法,也不是训练模型,而是先界定上线范围。我会建议从“一条瓶颈最明显的产线”或“问题最突出的车间”切入,而不是一上来就排全厂几百台设备。范围小,反馈快,也容易拿到准确数据。把瓶颈工段搞定后,其他工段通过上下游接口联动,再逐步扩大边界。
范围确定后,要解决一个极其关键的产能口径问题。产能不能直接用设备理论速度乘以工作时间,必须考虑七大损失:计划停机、换模换线、设备故障、待料、人员缺勤、质量返工、速度损失。我的做法是让车间按设备记录停线原因一个月,然后算出每台设备的实际综合利用率,再用这个数去修正系统里的产能日历。别舍不得这一个月,没有真实产能数据,排产系统会把很多任务排到事实上做不完的时间段里,计划员很快就会发现系统不可信。
规则梳理与数据清洗也在这一阶段同步进行。数据清洗可以先做字段完整性分析,把缺工艺路线、缺工时、缺交期的数据筛出来。规则梳理则要做成决策矩阵:什么条件下订单可以拆批?什么级别的人员有权限插单?相邻工序间有没有强制冷却或等待时间?这些决策不写清楚,后台上线时一定会“打架”。
4.2 阶段二:先用可解释规则建立基线
先进系统之前,强烈建议先用一套最简单的规则把结果跑出来,作为基线。所谓基线,就是“不管用不用AI,我们当前能稳定做到的最好排产结果是什么”。这样可以给团队形成共识:AI优化后应该比这个基线更好,而不是凭空造一套方案。
具体做法是:按瓶颈资源优先排,先识别整个车间负荷最高、交期压力最大的设备或工段;其他设备围绕瓶颈工段的需求时间配套排产。订单优先级我建议先按“交期最早、齐套优先、老客户优先”三层顺序排。先用这套简单规则,把一周的生产计划生成甘特图,拉上计划员和班组长开评审会,把明显冲突的地方标识出来,例如设备过载、同一订单拆得太散、前后工序时间不匹配。
很多团队会发现自己不需要一开始就上高级算法,只要把原来靠Excel人工倒排的模式改成用系统自动推演,再让计划员微调,效率已经提升了一大截。这个阶段的主要目标是让数据跑通、页面好用、口径一致。如果基线阶段都推不下去,后面加任何AI都是雪上加霜。
4.3 阶段三:把“AI优化”放到正确的位置上
一旦规则引擎和基线数据稳定了,就可以开始加入优化层。推荐的做法是,约束和规则层负责生成一批可行解,算法层在这些可行解中进行搜索和比较。比如订单在瓶颈设备上的先后顺序,就可以作为编码对象,用遗传算法做进化;每一代生成的顺序都要回到排产引擎里检查是不是满足硬约束,再计算目标值。
算法参数不必一开始就很激进。遗传算法的种群大小、迭代次数要参考排产规模设定。规模小的时候,比如几十个订单,直接做枚举或约束规划即可,几秒钟就能找到满意解;规模大,比如几百个订单、几十台设备,可以把搜索时间控制在5到10分钟内,再允许计划员基于结果做局部手工拖拽。把优化目标也做成可配置的界面,不要写死在代码里——因为不同阶段的业务策略不一样,月初大家更关注准时交期,月底往往更关注均衡产出。这些调整让计划员自己完成,他们才会觉得这个系统是“自己的工具”而不是“IT的试验品”。
对优化结果做评估时,建议同时输出三份材料:优化后的甘特图、与基线方案的指标对比、AI调整了哪些关键排程位置及原因说明。这三份材料能显著降低计划员的心理抵触,也方便领导判断算法究竟优化了什么。
4.4 阶段四:把人工微调和异常重排做成核心能力
排产系统最难的不是初始排产,而是边干边改。车间每天都可能发生这样的场景:某台机器突然停机了,某批关键物料晚到两小时,客户临时加急一个订单,某个正在加工的批次出现不良需要返工。这套系统必须支持“扰动后快速重排”。
我的经验是,人工微调要尽量做到“拖得动、锁得住、看得见”。计划员可以手工拖动某个任务到另一时段或另一设备,系统能够立刻提示是否产生冲突;对已经锁定不能动的任务,比如已经投产、物料已经在现场的任务,要设置锁定状态,避免算法重排时把它们移来移去;每次调整后,系统都要重新计算交期影响并高亮显示延迟风险。这样计划员是在和系统协作,而不是被系统牵着走。
异常插单要支持“仿真式插入”:计划员先模拟插入一个新订单,系统计算出会挤掉哪些任务、对交期影响多大,让计划员判断值不值得破例。这种功能多花一点开发时间都值得,因为大部分车间对插单的抱怨,根本原因是不知道插单后到底牺牲了什么。
5. 常见问题与排查技巧实录
5.1 为什么求解慢、无解,或者排出来的方案现场根本做不了
很多算法刚上线时会遇到三座大山。第一座是计算时间太长。几十个订单规模还好,几百个订单加上复杂工艺路线,如果还跑精确求解,运算几小时都得不到结果很正常。我一般先砍搜索空间:瓶颈设备集中排,非瓶颈设备用较粗的时间颗粒度;把订单分批按优先级权重处理,对低优先级订单不做全局精细搜索,只做插空安排。
第二座是无解,也就是约束设得过死。最常见的是把产能日历设成理论产能,结果订单一多,系统根本找不到满足所有交期的方案。处理方法是区分“硬性冲突”和“软性冲突”:交期确实做不到的计划,系统应该直说做不到,而不是无限压榨产能。当出现无解时,建议查看约束松绑顺序,比如先放宽交期、再放宽切换优化目标,逐级释放压力,让计划员能看到是哪个约束卡住了全局。
第三座是不符合现场“手感”。排产结果虽然逻辑没毛病,但各工序间隔太紧,没有给物流搬运留缓冲;或者把同一订单拆得太零碎,生产准备成本反而上升。这种问题通常是因为目标函数里缺少缓冲和整批约束。我会在规则里加一个“最小连续加工批次数”的参数,比如某道工序一次最少连续排多少件,才允许拆批,这样结果就接近车间操作习惯。
以下是根据我项目里常见问题整理的速查表:
| 异常现象 | 常见原因 | 排查方向 |
|---|---|---|
| 求解时间过长 | 搜索空间太大、约束太细 | 缩小瓶颈范围、提高时间颗粒度 |
| 无可行解 | 硬约束设置过强 | 逐级放松软约束,找出冲突根因 |
| 排程结果过于分散 | 缺少最小批量规则 | 增加连续加工或最小装箱约束 |
| 结果可用但现场拒绝用 | 缺少人工微调和锁定能力 | 补上拖拽、锁定、冲突提示功能 |
| 系统数据与实际不符 | 完工反馈不及时 | 接MES自动报工,建立每日数据稽核 |
5.2 计划员和老师傅不信任AI方案怎么办
技术问题往往好解决,人的信任问题才是最花精力的。老师傅在车间排了十几年,本来就有一套自己的“下意识算法”,系统突然跑出一个跟他习惯完全不同的方案,他第一反应必然是排斥。我会尽量减少“AI赢过人”这种对抗式宣传,而是把它变成“老师傅+系统”对“老师傅”的比较。
具体做法是,让老师傅先在系统里手工排一份方案,保存为“人工方案”,然后让优化算法在相同输入条件下生成“优化方案”,实际运行时两个方案并行照着执行一段时间。用数据说话,哪边的准时交付率更高、调整次数更少。这种对比一旦跑出来,往往最顽固的老师傅也会改变态度,因为数据不只是证明算法厉害,还在帮他把隐性经验结构化。
有一点一定要理解:计划员真正担心的是系统替代他,而不是系统不够聪明。所以要让计划员掌握算法参数和约束配置的权限,让他们决定什么时候跑优化、优化时停用哪些约束、是否锁定某些工单。系统越像计划员手里的一件更好用的工具,推广阻力就越小。
5.3 紧急插单、物料不齐、设备故障这类异常怎么应对
我先说一句会被很多人反对但确实有效的话:好的排产不是预先把所有异常都消灭,而是在异常发生时,能最快地评估影响并给出应对选项。紧急订单在系统里如何干预,不是靠计划员凭经验随意插入,而是通过“插入模拟”功能,让系统计算插单后哪些在制订单会延迟,延迟多少,整个产线负荷率会如何变化。
物料不齐导致的“假排产”也很常见。最好的方法是把齐套检查前置,发布生产计划前,系统要能按BOM展开检查物料可用量;不齐套订单只能处于冻结状态,不能参与排产。这样系统不会给物料缺失的订单预留设备能力,也避免了因临场等料造成的频繁重排。
设备故障时可操作的方式更直接。在一个多工序案例里,我们把每道工序提前记录了可替代设备列表,一旦设备报警停线,系统会迅速排查受影响订单,并给出两种选择:把订单移到替代设备,还是推后并在后续时段加班补产。每种选择的交期影响一目了然,班组长拿到选项后马上判断,处理异常的速度就能明显加快。
5.4 上线初期最容易忽略的几个系统性风险
排产项目上线后,往往会遇到一些被低估的系统性风险。第一是计划与执行断层,系统的生产计划做得很好,但车间没有按系统指令执行,完工数量又不报,系统只能越排越偏。第二是考核指标不配套,执行层考核的是“设备不能停”,计划层考核的是“订单必须准时”,这时车间自然倾向把所有设备开满,不断产不换线,结果就是在制品堆成山、急单插不进去。第三是上下游计划没有联动,装配车间排好了,机加工车间却不按装配的需用时间组织生产,又形成新的等待。
应对这些风险,靠的就不是算法工程师了,而是一个由生产、计划、IT共同组成的执行推进小组。排产项目要真正见效,通常是运行三个月后才显现:第一个月是数据磨合,第二个月是规则活化和人员习惯培养,第三个月才开始在交付指标上看到稳定改善。项目上线只是开始,后续持续迭代才是常态。
6. 一点真实经验总结
6.1 排产首先是流程工程,其次才是算法工程
回头看这些年的项目,最深的体会是:一个成功的排产系统,70%的功夫在数据梳理、流程再造、规则共识这些“不性感”的事情上,20%在系统集成与界面设计,真正花在算法上的时间连10%都不到。很多人觉得AI重要,是因为大家关注的是信息差带来的新鲜感,但落地时要解决的是一个又一个的流程断点。如果你正在负责类似的排产项目,我的建议是,先把目标定小一点、范围收窄一点,不要追求一步到位的全智能。
6.2 把AI当搜索器,把排产当主引擎
给AI一个合适的角色,它确实能发挥价值。我喜欢用一个比喻:排产模型是一辆车的底盘和悬挂,AI是那个优秀的领航员。底盘不行,换再好的领航员也白搭;底盘调校好了,领航员才能带你在复杂路况里持续找到更优路径。在排产这个领域,永远不要指望AI能凌驾于业务规则之上,能兜住复杂约束的排产引擎,才是那辆靠谱的车。
从实操角度说,如果你现在面临要不要上AI排产的决策,我会建议你从今天开始做三件事:把本月所有订单按瓶颈工序排一次,看看有多少单其实根本排不进去;拉上计划员把现场约束逐条清单化;再找一个真实的数据集,用简单启发式规则做一次模拟。这三件事做完,你可能不再纠结“AI强不强”,而是会很清楚地看到,排产问题的核心从来都在车间现场里,不在算力上。
