paper2skills Playbook

Safety Stock and Replenishment Strategy

Skill-Safety-Stock-Replenishment · 04-供应链

experimentforecasting供应链与补货WF-A 智能补货
年化 ROI20-40万
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
库存周转天数太长资金压死了断货了只能空运救急成本爆了多市场库存分配不均

1. 解决的问题

需求预测告诉你"预计卖多少",安全库存告诉你"为了防止意外,应该多备多少"。

2. 核心算法逻辑

核心问题:需求预测告诉你"预计卖多少",安全库存告诉你"为了防止意外,应该多备多少"。补货策略告诉你"什么时候下单、下多少"。三者构成供应链决策的完整链条。

3. 业务应用场景

业务问题:Momcozy 销售某品牌3段奶粉,供应商在德国,海运 lead time 6周。需要确定: - 安全库存多少罐? - 再订货点多少罐? - 每次补货多少罐?

参数: - 平均周需求:200罐 - 周需求标准差:40罐 - Lead time:6周 - 目标服务水平:95%(Z=1.65) - 年需求量:10,400罐 - 每次订货成本:$500(运费+报关) - 单位年持有成本:$2.4/罐(仓储+资金占用)

计算: 1. 安全库存:$SS = 1.65 \cdot 40 \cdot \sqrt{6} = 162$ 罐 2. 再订货点:$ROP = 200 \cdot 6 + 162 = 1,362$ 罐 3. 经济订货量:$EOQ = \sqrt{2 \cdot 10400 \cdot 500 / 2.4} = 2,083$ 罐

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ROI:缺货率降低+库存周转提升,年节省成本20-40万
  • 难度:⭐⭐☆☆☆(2/5)— 公式计算,实现简单
  • 优先级:⭐⭐⭐⭐⭐(5/5)— 供应链最核心的日常决策工具

7. 代码模板

代码块数量:1 · 路径:未检测到

"""
Safety Stock and Replenishment Strategy — 安全库存与补货策略
"""

import numpy as np
import pandas as pd
from scipy import stats


def calculate_safety_stock(demand_std, lead_time, service_level=0.95):
    """
    计算安全库存

    Args:
        demand_std: 需求标准差(单位时间)
        lead_time: 提前期(单位时间)
        service_level: 目标服务水平
    """
    z = stats.norm.ppf(service_level)
    sigma_ltd = demand_std * np.sqrt(lead_time)
    ss = z * sigma_ltd
    return ss


def calculate_rop(avg_demand, lead_time, safety_stock):
    """计算再订货点"""
    return avg_demand * lead_time + safety_stock


def calculate_eoq(annual_demand, order_cost, holding_cost_per_unit):
    """计算经济订货量"""
    return int(np.sqrt(2 * annual_demand * order_cost / holding_cost_per_unit))


def calculate_inventory_metrics(avg_demand, demand_std, lead_time,
                                 order_cost, holding_cost, unit_cost,
                                 service_level=0.95):
    """
    计算完整库存指标

    Returns:
        dict with safety_stock, rop, eoq, avg_inventory, turns, stockout_prob
    """
    annual_demand = avg_demand * 52
    ss = calculate_safety_stock(demand_std, lead_time, service_level)
    rop = calculate_rop(avg_demand, lead_time, ss)
    eoq = calculate_eoq(annual_demand, order_cost, holding_cost)

    # 平均库存 = 周期库存/2 + 安全库存
    avg_inventory = eoq / 2 + ss

    # 库存周转率
    inventory_value = avg_inventory * unit_cost
    turns = (annual_demand * unit_cost) / inventory_value if inventory_value > 0 else 0

    # 年总成本
    annual_ordering_cost = (annual_demand / eoq) * order_cost
    annual_holding_cost = avg_inventory * holding_cost
    total_cost = annual_ordering_cost + annual_holding_cost

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。