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

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...