乐于分享
好东西不私藏

AI到底能不能解决生产计划每天都在变的排程问题

AI到底能不能解决生产计划每天都在变的排程问题

离散制造的排程困局,从来不是算不出计划,而是计划撑不住现实的变化

如果说 3C 离散制造里有什么问题,是每个工厂都在抱怨、每个部门都受影响、却始终难解决的,那排程一定算一个。

销售说客户交期在变,计划说订单优先级在变,生产说设备状态在变,采购说物料到货在变,工艺说换线条件在变,质量说异常返工又插进来了。到最后大家才发现,真正折磨工厂的从来不是 “排不上计划”,而是计划为什么永远赶不上变化

这几年很多企业都上了 APS、智能排产,甚至开始谈 AI 排程。但真正扎进现场就会发现,排程难的从来不是算法不会排,而是工厂的实际约束和变化频率,远比系统里的假设复杂得多。

我们一开始也觉得,排程优化的关键是找更聪明的算法,只要算得过来,就排得清楚。可几轮项目推下来才发现,3C 行业做 AI 排程,真正难的不是 “算不出一个计划”,而是 **“算出来之后,能撑多久不被现实打碎”**。

所以如果你问我,AI 排程到底有没有解?我的答案是:有,但前提不是先追求 “最优排程”,而是先接受 “现实一定会变”,把系统做成能持续重算、持续响应的决策工具。


一、为什么有排程系统,现场还是天天改计划?

很多工厂并不是没有系统,ERP 有计划、MES 有派工、APS 也可能已经上了,可计划还是频繁失效。核心原因只有一个:系统排程基于 “相对静态的世界”,而制造现场是 “持续波动的世界”

订单优先级突变、急单插单频繁、物料到货不及预期、关键设备突发停机、换线成本非静态、返工异常挤占资源…… 这些现场的高频变化,是静态排程系统根本兜不住的。

最后项目就陷入了尴尬的循环:系统能排,计划也能下,但现场还是每天人工修修补补。不是 AI 排程没用,而是我们从一开始就把问题定义错了 —— 排程的核心问题从来不是 “能不能排出来”,而是在全链路持续变动的情况下,系统能不能持续给出当前最合理、可执行的安排


二、排程难的从来不是工单排序,而是约束太多、变化太快、目标还不止一个

没在现场待过的人,总会觉得排程就是 “按交期、工艺、产能把订单排进去”,但 3C 制造的真实排程,从来没有这么简单。它天然同时受多重约束,且很多目标本身就是互相冲突的。

从现场来看,核心约束分为 6 类:设备工位的可用限制、物料齐套与来料的不确定性、换线的时间与成本损耗、人员班次的能力差异、返工异常的资源挤占,以及最核心的 —— 我们需要同时平衡准交率、换线次数、在制品、设备利用率、加班成本等多个冲突的经营目标。

所以 3C 制造排程最难的地方,从来不是 “把订单排进去”,而是在冲突目标和动态约束里,找到一个现实中能跑通的平衡解


三、比起 “最优排程”,我们更需要 “动态决策支持”

“最优排程” 这个说法,本身就给了大家一个错误的预期:好像系统足够聪明,就能给出一个完美答案。

可真实现场不是数学竞赛,今天算出来的最优计划,明天物料延误、设备异常、客户插单一来,立刻就会失效。所以我们后来彻底放弃了 “追求永远正确的计划”,转而打造一个可以快速重算、快速比较、快速协同的计划系统。

视角一变,之前很多扯不清的问题,瞬间就变得务实了。而落地的核心,我们拆成了三个关键步骤:

第一步:先抓关键约束,而非追求全厂全量约束

很多项目一上来就想做全厂全工序全约束,结果要么求解复杂度暴涨,要么现场根本维护不了数据。我们的做法是先做约束分级,只把核心约束先放进系统:

  • 一级约束(不满足就不能排):工艺路线、可用机台、关键物料齐套、必要治具人员到位
  • 二级约束(影响效率成本):换线时间、批量合并、班次能力、设备维护窗口
  • 三级约束(用于优化):峰谷电价、负荷均衡、特殊订单偏好
  • job = {

    “order_id”: “MO1001”,

        “due_date”: “2025-02-01”,

        “machine_options”: [“Line1”, “Line2”],

        “material_ready”: True,

        “tooling_ready”: True,

        “setup_time”: 30,

        “priority”: “high”

    }

  • print(job)

  • 先把约束说清楚,排程系统才有可能真正可用,而不是飘在天上。

第二步:先做重排触发机制,而非追求单次完美排程

现场最痛苦的从来不是第一次排,而是后面不断地改。如果系统只能每天早上出一版计划,很快就会失去价值。我们先明确了重排的触发场景:关键设备故障超预期、关键物料到货延迟、高优先级急单插入、良率异常导致返工激增、计划完成率偏差超 15%。

def should_reschedule(machine_down, material_delay, urgent_order, progress_gap):

    if machine_down:

        return True

    if material_delay:

        return True

    if urgent_order:

        return True

    if progress_gap > 0.15:

        return True

    return False

print(should_reschedule(

    machine_down=False,

    material_delay=True,

    urgent_order=False,

    progress_gap=0.08

))

排程系统必须先学会响应变化,而不是只会生成静态计划。

第三步:先做多方案代价对比,而非只给一个黑盒答案

现场反复改计划,核心原因是系统只给了一个答案,却没说清背后的代价。插入一个急单,会牺牲哪些订单准交?增加多少换线成本?会不会占用瓶颈产能?这些不透明,现场自然不会信系统的方案。

我们的做法是,给出多个可选方案,并把每个方案的代价讲清楚:

def schedule_score(on_time_rate, setup_cost, overtime_cost, wip_level):

    return on_time_rate * 0.5 – setup_cost * 0.2 – overtime_cost * 0.2 – wip_level * 0.1

plan_a = schedule_score(0.95, 10, 8, 20)

plan_b = schedule_score(0.90, 5, 3, 15)

print(“方案A评分:”, plan_a)

print(“方案B评分:”, plan_b)

制造排程本就是在交期、效率、成本之间做选择,把过程透明化,现场才会真正接受。


四、一线实战经验:比起 “自动排”,现场更需要 “快速重排”

我们在多品种、小批量、换线频繁的产线做优化时,一开始大家要的是 “自动排计划”,可推下去才发现,真正的痛点是计划频繁变动时,怎么快速调整、减少内耗。

执着于 “把第一次排得更完美”,只会让项目越走越窄;反而把关键约束维护清楚、把重排和方案比较能力做出来,项目才真正产生了价值。AI 排程真正值钱的,从来不是让工厂从此不改计划,而是让工厂在必须改计划的时候,改得更快、更清楚、更少内耗。

如果今天你想启动 AI 排程,我建议先做 4 件事:

  1. 1、先选一个变化最痛、边界清晰的场景,比如 SMT 段、瓶颈测试工序;
  2. 2、先梳理核心约束,不要试图一次收全所有细节;
  3. 3、先做 “重排触发 + 方案比较”,不要一上来就追求黑盒最优;
  4. 4、一定要让计划、生产、物料团队一起参与,而非 IT 或算法团队闭门造车。

最后

我篇文章压缩成一句话:电子制造的排程问题,本质上不是如何生成一张计划表,而是如何在计划不断被现实打断的情况下,持续做出更好的决策

我从不相信 “上一个系统,从此排程自动解决” 的叙事,但我始终相信 AI 排程的价值。它真正的价值,从来不是生成一张永不改变的完美计划,而是把原本混乱、靠经验、靠反复协调的排程决策,变成可重算、可比较、可解释、可协同的能力。这,才是它真正值钱的地方。

你们在做智能排产时,有碰到什么样的问题呢?欢迎交流。