비결정론적 이벤트와 프로세스

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

Diogo Costa (PhD, MSc)

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

이벤트 비결정론

참고: '이벤트'와 '프로세스'는 혼용됩니다.

이벤트(또는 프로세스) 비결정론이란?

  • 프로세스를 정확하게 예측할 수 없음
  • 해당 프로세스를 '비결정론적'이라고 함

비결정론적 프로세스가 중요한 이유는?

  • 자연 및 인간 활동에는 비결정론적 프로세스가 포함됨
  • 발생할 때마다 다른 방식으로 반복됨
  • 지속 시간을 정확히 예측할 수 없음
  • 시스템 출력에 큰 영향을 미칠 수 있음
Python으로 배우는 이산 사건 시뮬레이션

비결정론적 프로세스 및 이벤트의 예

자연 현상

  • 화산 폭발 시점
  • 강우 발생 시점
  • 번개의 시간 및 위치
  • 토네이도 형성 시간 및 위치

인간 주도 또는 인간 유발 프로세스

  • 기계 고장 시점
  • 화장실 이용 필요 시점
  • 아기 울음 시작 시점
  • 항공편 지연 여부
Python으로 배우는 이산 사건 시뮬레이션

이산 이벤트 모델에서 비결정론적 이벤트 표현

비결정론적 프로세스

  • 시스템에 반복 불가능한 영향을 미침
  • 정확한 지속 시간 알 수 없음

통계

  • 프로세스 지속 시간의 변동성을 표현
  • random 패키지 활용

  • 예시: random.randint(start, end)

import random

# Non-deterministic processes
process_1 = [5, 15]

while time < simulation_time:

   # Update simulation time: process_1
   time += random.randint(
               process_1[0], 
               process_1[1])

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

SimPy를 활용한 비결정론적 이벤트 표현

  • 비결정론적 프로세스를 처리하는 별도의 메서드 없음

  • 이벤트 지속 시간 변동성은 비SimPy 모델과 동일하게 계산

  • 적절한 통계 값을 .timeout()에 전달 DNT_CURLY_TAG_3

import random

# Non-deterministic processes
process_1 = [5, 15]

while True:

  # Update simulation time: process_1
  yield env.timeout(random.randint(
         process_1[0], 
         process_1[1]))
Python으로 배우는 이산 사건 시뮬레이션

연습해 봅시다!

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

Preparing Video For Download...