시뮬레이션 앙상블: 몬테카를로 샘플링

Python으로 배우는 이산 사건 시뮬레이션

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

다양한 시나리오에 대한 시스템 응답

  • 비결정론적 프로세스는 시스템 응답에 변동을 초래함
  • 이전 영상: 비결정론적 프로세스 모델링 방법 학습
  • 모델 내 불확실성 전파 특성화
  • 다양한 시나리오에 대한 시스템 응답 분석

활용 분야

  • 사업 확장 계획
  • 스트레스 테스트 수행
  • 극단적 상황 대비
Python으로 배우는 이산 사건 시뮬레이션

몬테카를로 샘플링

  • 반복적 무작위 샘플링
  • 소폭 변경하여 시스템 모델링
  • 변경에 대한 시스템 응답 검토

샘플 수 증가에 따른 파라미터 공간

100개의 몬테카를로 샘플 결과를 나타낸 그래프. 모델 결과의 패턴은 식별되지 않음.

1500개의 몬테카를로 샘플 결과를 나타낸 그래프. 일부 패턴이 보이기 시작하나 여전히 제한적임.

5000개의 몬테카를로 샘플 결과를 나타낸 그래프. 격자 구조의 명확한 패턴이 나타남.

Python으로 배우는 이산 사건 시뮬레이션

몬테카를로 샘플링: 프로세스 조사

예시: 정규(가우스) 분포 기반 이벤트 생성기의 출력 범위를 파악하기 위한 몬테카를로 실행

import random as rd
import numpy as np
import matplotlib.pyplot as plt

# Generating samples: Gaussian distribution
duration_sample = [rd.gauss(25, 5) 
for i in range(5000)]

# Plotting
plt.scatter(duration_sample, np.r_[0:5000], 
marker='.', c=duration_sample, cmap='CMRmap')
plt.xlabel("Duration [min]")
plt.ylabel("Monte Carlo Runs")

결과 시각화 가우스 분포 기반으로 생성된 지속 시간에 대한 몬테카를로 샘플링 결과 그래프.

Python으로 배우는 이산 사건 시뮬레이션

몬테카를로 샘플링: 이산 사건 모델

핵심 목표

  • 모델 불확실성 탐색
  • 비결정론적 프로세스로부터 발생
  • 불확실성 특성화
  • 의사결정 지원

네 가지 상태를 가진 시스템 다이어그램. 각 프로세스 지속 시간의 변동성으로 인해 프로세스 순서가 진행될수록 가능한 시스템 상태의 수가 증가함.

Python으로 배우는 이산 사건 시뮬레이션

몬테카를로 샘플링: 이산 사건 모델

  • 각 프로세스 지속 시간의 불확실성이 시스템 전체에 전파됨

  • 다양한 모델 궤적을 생성함

  • 응답 범위(Response Envelope) 라고 부름

예시:

n_trajectories = 50

process_1 = {"Name": "Raw_material", 
             "OperationTime": 20, 
             "MaxDelayTimePercent": 10}
process_2 = {"Name": "Unloading", 
            "OperationTime": 15, 
            "MaxDelayTimePercent": 5}

일련의 순차적 프로세스로 구성된 제조 활동의 응답 범위를 나타낸 그래프.

Python으로 배우는 이산 사건 시뮬레이션

연습해 봅시다!

Python으로 배우는 이산 사건 시뮬레이션

Preparing Video For Download...