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

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

Diogo Costa (PhD, MSc)

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

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

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

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

  • 프로세스 결과를 정확히 예측할 수 있는 능력
  • 이를 '결정론적' 프로세스라 함

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

  • 자연 및 인간 활동은 복잡함
  • 상호 의존적인 프로세스와 자원이 많음
  • 일부 프로세스는 매번 동일하게 반복됨
  • 시스템 출력에 미치는 영향을 정확히 예측 가능
Python으로 배우는 이산 사건 시뮬레이션

결정론적 프로세스 또는 이벤트의 예

자연 현상

  • 조석 높이
  • 중력에 의한 물체 가속도 (9.81 m$^2$/s)
  • 태양계 행성의 운동
  • 공기 중 음속 (331.29 m/s)
  • 빛의 속도 (300,000 km/s)
  • 물의 어는점 (0도 섭씨)

인간 주도 또는 인간이 시작한 활동

  • 수도꼭지 유량
  • 물병 충전 기계의 속도
  • 커피 머신이 커피를 만드는 시간
  • 230도 섭씨 오븐에서 방출되는 열
  • 세탁기 프로그램 사이클
  • 전자레인지 작동
Python으로 배우는 이산 사건 시뮬레이션

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

결정론적 프로세스

  • 동적 시스템에 예측 가능한 영향
  • 알려진 지속 시간
  • 매번 동일한 방식으로 반복

프로세스 지속 시간은 시뮬레이션 시간에 반영되어야 함

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Python으로 배우는 이산 사건 시뮬레이션

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

결정론적 이벤트의 SimPy 구현:

  • .timeout() 메서드가 프로세스 지속 시간을 기록
    • 시간 단위를 인식하지 않음
    • 시간을 숫자로 처리
    • 모델 전체에서 시간 단위 일관성 필요
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   yield env.timeout(duration_process_1)

   # Update simulation time: Process 2
   yield env.timeout(duration_process_2)

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

연습해 봅시다!

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

Preparing Video For Download...