Files
2nd/10_Wiki/Topic_Programming/AI_and_ML/SCM (Supply Chain Management).md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

6.3 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-scm-supply-chain-management SCM (Supply Chain Management) 10_Wiki/Topics verified self
Supply Chain Management
Supply Chain
none A 0.9 applied
scm
supply-chain
logistics
optimization
operations-research
2026-05-10 pending
language framework
Python OR-Tools / Pyomo

SCM (Supply Chain Management)

매 한 줄

"매 plan → source → make → deliver → return 의 end-to-end flow 최적화". 매 SCOR 모델 (1996) 의 frame 위에서 매 ERP/APS (SAP IBP, Oracle, o9, Kinaxis) 가 운영. 매 2020 COVID, 2022 우크라이나, 2024 홍해 등 매 black-swan 연쇄 이후 매 resilience + AI-driven autonomous SCM 이 핵심 의제 (Gartner: 50%+ 기업 by 2026).

매 핵심

매 SCOR 5단계

  • Plan: demand forecast, S&OP, inventory policy.
  • Source: supplier selection, procurement, contracts.
  • Make: production scheduling, MRP, capacity.
  • Deliver: warehousing, transportation, last-mile.
  • Return: reverse logistics, refurb, recycling.

매 KPI

  • OTIF (On-Time-In-Full): delivery reliability.
  • Cash-to-Cash cycle: working capital efficiency.
  • Forecast accuracy (MAPE/WAPE).
  • Perfect Order Rate: error-free fulfillment.
  • Inventory turnover = COGS / avg inventory.

매 응용

  1. Demand forecasting (TFT, N-BEATS, Chronos foundation model).
  2. VRP / route optimization (last-mile, mid-mile).
  3. Supplier risk monitoring (Resilinc, Everstream).
  4. Inventory optimization (multi-echelon, newsvendor).
  5. Digital twin of supply network.

💻 패턴

Demand forecast (Chronos foundation model, 2026)

from chronos import ChronosPipeline
import torch, pandas as pd

pipeline = ChronosPipeline.from_pretrained(
    "amazon/chronos-bolt-base", torch_dtype=torch.bfloat16
)
history = pd.read_csv("sales.csv")["units"].values
forecast = pipeline.predict(
    context=torch.tensor(history),
    prediction_length=28,  # 28-day horizon
    num_samples=100,
)  # quantile-aware probabilistic

Multi-echelon inventory (newsvendor + safety stock)

from scipy.stats import norm
import numpy as np

def reorder_point(mu_d, sigma_d, lead_time, service_level=0.95):
    z = norm.ppf(service_level)
    mean_lt_demand = mu_d * lead_time
    sigma_lt = sigma_d * np.sqrt(lead_time)
    safety_stock = z * sigma_lt
    return mean_lt_demand + safety_stock, safety_stock

rop, ss = reorder_point(mu_d=120, sigma_d=30, lead_time=7)

VRP (OR-Tools)

from ortools.constraint_solver import pywrapcp, routing_enums_pb2

def solve_vrp(distance_matrix, demands, vehicle_capacities, depot=0):
    mgr = pywrapcp.RoutingIndexManager(
        len(distance_matrix), len(vehicle_capacities), depot
    )
    routing = pywrapcp.RoutingModel(mgr)

    def dist_cb(i, j):
        return distance_matrix[mgr.IndexToNode(i)][mgr.IndexToNode(j)]
    routing.SetArcCostEvaluatorOfAllVehicles(
        routing.RegisterTransitCallback(dist_cb)
    )

    def demand_cb(i):
        return demands[mgr.IndexToNode(i)]
    routing.AddDimensionWithVehicleCapacity(
        routing.RegisterUnaryTransitCallback(demand_cb),
        0, vehicle_capacities, True, "Capacity"
    )
    params = pywrapcp.DefaultRoutingSearchParameters()
    params.first_solution_strategy = (
        routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC
    )
    return routing.SolveWithParameters(params)

Supplier risk score (LLM + structured)

import anthropic, json

client = anthropic.Anthropic()
news = fetch_news(supplier="Foxconn Zhengzhou", days=7)

resp = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=512,
    messages=[{"role": "user", "content": f"""
Score supplier risk 0-100 based on news. Output JSON.
News: {news}
Schema: {{"score": int, "drivers": [str], "recommended_action": str}}
"""}],
)
risk = json.loads(resp.content[0].text)

Bullwhip effect simulation

# Beer game style — order amplification upstream
def bullwhip(retail_demand, smoothing=0.3, levels=4):
    orders = [retail_demand]
    for _ in range(levels):
        prev = orders[-1]
        next_orders = [prev[0]]
        for d in prev[1:]:
            next_orders.append(
                smoothing * d + (1 - smoothing) * next_orders[-1] + 0.5 * (d - next_orders[-1])
            )
        orders.append(next_orders)
    return orders  # variance grows upstream

Digital twin (NetworkX flow)

import networkx as nx

G = nx.DiGraph()
G.add_edge("Supplier_TW", "Port_Kaohsiung", capacity=500, cost=10)
G.add_edge("Port_Kaohsiung", "Port_LA", capacity=400, cost=80, lead=14)
G.add_edge("Port_LA", "DC_Dallas", capacity=350, cost=20)
flow_cost, flow_dict = nx.network_simplex(G, demand={"DC_Dallas": 300, "Supplier_TW": -300})

매 결정 기준

상황 Approach
New SKU, no history Foundation model (Chronos, TimeGPT) zero-shot
Mature SKU, seasonal TFT / Prophet + holiday regressors
Sub-day routing OR-Tools VRP / Hexaly
Supplier disruption Multi-source + safety stock + risk score
Network redesign MILP (Pyomo + Gurobi)

기본값: Chronos-bolt forecasting + multi-echelon safety stock + OR-Tools VRP.

🔗 Graph

🤖 LLM 활용

언제: supplier risk synthesis from news, RFP analysis, procurement copilot, demand sensing from external signals (weather, social). 언제 X: numerical optimization (VRP, MILP) — use OR solvers, not LLM.

안티패턴

  • Spreadsheet hell: critical S&OP in Excel without version control.
  • Single forecast number: ignore quantiles → systematic stockouts or overstocks.
  • Bullwhip ignored: each tier optimizes locally, variance amplifies upstream.
  • Supplier concentration: 80% volume from one country/factory.

🧪 검증 / 중복

  • Verified (APICS SCOR, Gartner Magic Quadrant 2025, MIT CTL research).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — SCM SCOR, forecasting, VRP, risk patterns