P paper2skillsPlaybook
AI 路线图 →

产能约束生产排程KPI — 产能利用率/排程达成率/换线时间/瓶颈识别

Skill-Capacity-Constraint-Production-Schedule-KPI · 04-供应链

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

1. 解决的问题

供应链计划者面临"不知工厂产能约束就做计划"——产能利用率75-85%目标+换线优化提升8%有效产能,旺季提前识别断货风险保护50万GMV

2. 核心算法逻辑

母婴品牌通常通过OEM工厂生产,工厂产能是供应链计划的硬约束。陈凤霞书中强调:不了解供应商产能约束,计划做得再好也无法执行。

3. 业务应用场景

场景A:吸奶器OEM工厂产能规划(旺季备货) - 业务问题:Q3计划备货旺季所需24,000台吸奶器,但工厂月产能只有8,000台,只有3个月时间,恰好够用 - 数据要求:工厂月产能(按型号)+ 当前订单占用情况 + 换线时间 + 计划交期 - 预期产出: - 产能利用率预测:旗舰款8月100%(满产)、9月95%(仍然过载) - 风险:9月如有质量异常返工,将导致延误 - 行动:备用工厂产能锁定2000台/月,旗舰款提前到7月开始生产 - 业务价值:产能风险提前识别,避免大促前断货,防止约50万GMV损失

**场景B:多SKU产线排程优化(减少换线)** - **业务问题**:工厂同时生产5款吸奶器型号,换线频繁(每天平均换线6次×2小时=12小时),实际有效生产时间损失15% - **数据要求**:各型号月需求量 + 换线时间矩阵(从型号A换到型号B的时间) - **预期产出**:优化生产顺序(相似型号相邻排产),换线次数从6次/天降至3次/天,有效产能提升8% - **业务价值**:无需额外投资,通过排程优化增加有效产能800台/月

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI预估:提前识别旺季产能瓶颈 → 避免大促前断货(按旗舰款GMV损失约30万);换线优化提升有效产能8% → 相当于减少8%采购成本(无需外协补产)
  • 实施难度:⭐⭐⭐☆☆(需要与供应商建立深度信息共享,主要难点是工厂数据获取)
  • 优先级评分:⭐⭐⭐⭐☆(陈凤霞:"不了解工厂产能就做计划,等于在沙上建楼")
  • 评估依据:母婴品牌OEM模式下,工厂产能是最终供应的硬约束,所有S&OP计划都需要以此为边界

7. 代码模板

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

"""
产能约束生产排程 KPI 体系
功能:产能利用率 / 排程达成率 / 换线分析 / 瓶颈识别 / 旺季产能规划
输入:生产订单记录 + 产能配置 + 换线时间矩阵
输出:产能KPI报告 + 瓶颈识别 + 排程优化建议
"""
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')


def generate_production_data(n_months=6, seed=42):
    """生成月度生产计划与实际数据"""
    np.random.seed(seed)
    
    products = {
        'P01-旗舰吸奶器': {'max_capacity': 3000, 'takt_min': 12, 'changeover_h': 2.0},
        'P02-标准吸奶器': {'max_capacity': 4000, 'takt_min': 8, 'changeover_h': 1.5},
        'P03-便携吸奶器': {'max_capacity': 2500, 'takt_min': 10, 'changeover_h': 2.5},
        'P04-配件套装': {'max_capacity': 8000, 'takt_min': 4, 'changeover_h': 0.5},
    }
    
    records = []
    for m in range(1, n_months + 1):
        is_peak = m >= 4  # 模拟旺季
        for prod, info in products.items():
            max_cap = info['max_capacity']
            # 需求量(旺季更高)
            demand = max_cap * np.random.uniform(0.65, 0.85) * (1.3 if is_peak else 1.0)
            demand = min(demand, max_cap * 1.1)  # 最多超产10%
            
            # 实际生产(受各种因素影响)
            actual = demand * np.random.uniform(0.88, 1.02)
            actual = min(actual, max_cap)
            
            # 换线次数
            changeovers = np.random.randint(3, 8)
            changeover_hours = changeovers * info['changeover_h']
            working_hours = 22 * 8  # 月工作时间(22天×8小时)
            effective_hours = working_hours - changeover_hours
            utilization = actual / max_cap * 100
            schedule_achieved = np.random.random() < 0.88  # 88%达成率
            
            records.append({
                'month': m,
                'product': prod,
                'planned_qty': round(demand),
                'actual_qty': round(actual),
                'max_capacity': max_cap,
                'capacity_utilization': round(utilization, 1),
                'schedule_achieved': schedule_achieved,
                'changeover_count': changeovers,
                'changeover_hours': changeover_hours,
                'effective_hours': effective_hours,
                'changeover_loss_pct': round(changeover_hours / working_hours * 100, 1),
                'is_peak': is_peak,
            })
    
    return pd.DataFrame(records)

8. 论文来源

  • 2306.11284