시뮬레이션

아래의 내용은 <시뮬레이션, 김강현・백두권 저자>의 교재를 바탕으로 작성했습니다.

시뮬레이션

  • 우리가 관찰하고자 하는 것을 시스템에 대입하여 실험하는 것
  • 우리 주변에서 크고 작은 일들을 분석하거나 예측할 때 사용되는 기법
  • 실시스템을 표현하는 모델은 ① 해석적 방법(수학적 공식으로 표현되서 풀어나가면 해가 구해지는 경우: 가장 정확) ② 실시스템의 구성요소가 복잡하거나 정확히 분석되지 않아 공식 유도가 힘든 경우
  • 확률변수 사용유무에 따라 ① 결정적 시뮬레이션(deterministic simulation) ② 확률적 시뮬레이션(probabilistic simulation)
  • 시뮬레이션 결과는 그림이나 그래프로 표현하는 것이 더 이해하거나 분석하기 쉬움


연속형 일양분포
① 지수분포
② 정규분포


이산형 분포
① 이산형 일양분포
② 포아송분포

 

대기행렬

  • 봉사자가 있고 손님은 줄을 서서 자기 차례가 될 때까지 기다렸다가 서비스를 받으면 떠나는 형태
  • ex) 출국심사, 주유소, 화장실 한 줄 서기, 고속버스 톨게이트, 기차표 구매 등등


시뮬레이션 모델

① 결정적 모델과 확률적 모델: 확률변수를 사용하는가의 유무

② 정적 모델과 동적 모델: 특정 시각과 시간의 변화에 따를 상태 변화

③ 이상 모델과 연속 모델: 상태변수의 연속 혹은 불연속 여부

④ 물리적 모델과 수리적 모델: 물리적 구성 혹은 수학적 수식 사용 여부


시뮬레이션 장/단점

  • 장점

① 구축 없이 예측 평가

② 해석적 방법이 불가능한 경우 해결

③ 비용이 높고 위험한 경우 효율적

④ 환경 조절 용이 / 반복실험 가능

⑤ 시간에 구애 없는 시스템 연구

  • 단점

① 많은 비용과 시간 소요

② 확률적 시뮬레이션은 단지 추정량을 산출

③ 과잉의 신뢰를 주는 경향

④ 프로그래밍 연습이라는 인상을 주기 쉬움 


시뮬레이션 과정

① 문제 정의: 문제에 대하여 정확히 정의하고 분석 목적을 명확히 서술

② 모델 설계: 정의에 따라 시스템을 수학적, 논리적인 관계로 추상화

③ 자료 수집: 자료를 파악, 수집

④ 모델 변환: 컴퓨터 처리에 맞도록 모델 변환

⑤ 검증: 시뮬레이션 모델이 표현한 것이 정확하게 컴퓨터 프로그램으로 옮겨졌는지와 수행되는지 검증

⑥ 타당성 검토: 시뮬레이션 모델과 실시스템에서 정확성 일치 여부 검토

⑦ 실험계획 수립: 모델을 실험하기 위한 제반 계획 수립

⑧ 실험: 시뮬레이션 모델 수행

⑨ 결과분석: 문제해결에 대한 추론과 권고안 작성을 위한 실험결과 분석

⑩ 구현과 문서화: 시뮬레이션 결과로부터 도출되는 결정을 구현, 문서화


이산형 시뮬레이션 모델링에 대한 월드뷰

① 사건중심 진행방법(event orientation)

② 액티비티 관찰중심 진행방법

③ 프로세스 중심 진행방법


혼합형 시뮬레이션

① 시간사건(time-event)

② 상태사건(state-event)


시뮬레이션 시계 진행방식

① 다음사건시간 진행법(next-event time advance)

② 고정시간 진행법(fixed-increment time advance)


다음사건시간 진행법 vs. 고정시간 진행법

① 시뮬레이션 기간: 시작-첫 번째 고객 도착, 종료-마지막 고객 도착 / 시작과 종료시간 고정

② 처리 고객 수: M명 / 알 수 없음

③ 시뮬레이션 종료시간: 언제 끝날지 알 수 없음 / 처음부터 정해져있음

④ 응용분야: 몇 명까지 처리하는 경우 / 몇 시까지 처리하는 경우

⑤ 특이사항: 현재 몇 명의 고객이 다녀갔다는 사실을 쉽게 알 수 있음 / 현재 몇 명의 고객이 대기하고 있다는 대기행렬의 크기를 쉽게 알 수 있음

⑥ 장점: 사건발생시간만 처리하므로 효율적 / 쉬는 시간 없이 종료시간까지 많은 처리 시간이 소요


범용언어 vs. 시뮬레이션 언어 


시뮬레이션 언어의 선택

① 컴퓨터 시스템상에서 언어의 이용 가능성

② 언어 설치 및 유지하는 데 드는 비용

③ 수행할 시뮬레이션 연구 횟수

④ 시뮬레이션될 시스템의 형태

⑤ 언어의 문서화 정도

⑥ 언어의 배우기 정보

⑦ 언어의 컴퓨터 기억장소 요구량

⑧ 언어의 컴퓨터 수행시간의 효율성

⑨ 언어의 유연성 및 능력


난수

  • 확률변수를 사용하는 확률 시뮬레이션에서 사용
  • random 함수 이용
  • ① 중앙이승법 ② 합동법

중앙이승법 vs. 합동법
최대주기를 갖는 합동법이 난수발생에 사용 -> 최대주기를 갖게 되어야 서로 다른 많은 수를 발생, 일양분포에 가까운 난수를 얻을 수 있음


난수 발생 성질

① 발생된 숫자들은 [0, 1) 범위에서 일양분포(골고루 퍼져 있음) 해야 함

② 상관관계, 예측 불가능해야 함

③ 난수의 발생속도가 빨라야 함

④ 많은 기억용량이 필요하지 않아야 함

⑤ 같은 난수들을 언제든지 발생시킬 수 있어야 함


확률변수

  • 확률변수: 표본공간에서 실수로 가는 함수로 정의됨
  • 예시: 동전 던지기 게임이다. 동전을 던졌을 때 앞면이 나오면 100원을 받고, 뒷면이 나오면 50원을 잃는다고 가정한다.
  • 사건:  상황은 2가지이다. 앞면이 나오거나 뒷면이 나오는 경우 -> 이것을 사건이라고 함
  • 표본공간: 두 사건의 집합
  • 이산확률 변수: 확률변수가 단지 셀 수 있는 값들만을 가질 때 확률변수를 가리킴
  • 확률변수의 발생방법: 역변환법(역삼수 이용), 합성법(표본을 뽑을 분포함수가 다른 분포함수들의 조합으로 표시될 수 있는 경우 사용), 결합법(발생될 변수가 몇 개의 확률변수의 합으로 나타나는 경우에 사용), 채택-기각법(일정한 조건을 정하여 만족하면 채택, 그렇지 않으면 기각하는 방식으로 확률변수 발생)
  • 연속형 확률변수의 발생방법: 일양분포, 지수분포, m-Erlang 분포, 와이블(weibull) 분포, 정규(normal) 분포, 대수정규(lognormal) 분포
  • 이산형 확률변수 발생방법: 베르누이(Bernoulli) 분포, 이산형 일양(discrete uniform) 분포, 이항(binomial) 분포, 기하(geometric) 분포, 포아송(poisson) 분포


확률분포

  • 주어진 데이터를 이용하여 입력 확률변수를 결정하는 방법: ① 통계적인 기법을 사용하여 주어진 데이터에 대하여 어떤 이론적 확률분포가 적합한지 선정 후 선정된 분포의 모수들을 결정하고, 결정된 확률분포로부터 시뮬레이션하는 동안 필요한 확률변수에 대한 데이터를 발생 ② 주어진 데이터를 이용하여 이론적 분포의 형태를 구분하지 않고 그 데이터의 경험적 분포를 이용하여 직접적으로 필요한 표본을 발생
  • 연속형 분포: 점 통계량, 히스토그램, 확률도
  • 이산형 분포: 점 통계량, 막대그래프

댓글

가장 많이 본 글