결정론적 프로세스와 비결정론적 프로세스의 결합

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

Diogo Costa (PhD, MSc)

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

결정론적 프로세스와 비결정론적 프로세스

주어진 시스템의 프로세스 순서를 보여주는 다이어그램입니다. 결정론적 프로세스인 프로세스 A로 시작해, 비결정론적 프로세스인 프로세스 B를 거쳐, 또 다른 결정론적 프로세스인 프로세스 C로 마무리됩니다.

예시: 공항의 승객 흐름 관리

  • 비결정론적: 승객이 공항에 도착하는 시간
  • 결정론적: 체크인 후 공항 내부 수하물 운송
Python으로 배우는 이산 사건 시뮬레이션

예시: 공장의 조립 라인

결정론적 프로세스

  • 공장으로의 원자재 운송
  • 완전 자동화된 단계
  • 품질 검사
  • 포장
  • 고객에게 신제품 운송

예시: 용접기

처리 시간 = 용접 라인 길이 x 용접기 속도

비결정론적 프로세스

  • 원자재 주문
  • 복잡한 부품의 수작업 조립

특정 수작업 조립을 여러 번 반복했을 때 걸린 시간을 보여주는 산점도입니다.

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

결정론적 프로세스

예시: 용접이 포함된 조립 라인

  • 결정론적 프로세스 2개
    welding_1

welding_2

  • welding_1

    • 프로세스 이름: 부품 A 용접

    • 처리 시간: 5 시간

  • welding_2
    • 프로세스 이름: 부품 B 용접
    • 처리 시간: length * hours_per_length

각 프로세스에 대한 dictionary 생성:

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
Python으로 배우는 이산 사건 시뮬레이션

비결정론적 프로세스

예시: 조립 라인

  • 2개의 비결정론적 프로세스 manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • 프로세스 이름: 수작업 조립 A
    • 평균 처리 시간: 80 시간

    • 표준편차: 5 시간

  • manual_assembly_2
    • 프로세스 이름: 수작업 조립 B"
    • 평균 처리 시간: 20 시간
  • 표준편차: 2 시간

각 프로세스에 대한 dictionary 생성:

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
Python으로 배우는 이산 사건 시뮬레이션

이벤트 기반 시뮬레이션 구축

제조 프로세스 순서 제조 활동의 프로세스 순서를 보여주는 다이어그램으로, 시간 순서대로 welding_1, manual_assembly_1, manual_assembly_2, welding_2 프로세스를 포함합니다.

이산 이벤트 모델

# Initiate time-tracking variable
time = numpy.zeros(number_of_processes)

# Next-event time progression time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
Python으로 배우는 이산 사건 시뮬레이션

시간 단위 및 모델 탐색

  • 시간 단위
    • 모든 프로세스에서 시간 단위를 일관되게 유지하세요.
Python으로 배우는 이산 사건 시뮬레이션

연습해 봅시다!

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

Preparing Video For Download...