> 백엔드 개발 > 파이썬 튜토리얼 > 소매점의 수요 예측 및 재고 관리 - SARIMA 모델

소매점의 수요 예측 및 재고 관리 - SARIMA 모델

Linda Hamilton
풀어 주다: 2024-11-27 04:21:20
원래의
535명이 탐색했습니다.

소매점에서는 매일 대규모의 재고를 처리하기 때문에 재고 모니터링 및 관리가 더욱 번거롭습니다. 전통적인 소매점 재고 관리는 모니터링, 추적 및 관리가 비효율적이어서 번거로운 방법입니다. 따라서 소매점 재고 분석을 원활하게 수행하여 더 적은 수작업으로 보유 재고를 줄이고 판매 재고를 늘리는 강력한 디지털 재고 관리 시스템이 필요합니다.

이 기사에서는 시계열 기계 학습 모델인 SARIMA를 사용하여 소매점 재고 분석을 효율적으로 수행하고 시간이 지남에 따라 고객의 요구를 충족하는 데 필요한 재고 매개변수를 계산하여 소매점에 최대 이익을 제공하는 방법을 보여줍니다.

Demand Forecasting and Inventory Management in Retail Store - SARIMA Model


데이터세트

먼저 데이터 세트를 다운로드하세요. 이 데이터 세트에는 날짜, 제품 수요 및 현재 재고 수준에 대한 정보가 포함된 특정 제품의 기록 기록이 있습니다.


암호

수요예측과 재고관리를 수행하는 Python 코드는 아래와 같습니다.

import pandas as pd
import numpy as np
import plotly.express as px
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX

data = pd.read_csv("demand_inventory.csv")
print(data.head())

data = data.drop(columns=['Unnamed: 0'])

fig_demand = px.line(data, x='Date', y='Demand', title='Demand Over Time')
fig_demand.show()

fig_inventory = px.line(data, x='Date', y='Inventory', title='Inventory Over Time')
fig_inventory.show()

data['Date'] = pd.to_datetime(data['Date'], format='%Y/%m/%d')
time_series = data.set_index('Date')['Demand']

differenced_series = time_series.diff().dropna()

# Plot ACF and PACF of differenced time series
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
plot_acf(differenced_series, ax=axes[0])
plot_pacf(differenced_series, ax=axes[1])
plt.show()

order = (1, 1, 1)
seasonal_order = (1, 1, 1, 2)
model = SARIMAX(time_series, order=order, seasonal_order=seasonal_order)
model_fit = model.fit(disp=False)
future_steps = 10
predictions = model_fit.predict(len(time_series), len(time_series) + future_steps - 1)
predictions = predictions.astype(int)
print(predictions)

# Create date indices for the future predictions
future_dates = pd.date_range(start=time_series.index[-1] + pd.DateOffset(days=1), periods=future_steps, freq='D')

# Create a pandas Series with the predicted values and date indices
forecasted_demand = pd.Series(predictions, index=future_dates)

# Initial inventory level
initial_inventory = 5500

# Lead time (number of days it takes to replenish inventory)
lead_time = 1

# Service level (probability of not stocking out)
service_level = 0.95

# Calculate the optimal order quantity using the Newsvendor formula
z = np.abs(np.percentile(forecasted_demand, 100 * (1 - service_level)))
order_quantity = np.ceil(forecasted_demand.mean() + z).astype(int)

# Calculate the reorder point
reorder_point = forecasted_demand.mean() * lead_time + z

# Calculate the optimal safety stock
safety_stock = reorder_point - forecasted_demand.mean() * lead_time

# Calculate the total cost (holding cost + stockout cost)
holding_cost = 0.1  # it's different for every business, 0.1 is an example
stockout_cost = 10  # # it's different for every business, 10 is an example
total_holding_cost = holding_cost * (initial_inventory + 0.5 * order_quantity)
total_stockout_cost = stockout_cost * np.maximum(0, forecasted_demand.mean() * lead_time - initial_inventory)

# Calculate the total cost
total_cost = total_holding_cost + total_stockout_cost

print("Optimal Order Quantity:", order_quantity)
print("Reorder Point:", reorder_point)
print("Safety Stock:", safety_stock)
print("Total Cost:", total_cost)
로그인 후 복사

코드 이해

계절적 패턴을 관찰할 수 있는 '시간에 따른 수요'와 '시간에 따른 재고'를 시각화하는 것부터 시작합니다. 그래서 수요를 예측하기 위해 SARIMA(계절 자기회귀 이동 평균)를 사용합니다.

SARIMA를 사용하려면 p(자동 회귀 순서), d(차이 정도), q(이동 평균 순서), P(계절 AR 순서), D(계절 차분) 및 Q(계절 MA 순서)가 필요합니다. . ACF — 자기상관 함수와 PACF — 편자기상관 함수를 플롯하여 매개변수 값을 찾습니다.

이제 예측을 위해 몇 가지 값을 초기화합니다. 미래 단계(예: 예측 일수)를 10으로, 리드 타임(예: 재고 보충 일수)을 1로 설정하고 기타 소매점 종속 값을 설정합니다.

마지막으로 인벤토리 최적 결과를 계산하기 위해 NewsVendor 공식을 사용합니다. NewsVendor 공식은 최적의 재고 수준을 결정하는 데 사용되는 수학적 모델인 NewsVendor 모델에서 파생됩니다. 이 기사에서 NewsVendor 공식에 대해 자세히 알아볼 수 있습니다.

최종 평가 결과는

  1. 최적 주문 수량 — 재고 수준이 특정 지점에 도달했을 때 공급업체로부터 주문해야 하는 제품의 수량을 말합니다.
  2. 재주문 지점 — 재고가 소진되기 전에 보충하기 위해 새로운 주문을 해야 하는 재고 수준입니다.
  3. 안전 재고 — 수요와 공급의 불확실성을 고려하여 추가 재고를 보유하고 있습니다. 이는 수요 또는 리드 타임의 예상치 못한 변동에 대한 완충 장치 역할을 합니다.
  4. 총 비용 — 재고 관리와 관련된 총 비용을 나타냅니다.

제안된 SARIMA 모델은 Newsvendor 공식을 사용하여 소매점 재고 재고 관리를 효율적인 방식으로 디지털화하여 고객을 만족시키는 데 필요한 최적의 재고를 계산하는 동시에 소매업체에 최대 이익을 제공합니다.


이 기사가 귀하가 찾고 있던 내용에 도움이 되기를 바랍니다. 기사에 대한 개선이나 제안을 환영합니다. 건배 :)

여기에서 내 소셜을 확인하고 자유롭게 연결하세요 ^_^

위 내용은 소매점의 수요 예측 및 재고 관리 - SARIMA 모델의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿