프로세스를 위한 Monte Carlo 시뮬레이션: 무엇을 할 수 있고 언제 거짓말합니까
Monte Carlo 시뮬레이션은 동일한 프로세스를 수백 번에 걸쳐 무작위로 뽑은 소요 시간과 수량으로 실행하고 결과 분포를 평가합니다. ‘6,4일’ 같은 단일 처리 시간이 아니라 대역(예: P10 4,1에서 P90 11,8일)을 제공하므로 운영에서 신뢰할 수 있는 판단을 내릴 수 있습니다. 다만 실행 수가 너무 적을 때, 명백히 치우친 소요 시간에 대해 대칭 분포를 선택했을 때, 입력 간의 종속성을 무시했을 때 또는 워밍업 기간을 함께 계산했을 때는 결과가 잘못될 수 있습니다.
Inhaltsverzeichnis
“Monte-Carlo”는 실제보다 복잡하게 들리지만 다행히도 방법은 의외로 단순합니다. 체계적인 주사위 놀이입니다.
절차를 네 문장으로 정리
단계가 10분 걸린다고 적지 않고 5에서 20분, 보통은 8분이라고 적습니다. 계산기는 이제 하나의 작업을 프로세스에 통과시키며 각 단계마다 이 범위에서 무작위로 소요시간을 뽑습니다. 이를 하루치 작업에 대해 수백 번 반복합니다. 결과적으로 단일한 처리시간이 아니라 수백 개의 처리시간이 생기고, 거기서 분포가 만들어집니다.
그게 전부입니다. 우주의 모델도 인공지능도 아닙니다. 단지 세상이 정확한 것처럼 가장하지 않겠다는 태도입니다.
왜 프로세스가 이것을 필요로 하는가
자주 제기되는 반론은 이렇습니다. 평균값을 알고 있다면 평균으로 계산하면 안 되냐는 것인데요.
프로세스는 비선형적이기 때문입니다. 바로 이해되는 두 가지 예를 들겠습니다.
대기열. 85%의 가동률을 가진 단계는 그 단계의 처리시간의 5.7배에 달하는 대기시간을 만들어냅니다. 95%일 때는 19배입니다. 하루 동안 가동률이 70%에서 100% 사이를 오간다면, 이들 대기시간의 평균은 ‘중간 가동률에서의 대기시간’과 같지 않습니다. 훨씬 큽니다. (계산법은 Engpass berechnen에 있습니다.)
더 긴 경로가 이긴다. 두 개의 병렬 분기가 있고 둘 다 끝나야 한다면 전체 소요시간은 두 값의 최대값이고, 최대값의 기대값은 기대값들의 최대값보다 큽니다. 평균으로 계산한 프로젝트 계획은 체계적으로 낙관적입니다.
이 둘을 합하면 젠슨의 부등식으로, ‘Flaw of Averages’로 널리 알려져 있습니다. Monte-Carlo는 값을 먼저 평균내지 않고 계산한 뒤에 평가함으로써 이를 회피합니다.
무엇을 입력해야 하는가
| 입력 | 필요한 이유 | 입력이 없으면 |
|---|---|---|
| 도착률과 분포 | 부하를 생성합니다 | 대기열이 전혀 생기지 않거나 항상 생깁니다 |
| 단계별 소요시간을 범위로 | 대기시간의 주된 원인입니다 | 결과가 체계적으로 유리하게 나옵니다 |
| 역할 또는 풀별 용량 | 한계를 생성합니다 | 가동률이 없고 대기열이 없습니다 |
| 분기 비율 | 양을 분배합니다 | 후속 단계에 잘못된 양이 전달됩니다 |
| 캘린더와 교대 | 대기시간을 현실적으로 만듭니다 | 대기시간이 최대 3배 낮게 나옵니다 |
가장 흔한 누락은 마지막 항목입니다. 캘린더가 없으면 금요일 16:50에 도착한 작업은 10분만 기다리지만, 캘린더가 있으면 월요일까지 기다립니다.
몇 번 실행해야 하나?
항상 나오는 질문이고 답은 만족스럽지 않습니다. 결과가 더 이상 움직이지 않을 때까지입니다.
실무적으로 검증된 기준은 다음과 같습니다.
- 100번 실행이면 어떤 단계가 병목인지 확인하는 데 충분합니다. 수치 자체가 안정되기 훨씬 전에 순위는 안정됩니다.
- 500에서 1000번 실행은 특히 드물게 발생하는 사건에 의존하는 P90 같은 신뢰할 수 있는 퍼센타일을 얻는 데 필요합니다.
- 5000번 이상은 이 규모의 프로세스에서는 거의 추가적인 통찰을 주지 않고 계산 시간만 늘립니다.
직접 확인하려면 동일한 모델을 다른 시작값으로 두 번 돌려보세요. 결과가 눈에 띄게 다르면 실행 횟수가 부족한 것입니다.
어느 분포를 선택할까?
대부분 사람들이 범하는 두 번째 실수는 여기서 발생합니다. 처리시간은 거의 결코 대칭적이지 않습니다. 작업은 ‘아주 빠름’보다 빨라질 수는 없지만 임의로 느려질 수 있습니다. 따라서 분포는 오른쪽으로 긴 꼬리를 가집니다.
- 삼각분포(최소값, 가장 가능성 높은 값, 최대값)는 대부분의 행정 프로세스에 충분하며 워크숍에서 세 가지 값을 묻기 쉬운 장점이 있습니다.
- 로그정규분포는 긴 꼬리를 더 잘 포착하므로 이상치가 프로세스를 좌우할 때 적합합니다.
- 정규분포는 거의 항상 부적절합니다. 대칭적이고 음수의 소요시간을 허용합니다.
경험적 규칙: 확실하지 않으면 삼각분포를 선택하고 결과를 구간으로 제시하세요. 분포의 선택은 퍼센타일을 이동시킬 수 있지만 대체로 어느 단계가 병목인지는 거의 바꾸지 않습니다.
결과를 무가치하게 만드는 네 가지 실수
1. 실행 횟수가 너무 적음. 두 번 실행했을 때 다른 답이 나오면 알아볼 수 있습니다. 2분 안에 점검 가능합니다.
2. 치우친 소요시간에 대칭 분포를 사용함. P90을 상당히 낮게 만듭니다. P90은 계획에 사용해야 할 값입니다.
3. 의존관계 무시. 복잡한 사례가 모든 단계에서 더 오래 걸리면 소요시간들이 상관되어 있습니다. 각 소요시간을 독립적으로 무작위로 뽑는 모델은 이 효과를 평균화하여 분산을 과소평가합니다. 해결책: 작업 유형을 분리하여 각각 따로 모델링하고 모든 경우에 걸쳐 넓은 분포를 적용하지 마세요.
4. 워밍업 단계를 함께 평가함. 실행 초기에는 시스템이 비어 있어 대기열이 없고 처리시간이 짧습니다. 이 단계까지 포함하면 실제 운영에서는 결코 존재하지 않는 상태로 결과가 희석됩니다.
결과를 읽는 법
Monte-Carlo 분석은 하나의 수치가 아니라 적어도 세 가지를 제공합니다.
- P10: 유리한 경우. 대략 열 번 중 한 번은 이 정도입니다.
- P50: 중앙값. 사례의 절반이 이 값 이하입니다.
- P90: 불리한 경우. 용량을 계획할 때 이 값을 사용하세요, 평균이 아니라.
이를 다시 하나의 숫자로 만들면 분석을 한 의미가 없습니다. 범위 자체가 결과입니다. 범위를 읽는 방법과 P50이 어떻게 오도할 수 있는지는 P10, P50, P90 richtig lesen에 설명되어 있습니다.
Monte-Carlo가 하지 못하는 것
나쁜 입력을 더 좋게 만들어주지는 않습니다. 수량을 추정한 상태라면 결과도 추정입니다. 단지 소수점 이하까지 붙여줄 뿐입니다. 이것이 방법의 진짜 위험입니다: 데이터 기반이 그것을 정당화하지 못하는 신뢰를 만들어냅니다.
그래서 모든 분석에는 세 가지 정보가 문서화되어야 합니다: 어떤 입력이 측정되었고 어떤 입력이 추정인지, 몇 번 실행했는지, 그리고 어떤 시작값을 썼는지. 이것이 없으면 결과는 재현 불가능하고 재현 불가능한 결과는 결론용으로 부적절합니다.
FlowVisual은 정확히 이렇게 계산하며 시드와 실행 횟수를 매뉴얼에 인쇄합니다. 까다로워서가 아니라 재현할 수 없는 수치는 의사결정 문서에 들어가면 안 되기 때문입니다.
자주 묻는 질문
프로세스 모델에 Monte Carlo 반복이 몇 번 필요합니까?
어떤 단계가 병목인지 묻는 질문에는 약 100번의 반복이면 충분합니다. 순위는 일찍 안정됩니다. 특히 P90 같은 신뢰할 수 있는 백분위수를 얻으려면 500에서 1000번이 필요합니다. 충분했는지 확인하려면 다른 시작값으로 동일한 모델을 다시 실행해 보십시오. 결과가 눈에 띄게 달라지면 반복이 부족한 것입니다.
처리 시간에 어떤 분포가 적합합니까?
대부분의 행정 프로세스에서는 최소값, 최빈값, 최대값의 삼각분포가 적합합니다. 이 세 값은 워크숍에서 질문하여 얻을 수 있습니다. 이상치가 프로세스를 지배하는 경우에는 로그정규분포가 더 낫습니다. 정규분포는 거의 항상 틀린 선택인데 그 이유는 대칭적이어서 음수 지속시간을 허용하기 때문입니다.
Monte Carlo가 이산 사건 시뮬레이션과 동일합니까?
아니요, 두 방법은 서로를 보완합니다. 이산 사건 시뮬레이션은 단일 실행을 진행합니다: 작업이 도착하고 대기하고 처리됩니다. Monte Carlo는 이 실행을 무작위값을 새로 뽑아 여러 번 반복하고 결과 분포를 평가하는 것을 의미합니다.
왜 시드(Seed)를 문서화해야 합니까?
재현할 수 없는 결과는 의사결정 자료에 들어갈 자격이 없기 때문입니다. 동일한 시작값과 동일한 반복 수를 사용하면 누구나 같은 수치를 얻고 편차가 변경된 가정 때문인지 단순한 무작위인지 확인할 수 있습니다.
자신의 프로세스로 직접 계산해 보세요
FlowVisual은 이 글의 수치를 귀하의 수량, 귀하의 용량, 귀하의 마진을 반영한 실행 가능한 모델로 만듭니다.
Guide: seven steps to the number- 방법
P10, P50, P90 올바르게 읽기: 평균이 여러분을 오도하는 경우
백분위수는 통계학자의 자랑이 아니라 변동하는 결과를 정직하게 제시하는 유일한 방식입니다. 세 숫자, 세 목적. 그리고 정기적으로 의사결정 자료에 들어가는 세 가지 해석 오류가 있습니다.
읽기 - 방법
업무 프로세스를 위한 사건 기반 시뮬레이션
이산 사건 시뮬레이션은 시간 간격으로가 아니라 사건에서 사건으로 점프합니다. 이유를 이해하면 대부분의 모델이 실패하는 세 가지 결정을 올바르게 내릴 수 있습니다: 분포, 워밍업 기간, 실행 횟수입니다.
읽기 - 방법
업무 프로세스 시뮬레이션: 실무 지침
시뮬레이션은 기업에서 통계 프로젝트가 아니라 의사결정 도구입니다. 이 가이드는 어떤 프로세스가 가치가 있는지, 최종적으로 문서에 무엇이 남는지, 첫 시도는 어떻게 보이는지, 대부분의 시도가 실패하게 하는 네 가지 실수가 무엇인지 알려드립니다.
읽기