곤약노트

시뮬레이션 (Simulation) #일반 원칙 본문

카테고리 없음

시뮬레이션 (Simulation) #일반 원칙

곤약처럼 부드럽게, 쫀쫀하게 2025. 6. 20. 09:00

1. 시뮬레이션 연구 11단계

시뮬레이션 프로젝트는 단순한 코딩이 아니라, 문제를 정의하고 가설을 실험해보고 해석까지 이르는 하나의 과학적 절차

  1. 문제 정의 (Problem Formulation): 어떤 문제가 있는가? (예: 대기시간이 너무 길다!)
  2. 목표 설정 & 계획 (Objectives and Planning): 무엇을 알고 싶은가? (얼마나 많은 직원을 더 뽑아야 하나?)
  3. 모델 구축 (Model Building): 수학/로직 기반의 모델 작성 (예: M/M/1 큐)
  4. 데이터 수집 (Data Collection): 어떤 데이터를, 얼마나, 어떻게 수집할 것인가
  5. 코딩 (Coding): 적절한 언어 선택, 이벤트 처리 방식 선택
  6. 검증(Verification): 코드가 제대로 작동하는가?
  7. 타당화(Validation): 모델이 현실을 잘 반영하는가?
  8. 실험 설계 (Experimental Design): 어떤 실험을 어떻게 설계할 것인가
  9. 시뮬레이션 실행 (Run Experiments): 대량 실험 수행
  10. 출력 분석 (Output Analysis): 통계 분석, 성능 평가
  11. 보고 및 구현 (Make Reports, Implements): 결과 공유, 의사 결정 지원

 

2. 시뮬레이션 관련 용어

  • System: 현실에서 분석할 대상 (예: 병원, 공항, 서버 시스템 등)
  • Model: 시스템을 수학적·논리적으로 추상화한 것
  • System State: 현재 시스템의 상태를 완전히 설명해주는 변수 집합
  • Entities: 시스템을 구성하는 주체 (고객, 기계 등)
  • List (Queu): 주체와 연관된 순서로 배열된 리스트
  • Events: 시스템 상태를 변화시키는 순간적 시간 (고객 도착, 서비스 완료 등)
  • Activities: 시간 동안 지속되는 동작 (예: 5분간 서비스)
  • Conditional Wait: 조건이 충족될 때까지의 대기 시간 (예: 줄 기다리기)

 

3. Time-Advance Mechanisms (시뮬레이션 시계와 시간 진행)

시뮬레이션은 실제 시간이 아니라 "모의 시간"을 따라 움직임. 항상 앞으로 움직임.

  1. 고정 간격 방식 (Fixed-Increment Time Advance)
    → 매 시간단위(h)마다 상태 갱신
  2. 다음 이벤트 방식 (Next-Event Time Advance)★
    → 가장 가까운 이벤트 시간으로 시계 이동 (우리가 주로 사용하는 방식!)

💡 FEL (Future Events List)
: 앞으로 발생할 이벤트들을 시간순으로 정렬한 목록. 시뮬레이션의 심장부.

 

3. Two Modeling Approaches

① Event Scheduling (이벤트 중심 방식)

  • 각 이벤트를 시간순으로 추적하며 시스템 상태 갱신
  • 직접 FEL 관리 필요 (코딩 복잡)
  • Initialization Routine - Invoke Timing Routine - Invoke Event Routine - Go back to 1

② Process Interaction (프로세스 중심 방식)

  • 각 "엔터티(예: 고객)"가 스스로 이벤트 흐름을 갖고 움직임
  • ARENA 등 대부분의 상용 시뮬레이션 도구가 채택
  • FEL은 자동 관리됨 → 초보자에게 추천
  • Create - Process - Dispose