어떤 재주문점이 비용과 품절의 균형을 맞출까요?
수요가 불확실한 12개월을 다루는 이 재고 모델에서 재주문점을 180개에서 250개로 올리면 연평균 비용이 345 늘고, 품절이 한 번 이상 생기는 해의 확률은 28.0%에서 5.1%로 줄어듭니다. 몬테카를로 시뮬레이션은 같은 수요에서 정책별로 이 둘을 모두 측정합니다. 가장 좋은 재주문점은 늘어나는 재고 유지 비용을 치를 만큼 품절을 충분히 막아 주는 지점입니다.
재주문점 180개에서 정책의 연평균 비용은 2,133입니다(엑셀 파일의 통화 단위이며, 통화는 따로 적혀 있지 않습니다). 120개로 낮춰도 연간 절약액은 28에 그치고 품절이 일어나기 쉬워집니다(70.0%). 400개 대신 한 번에 600개를 주문하면 더 높은 재주문점과 비슷한 비용이 들지만, 품절 확률은 여전히 21.6%입니다.
모델
엑셀 파일은 Plan 시트 하나로 된 평범한 월별 재고 계획이며, MIN, IF 같은 일반 수식만 쓰고 애드인 함수는 쓰지 않습니다. 정책과 비용은 맨 위에 있습니다.
재주문점 B1 | 180개 |
|---|---|
주문 수량 B2 | 400개 |
재고 유지 비용 B3 | 월말에 남은 단위당 0.5 |
판매 손실 비용 B4 | 충족하지 못한 수요 단위당 8 |
주문 비용 B5 | 주문당 150 |
초기 재고 B6 | 400개 |
월별 수요 B10:M10 | 음이항 분포, n = 8, p = 0.05: 평균 152개, 표준편차 55.1(엑셀 파일이 아니라 xellstorm에서 설정) |
그 아래에는 12개월 각각에 재고를 따라가는 열이 하나씩 있습니다(B열~M열). 수요, 기초 재고, 입고 수량과 가용 수량, 판매량과 손실량, 판매 후 남은 재고와 기말 재고, 낸 주문, 그달의 비용입니다. 매월 말에 남은 재고가 재주문점보다 적으면 주문 수량만큼 주문이 나가고 다음 달 초에 도착합니다. 재고로 채우지 못한 수요는 이월 주문이 아니라 판매 손실이 됩니다. 한 달의 비용은 남은 재고의 재고 유지 비용, 팔지 못한 단위마다의 판매 손실 비용, 주문한 달의 주문 비용입니다.
세 셀이 한 해를 요약합니다. Total cost(총비용, B21), fill rate(그해 수요 중 재고로 충족한 비율, B22), months with lost sales(판매 손실이 난 달 수, B23)입니다. 여기서 품절은 수요가 가용 재고보다 많아 일부 판매를 놓친 달이며, 품절이 있는 해는 그런 달이 한 번 이상 있는 해입니다.
내려받는 파일은 수요 행에 고정 자리표시값을 넣어 둔 계획입니다. 수요 분포, 출력 세 개, 품절 목표, 대안 정책 세 개는 xellstorm에서 설정해 예제와 함께 불러오며, 엑셀 파일은 직접 만들었을 법한 모습 그대로입니다.
수요: 매달 음이항 분포를 따르는 개수
월별 수요(Plan!B10:M10)는 각각 독립적으로 n = 8, p = 0.05인 음이항 분포에서 뽑습니다. scipy의 파라미터 방식(n번째 성공 전의 실패 횟수)입니다. 평균은 n(1 − p)/p = 월 152개이고 표준편차는 √(n(1 − p))/p = 55.1입니다. 재고로 갖춘 품목의 수요는 개수이며 푸아송 분포보다 변동이 큰 경우가 많은데, 여기서 평균이 같은 푸아송 분포의 표준편차는 12.3에 불과합니다. 음이항 분포는 그만큼 넓은 퍼짐도 다루고, 정규 분포와 달리 음수 수요가 나오지 않으며 높은 쪽 꼬리가 더 깁니다.
시뮬레이션한 60,000개월(12개월짜리 5,000년)의 평균은 152.0개이고 표준편차는 55.1입니다. 공식과 일치합니다. 월별 수요는 서로 독립이어서 추세도 계절성도 없습니다. 수요가 변해 가는 경우에는 xellstorm에 랜덤 워크나 평균 회귀 시계열 같은, 범위에 쓰는 시계열 입력도 있습니다.
같은 수요로 비교하는 네 가지 정책
예제는 기준 정책(재주문점 180, 주문 수량 400)을 셀 하나씩만 바꾼 시나리오 세 개와 비교합니다. 재주문점 120, 재주문점 250, 한 번에 600개 주문입니다. 모든 시나리오는 기준과 같은 수요 5,000년치로 실행합니다. 이를 공통 난수라고 하며, 정책 사이의 차이는 추출의 운이 아니라 정책에서 나옵니다.
| 정책 | 평균 비용 | P90 비용 | 충족률 | 품절이 있는 해 |
|---|---|---|---|---|
| 기준 정책 | 2,133 | 2,377 | 99.4% | 28.0% |
| 재주문점 120 | 2,105 | 2,688 | 97.4% | 70.0% |
| 재주문점 250 | 2,478 | 2,668 | 99.9% | 5.1% |
| 주문 수량 600 | 2,465 | 2,727 | 99.5% | 21.6% |
P90은 시뮬레이션한 해의 90%가 그 이하에 머무르는 연간 비용이고, 충족률은 해마다의 평균입니다. 충족률은 모두 97.4%에서 99.9%까지로 높아 보이지만, 품절이 있는 해의 확률은 5.1%에서 70.0%까지 벌어집니다. 충족률은 수량을 세고, 품절이 난 달은 보통 그해 수요의 작은 부분만 잃습니다. 품절 확률은 고객을 한 번이라도 돌려보낸 해를 셉니다. 둘 중 무엇이 중요한지는 사업에 따라 다르므로 둘 다 봅니다.
비용이 나가는 곳
한 해의 비용은 세 부분입니다. 매달 말에 남은 재고를 보유하는 비용, 주문하는 비용, 재고가 떨어졌을 때 놓치는 판매입니다.
재주문점을 높이면 재고를 더 많이 갖게 됩니다. 250에서는 재고 유지 비용이 연간 397 늘지만 판매 손실은 84밖에 줄지 않습니다. 따라서 단위당 판매 손실 비용 8만으로는 그 비용이 상쇄되지 않습니다. 재주문점을 높여야 한다는 근거는 품절이 그 밖에 입히는 비용에 있습니다.
더 큰 주문은 방식이 다릅니다. 주문당 600개이면 한 해에 필요한 주문은 평균 4.5회가 아니라 3.1회이고, 주문 비용은 203 절약되지만 재고 유지 비용은 562 늘어납니다. 주문이 줄면 재고가 재주문점 바로 위에 있는데 들어올 물량이 없는 달도 줄지만, 그런 달 하나하나의 취약함은 이전과 비슷합니다. 한 달을 혼자 버텨야 하는 재고의 양을 정하는 것은 주문 크기가 아니라 재주문점입니다.
추가 비용으로 얻는 것
모델은 이미 손실된 수요 단위마다 8의 비용을 부과합니다. 품절이 이보다 더 큰 비용을 낳는다면(긴급 배송, 위약금, 다른 곳으로 가 버린 고객 등), 정책별 추가 비용을 그 정책이 피하는 품절 월 수로 나누어 품절 월 하나를 피하는 데 드는 비용을 구합니다.
- 재주문점 250: 연간 비용이 345 더 들고, 품절 월을 연평균 0.27개월 피합니다(0.32에서 0.05까지). 품절 월 하나가 판매 손실 외에 1,291보다 많은 비용을 입힌다면 이득입니다.
- 재주문점 120: 연간 비용이 28(1.3%) 줄고 품절 월이 연평균 0.75개월 늘어납니다. 품절 월 하나가 판매 손실 외에 37보다 적은 비용을 입힐 때만 이득입니다.
- 주문량 600: 연간 비용이 333 더 들고 품절 월을 연평균 0.09개월 피합니다. 피한 품절 월 하나당 3,816입니다. 추가 비용이 거의 같은데 높은 재주문점은 0.27개월을 피합니다.
그러니 답은 엑셀 파일에 없는 숫자 하나에 달려 있습니다. 판매 손실 외에 품절 월 하나가 입히는 비용입니다. 그 비용에 따라 네 정책 중 총비용이 가장 낮은 정책은 다음과 같습니다. 37에서 1,291 사이일 때는 기준 재주문점 180, 1,291 초과일 때는 재주문점 250, 37 미만일 때만 재주문점 120입니다. 더 큰 주문이 가장 좋은 경우는 없습니다.
안전재고: 평균 월 수요를 넘는 재주문점
주문이 없는 달의 말에는 남은 재고가 다음 달 전체를 혼자 버텨야 합니다. 가장 이른 입고는 그다음 달 초이기 때문입니다. 따라서 재주문점은 한 달 수요를 감당해야 하고, 평균 월 수요 152개를 넘는 부분이 안전재고입니다. 기준 재주문점 180에서는 28개(월 수요 표준편차의 0.51배), 250에서는 98개(표준편차의 1.78배)입니다. 재주문점 120 수준은 평균 월 수요보다 32개 낮아 품절이 잦아집니다.
교과서 공식은 안전재고 = z × σ입니다. σ는 주문이 감당해야 하는 기간(여기서는 한 달)의 수요 표준편차이고, z는 한 보충 주기에서 받아들일 품절 확률에 맞춰 정규분포표에서 구합니다. 시뮬레이션은 결과를 직접 측정합니다. 한쪽으로 치우쳤고 음수가 없는 수요에서 품절이 발생하는 해의 빈도, 충족률, 비용을 봅니다.
같은 수요, 연도별로
모든 정책이 같은 수요를 보므로 연도를 하나씩 비교할 수 있습니다. 재주문점 120 정책은 기준보다 싼 해가 59.5%이고, 차이의 중앙값은 150 절약입니다. 그러나 비용이 더 드는 해가 30%이고, 최대 2,989까지 더 듭니다. 그런 해에는 모두 기준보다 판매 손실이 크며, 손실 단위마다 8의 비용이 붙습니다.
이 긴 오른쪽 꼬리 때문에 평균 비용이 가장 낮은 재주문점이 세 재주문점 중 P90은 가장 높습니다. 그 P90은 2,688이고, 기준은 2,377, 재주문점 250의 P90은 2,668입니다. P90으로 재면 평균 비용이 가장 낮은 정책이 셋 중 가장 비쌉니다.
같은 짝짓기 덕분에 충족률도 쉽게 비교할 수 있습니다. 재주문점 250의 충족률은 5,000년 모두에서 기준 이상이고, 23.7%의 해에서는 더 높습니다. 재주문점 120의 충족률은 기준보다 높은 해가 한 번도 없습니다. 더 큰 주문은 그렇게 분명하지 않습니다. 해의 7.2%에서 충족률이 낮아지는데, 다른 달에 재고가 빠듯해지고 때로는 수요가 큰 달 직전에 그렇기 때문입니다.
직접 해 보기
- xellstorm에서 모델을 엽니다. 수요 범위, 출력 세 개, 목표(판매 손실 월 수가 0 초과), 이름이 “Reorder at 120”, “Reorder at 250”, “Bigger orders”인 시나리오 세 개가 이미 설정되어 있습니다. 설치도 가입도 필요 없고, 엑셀 파일은 브라우저에서 계산합니다.
- 실행합니다. 기준을 먼저 실행하고, 이어서 각 시나리오를 같은 난수와 같은 시행 횟수로 실행합니다. 예제의 시드(1)와 시행 5,000회로 이 페이지의 숫자가 나옵니다.
- Results 단계에서 Total cost, Fill rate, Months with lost sales 중 하나를 고릅니다. Scenarios 패널은 정책별 S커브를 같은 축에 그리고, 표에는 평균, P10, P90, 목표 확률(months with lost sales 기준), 기준과의 차이, 각 시나리오가 기준보다 높거나 낮은 시행의 비율이 나옵니다. Trial by trial 패널은 시나리오의 비용을 기준의 비용과 시행마다 맞대어 보여 줍니다.
- Distributions 단계에서 시나리오의 재주문점을 바꾸고 다시 실행합니다. 재주문점 범위 전체를 한꺼번에 보려면 Optimize 단계에서 Sweep을 고르고, 재주문점 셀(
Plan!B1)을 의사결정으로 삼은 다음 Total cost의 평균과 months with lost sales가 0보다 클 확률을 통계량으로 추가합니다.
일반 엑셀로도 할 수 있나요?
부분적으로 가능합니다. 엑셀에는 음이항 확률을 계산하는 NEGBINOM.DIST가 있지만 그 분포에서 뽑는 역함수가 없어서, 월별 수요마다 우회가 필요합니다. 예를 들어 누적 확률 조회 표와 RAND()를 쓰거나, 정수 n이면 기하 분포 추출 n개의 합을 씁니다. 같은 수요로 정책을 비교하려면 재주문점을 바꾸기 전에 난수를 값으로 붙여넣는 식으로 고정해야 합니다. 엑셀 몬테카를로 시뮬레이션에서 일반적인 접근법과, 도구가 엑셀 파일을 대신 실행해 줄 때 달라지는 점을 보여 줍니다.
자주 묻는 질문
재주문점이란 무엇인가요?
재주문점은 새 주문을 내보내는 재고 수준입니다. 재고가 그 아래로 떨어지면 더 주문합니다. 재주문점은 주문이 도착할 때까지 예상되는 수요에, 평균을 넘는 수요에 대비한 완충인 안전재고를 더한 만큼을 감당해야 합니다. 이 모델에서는 재고를 매월 말에만 확인하고 주문은 다음 달 초에 도착하므로, 주문 없이 남은 재고는 한 달을 통째로 버텨야 합니다. 그래서 재주문점은 한 달 수요를 감당합니다.
충족률과 품절 확률은 어떻게 다른가요?
충족률은 어떤 기간에 재고로 충족한 수요의 비율이고, 품절 확률은 재고가 한 번 이상 떨어진 기간의 비율입니다. 둘은 다른 이야기를 할 수 있습니다. 이 모델에서 기준 정책의 충족률은 99.4%인데도 품절이 난 달이 있는 해의 확률은 28.0%입니다.
그냥 평균 비용이 가장 낮은 정책을 고르면 안 되나요?
평균 비용은 엑셀 파일에 있는 비용만 세고, 나쁜 해가 얼마나 나쁜지는 가립니다. 여기서 평균 비용이 가장 낮은 정책은 재주문점 120인데, 품절이 있는 해의 확률은 70.0%이고 P90 비용은 세 재주문점 중 가장 높습니다. 평균 옆에서 P90(P50, P80, P90 참고)과 품절 확률도 확인하세요.
공통 난수란 무엇인가요?
공통 난수는 모든 시나리오를 같은 난수로 실행하는 것으로, 여기서는 같은 월별 수요 5,000년치입니다. 그러면 시나리오 사이의 차이가 시나리오 자체에서 나오고, 실행마다 운이 달라 흐려지지 않으며 시행별로 비교할 수 있습니다. xellstorm은 모든 시나리오를 이렇게 실행합니다.
주문 수량 자체는 어떻게 정하나요?
주문 수량은 재주문점처럼 수요가 불확실한 가운데 내리는 의사결정입니다. 이처럼 반복되는 정책에서는 수량을 시나리오로 비교하거나 Optimize 단계에서 스윕합니다. 이 단계에서는 재주문점과 주문 수량처럼 의사결정 셀 두 개를 함께 스윕할 수 있습니다. 판매 시즌 전에 한 번 주문하는 경우는 수요가 불확실할 때 몇 개를 주문할지를 참고하세요.
관련 글
- 주문 수량
수요가 불확실할 때 몇 개를 주문해야 할까요?
수요 평균 1,000개(표준편차 200), 단위당 가격 10, 원가 4, 잔존가 1: 임계 비율 공식으로는 1,086.1개, 몬테카를로 탐색으로는 1,090개를 주문합니다. - 가이드
P50, P80, P90의 의미와 예산을 잡는 기준
P80은 시뮬레이션 결과의 80%가 그 아래에 머무는 비용입니다. 건축 프로젝트의 비용 항목 6개의 P80을 더하면 2,843이지만(천 달러 단위), 항목 합계의 P80은 2,756입니다. - 가이드
엑셀 몬테카를로 시뮬레이션, 애드인 있어도 없어도
엑셀 모델에서 몬테카를로 시뮬레이션을 실행하는 세 가지 방법: RAND() 수식과 데이터 표, 애드인, 애드인 없는 브라우저 도구. PERT 수식 포함.
xellstorm은 엑셀 모델을 브라우저에서 몬테카를로 시뮬레이션하는 도구입니다. 애드인은 필요 없고, 엑셀 파일은 내 컴퓨터 밖으로 나가지 않습니다.