S&OP Engineering III:Excel的终结(供应计划线性规划)

发布: (2026年3月13日 GMT+8 15:16)
7 分钟阅读
原文: Dev.to

Source: Dev.to

“我们总是想要 4 周的库存覆盖。”
这句话在全球每一次 S&OP 会议上像咒语一样反复出现,具有财务毒性。

为什么? 因为它是 对动态系统施加的固定规则
如果你一月份的需求是 200 件,七月份的需求是 20 件,你就迫使自己分别保持 800 件和 80 件的“以防万一”。一月份会出现短缺,七月份则无缘无故占用资本。

替代方案并不是更高深的直觉,而是 数学

执行摘要

在本章中,我们将来自Chapter 2的概率预测与线性规划引擎(PuLP)相结合,该引擎计算出在满足安全库存约束的前提下,最小化总成本(生产 + 储存)的精确生产计划。我们从被动预测转向主动处方。

从预测到决策:架构

第 1 章 我们清洗了信号。
第 2 章 我们预测了需求。
现在我们要迈出 Excel 做不到的步伐:优化

我们在 GitHub 上的流水线连接到 Supabase,读取 demand_forecasts 表(我们预测的未来),并生成一个新的 supply_plans 表。系统已经从

  • 描述性 – 发生了什么?
  • 预测性 – 将会发生什么?
  • 规范性 – 我们应该怎么做?

演进为运筹学——同样用于优化航空航线、军用物流和全球供应链的学科——我们只用了约 50 行 Python 代码来实现。

Source:

商业数学

我们并没有隐藏方程式;它们是决策的核心。下面是我们 SupplyOptimizer 类的核心片段:

# Objective Function: Minimise total cost
problem += pulp.lpSum(
    production_cost * production[t] + holding_cost * inventory[t]
    for t in range(T)
), "Total_Cost"

# Constraint: Inventory Balance (Conservation of Mass)
for t in range(T):
    prev_inv = initial_inventory if t == 0 else inventory[t - 1]
    problem += (
        inventory[t] == prev_inv + production[t] - demand[t],
        f"Balance_t{t}"
    )

# Constraint: Safety Stock (Risk Policy)
for t in range(T):
    problem += (
        inventory[t] >= safety_stock,
        f"SafetyStock_t{t}"
    )

值得解释的三个工程决策

  1. 目标函数 – 它并不追求“大量库存”或“高产量”。它追求 最低的财务成本,即制造成本与储存成本之间的平衡。求解器会自动找到两者综合成本最小的精确点。

  2. 质量平衡 – 一个物理约束:你不能卖出你没有的东西。今天的库存等于昨天的库存加上今天的生产减去今天的需求。没有魔法;方程式禁止作弊。

  3. 安全库存 – 风险策略:库存绝不能低于安全最低值(在我们的案例中为平均需求的 1.5 个月)。该系统会计算这个值,而不是凭空在电子表格中填入一个数字。

主计划:从算法到业务决策

使用 PuLP 优化的主生产计划:按月的生产、库存和安全库存

这正是运营总监需要看到的。
算法并非均匀产出。如果它在某一期检测到巨大的需求激增,它会在前几个月“预先构建”库存,以平滑生产负荷。若持有成本高,它会保持仓库为空,实行准时生产(JIT)。Excel 单独无法实现这一点;数学可以。

使用测试数据得到的求解器结果

成本类型金额
生产成本€1,680
库存成本€540
优化后总成本€2,220

这个数字不是估算值。它是在给定约束条件下的 可证明的全局最小值。如果有人在相同参数下提出更便宜的方案,那就意味着违反了约束。

开放厨房:玩转求解器

我不信任那些无法付诸实践的理论。这就是为什么我准备了一个 Google Colab,您可以在其中对我们真实数据的快照运行优化器。

实验:holding_cost 改为一个极高的值(例如 €50/单位)。观察算法自动决定采用准时生产(Just‑in‑Time),并使仓库几乎保持空置。随后降低生产成本,观察它倾向于批量生产和储存。数学会自适应;Excel 的固定规则则不会。

📎 打开交互式 Google Colab

修改成本、产能约束、安全库存。做工程,而不是盲目信任。

完整链路:从数据到决策

在本章中,我们构建了一个端到端的 S&OP 系统,能够从脏的 ERP CSV 文件生成最优的生产计划:

Architecture diagram

下一步:向企业级扩展

我们现在在数据库中拥有完美的计划——但仅针对单一产品。当添加三个共享同一工厂的 SKU 时会怎样?

继续在 第 4 章 中的旅程。

工程 – 第 4 部分 – 企业

我们打破 MVP:注入具有截然不同特征的多产品数据,使用 MLOps 并行化预测,并构建统一的线性规划模型,使产品在共享生产能力上 在数学上竞争

运营总监在 计划优化 之间的区别在于他们直觉与现实之间的目标函数。

0 浏览
Back to Blog

相关文章

阅读更多 »