0 chapter titles - hnumip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션...

90
시뮬레이션 강의노트 [email protected]

Upload: others

Post on 18-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

시뮬레이션

강의노트

[email protected]

Page 2: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

ii

Page 3: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

i

목 차

1 시스템과 모델 ........................................................................................................................... 1

시스템이란? ......................................................................................................................... 1

모델이란? ............................................................................................................................. 2

시뮬레이션이란? ................................................................................................................. 3

시뮬레이션과 모델링 .............................................................................................. 4

시뮬레이션 분석절차 .............................................................................................. 4

2 난수 ............................................................................................................................................ 5

가상 난수 생성 방법 ............................................................................................................ 6

중앙제곱 방법 .......................................................................................................... 6

Linear Congruential Generator (LCG) ...................................................................... 6

Multiplicative Congruential Generator ..................................................................... 7

Shuffling .................................................................................................................... 9

난수의 통계적 검정 ........................................................................................................... 10

카이제곱 적합도 검정 ........................................................................................... 10

Kolmogorov-Smirnov 검정 .................................................................................... 10

런 상하향 검정 (Runs up and down test) ............................................................... 13

일련 상관 겁정 (serial correlation test) .................................................................. 14

3 확률변수 값 생성 .................................................................................................................... 15

연속적 확률변수 생성방법 ............................................................................................... 15

역변환 방법 ............................................................................................................ 15

채택/기각 방법 ....................................................................................................... 16

연속적 확률분포 ................................................................................................................ 20

이산적 확률변수 생성 방법 .............................................................................................. 30

역변환 방법 ............................................................................................................ 30

채택 기각 방법 ....................................................................................................... 31

이산적 확률분포 ................................................................................................................ 33

4 몬테카를로 시뮬레이션 .......................................................................................................... 36

적중/실패 방법 ................................................................................................................... 36

샘플 평균 방법 ................................................................................................................... 38

예제 ..................................................................................................................................... 39

Phi값 계산 .............................................................................................................. 39

부퐁 바늘 문제 (Buffon needle problem) .............................................................. 39

랜덤 워크 (random walk) ....................................................................................... 41

5 이산 사건 시뮬레이션............................................................................................................. 46

이산사건 시스템 ................................................................................................................ 46

모델링 기초 ........................................................................................................................ 46

시뮬레이션 로직 ................................................................................................................ 47

성능 척도 ............................................................................................................................ 52

프로세스 중심과 사건 중심 시뮬레이션 ......................................................................... 55

시뮬레이션 소프트웨어 .................................................................................................... 59

구성요소 ................................................................................................................. 59

시뮬레이션 시각 진전 방법 .................................................................................. 59

Event list의 처리 .................................................................................................... 59

Page 4: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

ii

칼렌다 큐 ................................................................................................................ 60

6 시뮬레이션 모델링 ................................................................................................................. 64

흐름 라인 제조 시스템 ...................................................................................................... 64

M/M/1 대기 ........................................................................................................................ 69

재고 시스템 ........................................................................................................................ 70

공항 ..................................................................................................................................... 71

7 출력분석 .................................................................................................................................. 74

시뮬레이션과 통계적 분석의 관계 .................................................................................. 74

랜덤효과의 필요성 ............................................................................................................ 75

입력분포 선택 .................................................................................................................... 76

유한시간과 안정상태 분석 ............................................................................................... 77

유한시간 성능 분석 ............................................................................................... 77

안정상태 출력분석 ................................................................................................ 80

배취 평균 방법 ....................................................................................................... 83

대안 비교 ............................................................................................................................ 85

Page 5: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

1

1 시스템과 모델

시스템이란?

우리는 시스템이란 용어를 보편적으로 사용한다. 시스템은 우주와 같이

자연적인 것을 대상으로 하기도 하고, 인간이 만든 다양한 것들을

대상으로 하기도 한다. 이렇게 일상적으로 대하는 시스템에 대하여

과학적인 측면에서 구조와 특성을 이해하려는 시도는 그리 긴 역사를

가지고 있지 않다. 어느 영어 사전에 따르면 시스템이란 용어를 다음과

같이 정의하고 있다.

서로 연관(interrelated)되어 있고, 종속적(dependent)이고,

접촉(interacting)하는 성분들의 집합이 복잡한 전체를 이루는 것

기능적으로 연관되어 있는 성분들의 그룹. 예를 들어;

여러 구성요소가 기능적으로 연관되어 있는 인간의 몸

생존 기능을 하는 전체로서의 생명체

인간의 신경계, 근골격계, 순환계

서로 연관되어 있는 기계 부품과 전자 부품의 집합(컴퓨터)

통신, 여행, 분배를 위한 네트워크 구조

서로 연관되어 있는 소프트웨어, 하드웨어, 데이터 통신 장비들의

네트워크

서로 연관되어 있는 아이디어, 원리의 집합

사회적, 경제적, 정치적인 조직형태

자연적으로 발생되는 객체 또는 현상의 그룹(태양계)

분류, 분석을 위한 객체, 현상의 집합

조직적이고, 체계적인 방법과 절차

사회 질서, 체제

이러한 사전적인 정의는 다양한 시스템에 대한 설명을 포함하고 있다.

시스템은 다음과 같은 일반적인 특성을 갖는다.

어떤 기능을 하며, 이는 시스템의 목적으로 간주된다.

시스템의 구성요소와 시스템 구조를 갖는다.

시스템을 구성하는 성분들은 분리될 수 없는 통합성(integrity)을

갖는다

시스템의 구성요소들은 논리적인 관점에서 다음과 같은 것들로 이루어져

있다고 볼 수 있다.

구성품(Components): 입력, 프로세스, 출력으로 구성

특성치(Attributes): 구성품의 특성치

연관관계(Relationships): 구성품 간의 관계

Page 6: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

2

지금까지의 정의, 특성, 구성요소들에 대한 설명을 바탕으로 다음과 같이

시스템을 재정의할 수 있다.

“시스템이란 공통의 목적을 달성하기 위하여 함께 일하는 서로 연관된

여러 성분의 집합체이다”

즉, 시스템은 다양한 구성요소를 포함하고 있고, 이러한 구성요소들은

각개 독립적으로 일을 하는 것이 아니라 시스템 전체의 목적을 위해 서로

협력하며 일을 한다. 또한, 구성요소들은 시스템에서 떨어져 나와

독립적인 기능을 할 수 없는 성질의 것이다. 항상 시스템 내에 속하여야

본연의 기능을 할 수 있다. 시스템의 성분들은 계층적인 구조에 따라 하부

시스템으로 나뉠 수 있다. 사전적인 정의에서 설명된 인간을 예로 들자.

인간은 여러 성분으로 구성된 시스템이다. 그 성분들을 기능적인

측면에서 크게 나누면 신경 시스템, 근골격 시스템, 순환기 시스템,

소화기 시스템 등으로 나뉠 수 있다. 소화기 시스템 역시 식도, 위, 간,

소장, 대장 등 다양한 하부 성분으로 구성되어 있고, 이러한 성분들은

또한 하나의 시스템으로 간주될 수 있다.

시스템은 다음과 같이 여러 관점에서 분류될 수 있다.

Natural/Man-made: 자연적인 시스템/인간이 만든 시스템

Physical/Conceptual(Symbolic): 물리적인 시스템/개념적인

시스템으로 물리적인 시스템들은 우리가 볼 수 있고, 만질 수 있는

형체를 포함하고 있다. 그러나, 개념적인 시스템은 물리적인

형체는 없고, 언어, 심볼, 그림 등으로 표현된 것 들이다.

Static/Dynamic: 정적인 시스템/동적인 시스템으로 시간에 따라

변화하지 않는 정적인 시스템과 시간에 따라 변화하는 동적인

시스템이다.

Continuous/Discrete: 연속적 시스템/이산적 시스템으로 시간에

따라 연속적으로 변화하는 시스템과 시간의 어느 시점에서 만

변화하는 이산적 시스템이다.

정적/동적 시스템과 연속적/이산적 시스템의 분류에서 가장 중요한

요소는 시간이다. 시간을 어떻게 바라보느냐에 따라 시스템의 구분이

상이할 수 있다. 우리가 알고 있는 모든 시스템은 사실 모두 동적으로

어떤 것도 시간에 따라 변하지 않는 것은 없다. 그러나, 시스템을

바라보는 관점에 따라 어떠한 시스템은 정적으로 간주될 수도 있다. 또한,

모든 시스템은 자세히 관찰한다면 시스템의 본질이 시간에 따라

연속적으로 변하는 것으로 생각할 수 있다. 그러나, 우리가 관심을 두는

시스템의 중요한 몇 가지 특성을 좀더 매크로 하게 본다면 이러한 변화는

이산적으로 간주 될 수 도 있다.

모델이란?

모델이란 어떤 행위가 발생하였을 때 무슨 일이 일어나는지를 예측하기

위한 대상 시스템의 묘사이다. 대부분의 경우 함축화(abstraction)되고,

단순화(simplification)되고 이상적(idealization)으로 묘사되어, 우리가 실제

시스템을 쉽게 이해할 수 있도록 도와주는 역할을 한다.

Page 7: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

3

시스템은 다양한 구성요소로 구성되어 있는 복잡한 집합체이다. 이러한

시스템을 묘사하기 위해서는 그 시스템에 내재하여 있는 성질을

파악하여야 하고, 우리가 이해할 수 있는 표현 도구를 사용하여야 한다.

한다. 이러한 일련의 일을 모델링이라고 한다.

모델은 다음과 같이 분류될 수 있다.

Physical/Conceptual (물리적 모델/ 개념적 모델)

Simulation/Analytical (시뮬레이션 모델/ 해석적 모델)

Static/Dynamic (정적 모델/ 동적 모델)

Deterministic/Stochastic (확정적 모델/ 확룰적 모델)

Discrete/Continuous (이산적 모델/ 연속적 모델)

물리적/개념적, 정적/동적, 이산적/연속적 모델의 분류는 시스템에서의

분류와 유사하다. 해석적 모델에서는 주로 수학적 표현방법에 기초하여

시스템을 모델링한다. 그러나 시스템이 복잡해 질수록 수학적 기호를

사용하여 모델링하기가 어려워진다. 수학적 기호는 매우 추상적이고,

단순한 특성을 가지기 때문에 고도의 압축을 사용하여 시스템의 특별한

에센스 만을 표현할 수 밖에 없다. 물론, 모델링은 시스템의 모든 것을

표현하는 것은 아니다. 모델링의 목적에 맞추어 시스템의 중요한 부분

만을 표현하게 된다. 그러나, 모델링 대상이 되는 시스템의 세부적인

부분을 놓칠 경우 에센스를 묘사하는 것이 불가능한 경우가 발생한다.

이러한 세부적인 특성들을 묘사하기 위한 방법으로 시뮬레이션 모델링이

보편적으로 이용된다.

확정적 모델과 확률적 모델의 구분에서 중요한 요소는 불확실성이다.

모든 시스템은 불확실성을 내포하고 있다고 해도 과언은 아니다. 그러나,

모델링의 단순성, 조작성 등을 목적으로 불확실성을 배제하고,

확정적으로 가정하여 모델을 만드는 경우가 발생한다. 운영과학에서

중요한 주제 중의 하나인 선형계획법이 좋은 예가 될 것이다.

선형계획법에서 모델은 불확실성이 없는 확정적인 것으로 만들고 더욱이

결정변수들이 선형의 관계식을 갖는다고 가정한다. 확률적 모델은

시스템의 불확실성을 포함하고 있어, 확정적 모델에 비해 보다 자세한

모델로 인식될 수 있다. 확률적인 요소는 대부분의 경우 확률, 통계

이론을 바탕으로 표현된다.

시뮬레이션이란?

오늘날 시뮬레이션 분석은 문제 해결 방법의 강력한 도구로 인식되고

있다. 시뮬레이션은 통계적 샘플링 이론과 복잡한 확률적 물리체계에

기원을 두고 있다. 이 두 분야에서 공통적인 것은 난수의 이용과 근사적

해를 도출하기 위한 랜덤 샘플링이다. 랜덤 샘플링의 유명한 응용 중의

하나는 2 차 세계대전 중에 발생했다. 이 때 시뮬레이션은 원자 폭탄을

개발하기 위해 랜덤의 성질을 가지는 중성자 융합을 연구하는데

응용되었다. 오늘날 Monte Carlo 라고 부르는 이러한 방법은 난수를

이용한 실험적 수학의 한 분야를 이루었다. 오늘날 시스템

시뮬레이션이라고 일컬어 지는 분야는 보다 실용적인 분석 방법으로

의사결정을 위한 중요한 도구로 대두되었다.

시뮬레이션 분석 방법을 보다 강력한 도구로 만드는데 기여한 것은

컴퓨터이다. 컴퓨터의 빠른 계산 속도는 복잡한 모델을 표현 가능토록

Page 8: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

4

하였다. 따라서, 모델을 표현토록 하는 컴퓨터 프로그래밍이 중요한

핵심적인 기술이다. 부가적으로 모델링 능력, 확률 및 통계 이론, 경험적

방법(heuristic method) 등이 시뮬레이션의 응용에 필요한 기술이 되고

있다.

시뮬레이션의 응용 분야는 역사적으로 생산 분야에서 유래 되었으나

점차 서비스 와 공공 분야로 확대되었다. 생산 분야에서 눈에 띄는 응용은

재고관리, 생산관리, 생산라인, 자재취급 시스템, 스켸쥴링 등이다.

서비스 및 공공 분야에서는 병원 서비스 체제, 수송시스템, 물류시스템

등에 응용되고 있다.

시뮬레이션과 모델링

어떤 사전의 정의에 따르면, simulate 라는 동사는 “어떤 것의 특성이나

모양을 흉내낸다” 의 의미이다. 그러나, 시뮬레이션 기법에서 요구되는

것은 겉 모양이 아니라 행위나 하는 일의 흉내이다. 컴퓨터에 기초한

시뮬레이션의 정의를 다음과 같이 내릴 수 있다.

“실제 시스템의 수학적 또는 논리적 모델을 설계하고, 컴퓨터를 이용한

실험을 하여 실제 시스템의 행위를 예측하고 설명할 수 있도록 하는 과정”

이 정의에 의하면 시뮬레이션에서 중요한 과정 중의 하나는 모델링이다.

실제 시스템의 행위를 자세하게 수학적, 논리적 모델로 만들어야 한다.

좋은 모델을 작성할 수 있는 능력이야 말로 시뮬레이션 분석의 성공을

쥐고 있는 열쇠가 된다. 또한, 모델은 효율적이고 효과적으로 컴퓨터

프로그램으로 표현되어야 한다. 그 다음으로 중요한 과정은 실험이다.

유용한 결과를 도출하기 위해 잘 계획된 실험이 필요하다. 시뮬레이션의

궁극적인 목적은 시스템의 행위를 예측하여 바람직한 의사결정을 내리는

것이다. 여러 대안을 비교 평가하여 의사결정자에게 유용한 정보를

제공하여야 한다

모델은 실제 시스템의 모든 것을 표현하지는 않는다. 중요한 것은 목적에

맞게 모델을 작성하여야 하는 것이다. 어느 정도 자세하게 시스템을

표현할까 하는 것(level of detail) 역시 목적에 맞게 설정되어야 한다.

시뮬레이션 분석절차

시뮬레이션 프로젝트의 수행절차는 다음의 8단계로 구성된다.

1) 문제 정의 및 계획 수립

2) 데이터 수집 및 모델 정의

3) 모델 유효성 검증(validation)

4) 컴퓨터 프로그램 작성 및 유효성 검증(verification)

5) 실험계획 수립

6) 실험

7) 결과 분석

8) 문서화 및 실행안 수립

Page 9: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

5

2 난수

난수(random number)는 0 부터 1 까지의 실수로 이 범위의 어느 실수도

생성될 확률이 동등한 것을 의미하여 우리가 예측할 수

없고(unpredictable), 시간에 따라 변하지 않는(time invariant) 특성을

가진다. 이렇게 완벽한 이론적인 난수(genuine random number)를

인위적으로 생성하기는 불가능하다. 우리가 생성할 수 있는 난수에는

다음 세가지 경우가 있다.

진정한 난수 (Truly random number)

가상난수 (Pseudo random number)

준난수 (Quasi random number)

진정한 난수는 산술적인 방법에 의해 구하는 것이 아니라, 자연 현상 그

자체로부터 생성하는 것이다. 주로 방사성 붕괴, 대기 소음 등의 물리적인

현상으로부터 난수를 생성한다. 부가적인 정보는 인터넷을 통해 진정한

난수를 제공하는 RANDOM.ORG 에서 확인할 수 있다. 반면 가상난수는

산술적인 방법에 의해 구할 수 있는 방법으로 수치적 알고리즘을

컴퓨터에서 실행시켜 난수를 만든다. 당연히 이러한 난수들은 진정한

의미의 난수가 아니라 난수 처럼 보이도록 하는 것에 불과하다. 준난수는

가상난수와 같이 산술적인 방법에 의해 구하나 균일분포에 따르도록

일정한 패턴의 난수 생성을 목적으로 한다. 그림 2.1은 생성된 가상난수와

준난수들을 이차원 상에 나타낸 것이다. 그림에서 보듯이 준난수들은

가상난수에 비해 균일하게 분포되어 있는 것을 알 수 있다. 그러나, 비록

균일하게 분포되어 있지만, 진정한 난수라고 보기 어렵다. 규칙적인

패턴을 가져 우리가 예측할 수 있는 가능성이 있기 때문이다.

그림 2 . 1 가상 난수와 준 난수

이 문서에서는 가상 난수를 생성하는 방법을 소개하는데 목적이 있다.

좋은 가상난수의 생성은 다음의 특성을 가져야 한다.

난수들은 0부터 1사이의 균일분포(uniform distribution)를 가진다.

효율적으로(빠르게) 난수를 생성할 수 있다.

서로 다른 난수를 많이 생성할 수 있다.

생성된 난수들을 순서대로 똑 같이 재생성할 수 있다.

Page 10: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

6

가상 난수 생성 방법

중앙제곱 방법

만약, 소수점 2자리의 난수들을 생성한다면 난수들은 0.00 부터 0.99까지

100 개의 실수로 구성된다. 소수점을 고려치 않는다면 단지 0 부터

99 까지의 정수들을 생성하는 것과 동일하다. 중앙제곱 방법에서는

소수점 n자리의 난수를 생성하기 위하여 n자리의 정수로 구성된 난수를

구한다.

우선, n자리로 구성된 정수 0R 를 초기치로 한다(초기치를 seed라고 한다).

i 번째 정수 iR 를 제곱하여 2n 자리수의 정수 iT 를 구해 중간에 위치한

n자리수를 뽑아 다음 정수 1iR 을 생성한다.

예) 소수점 4자리의 난수를 생성하자. 초기치를 45520 R 로 한다.

I iR 2

ii RT 1iR 난수

0 4552 18079504 0795 0.0795

1 0795 00632025 6320 0.6320

2 6320 39942400 9424 0.9424

3 9424 88811776 8117 0.8117

Linear Congruential Generator (LCG)

Linear congruential 방법은 1948년 D.H. Lehmer에 의해 제안된 방법으로

0 부터 최대 1m 까지의 서로 다른 정수를 생성하기 위하여 다음

생성식을 이용한다.

mcaRR jj mod )(1

이 식에서 a 를 multiplier, c 를 increment, m 을 modulus 라고 하여 이를

LCG(m, a, c, R0)로 표기한다. 이 생성된 정수를 이용하여 0부터 1사이의

난수는 mRU jj /11 으로 구한다.

예) 5,30 mRca (LCG(5,3,3,3)인 Linear congruential 방법에 의해

난수를 구하자.

5 mod )33(1 jj RR

i iR 1iR 난수

0 3 (33 + 3) mod 5 = 12 mod 5 = 2 2/5 = 0.4

1 2 (32 + 3) mod 5 = 9 mod 5 = 4 4/5 = 0.8

2 4 (34 + 3) mod 5 = 15 mod 5 = 0 0/5 = 0.0

3 0 (30 + 3) mod 5 = 3 mod 5 = 3 3/5 = 0.6

4 3

이 예에서 4 개의 서로 다른 난수가 반복적으로 생성되므로 한

사이클(cycle)의 기간(period)은 4이다. 이 기간은 항상 m(=5)보다 작거나

Page 11: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

7

같다. 한 사이클의 기간이 m인 경우를 full period의 난수 생성이라고 한다.

Full period를 갖는 생성기는 다음의 조건을 만족하여야 한다.

c와 m은 같은 수로 똑같이 나누어 지지 않는다. (예를 들어, 3과

5는 1이외의 다른 수로 똑같이 나누어 지지 않는다)

m의 각 소수(prime number) g에 대하여 a mod g = 1 이다.

만약 m이 4의 배수라면 a mod 4 = 1 이다.

예) 5의 Full period를 갖는 Linear congruential을 만들어 보자. 다음과 같은

파라미터를 사용하자.

3,5,3,6 0 Rmca

c와 m은 서로 소수이다. m의 소수는 5이므로 6 mod 5 = 1이다. 또한,

m은 4의 배수가 아니다. 때문에 full period의 조건을 만족한다.

I iR 1iR 난수

0 3 (63 + 3) mod 5 = 21 mod 5 = 1 1/5 = 0.2

1 1 (61 + 3) mod 5 = 9 mod 5 = 4 4/5 = 0.8

2 4 (64 + 3) mod 5 = 27 mod 5 = 2 2/5 = 0.4

3 2 (62 + 3) mod 5 = 15 mod 5 = 0 0/5 = 0.0

4 0 (60 + 3) mod 5 = 3 mod 5 = 3 3/5 = 0.6

위의 표에서 보듯이 한 사이클의 period는 5로 full period를 갖는다.

Multiplicative Congruential Generator

가상 난수 생성에서 가장 많이 사용되는 방법은 multiplicative congruential

이다. 0 부터 최대 m-1 까지의 정수를 생성하기 위하여 다음 생성식을

이용한다.

maRR jj mod )(1

Multiplicative congruential 방법은 linear congruential 방법에서 increment가

0인 경우로 이를 LCG(m, a, 0, 0R )로 표기한다.

예) Multiplicative congruential 방법에서 a = 15, 0R = 5, m = 8 으로 난수를

생성하자 (LCG(8, 15, 0, 5)).

8 mod )15(1 jj RR

I iR 1iR 난수

0 5 (15*5) mod 8 = 75 mod 8 = 3 3/8 = 0.4

1 3 (15*3 ) mod 8 = 45 mod 8 = 5 5/8 = 0.8

2 5 (15*5) mod 8 = 75 mod 8 = 3 3/8 = 0.4

위의 표에서 보듯이 한 cycle의 period 가 2인 난수들을 생성한다.

Multiplicative congruential generator 방법에 의한 난수 생성은 다음의

특징을 갖는다.

Page 12: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

8

컴퓨터 기계에 의존한다.

mRa ,, 0 이 다음과 같을 때 4/m 의 사이클을 갖는다.

a = 8t 3, t = 1,2,3,…

0R = 홀수

bm 2 , b는 부호 비트를 제외한 한 word표현 비트 수

ma, 이 다음과 같을 때 m-1의 사이클을 갖는다.

m은 소수이다.,

1/)1( pma 이 1m 의 각 소수 p에 대한 배수이다.

이 특징들은 난수의 생성이 기본적으로 컴퓨터가 한 word를 표현할 수

있는 비트수에 의존함을 의미한다.

예) 한 word를 5 bit로 표현하는 컴퓨터가 있다고 하자. m/4의 period를

갖는 m은 24 = 16 이다. a = 8t +3에서 t가 1이면 a는 5이다.

16 mod )5(1 jj RR

I iR 1iR 난수

0 15 (5*15) mod 16 = 75 mod 16 = 11 11/16 = 0.4

1 11 (5*11) mod 16 = 55 mod 16 = 7 7/16 = 0.8

2 7 (5*7) mod 16 = 35 mod 16 = 3 3/16 = 0.1875

3 3 (5*3) mod 16 = 15 mod 16 = 15 15/16 = 0.9375

4 15 (5*15) mod 16 = 75 mod 16 = 11 11/16 = 0.4

Multiplicative 방법에서 seed 가 0 이라면 생성되는 모든 난수는 0 이다.

만약, seed가 0이 아니고, m이 소수라면 iR 는 0이 되지 않는다. 예를 들어,

m = 11, a = 7, seed = 1이라면 생성되는 난수는

7, 5, 2, 3, 10, 4, 6, 9, 8, 1, 7, 5, 2, …

이다. 즉, 10개의 난수들이 반복 생성되어 1m 의 period를 갖는다. m이

소수일 경우 a를 잘 선택하면 1m period의 난수 생성을 가져온다. 물론

m 이 클수록 period 는 길기 때문에 가능한 큰 m 을 선택하는 것이

바람직하다. 우리가 사용하는 32 bit 기계에서의 가장 보편적인 Park 와

Miller 의 방법은 m = 2311 = 2147483647, a = 16807 을 사용하여 1m

period의 난수를 생성한다.

32 bit machine 에서 Park 와 Miller 의 방법을 구현할 때 overflow 문제가

발생한다. 현재 난수가 최대 값인 2312 라고 가정하자. 다음 난수는

2312 에 16807 을 곱하여야 한다. 이 결과값은 32 bit 를 초과하므로 32

bit에 이 수를 표현하면 음수로 나올 수 있다. 이 overflow 문제는 64bit의

정수형 데이터 공간(JAVA에서는 long 데이터 형태를 제공)을 사용하면

간단히 해결할 수 있다. 만약, 64 bit의 데이터 공간을 사용할 수 없다면,

Schrage의 방법을 사용하여 overflow 문제를 해결할 수 있다.

Page 13: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

9

Shuffling

난수 생성기로 생성된 난수들을 보다 더 랜덤의 성격을 갖도록 하기

위하여 부가적인 과정을 거칠 수 있다. Shuffling 은 이러한 부가적인

과정의 한 방법으로 다음과 같은 절차에 따른다.

1) N개의 난수를 생성하여 배열 A[0:n-1]에 저장한다.

2) 난수를 필요로 할 때 0부터 n-1까지의 수 중 하나인 p를 임의로

선택하여 배열 A[p]에 저장된 난수를 리턴한다.

3) A[p]에 새로운 난수를 생성하여 저장한다.

절차 1)과 같이 주어진 크기의 배열을 초기화한 후 난수를 필요로 할 때

마다 단계 2) 와 3)을 실행한다.

난수번호

0.577100

0.7897

0.1126

0.5625

0.7654

0.8643

0.1542

0.3421

Page 14: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

10

난수의 통계적 검정

카이제곱 적합도 검정

생성된 난수들이 균일 분포(uniform distribution)에 따르는지를

통계적으로 검증하기 위하여 적합도 검정을 한다. N 개의 난수들,

Nrrr ,,, 21 이 있다고 하자. 0 부터 1 까지를 같은 범위를 가지는 m 개의

구간으로 나누어 각 구간에 속하는 난수의 수에 대하여 chi square test를

수행한다. j번째 구간에 속하는 난수의 수에 대한 기대치를 ejf , 실험의

결과를 ojf 라고 하자.

m

jmN

oj

m

j ej

ejoj

o fN

m

f

ff

1

2

1

2

2)(

)(

만약 21,1

2 mo 이면 가설을 기각하는 결과 되어 난수들은 균일 분포에

따르지 않는다는 것을 의미한다.

일반적으로 난수의 총 갯수는 50 개를 넘어야 하고, 각 구간에 속하는

난수의 수는 최소한 5 개가 되어야 신뢰성이 있는 검사가 이루어 질 수

있다.

예) 50개의 난수를 생성하여 균일분포에 대한 chi-square test를 수행한다.

0 부터 1 까지를 5개 구간으로 나누었다. 각 구간에 속한 난수의 수는 다음

표와 같다.

J 구간 기대 빈도수

ejf

관측 빈도수

ojf ejejoj fff /)( 2

1 0.0 – 0.2 10 12 0.4

2 0.2 – 0.4 10 5 2.5

3 0.4 – 0.6 10 19 8.1

4 0.6 – 0.8 10 7 0.9

5 0.8 – 1.0 10 7 0.9

계 50 50 12.8

이러한 자료에 의한 가설은 다음과 같다.

5,4,3,2,1,2.0: ipH iO

8.122o 로서 488.92

05.01,4 보다 크므로 가설은 기각된다. 즉, 5%

유의수준에서 50개의 난수가 균일분포에 따른다는 가설은 기각된다.

Kolmogorov-Smirnov 검정

카이제곱 검정과 마찬가지로 Kolmogorov-Smirnov test 는 샘플들이

주어진 분포에 따르는지를 검정하는 것이다. 그러나, 이 검정은 이산적인

분포가 아닌 연속적인 분포 만을 대상으로 한다.

KS test는 경험적 누적분포함수(Empirical Cumulative Distribution Function:

ECDF)에 기초하고 있다. 다음과 같이 n개의 샘플들이 작은 값에서 큰 값

순으로 정렬되어 있다고 하자.

nXXX ,,, 21

ECDF 는 다음과 같이 정의된다.

Page 15: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

11

n

i

xXn iI

nxF

1

1)(

이 식을 풀어 쓰면 다음과 같이 된다.

n

iin

Xx

niXxXni

Xx

xF

,1

1,,1,/

,0

)( 1

1

위의 식에 따라 ECDF )(xFn 는 n/1 씩 증가하는 step 함수이다. 아래

그림은 100 개의 정규분포에 따르는 난수를 생성하여 ECDF 를 나타낸

것이다.

http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm

샘플들이 주어진 누적분포함수 )(xF 에 따르는지를 결정할 수 있는 척도

중의 하나는 )(xFn 와 )(xF 의 차이이다. 이 차이가 크면 두 분포는 서로

다를 것이고, 차이가 작으면 샘플들은 )(xF 에 근사할 것이다. 두 분포의

차이를 나타내는 다음과 같은 통계량을 고려하자.

)()(sup xFxFD nx

n

S sup 는 집합 S에 대한 supremum으로 S에 속하는 성분들의 값 중 가장

큰 값으로 간주될 수 있다. 이 통계량은 Kolmogorov 분포(인터넷에서

찾아볼 수 있음)에 수렴하여 KS test의 이론적 배경이 된다.

N 개의 난수들, Nrrr ,,, 21 이 non-decreasing order 로 정렬되어 있다고

하자(즉, 1 ii rr ). 다음 식에 의해 KS 통계치를 계산할 수 있다.

njrFnjnD jn ,,2,1)},()/max{(

njnjrFnD jn ,,2,1},/)1()(max{

이들 값들은 경험적인 CDF 와 가설에 속하는 이론적인 CDF 의 최대

차이이다. 이들을 주어진 표의 값들과 비교하여 만약 어느 하나가 주어진

신뢰 수준에서 너무 크거나 작으면 주어진 샘플이 CDF F 에서

도출되었다는 가설을 기각한다.

Page 16: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

12

KS 통계치 식의 유도

두 누적 분포함수의 차이를 나타내는 )()(sup xFxFD nx

n 을 구하기

위해 우선적으로 각 x에 대한 )()( xFxFn 을 구하여야 한다. ECDF 가

계단 모양의 step 함수이고, 누적 함수는 감소하지 않는 함수임을 고려할

때 )()( xFxFn 의 계산은 용이하게 수행될 수 있다. )()( xFxFn 의

최대치는 x가 nXXX ,,, 21 중 하나에서 발생하기 때문이다.

iXx 에서 발생할 수 있는 다음의 3 가지 경우를 고려하여 통계량을

구해보자.

경우 1) ninixF //)1()(

위 그림에서 보듯이 )()( xFxFn 의 최대치는 다음과 같다.

)(/})()(max{ in XFnixFxF

경우 2) ninixF /)1(/)(

x

누적확률

1/n

(i-1)/n

i/n

Xi Xi+1X1

i/n-F(Xi)

F(x)

x

누적확률

1/n

(i-1)/n

i/n

Xi Xi+1X1

F(Xi)-(i-1)/n

F(x)

Page 17: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

13

위 그림에서 보듯이 )()( xFxFn 의 최대치는 다음과 같다.

nixFxFxFn /)1()(})()(max{

경우 3) nixFni /)(/)1(

위 그림에서 보듯이 )()( xFxFn 의 최대치는 다음과 같다.

}/)1()(),(/max{})()(max{ nixFxFnixFxFn

위의 3 경우에서 보듯이 각각의 iXx 에서

}/)1()(),(/max{ nixFxFni 들을 구한 후 이들 값 중 가장 큰 값을

선택하면 된다. 이를 다시 정리하면 KS test 의 통계량을 구하는 방법은

다음과 같다.

},max{ DDDn

)}(/{max1

inx

XFniD

}/)1()({max1

niXFD inx

런 상하향 검정 (Runs up and down test)

일련적으로 생성된 난수들에 대하여 연속적으로 큰 수가 나오는 경우가

많은지 또는 연속적으로 적은 수들이 나오는 경우가 많은지를 조사한다.

일련적으로 생성된 난수들에 대하여 이전 수보다 큰 난수가 생성되면 +,

이전 보다 적은 수가 생성됐으면 – 부호로 표현하자.

R 을 부호가 바뀐 횟수라고 하면 이는 다음의 기대치와 분산을 가지는

정규분포에 따른다.

90

2916][,

3

12][

NRV

NRE

x

누적확률

1/n

(i-1)/n

i/n

Xi Xi+1X1

F(x)

F(Xi)-(i-1)/n

i/n-F(Xi)

Page 18: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

14

예) 두자리 수의 난수 21개가 다음과 같은 순서로 생성되었다.

I 난수 부호 i 난수 부호 i 난수 부호

1 43 8 11 - 15 87 +

2 32 - 9 14 + 16 54 -

3 48 + 10 67 + 17 01 -

4 23 - 11 61 - 18 64 +

5 90 + 12 25 - 19 65 +

6 72 - 13 45 + 20 32 -

7 94 + 14 56 + 21 03 -

R = 13

41111.390/30790/)292116(][

6667.133/413/)1212(][

RV

RE

36098.041111.3

6667.1313

][

][

RV

RERZ

5% 유의수준에서의 Z 값은 1.645 로서 랜덤의 runs up and down 은

채택된다.

일련 상관 겁정 (serial correlation test)

연속적인 난수들이 서로 독립적인지를 조사한다. n 개의 연속적인

난수들에 대한 Serial correlation coefficient는 다음과 같다.

2

11

2

1

1 1

21

)(

)(

n

i

i

n

i

i

n

i

n

i

iii

RRn

RRRn

c

만약 연속적인 난수들이 서로 독립적이라면 이 값은 다음과 같은

기대치와 분산을 갖는 정규분포로 가정할 수 있다.

1

)1)(3(][

1

1][

n

nnncV

ncE

통계량 c 를 구하고 이를 z 값으로 변환하여 통계적으로 검증할 수 있다.

Page 19: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

15

3 확률변수 값 생성

0 부터 1 까지의 균일 분포에 따르는 난수를 이용하여 주어진 분포에

따르는 확률변수를 생성하는 방법을 설명한다. 확률변수 생성의 특성상

연속적 확률변수와 이산적 확률변수로 나누어 설명한다.

연속적 확률변수 생성방법

역변환 방법

확률변수 x가 연속적인 확률밀도 함수(Probability Density Function: PDF)

)(xf 에 따른다고 하자. 이러한 PDF를 만족하는 확률변수 x를 생성하기

위한 가장 일반적인 방법은 역변환(inverse transform)방법이다. 역변환

방법은 우선 누적분포함수(Cumulative Distribution Function: CDF) )(xF 를

구한다. CDF는 x의 모든 범위에서 0부터 1까지의 범위를 가지므로 난수

u를 생성하여 이를 )(xF 값으로 치환하고, 이에 대응되는 x값을 구한다.

)(

)(

1 uFx

xFu

x

y

0

1

U

F-1(U)

Y=F(x)

그림 3 . 1 역변환에 의한 확률변수 생성

정리) u 를 0 부터 1 까지의 균일분포를 갖는 확률변수라고 하자. 어느

연속적인 누적분포함수 F 에 대해 다음과 같이 정의된 x 는 F 를

누적분포함수로 갖는다.

)(1 uFx

증명) xF 를 )(1 uFx 의 누적 분포함수라고 하면 다음 관계가 성립한다.

])([)()( 1 xuFPxXPxFx

F 는 누적 분포함수이므로 x 값에 따라 증가하는 함수(non-decreasing

function)이다. 때문에 ba 의 관계는 )()( bFaF 와 동일하므로 다음

관계가 성립된다.

Page 20: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

16

)()]([)]())(([])([ 11 xFxFuPxFuFFPxuFP

채택/기각 방법

PDF )(xg 를 가지는 확률변수를 생성하는 방법을 갖고 있다고 하자. 이를

이용하여 또 다른 PDF )(xf 를 가지는 확률변수를 생성할 수 있다. c 를

다음과 같은 상수라고 하자.

ycyg

yf allfor ,

)(

)(

)(xf

)(xcg

x

그림 3 . 2 채택 /기각 방법

다음과 같은 알고리즘에 의해 PDF f에 따르는 확률변수 X를 생성한다.

Algorithm: AcceptanceRejection

단계 1: PDF )(Yg 를 가지는 확률변수 Y를 생성한다.

단계 2: 난수 u를 생성한다.

단계 3: 만약 )(

)(

Ycg

Yfu 이면 YX , 아니면 단계 1로 간다.

즉, 알고 있는 PDF에 의한 난수 Y를 생성하여 이를 구하고자 하는 PDF

)(xf 의 난수로 할 것인지를 결정한다. 이를 위해 또 다른 난수를

생성하여 난수가 알고 있는 PDF 곡선안에 포함되면 채택하고 아니면

기각한다. 채택될 때까지 이러한 절차를 반복한다.

채택/기각 방법 유효성

난수를 이용하여 0 부터 1/2 사이의 균일분포에 따르는 확률변수 값을

생성해 보자. 첫 번째 방법은 난수 U에 1/2를 곱하는 것이다. 누구도 이

방법이 우리가 원하는 확률변수 값을 생성하리라는 데 이의가 없을

것이다. 난수는 0부터 1 사이의 균일분포에 따르므로 PDF는 다음과 같다.

10 ,1)( uug

난수의 값에 1/2를 곱한 ux 5.0 의 PDF는 쉽게 구할 수 있다.

5.00 ,2)( xxf

Page 21: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

17

따라서, 난수에 1/2을 곱한 값은 0부터 1/2사이의 균일분포에 따르고, 이

분포가 바로 우리가 구하려고 하는 확률변수의 PDF이다. 또한, 이 방법은

Inverse transform 방법과 일치한다. x의 CDF는 다음과 같으므로

5.00 ,2)( xxxF

Inverse transform 에 의하면 다음 식을 유도할 수 있기 때문이다.

uxxxFu 5.02)(

0 부터 1/2 사이의 균일분포에 따르는 확률변수 값을 생성하는 다음의 두

번째 방법을 알아보자.

단계 1: 난수 U를 생성한다.

단계 2: 만약 5.0U 이면 UX 로 출력하고 정지하고 아니면 단계 1로

간다.

즉, 0.5 보다 작은 수가 나올 때까지 난수 생성을 반복한다. 이 방법도

직관적으로 볼 때 올바른 것이라는 생각이 들 것이다. 위 알고리즘은

Accept-Reject 방법을 쉽게 응용한 것이다. 원래의 Accept-Reject에 근거한

방법은 다음과 같다. PDF 를 나타낸 아래 그림에서와 같이 0 부터 1

사이의 x 범위에서 )()(2 xfxg 관계가 성립한다. 단 )(xf 을 다음과

같이 재정의한다.

그림 3 . 3 채택 /기각

15.0.0

5.00,2)(

x

xxf

Accept-Reject에 의한 알고리즘이다.

단계 1: )(xg 에 따르는 X를 생성한다.

단계 2: 난수 U 를 생성한다. 만약 )(2

)(

Xg

XfU 이면 XY , 아니면 단계

1로 간다.

왜 이 방법이 항상 올바른 확률변수 값을 생성하는지 알아보자.

알고리즘에 의해 생성되는 Y 의 확률 분포는 다음의 조건 확률식에

따른다.

)|()()(

)(

XCg

XfUyXPyYP

0 1

1

2

0.5

5.00 ,2)( xxf

x

)(2 xg

10 ,1)( xxg

Page 22: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

18

이 식을 풀어 쓰면,

y

xcgxf

y xcgxf

XCg

Xf

XCg

Xf

XCg

Xf

dxxf

dudxxg

dudxxg

UP

UyXPUyXP

)(

)(

)(

)(

),()|(

)(/)(

0

)(/)(

0

)(

)(

)(

)(

)(

)(

결국 조건부 확률분포는 우리가 구하려는 확률 변수 x 의 CDF 와

일치한다. 따라서, Accept-reject 에 의한 위의 방법은 항상 옳다.

Accept-Reject 방법을 사용하는데 있어 중요한 문제 중의 하나는 우리가

쉽게 생성할 수 있는 확률 변수의 PDF )(xg 와 상수 c를 어떻게 선정하는

가이다. Beta(2, 4) 분포에 해당하는 다음의 PDF 를 갖는 확률 변수를

생성해 보자.

10 ,)1(20)( 3 xxxxf

변수의 범위가 0부터 1 사이 이므로 )(xg 를 단순히 균일분포인 난수로 할

수 있다.

10 ,1)( xxg

cxgxf )(/)( 인 상수 c를 구하기 위해

3)1(20)(

)(xx

xg

xf

이 식을 미분하여 0으로 놓으면

0])1(3)1[(20)(

)( 23

xxx

xg

xf

dx

d

따라서, 41x 이 되어 c를 다음과 같이 구할 수 있다.

cxg

xf

641353

43

41 ))((20

)(

)(

3)1(27

256

)(

)(xx

xcg

xf

최종적으로 다음의 알고리즘에 의해 확률변수를 생성한다.

단계 1: 난수 1U 과 2U 를 생성한다.

단계 2: 만약 31127

2562 )1( UUU 이면 1UX , 아니면 단계 1로 간다.

또 다른 예로 정규분포를 고려해 보자. 우선, 정규분포 확률변수의

절대값을 x라 하자.

xexf x 0 ,2

2)( 2/2

)(xg 를 평균이 1인 지수분포로 하자.

xexg x 0 ,)(

위 두 식의 비율은,

2/2

/2)(

)( xxexg

xf

위 식의 최대 값은 1x 일 때 /2c 이다.

Page 23: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

19

2

)1(exp

2

1

2exp

)(

)( 22 xxx

xcg

xf

최종적으로 다음의 알고리즘에 의해 확률변수를 생성한다.

단계 1: 평균 1의 지수분포에 따르는 확률변수 Y를 생성한다.

단계 2: 난수 1U 을 생성한다.

단계 3: 만약 2/)1(exp 21 YU 이면 YX , 아니면 단계 1로 간다.

단계 4: 난수 2U 를 생성한다.

단계 5: 만약 2/12 U 이면 XX

Page 24: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

20

연속적 확률분포

균일분포(Uniform distribution)

역변환 방법에 의해 다음과 같이 균일분포를 갖는 난수를 구할 수 있다.

)(

1)(

,1

)(

abuax

uab

axdy

abxF

bxaab

xf

x

a

지수분포(Exponential distribution)

역변환 방법을 사용하여 다음과 같이 지수분포를 갖는 난수를 구할 수

있다.

)1log(1

)1log(,1

1)(

0,)(

00

ux

uxue

ueedtexF

xexf

x

xxtx t

x

u 는 0 부터 1 까지의 균일분포를 가지므로 log(1–u)의 확률 분포는

log(u)의 확률 분포와 동일하다.

와이블분포(Weibull distribution)

Weibull 분포의 확률변수는 다음과 같은 PDF를 가진다.

0,)()(1

xexxfx

CDF는 다음과 같다.

0,1)()(

xexFx

이 식은 단순하여 역변환 방법으로 확률변수 값을 구할 수 있다.

)1ln(

)1ln(

1

1)(

)(

)(

ux

ux

ue

uexFx

x

삼각분포(Triangular distribution)

a부터 c사이의 값을 갖고, b가 최빈값인 삼각분포의 PDF는 다음과 같다.

Page 25: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

21

cxbbcac

cx

bxaabac

ax

xf

,))((

)(2

,))((

)(2

)( 2

CDF는 다음과 같다.

cxbbcac

cx

bxaabac

ax

xF

,))((

)(1

,))((

)(

)(2

2

이식으로부터 역변환 방법으로 확률변수 값을 생성할 수 있다.

cxbbcacuc

bxaabacuax

,))()(1(

,))((

Erlang 분포

Erlang 분포의 확률변수는 다음의 PDF를 가진다.

0,)!1/()()( 1 xnxexf nx

CDF는 다음과 같다.

xdyn

yexF

xny

0,)!1(

)()(

0

1

이식은 복잡하여 역변환을 위한 식을 유도하기가 불가능하다. 그러나,

Erlang 분포(n, )의 확률변수 x 는 평균 를 갖는 n 개의 독립적인

지수분포가 합해진 결과라는 사실을 이용하여 생성될 수 있다.

n 개의 독립적인 난수 niU i ,,2,1, 을 생성하였다고 하자. 이들

난수들을 지수분포의 확률변수로 변환하여 합한 X 는 Erlang 분포에

따른다.

)log(1

log1

log1

11 nn UUUUX

Gamma 분포

감마 분포의 PDF는 다음과 같다.

0),(/)()( 1 xkxexf kx

일반적으로 다음과 같이 정의되는 를 shape parameter라고 부르고, 를

scale parameter라고 부른다.

1, k

이 분포에서 감마 함수는 다음의 성질을 갖는다.

Page 26: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

22

1)

0

1)( dtetk tk

2) )1()1()( kkk

3) 1)1(

4) 만약 k가 정수라면 )!1()( kk 이다.

k 가 정수이면 Erlang 분포이다. 특히, k 가 1 이면 지수분포이다. k 가

실수인 경우 Gamma 분포라고 부른다.

k가 0 부터 1 까지인 실수에 대해 gamma 값을 알고 있다면, 그 외 실수

값에 대한 gamma 값은 용이하게 구할 수 있다. 예를 들어, k가 4.3이라면

)3.0()3.0)(3.1)(3.2)(3.3(

)3.1()3.1)(3.2)(3.3()3.2()3.2)(3.3()3.3()3.3()3.4(

또한, 다음의 감마함수 특성에 의해 0 부터 0.5 사이의 실수에 대한 감마

함수 값을 가지고 있으면 모든 실수의 감마함수 값을 구할 수 있다.

)sin()1()(

kkk

0 부터 0.5 사이의 감마함수 값은 approximation(예, Lanczos)에 의해 구할

수 있다.

표준 감마 분포는 1 인 경우로서 k 만의 파라미터를 갖는다. 다음

방법은 채택/기각에 근거하여 표준 감마 분포의 난수를 구하는 것으로 이

난수를 로 나누면 원하는 감마분포의 난수를 구할 수 있다.

1) 1k 인 경우 지수 분포에 의한 난수를 구한다.

2) 10 k 인 경우

단계 1: e

kev

)(1

딘계 2: 난수 21,uu 를 생성한다.

단계 3: 112 uvv

단계 4:

4.1 만약 12 v 이면 k

vx/1

2

만약 xev 2 이면 x 를 리턴하고 정지한다. 그렇지

않으면 단계 2로 간다.

4.2 만약 12 v 이면 )/]ln([ 21 kvvx

만약 1

2 kxv 이면 x 를 리턴하고 정지한다. 그렇지

않으면 단계 2로 간다.

3) 1k 1인 경우

단계 1: 75.03 kc

딘계 2: 난수 1u 을 생성한다.

단계 3: 112111 /)5.0(),1( vcuvuuv

단계 4:

4.1 만약 012 vkx 이면 단계 2로 간다.

4.2 그렇지 않으면 난수 2u 를 생성한다.

Page 27: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

23

2

2

3

13 64 uvv

만약 xvv /212

23 또는 })]1/(ln[]1{[2ln 23 vkxkv

이면 x 를 리턴하고 정지한다. 그렇지 않으면 단계 2 로

간다.

정규분포

채택/기각 방법

표준 정규분포(평균이 0이고 분산이 1인 정규분포)에 따르는 확률변수를

생성하기 위하여 확률변수의 절대값 x에 대한 PDF를 고려하자.

xexf x 0,2

2)( 2/2

채택/기각 방법에 의해 표준 정규분포의 확률변수를 구하기 위해

지수함수 g를 밀도함수로 갖는 확률변수를 하자.

xexg x 0,)(

그러면,

2/22

)(

)( xxexg

xf

로서 이 함수의 최대값은 1x 일 때이다. 즉,

/2)1(

)1(

)(

)(Max e

g

f

xg

xfc

이므로

2

)1(exp

2

1

2exp

)(

)( 22 xxx

xcg

xf

이다. 이 수식을 이용하여 표준 정규분포에 따르는 확률변수의 절대값을

생성하기 위한 알고리즘은 다음과 같다.

Algorithm: Normal1

단계 1: 평균 1을 갖는 지수분포의 확률변수 Y를 생성한다.

단계 2: 난수 U를 생성한다.

단계 3: 만약, }2/)1(exp{ 2 YU 이면 YX , 아니면 단계 1로 간다.

이 알고리즘에 의한 X 는 표준 정규분포에 따르는 확률변수의

절대값이므로 X 와 –X 의 생성 확률을 같게 하여 우리가 원하는 표준

정규분포의 확률변수를 생성할 수 있다. 또한, 단계 3 에서의 식을

변형하면 2/)1(log 2 YU 가 된다. Ulog 는 평균 1 의 지수분포

확률변수를 역변환에 의해 생성하는 수식이다. 따라서 표준정규분포의

확률변수를 생성하는 알고리즘은 다음과 같이 요약될 수 있다.

Algorithm: Normal2

단계 1: 평균 1을 갖는 지수분포의 확률변수 Y1을 생성한다.

단계 2: 평균 1을 갖는 지수분포의 확률변수 Y2를 생성한다.

단계 3: 만약, 02/)1( 212 YY 이면 단계 4로 간다.

아니면 단계 1로 간다.

단계 4: 난수 U를 생성하여 다음 식에 의해 Z을 생성한다.

Page 28: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

24

21

1

21

1

if ,

if ,

UY

UYZ

표준정규분포의 확률변수 Z을 이용하여 일반적인 정규분포 ),( 2N 의

확률변수를 생성하는 방법은 간단하다. 단지 Z 을 하면 된다.

중심극한정리를 이용한 방법

n 개의 난수를 생성하여 이들을 더하면 이 값은 n 이 클수록 중심 극한

정리(central limit theorem)에 의해 정규분포에 근사한다. 이 성질을

이용하여 정규분포 ),( 2N 를 갖는 확률변수를 근사적으로 구할 수

있다. 확률변수 X를 다음과 같다고 하자.

n

i

iUX1

X는 근사적으로 평균 2/n , 분산 12/n 을 갖는 정규분포에 따른다. 특히

n 이 12 라면 분산의 값이 간단해져 X 는 근사적으로 N(6, 1)에 따른다.

이를 표준정규분포로 변환하면

1

12

1

i

iUx

Z

이므로 다음 식에 의해 확률변수 X를 생성할 수 있다.

)6(12

1

i

iUX

Box-Miller 방법

정규분포의 확률변수를 생성하는 가장 일반적인 방법은 극좌표에 의한

방법이다. X와 Y를 표준 정규분포에 따르는 독립적인 확률변수라고 하고,

R과 를 벡터 (X,Y)의 극좌표라고 하자. 즉,

X

Y

YXR

tan

222

X와 Y는 독립이므로 결합 확률 밀도 함수는 다음과 같다.

2/)(2/2/ 2222

2

1

2

1

2

1),( yxyx eeeyxf

이 밀도함수를 R 과 의 식으로 변환하기 위하여 다음과 같이 변수

치환을 한다.

x

yyxd 122 tan,

변수 치환에 의해 밀도함수를 구하면,

20,0,2

1

2

1),( 2/

,2 dedf d

R

이 식은 결합 확률밀도함수가 평균 2 를 갖는 지수분포와 (0, 2)의

균일분포 확률변수들의 곱으로 표현됨을 알 수 있다. 즉, 각 분포에 따라

서로 독립적인 R 과 를 구한 후 다시 변수 치환식에 의해 표준

정규분포에 따르는 두 확률변수 X, Y를 구할 수 있다.

Page 29: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

25

Algorithm: Normal3

단계 1: 난수 1U 과 2U 를 생성한다.

단계 2: 212 2,log2 UUR

단계 3: )2cos(log2cos 21 UURX

)2sin(log2sin 21 UURY

이 알고리즘의 단계 3에 있는 식을 Box-Muller 변환식이라고 한다.

Lognormal 분포

Lognormal 분포에 따르는 확률변수 x의 정의는 다음과 같다.

)exp( bZaX

위 식에서 Z은 표준 정규분포에 따르는 확률변수이고 b > 0이다. 따라서,

표준 정규 분포에 따르는 확률 변수 Z 을 생성하여 위 식에 의해 X 를

생성할 수 있다.

Logistic 분포

Logistic 분포에 따르는 확률변수 x의 PDF와 CDF는 다음과 같다.

0),)(exp()()( 1 xxxcxf cc

0),)(exp(1)( xxxF c

역변환 방법에 의한 식은 다음과 같다.

/))1log(( /1 cUX

경험적 분포

확률변수의 분포 추정이 곤란한 경우 주어진 데이터를 이용한 경험적

분포에 의해 확률변수를 생성할 수 있다.

X의 모든 범위 중 n개의 값을 선택하여 nxxxx ,,,, 210 으로 하고, 각 ix 에

대한 CDF )( ixF 를 구하여 nixFx ii ,,2,1)),(,( 을 저장한다. 이 저장된

값들을 이용하여 역변환 방법과 같이 확률변수를 생성한다. 즉, 난수를

생성하여 이 값이 포함되는 )( ixF , )( 1ixF 를 찾는다. 마지막으로

선형보간법에 의해 근사적인 확률변수 값을 구한다.

)()()(

)(1

1

1ii

ii

ii xx

xFxF

uxFxx

Page 30: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

26

그림 3 - 4 경험적 분포

Non-stationary 포아슨 분포에 의한 도착 시간 간격

)(tN 를 시각 0에서부터 t까지 도착한 고객의 수라고 하자. )(tN 가 다음

가정을 만족하면 순간 도착율 함수(instantaneous arrival rate function) )(t

를 갖는 Non-stationary Poisson process이다.

1) 0)0( N

2) }0,),()({ sttNstN 는 과거 프로세스 }),({ tuuN 에 독립적이다.

3) )(0}2)()(( htNhtNP

4) httNhtNP )(}1)()((

위의 가정으로부터 다음 식과 같은 Non-stationary Poisson 분포를 구할 수

있다.

,2,1,!

))(())(( )( n

n

tmentNP

ntm

where t

dsstm0

)()(

즉, )(tm 는 프로세스의 평균값이다.

Non-stationary Poisson 분포에 따르는 고객의 도착 형태에서 고객의 도착

시간(t)의 분포는 다음과 같이 용이하게 유도할 수 있다.

)(1)0)(()( )( tFetNPtTP tm

누적분포함수는 )(1)( tmetF 이다. 이 함수를 미분하면 확률밀도함수를

구할 수 있다. )()()( tmettf

Non-stationary Poisson process 에서 고객간 도착 시간을 생성하는

방법에는 두가지가 있다. 첫번째는 acceptance-rejection에 근거한 thinning

방법이고, 두번째는 역변환 방법이다.

Thinning by rejection 방법(Lewis and Shedler (1979)

현재 시각을 s라고 하자.

1) 현재 시각 이후의 시점에서 max)( t 인 max 선택

Page 31: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

27

2) 우리의 max/1 를 평균으로 하는 지수 분포 확률변수 X 생성

3) 난수 U 생성

4) 만약 max/)( XsU 이면 Xs 를 리턴, 아니면 Xss , 단계

1로 간다.

역변환 방법

역변환 방법을 위하여 누적분포함수가 정의되어야 하고, 난수 U 를

이용한 식을 유도하여야 한다. Non-stationary Poisson 분포에 따르는

고객의 도착 형태에서 고객의 도착 시간(t)의 누적분포함수는 이미 정의된

바와 같다.

UetF tm )(1)(

)1log()( Utm

)}1log({1 Umt

위 식에서 t는 시각 0에서 시작할 때 첫번째 도착이 발생하는 시간이다.

U 는 0 부터 1 사이의 난수이므로 )1log( U 는 평균 1 을 갖는

지수분포에 따르는 확률변수 값을 의미한다. 임의의 시각 t1 에서

시작하여 다음 도착이 발생하는 시간을 구하기 위하여는 다음과 같이

)(tm 를 재정의하여야 한다.

1

1 001 )()()()(ttt

tdssdssdsstm

0에서 시작하여 연속적으로 생성한 도착 시간을 ,, 21 tt 라고 하자. 또한,

평균 1의 지수분포에 따르는 확률 변수 값을 연속적으로 생성한 값들이

,, 21 XX 라고 하자.

)()(

)()(

)()(

1

00

1

1

nn

tt

t

tnnn

tmtm

dssdss

dsstmX

nn

n

n

즉, 다음 식이 성립한다.

)()( 1 nnn tmXtm

현재까지 발생된 도착을 유발한 평균 1의 지수분포 확률 변수 합이 s일때

X를 평균 1의 지수분포에 따르는 확률변수값이라면 다음 사건이 일어날

시각은 )(1 Xsm 이다. 따라서, 중요한 관건은 어떻게 )(1 Xsm 를

용이하게 구하느냐이다. 대부분의 경우 순간 도착율 함수는 [그림 3.4]와

같이 계단 형태의 모양으로 근사화하여 주기를 가지고 반복하는 것으로

가정한다. 한 주기내에서의 서로 다른 순간 도착율이 시각 Ntt ,,,0 1 에서

발생하고, 각 시간 간격에서의 순간 도착율이 N ,,, 21 이라고 하자.

이러한 경우 )(tm 는 piecewise-linear 함수로서 용이하게 )(1 Xsm 를

구할 수 있다. 예를 들어 50 시간의 주기를 갖는 다음과 같은 순간도착율

함수가 있다고 하자.

5035,1

3515,2

150,1

)(

t

t

t

t

Page 32: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

28

)(tm 와 )(1 tm 는 다음과 같다.

5035),35(55

3515),15(215

150,

)(

tt

tt

tt

tm

5035,20

3515,2/)15(

150,

)(1

uu

uu

uu

um

만약 현재시각이 5이고, X가 20이라면 이 둘을 합한 25가 속하는 )(1 tm

를 구한다. 25 는 두번째 범위에 속하여 다음 발생시각인 t 는

20(=25+15)/2)이 된다.

)(1 tm 에 대한 식을 이용하지 않고 다음 발생 시각을 구할 수 있는 방법은

다음과 같다.

한 주기내에서의 )(1 tm 값을 Nrrr ,,, 10 이라고 하자.

00 r

111 tr

)( 12212 ttrr

)( 23323 ttrr

)( 11 NNNNN ttrr

즉, kkkkk rrtt /)( 11 이므로 r 값에 대응되는 t 는 linear

interpolation에 의해 다음 식과 같다.

11 /)( kkk trrt

단, r은 ( kr , 1kr )에 속하는 값이다.

알고리즘: 역변환에 의한 NHP

단계 0: )1log( UX

단계 1: ),mod( NrXsy

단계 2: 11tz , i=1

단계 3: If (y <= z) Then output 1/y , stop

단계 4: iitzw

단계 5: If (y <= w) Then output ii zyt /)(1 , stop

단계 6: i = i + 1, z = w, go to step 4

이전의 예를 적용하면 현재 시각 5는 0r 와 1r 사이에 속하므로 k = 0으로

한다. X가 20이라면 다음의 절차에 의해 다음 발생 시각을 구한다.

1) Step = 10515 srk

2) Rate = 1k

3) U = X / Rate = 20 / 1 = 20

4) U <= Step 이 아니므로 다음을 수행

Page 33: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

29

5) X = X – Step * Rate = 20 – 10 * 1 = 10

6) s = 15kr

7) Step = 35 – s = 20

8) Rate = 2

9) U = X / Rate = 10 / 2 = 5

10) U <= Step 이므로 s + U = 20을 리턴

그림 3 - 5 P I E C E W I S E A R R I V A L R A T E

tt1 t2 t3 t40

m(t)

Page 34: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

30

이산적 확률변수 생성 방법

역변환 방법

다음의 확률 함수를 가지는 이산적 랜덤변수 X를 생성한다고 하자.

j

jjj pjpxXP 1,,1,0,}{

우선 난수 u를 생성하여 다음 관계식에 의해 X를 구한다.

j

i

i

j

i

ij pupx

ppupx

pux

X

0

1

0

1001

00

,

,

,

만약, a, b가 10 ba 이라면 abbuaP }{ 이다. 즉,

j

j

i

i

j

i

ij ppupPxXP

}{}{0

1

0

그러므로, X는 주어진 확률 분포에 따른다.

Algorithm: DiscreteInverse

단계 1: 난수 u 생성

단계 2: 만약, 00 , xXpu , 정지

단계 3: 만약, 110 , xXppu , 정지

.

.

이 알고리듬에 위해 이산적 확률변수를 구할 때 보다 빠른 시간에 계산을

할 수 있는 방법은 각 확률을 감소 순으로 정렬하여 if 문을 수행하는

것이다.

예) 이산적 확률 변수 X가 다음 확률함수에 따른다.

40.0,4

25.0,3

15.0,2

20.0,1

p

p

p

p

X

확률변수를 생성하기 위하여 다음과 같이 if 문을 수행할 수 있다.

if (u<0.2) { x = 1; return;

} If (u<0.35) {

x = 2; return; } If (u<0.60) {

x = 3; return; } x = 4;

그러나, 보다 효율적인 방법은 다음과 같다.

if (u<0.4) {

Page 35: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

31

x = 4; return; } if (u<0.65) {

x = 3; return; } if (u<0.85) {

x = 1; return; } x = 2;

채택 기각 방법

확률함수 }0,{ jq j 를 갖는 어떤 확률변수를 생성하는 방법을 알고

있다고 하자. 이를 이용하여 또 다른 확률함수 }0,{ jp j 를 갖는

확률변수의 생성방법은 우선 }0,{ jq j 에 따르는 확률변수 Y를 생성하고

이를 YY cqp / 의 확률로 채택하는 것이다. 구체적으로 c 를 다음 식을

만족하는 상수라고 하자.

jcq

p

j

j allfor ,

채택/기각방법에 의한 확률변수의 생성 알고리즘은 다음과 같다.

Algorithm: DiscreteRejection

단계 1: 확률함수 }0,{ jq j 를 갖는 확률 변수 Y를 생성한다.

단계 2: 난수 U를 생성한다.

단계 3: 만약, YY cqpU / 이면 YX 로 하고 정지

아니면 단계 1로 간다.

정리: 채택/기각 방법에 의해 생성된 확률변수 X 는 확률함수

ipiXP }{ 를 갖는다.

증명:

cK

p

cq

p

K

q

K

cq

pUPiYP

K

cq

pUiYP

PKK

iYP

iYPiXP

i

i

ii

i

i

i

i

}{}(

},{

}Acceptance{ where,}Acceptance,{

}Acceptance|{}{

이 확률의 합은 1이므로,

cKp

cKiXP

i

i

i

11}{1

Page 36: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

32

즉, cK의 값이 1이므로, ipiXP }{ 이다.

예: 다음의 확률을 갖는 확률변수를 채택/기각 방법에 의해 생성해보자.

P{X=1} = .11, P{X=2} = .12, P{X=3} = .09, P{X=4} = .08, P{X=5} = .12,

P{X=6} = .10, P{X=7}=.09, P{X=8}=.09, P{X=9}=.10, P{X=10}=.10

확률함수 q 를 우리가 쉽게 구할 수 있는 1 부터 10 까지 동등한

확률이라고 하자. 즉, 10,,2,1,10/1 jq j 이다.

2.1max j

j

q

pc

알고리즘

단계 1: 난수 1U 을 생성한다.

1)10int( 1 UY

단계 2: 난수 2U 를 생성한다.

단계 3: 만약, 12./2 YpU 이면 YX , 정지

아니면, 단계 1로 간다.

Page 37: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

33

이산적 확률분포

균일분포(Uniform distribution)

균일분포를 따르는 이산적 랜덤변수 값을 구하기 위하여 역변환 방법을

사용한다. 예를 들어 X가 이산적인 값 1, 2, 3, 4, 5를 갖는 균일분포라면

각 X의 확률은 1/5이다.

X Pr Cumulative Pr 난수의 범위

1 0.2 0.2 0 u <0.2

2 0.2 0.4 0.2 u < 0.4

3 0.2 0.6 0.4 u < 0.6

4 0.2 0.8 0.6 u < 0.8

5 0.2 1.0 0.8 u < 1.0

난수를 뽑아 이 값을 누적확률로 놓고 이에 대응되는 X를 구한다. 만약,

난수가 0.5라면 0.4와 0.6사이의 값으로 X = 3이 된다.

보다 효율적인 방법은 다음식을 사용하는 방법이다.

1)5int( uX

일반적인 이산적 균일분포를 고려해 보자. X가 a부터 b까지의 정수들로

구성된다면 확률식은 다음과 같다.

baaxab

xp ,,1,,1

1)(

난수 u를 생성하여 다음식에 의해 X를 구할 수 있다.

11

1 if ,

ab

ju

ab

jjX

즉, juabj )1(1 이면 jX 로서 다음과 같은 단순한 식에 의해

확률변수를 생성할 수 있다.

])1int[(1 uabX

기하분포(Geometric distribution)

Geometric 확률변수는 다음과 같은 확률 함수를 가진다.

pqipqiXP i 1,1,}{ 1

이러한 확률변수를 생성하는 방법은 간단하다. 난수를 생성하여 q 보다

적으면 다시 난수를 생성하고, 그렇지 않으면 지금까지 생성된 난수의

수를 확률변수 값으로 한다. 그러나, 이 방법은 q가 클 경우 많은 횟수의

난수를 생성하여야 한다. 하나의 난수를 사용하여 geometric 확률변수를

생성하는 방법은 역변환 방법에 기인한다.

11

22221

1

11

1

)1(}{

jj

jjj

i

qq

qp

qqqppqpqpqpixP

Page 38: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

34

난수 U를 생성하고, 다음 관계를 만족하는 j를 geometric 확률변수 X로

한다. jj qUq 11 1

또는 11 jj qUq

를 만족하는 j를 구하는 것이다. 이에 따라

}1:min{ UqjX j

로그 함수는 감소함수이므로,

1)log(

)1log(int

})log(

)1log(:min{

)}1log()log(:min{

q

U

q

Ujj

UqjjX

U1 와 U는 동일한 균일분포이므로 다음 식에 의해 geometric 확률변수

X를 구할 수 있다.

1)log(

)log(int

q

UX

포아슨 분포(Poisson distribution)

랜덤변수 X 는 다음의 확률식을 만족할 때 평균 를 가지는 Poisson

분포이다.

,1,0,!

)( ii

eiXPpi

i

역변환 방법에 의해 이러한 랜덤변수를 생성하는 방법은 근본적으로

다음의 관계에 의한다.

0,1

1

ipi

p ii

이 관계식을 이용하여 필요한 Poisson 확률을 구한 후 inverse transform

방법에 의해 랜덤변수를 구하는 알고리즘은 다음과 같다.

Algorithm: PoissonInverse

단계 1: 난수 U의 생성

단계 2: pFepi ,,0

단계 3: 만약 U < F이면 X = I, 정지

단계 4: 1,),1/( iipFFipp

단계 5: 단계 3으로 간다.

Remark) Poisson 확률변수를 생성하는 또 다른 방법은 지수분포를

사용하는 방법이다. 만약, 고객의 단위시간당 도착률이 포아슨 분포에

따른다면, 고객의 도착시간 간격들이 지수분포에 따른다. 각 도착시간

간격을 생성하여 이들의 합이 단위시간에 도달했으면 도착된 손님의

수를 포아슨 확률변수로 생성한다.

Page 39: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

35

Algorithm: PoissonExponential

단계 1: ,0,0 wn 할당

단계 2: 난수 U를 생성한다.

단계 3: Uy ln1

단계 4: yww

단계 5: 만약, 1w 이면, x = n

아니면, n = n + 1, 단계 2로 간다.

이항분포(Binomial distribution)

랜덤 변수 X는 다음 확률식을 가질 때 이항분포에 따른다고 한다.

nippiin

niXPp ini

i ,,1,0,)1(!)!(

!}{

동전을 던져 앞면이 나올 확률이 0.5라면 10번 던졌을 때 앞면이 나오는

횟수는 이항분포에 따른다. 즉, 앞면이 나오는 횟수인 X 를 생성하기

위하여 10번의 동전을 던지는 행위를 반복한다. 알고리즘은 다음과 같다.

Algorithm: Binomial1

단계 1: k = 0

단계 2: for i = 1 to n

난수 U를 생성한다.

만약, U < p 이면 k = k + 1

Endfor

단계 3: X = k

이 방법으로는 n 개의 난수를 생성하여야 만 한다. 하나의 난수를

생성하여 이를 이항확률변수로 변환하는 방법은 역변환에 의한다.

다음의 반복적인 관계식을 보자.

}(11

}1{ ixPp

p

i

inixP

또한, }0{ xP 은 np)1( 이다.

Algorithm: Binomial2

단계 1: 난수 U를 생성한다.

단계 2: prFpprippc n ,)1(,0),1/(

단계 3: 만약, FU 이면 iX , 정지

단계 4: 1,,)]1/()([ iiprFFpriincpr

단계 5: 단계 3으로 간다.

Page 40: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

36

4 몬테카를로 시뮬레이션

Monte Carlo 방법은 실험적 수학의 한 분야로 난수를 이용한 실험을

대상으로 한다. 본 강의에서는 Monte Carlo 방법이 어떻게 사용되는지를

설명하기 위하여 적분을 예로 든다.

어떤 연속적인 함수 )(xg 가 [그림 4-1]과 같이 bxa 의 범위에서

cxg )(0 로 정의되어 있다고 하자. 함수 )(xg 를 x 의 범위 a 부터

b 사이에 적분한 값은 얼마일까? 물론 약간의 적분 지식을 갖고 있는

사람은 )(xg 가 단순한 식일 때 적분공식을 이용하여 이를 쉽게 풀 수 있을

것이다. 그러나, )(xg 가 복잡하여 적분식을 구하기 쉽지 않을 경우에

어떻게 할까? 한 방법은 수치해석적으로 근사값을 구하는 방법이 있다. 또

다른 방법은 우리가 다루려고 하는 Monte Carlo 방법을 적용할 수 있다.

Monte Carlo에 의한 적분 방법에는 여러 가지가 있으나 본 강의에서는 이

중 두 가지를 설명한다.

a b x

y

c

y=g(x)

그림 4 . 1 M O N T E C A R L O I N T E G R A T I O N

적중/실패 방법

위의 )(xg 에 대한 정의에서 주어진 x의 범위 bxa 에서 )(xg 는 0부터

c사이에 존재한다. 2차원 상에서 ),(),,(),0,(),0,( cbcaba 의 4개 점을 잇는

직사각형을 그려 가상적인 화살을 이 직사각형의 내부에 쏘아 통과한

점을 ),( yx 라고 하자. 어느 화살도 이 직사각형의 내부를 맞히고, 이

통과한 점은 직사각형 내부 전체 점에 대한 랜덤벡터(random vector)라고

하자. 랜덤벡터의 의미는 사각형의 내부에 위치한 어느 점도 맞을 확률이

동일하다는 것이다. 수학적인 기호를 사용하여 이 상황을 함축적으로

표현하면 다음과 같다.

이차원 상에서의 집합 }0,);,{( cybxayx 을 설정하자. ),( yx 는

다음의 확률 밀도함수를 갖는 랜덤벡터이다.

),( ,0

),( ,)(

1

),(

yx

yxabcyxf xy

Page 41: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

37

)}(,);,{( xgybxayxS 인 집합이라 하면 우리가 구하려는

적분값은 S의 면적이다. 랜덤벡터 ),( yx 가 집합 S에 속할 확률은

)(

)(

of Area

of Area

abc

dxxgSP

a

b

N 개의 독립적인 랜덤벡터 ),(,),,(),,( 2211 NN yxyxyx 를 생성하였다고

가정하자. HN 를 )( ii xgy 인 랜덤벡터의 수라고 하면 랜덤벡터 ),( yx 가

S에 속할 확률의 추정치는 다음과 같다.

N

NP Hˆ

위의 두 식에서

PN

N

abc

dxxgP H

a

b ˆ)(

)(

즉, 우리가 구하려고 하는 적분값은 다음과 같이 추정될 수 있다.

N

Nabcdxxg H

b

a)()(

적중/실패 방법에 의해 적분값을 구하기 위하여 사각형 내부에 N 개의

화살을 쏜다. 물론 화살이 사각형 내부 어느 점에도 맞을 확률은 동등하다.

한 화살이 꽂힌 좌표가 ),( ii yx 일 때 )( ii xgy 이면 명중이고, 그렇지

않으면 실패이다. N개의 화살 중 명중된 화살의 수가 HN 라면 위의 식에

의해 적분값에 대한 추정치를 구할 수 있다. 화살의 수를 증가시킬수록

추정치는 실제 적분값에 근사할 것이 자명하다.

위의 추정치에 대한 타당성을 수학적으로 증명하기 위하여 추정치에

대한 기대치가 실제 값과 같게 되는 불편추정치(unbiased estimator)인지

또한, 추정치에 대한 분산이 N 이 무한대로 감에 따라 0 으로 되는지를

조사하여야 한다. 우선 HN 는 이론적으로 기대치 NP와 분산 )1( PNP

를 갖는 Bernoulli trial 로 간주될 수 있다. 이를 이용하여 적분 추정치의

기대치와 분산을 쉽게 구할 수 있다.

알고리즘: Hit or Miss Monte Carlo

단계 0: NNi H ,0,0 할당

단계 1: 1 ii

0부터 1까지의 값을 갖는 난수 iu 생성

)( abuax ii

)( ixg 계산

단계 2: 0부터 1까지의 값을 갖는 난수 iv 생성

ii cvy

단계 3: 만약 )( ii xgy 이면 1 HH NN

단계 4: 만약 Ni 이면 단계 1로 간다.

단계 5: NNab H /)( 출력하고 정지

Page 42: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

38

샘플 평균 방법

이 방법은 x 를 어떤 밀도함수를 가지는 랜덤 변수로 간주하고 샘플

평균을 구하여 이를 적분값의 추정치로 변환하는 방법이다. 우리가

구하려는 적분값은

b

adxxgI )( 이다.

x를 확률밀도함수 )(xf x 를 가지는 확률변수라고 하면 위의 식을 다음과

같이 변형시킬 수 있다.

b

a x

x

dxxfxf

xgI )(

)(

)(

즉, ])(

)([

xf

xgEI

x

의 기대치로 변환된다.

예) x를 다음과 같은 PDF를 갖는 확률변수라고 하자.

,0

,)(

1

)(bxa

abxf x

b

adxxgI )( 를 구한다고 하자. )(xg 의 기대치는 다음과 같다.

ab

Idx

ab

xgdxxfxgxgE

b

a

b

a x

)(

)()()()]([

즉, )]([)( xgEabI 로서 )(xg 의 기대치를 구하면 적분값을 구할 수

있다. )(xg 의 기대치에 대한 추정치는 단순히 N 개의 샘플을 뽑아 이에

대한 평균치를 구하면 된다.

N

xg

abI

N

i

i 1

)(

)(ˆ

알고리즘: Sample Mean Monte Carlo

단계 0: NTi ,0,0 할당

단계 1: 1 ii

0부터 1까지의 값을 갖는 난수 iu 생성

iu 를 )(xf x 를 갖는 확률변수 ix 로 변환

)( ixg 와 )( ix xf 계산

단계 2: )(/)( ixi xfxgTT

단계 3: 만약 Ni 이면 단계 1로 간다.

단계 4: NT / 출력하고 정지

Page 43: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

39

예제

Phi값 계산

원주율을 몬테카를로 시뮬레이션을 이용하여 구해보자. 한변의 길이가

r인 정사각형내에 2차원 랜덤 벡터 화살을 N개 쏘아 원 안에 들어가는

화살의 수를 센다. 그림은 화살의 수에 따른 파이값 추이를 나타낸다.

그림 4 . 2 가상난수에 의한 원주율 추이

화살의 수 증가에 따라 실제적인 값에 근사하지 못하는 것은 화살의 수가

적기 때문이다. 적은 화살로도 좋은 근사값을 구하기 위하여 가상 난수

대신에 준 난수를 사용하는 것이 좋다.

그림 4 . 3 준 난수에 의한 원주율 추이

부퐁 바늘 문제 (Buffon needle problem)

평행인 라인들이 그림과 같이 동일한 간격(d)으로 위치하고 있다. 길이가 l

(l<d)인 바늘을 랜덤으로 던졌을 때 바늘들이 라인위에 위치할 확률은

얼마일까?

Dept of IME, Hannam UnivDept of IME, Hannam Univ

ComputePhi

3.12

3.125

3.13

3.135

3.14

3.145

3.15

3.155

3.16

1000

0

2000

0

3000

0

4000

0

5000

0

6000

0

7000

0

8000

0

9000

0

1000

00

Dept of IME, Hannam UnivDept of IME, Hannam Univ

ComputePhiQuasi

3.12

3.13

3.14

3.15

3.16

3.17

3.18

3.19

1000

0

9000

0

2500

00

4900

00

8100

00

1210

000

1690

000

2250

000

2890

000

3610

000

Page 44: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

40

d

l

그림 4 . 4 B U F F O N N E E D L E P R O B L E M

문제를 쉽게 다루기 위하여 m을 바늘의 중심이라고 하고, 바늘의 중심에

가장 가까운 라인을 고려하자. 만약 바늘의 중심에서 라인에 직교하는

거리(a)가 sin2la 라면 바늘은 라인에 위치하고 있다.

d/2m

a sin2l

그림 4 . 5 바늘의 위치

현상: 바늘의 중심은 랜덤이다. 즉, 2/0 da 의 범위에서 균일 분포를

한다. 각 역시 랜덤이다. 즉, 0 의 범위에서 균일분포이다.

위의 현상으로부터 우리가 구하려고 하는 확률을 다음과 같이 표현할 수

있다.

)U(0,~

d/2)U(0,~ where],sin[2

aaP l

이 확률을 해석적으로 구하기 위하여 아래 그림을 참조하자. 우리가

구하려는 확률은 전체 사각형의 면적에 대한 타원 면적의 비율이다.

Page 45: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

41

0

d/2

l/2

a

sin2la

그림 4 . 6 바늘이 라인과 겹칠 확률

즉,

d

l

d

ld

daP

l

l

2cos

2/

sin]sin[ 0

0

2

2

이번에는 이 확률을 Monte Carlo simulation으로 구해보자.

알고리즘: 부퐁 바늘 문제

단계 0: l, d, N값 할당

n = 0, m = 0

단계 2: 난수 U1, U2를 생성한다.

2

1 2/

U

dUa

단계 3: 만약, sin2la 이면 m = m+1

단계 4: 만약, n < N 이면 단계 2를 수행한다.

단계 5: m/n을 출력하고 정지

위의 알고리듬으로 구한 확률을 이용하여 Phi값을 구할 수 있다.

d

l

n

mP

2

md

nl2

랜덤 워크 (random walk)

1827 년 Brown 에 의해 발견된 입자들의 랜덤 운동은 시간에 따른

확산(diffusion)으로 설명되었고, Einstein 은 1 차원 랜덤워크로 입자들의

랜덤 운동을 모델링 하였다. 이러한 모델링 결과 마이크로 하게 보면

랜덤인 무작위의 운동이지만 매크로하게 보면 어떠한 법칙이 존재한다는

것을 증명하였다. 그 법칙 중의 하나는 확산에 관한 것으로 입자들의 위치

제곱들에 대한 기대치는 시간에 비례한다는 것이다. 물컵에 잉크를

떨어뜨리면 시간이 지남에 따라 잉크는 확산을 하여 모든 물을 붉게

만든다. 잉크 입자 각각의 위치를 시간에 따라 측정하여 그들 위치의

Page 46: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

42

제곱(초기 위치에서 현재위치까지의 거리에 대한 제곱)을 평균하면 그

평균치는 시간에 따라 일정하게 증가한다는 것이다.

1 차원 랜덤위크의 예제를 보자. 10 명의 사람이 동일한 금액을 가지고

게임에 참가하고 있다. 한번의 베팅에 1 원을 따거나 혹은 잃고, 각각의

확률은 0.5로 같다. 확산 이론에 따르면 시간이 감에 따라 돈을 딴 사람과

잃은 사람이 가지고 있는 돈 액수의 차이는 커진다. 더욱이 따거나 잃은

돈의 제곱에 대한 평균은 시간에 비례한다.

그림 4 . 7 1 차원 랜덤워크 추이

그림 4 . 8 1 차원 랜덤워크에서의 위치제곱 평균치 추이

2차원 랜덤워크의 예제를 보자. 입자들은 2차원 공간에서 단위시간 동안

동서남북으로 한칸씩 이동하고, 각 방향을 선택할 확률은 1/4로 같다.

-25

-20

-15

-10

-5

0

5

10

15

20

25

30

Hannam Univ.

1-D Random Walk 확산

y = 0.7149x

R2 = 0.7113

0

50

100

150

200

250

0 7 14

21

28

35

42

49

56

63

70

77

84

91

98

105

112

119

126

133

140

147

154

161

168

175

182

189

196

<X2>

Time

Page 47: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

43

그림 4 . 9 2 차원 랜덤워크

10 개의 입자는 초기에 원점에 위치하고 있고, 시간에 따른 위치를

시뮬레이션한 결과는 그림과 같다. 1 차원 랜덤워크에서와 같이 원점과

현재위치 간의 거리에 대한 제곱을 평균하여 그래프로 나타내었다.

정확히, 아인스타인의 식과 일치하였다.

그림 4 . 1 0 2 차원 랜덤워크 패스

그림 4 . 1 1 2 차원 랜덤워크에서 위치제곱 평균치 추이

Hannam Univ.

2-D Random Walk

2-D 공간에서 입자의 운동은 random walk에 따른다.

단순한 경우 입자는 단위시간 동안 동서남북으로 한칸씩 이동하고, 각 방향을 선택할 확률은 동일하다.

Hannam Univ.

Passages of 2-D Random Walk

-20 -12 -4 4 12 20-20

-12

-4

4

12

20

Hannam Univ.

2-D Random Walk 실험 결과

초기 입자의 위치와 T 시간 후의 입자 위치 간의 거리에 대한제곱의 평균은 T에 비례한다.

y = 0.777x - 0.1236

R2 = 0.9981

0

10

20

30

40

50

60

70

80

90

1 11 21 31 41 51 61 71 81 91

Step

Square

(dis

tance)

Page 48: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

44

그림 4 . 1 2 3 차원 랜덤워크

Hannam Univ.

Passages of 3-D RW

Page 49: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

45

Page 50: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

46

5 이산 사건 시뮬레이션

이산사건 시스템

이산 사건 시뮬레이션은 이산 사건 시스템에 대한 시뮬레이션이다. 이산

사건 시스템에서는 시간의 한 시점에서 시스템의 상태를 변화시키는

사건이 발생한다. 다음의 간단한 예를 보자.

창고는 공장에서 생산된 제품을 저장한다. 생산과정에서 새로운 제품이

생산됐을 때 마다 창고에 유입된다. 트럭은 주기적으로 나타나 어떤

수량의 제품을 창고 밖으로 실어 나른다. 여기서 우리가 관심을 두고 있는

것은 창고에 있는 재고 수준이다. 즉, 어느 시점에서 얼마나 많은 제품이

창고에 있을까?

)(tX 를 시각 t 에서 창고에 있는 재고 수준이라고 하자. 다음과 같은

입력 함수를 정의하자.

otherwise ,0

tat time arrivesproduct a if ,1)(

1tu

otherwise ,0

tat time arrives truck a if ,1)(

2tu

문제를 쉽게 다루기 위하여 다음과 같은 가정을 하자.

창고의 용량은 무한대이다.

트럭이 짐을 싣는 시간은 0이다.

트럭은 한번에 하나의 제품만 실을 수 있다.

트럭의 도착과 제품의 도착은 동시에 발생되지 않는다.

이 모델에 대한 상태함수는 다음과 같다.

otherwise ),(

1)( and 0)( if ,1)(

0)( and 1)( if ,1)(

)( 21

21

tx

tututx

tututx

tx

이 창고의 예에서 시각 t 에서의 시스템의 상태는 창고에 있는 제품의

수이다. 이 상태를 변화시키는 사건은 두 가지로 제품의 유입과 트럭의

도착이다. 이 사건의 발생은 시스템의 상태를 변화시킨다. 이렇게

이산적인 사건의 발생으로 인하여 시스템의 상태가 바뀌는 시스템을

이산사건 시스템이라고 한다.

모델링 기초

이산사건 시스템에 대한 시뮬레이션 모델링을 할 때 시스템에 포함되어

있는 다음의 요소들을 파악하는 것이 중요하다.

Page 51: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

47

1) 엔터티(Entity)

특성치를 갖는 물리적, 논리적 객체로서 시스템내에서 처리,

가공된다.

2) 사건(Event)

시스템의 상태를 변화시키는 사건

3) 행위(Activity)

엔터티에 대해 시간이 소요되는 행위

4) 상태(State)

어느 시점에서의 시스템 상태

5) 자원(Resource)

행위를 수행하는 자원

6) 조정(Control)

시스템의 목적을 달성하기 위한 조정, 계획

7) 시스템 성능(System performance)

시스템의 좋고 나쁨을 판단할 수 있는 성능 척도

다음의 예를 보자. 한남 복사집에는 현재 하나의 복사기와 이를 운영하는

한명의 직원이 있다. 고객은 도착순에 의해 줄을 서고, 차례가 오면

직원에게 복사를 의뢰한다. 복사가 끝나면, 고객은 돈을 지불하고

복사집을 떠난다.

최근에 고객이 증가하여 고객이 스스로 복사할 수 있는 복사기를

설치하려고 한다. 복사집 주인은 새로운 복사기를 설치하기 전에 다음과

같은 질문에 대한 답을 원한다.

얼마나 많은 고객이 새로운 복사기를 사용할 것인가? 새로운 복사기가

고객이 요구하는 서비스를 충분히 담당할 수 있는가? 새로운 복사기를

사용하는 고객에게 복사할 수 있는 최대 페이지 수를 얼마로 제한하여야

하나?

이 질문에 대한 답을 하기 위하여 이산 사건 시뮬레이션을 사용한다면

우선적으로 하여야 할 일은 다음과 같은 시스템의 요소들을 파악하는

것이다.

엔터티: 복사 서비스를 받는 고객

사건: 고객 도착, 서비스 시작, 고객 떠남

행위: 고객에 대한 복사 서비스

상태: 복사기의 상태, 직원의 상태, 대기 중인 고객의 수

자원: 복사기, 직원

조정: 새로운 복사기의 설치 여부, Self-service 에서 가능한 복사

매수의 제한

시스템 성능: 서비스한 고객 수, 복사기 운영 시간, 대기하는

고객의 수, 고객이 기다리는 시간

시뮬레이션 로직

이산사건 시뮬레이션의 로직을 설명하기 위해 한남 복사집을 예로 든다.

시뮬레이션을 위해서는 시스템에 대한 모델링 요소들을 파악한 후

필요한 데이터를 수집하여야 한다.

Page 52: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

48

표 5.1은 수집된 데이터의 일부로서 20명의 고객에 대한 사건별 기록이다.

고객이 특별한 일을 요구하는 경우에는 비고란에 명시하였다. 비고에

제본, 양면 복사 등이 있는 고객에 대하여는 self-service가 가능하지 않을

것으로 사료된다. 데이터에 의하면 20 명 중 12 명(60%)은 특별한 일이

필요하지 않다. 또한, 각 고객에 대한 서비스 시간을 계산하기 위하여

다음과 같은 수식을 사용할 수 있다. I번째 고객의 도착시각, 떠나는 시각,

서비스 시간은 각각 iii sda ,, 이다.

},max{ 1 iiii dads

예를 들어 5번째 고객의 서비스 시간은 다음과 같다.

min1441:957:9}41:9,39:9max{57:9},max{ 4555 dads .

표 5.2와 같이 각 고객에 대한 서비스 시간을 구할 수 있다. 고객 번호에

*표시가 있는 것은 특별한 일을 요구한 고객을 의미한다. 고객에 대한

서비스 시간을 통계적으로 분석하기 위하여 히스토그램을 그리면 그림

5.1과 같다. 그림 5.2와 그림 5.3은 각각 셀프 서비스와 풀 서비스 고객에

대한 서비스 시간을 나타낸다. Self-service 고객의 경우 평균 3 분의

서비스 시간을 갖고, full service 고객의 경우 평균 7분의 서비스 시간을

갖는다.

이렇게 수집된 데이터를 이용하여 현재 시스템 및 개선된 시스템에 대한

시뮬레이션을 수행할 수 있을 것이다.

표 5 . 1 사건별 기록

시각 사건 비고

9:00 Open

9:12 고객 1 도착

9:14 고객 2 도착

9:17 고객 3 도착

9:19 고객 1 떠남 제본

9:21 고객 2 떠남

9:22 고객 3 떠남

9:38 고객 4 도착

9:39 고객 5 도착

9:41 고객 4 떠남

9:43 고객 6 도착

9:45 고객 7 도착

9:52 고객 8 도착

9:57 고객 5 떠남 특수 용지

9:58 고객 9 도착

10:00 고객 6 떠남

10:01 고객 7 떠남

10:08 고객 8 떠남

10:11 고객 9 떠남 제본

10:13 고객 10 도착

10:14 고객 11 도착

10:16 고객 12 도착

Page 53: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

49

10:19 고객 13 도착

10:24 고객 10 떠남 양면 복사, 제본

10:26 고객 11 떠남

10:28 고객 14 도착

10:36 고객 12 떠남

10:36 고객 15 도착

10:38 고객 13 떠남

10:39 고객 14 떠남

10:42 고객 15 떠남 제본

10:45 고객 16 도착

10:47 고객 16 떠남

10:48 고객 17 도착

10:50 고객 17 떠남

10:53 고객 18 도착

10:58 고객 19 도착

11:00 고객 20 도착

11:01 고객 18 떠남 특수용지

11:07 고객 19 떠남 양면 복사, 제본

11:09 고객 20 떠남 제본

Page 54: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

50

표 5 . 2 고객별 서비스 시간

고객

번호

서비스 시간 Interarrival time

1 7 12

2 2 2

3 1 3

4 3 21

5* 16 1

6 3 4

7 1 2

8 7 7

9* 3 6

10* 11 15

11 2 1

12 10 2

13 2 3

14 1 9

15* 3 8

16 2 9

17 2 3

18* 8 5

19* 6 5

20* 2 2

그림 5 . 1 서비스 시간 히스토그램

그림 5 . 2 셀프서비스 시간의 히스토그램

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

1.2

5

2.5

3.7

5 5

6.2

5

7.5

8.7

5

10

11.2

5

12.5

13.7

5

15

16.2

5

17.5

18.7

5

20

All Service

All Service

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

2.5 5 7.5 10 12.5 15 17.5 20

Self-service

Self-service

Page 55: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

51

그림 5 . 3 풀 서비스 시간의 히스토 그램

이산 사건 시뮬레이션의 로직을 설명하기 위하여 수집된 데이터를

그대로 이용하여 현재 시스템에 대한 재현을 해본다. 그림 5.4는 초기시각

0 에서의 시스템 상태 와 다음 사건을 나타낸다. 다음 사건에는 고객

도착과 복사 종료 만으로 충분하다. 현재시각 0에서 복사기는 쉬고 있고,

대기줄에는 아무도 없다. 다음 사건으로는 12 분 후에 첫번째 고객이

도착하도록 되어 있다.

그림 5 . 4 시스템 상태 표현 방법

그림 5.4와 같은 표현 방법을 이용하여 20명의 고객에 대한 시뮬레이션한

과정은 그림 5.5와 5.6으로 설명될 수 있다.

그림 5 . 5 시뮬레이션 과정 1

0

0.05

0.1

0.15

0.2

0.25

0.3

2.5 5 7.5 10 12.5 15 17.5 20

Full service

Full service

시각: 0

상태

복사기 대기줄

다음사건 시각1) 고객도착 0 + 12 = 122) 복사종료 -

시각: 12

상태

복사기 대기줄

다음사건 시각1) 고객도착 12 + 2 = 142) 복사종료 12 + 7 = 19

1

시각: 14

상태

복사기 대기줄

다음사건 시각1) 고객도착 14 + 3 = 172) 복사종료 19

1 2

시각: 17

상태

복사기 대기줄

다음사건 시각1) 고객도착 17 + 21= 382) 복사종료 19

1 2 3

시각: 19

상태

복사기 대기줄

다음사건 시각1) 고객도착 382) 복사종료 19 + 2 = 21

2

시각: 21

상태

복사기 대기줄

다음사건 시각1) 고객도착 382) 복사종료 21 + 1 = 22

3

시각: 22

상태

복사기 대기줄

다음사건 시각1) 고객도착 382) 복사종료 -

3

Page 56: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

52

그림 5 . 6 시뮬레이션 과정 2

시각 0에서 정의된 다음 사건은 12 분에 있을 고객도착이다. 따라서, 시각

12 에서는 1 번 고객이 복사 서비스를 받는다. 다음 고객의 도착시각은

2 분 후인 14 분이고, 1 번 고객의 서비스가 끝나는 시각은 7 분 후인

19분이다. 두 다음 사건 중 먼저 발생하는 것은 고객 도착이다. 따라서,

시각은 14분으로 되고, 2번 고객이 도착하여 대기줄에 있게 된다. 다음

고객의 도착 시각은 3 분 후인 17 분이 된다. 위 그림은 시각 52 까지

이러한 방법으로 시뮬레이션한 과정을 나타낸다.

성능 척도

위의 예제 시스템에서 두 가지 중요한 성능 척도는 고객 당 대기 시간과

평균 대기 수 이다. 다음과 같은 기호를 사용하자.

n: 총 고객의 수

T: n명의 고객이 서비스를 끝낼 때 까지의 시간

niDi ,,2,1, : 각 고객의 대기시간

)(tQ : 시각 t에서의 대기 수

)(ˆ nd : n고객에 대한 평균 대기 시간

)(ˆ nQ : n고객에 대한 평균 대기 수

두 성능 척도는 다음과 같이 정의된다.

T

dttQ

nQ

n

D

nd

T

n

i

i

0

1

)(

)(ˆ

)(ˆ

시각: 38

상태

복사기 대기줄

다음사건 시각1) 고객도착 38 + 1 = 392) 복사종료 38 + 3 = 41

4

시각: 39

상태

복사기 대기줄

다음사건 시각1) 고객도착 39 + 4 = 432) 복사종료 41

4 5

시각: 41

상태

복사기 대기줄

다음사건 시각1) 고객도착 432) 복사종료 41 + 16 = 57

5

시각: 43

상태

복사기 대기줄

다음사건 시각1) 고객도착 43 + 2 = 452) 복사종료 57

5

시각: 45

상태

복사기 대기줄

다음사건 시각1) 고객도착 45 + 7 =522) 복사종료 57

5

시각: 52

상태

복사기 대기줄

다음사건 시각1) 고객도착 52 + 6 = 582) 복사종료 57

6 6 7 5 6 7 8

Page 57: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

53

고객 당 평균 대기사간은 각 고객들의 대기시간들을 평균한 것이나, 평균

대기 수는 시간에 따른 평균이다. 시간에 따른 대기 수를 나타낸 그림

6.7에서 평균 대기수는 검은 부분의 면적을 총 시간으로 나눈 값이 된다.

그림 5 . 7 시간에 따른 대기 수

다음 표 5.3 은 시각 129, 즉, 20 명의 고객이 모두 빠져나갈 때까지를

시뮬레이션한 결과를 요약한 것이다. . 이 결과로부터 구한 성능 척도는

다음과 같다.

평균 대기 시간 /고객 = 118/20 = 5.9 분

평균 대기 수 = 119/129 = 0.922481 명

0

1

2

3

4

1 11 21 31 41 51 61 71 81 91 101 111 121

No

Time

No Queue

Page 58: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

54

표 5 . 3 시뮬레이션 결과 요약

시각 사건 다음 고객의

도착시각

현 고객의

서비스 종료

시각

대기 수 대기 시간

대기 수*시간

0 시작 0 + 12 = 12 - 0 0 0

12 1 고객도착 12 + 2 = 14 12 + 7 = 19 0 12 – 12 = 0 0

14 2 고객도착 14 + 3 = 17 19 1 0 0

17 3 고객도착 17 + 21 = 38 19 2 0 1*3=3

19 1 복사종료 38 19 + 2 = 21 1 19-14=5 2*2 = 4

21 2 복사종료 38 21 + 1 = 22 0 21-17=4 1*2=2

22 3 복사종료 38 - 0 0

38 4 고객도착 38 + 1 = 39 38 + 3 = 41 0 0

39 5 고객도착 39 + 4 = 43 41 1 0

41 4 복사종료 43 41 + 16 = 57 0 41-39=2 1*2=2

43 6 고객도착 43 + 2 = 45 57 1

45 7 고객도착 45 + 7 = 52 57 2 1*2=2

52 8 고객도착 52 + 6 = 58 57 3 2*7=14

57 5 복사종료 58 57 + 3 = 60 2 57-43=14 3*5=15

58 9 고객도착 58 + 15 = 73 60 3 2*1=2

60 6 복사종료 73 60 + 1 = 61 2 60-45=15 3*2=6

61 7 복사종료 73 61 + 7 = 68 1 61-52=9 2*1=2

68 8 복사종료 73 68 + 3 = 71 0 68-58=10 1*7=7

71 9 복사종료 73 0 0

73 10 고객도착 73 + 1 = 74 73 + 11 = 84 0 0

74 11 고객도착 74 + 2 = 76 84 1 0

76 12 고객도착 76 + 3 = 79 84 2 1*2=2

79 13 고객도착 79 + 9 = 88 84 3 2*3=6

84 10 복사종료 88 84 + 2 = 84 2 3*5=15

86 11 복사종료 88 84 + 10 = 94 1 84-74=10 2*2=4

88 14 고객도착 88 + 8 = 96 94 2 86-76=10 1*2=2

96 12 복사종료

15 고객도착

96 + 9 = 105 96 + 2 = 98 2 96-79=17 2*8=16

98 13 복사종료 105 98 + 1 = 99 1 98-88=10 2*2=4

99 14 복사종료 105 99 + 3 = 102 0 99-96=3 1*1=1

102 15 복사종료 105 - 0 0

105 16 고객도착 105 + 3 = 108 105 + 2 = 107 0 0

107 16 복사종료 108 - 0 0

108 17 고객도착 108 + 5 = 113 108 + 2 = 110 0 0

110 17 복사종료 113 - 0 0

113 18 고객도착 113 + 5 = 118 113 + 8 = 121 0 0

118 19 고객도착 118 + 2 = 120 121 1 0

120 20 고객도착 121 2 1*2=2

121 18 복사종료 121 + 6 = 127 1 121-118=2 2*1=2

127 19 복사종료 127 + 2 = 129 0 127-120=7 1*6=6

129 20 복사종료 0 0

계 118 119

Page 59: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

55

프로세스 중심과 사건 중심 시뮬레이션

이산사건 시뮬레이션의 전통적인 접근 방법은 사건(event) 중심의

시뮬레이션이다. 이 접근방법에서는 시스템의 운영 중 발생하는

이산사건을 파악하고, 각 사건의 발생이 어떻게 시스템의 상태를

바꾸는지에 대한 event routine 을 묘사한다. 간단한 은행 모델을 예로

들어보자. 은행에서 한 명의 직원이 고객에 대한 서비스를 한다고

가정하자. 고객은 도착하여 줄을 서고, 차례가 되면 서비스를 받기

시작한다. 이 모델에서 다음의 사건들이 발생한다.

고객 도착 (CustomerArrival)

고객이 줄을 섬 (EnterQueue)

고객의 서비스 시작 (StartService)

고객에 대한 서비스 끝 (EndService)

고객이 은행을 떠남 (CustomerDeparture)

각 사건에 대한 처리 routine 을 설명해보자. CustomerArrival 사건이

발생되면 우선적으로 다음 고객의 도착 사건을 스켸쥴한 후 두 가지 사건

중 하나가 발생한다. 만약, 줄을 서고 있는 사람들이 있으면 EnterQueue

사건이 발생되고, 줄을 선 사람이 없고 또한, 직원이 서비스를 하고 있지

않으면 바로 서비스를 받는 StartService 사건이 발생된다. EnterQueue

사건은 단지 대기하고 있는 사람의 뒤에 줄을 서는 것으로 끝난다.

StartService 사건은 service time 을 예측하여 미래 사건인

EndService 사건을 스켸쥴링한다. EndService 사건은 CustomerDeparture

사건을 발생시키고, 대기 중에 있는 사람이 있으면 StartService 사건을

발생시킨다.

이 사건들 중 미래 사건을 위한 스켸쥴이 요구되는 두 사건은

CustomerArrival 과 StartService 사건이다. 다른 사건들은 이 두 가지

사건의 결과 발생되는 부수적인 사건으로 간주될 수 있다.

어느 event routine 중에도 시간의 지연은 발생하지 않는다. 대신에 시간

지연은 현재 처리되는 객체의 다음 사건을 스케쥴링하여 처리된다. 즉,

Event routine 에서 “Customer 의 서비스 시작”은 서비스 시간 뒤의

“Customer가 은행을 떠남” 사건을 스케쥴 한다.

Event 중심의 모델링 로직은 다음과 같다. 위에 언급된 5가지 사건의 event

routine 은 두가지 사건인 CustomerArrival 과 EndService 사건의 event

routine으로 축약될 수 있다. 나머지 3가지 사건은 이 두 사건에 종속되기

때문이다.

시스템 상태

Nqueue: 대기 중인 고객의 수

StatusTeller: 직원의 상태(IDLE/BUSY)

시뮬레이션 변수

SimClock: 현재 Simulation 시각

InterarrivalTime: 고객의 도착 간 시간

ServiceTime: 고객의 서비스 시간

Page 60: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

56

Event routine: CustomerArrival

미래사건 (CustomerArrival, SimClock+InterarrivalTime) 계획

만약, Nqueue = 0이고, StatusTeller = IDLE이면

StatusTeller = BUSY

미래사건 (EndService, SimClock+ServiceTime) 계획

아니면 Nqueue += 1

Event routine: EndService:

StatusTeller = IDLE

만약, Nqueue > 0 이면,

Nqueue -= 1,

StatusTeller = BUSY

미래사건 (EndService, SimClock+ServiceTime) 계획

Asynchronous discrete event 방식에 의한 시뮬레이션 실행 로직은 다음과

같이 설계된다.

Start

초기화 및초기사건 스켸듈

Clock을 다음 사건으로 이동

TerminationEvent?

CustomerArrival

EndService

출력생성Stop

CustomerArrivalroutine

EndServiceroutine

YES

NO

YES

NO

YES

그림 5 . 8 A S Y N C H R O N O U S D I S C R E T E E V E N T 로직

이 event 중심의 접근방법은 작은 모델에 적합하지만, 커다란 모델에서는

엔터티 (고객)의 행위를 묘사하는 흐름 로직을 따라가거나 수정하기가

어려워 진다. 단순한 은행 모델에서, 안전을 수행하는 청원경찰을

부가하거나, 기타 관리 기능을 추가할 때 서로 관련이 없는 event 루틴

들이 다수 발생하여 모델링을 어렵게 한다.

프로세스 접근 방법은 엔터티에 가해지는 행위를 시간지연이 있는

프로세스로 묘사토록 하여 커다란 모델을 단순하게 만들도록 한다.

Page 61: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

57

대부분의 시뮬레이션 언어는 process 방식의 모델링 방법을 제공하여

시스템에 들어오는 엔터티에 대해 어떤 절차에 의해 처리되어 시스템을

빠져나가는지를 묘사하도록 한다.

은행의 예를 프로세스 모델로 표현해보자.

ServiceQueue

ArrivalDepart

그림 5 . 9 은행의 프로세스

고객은 Arrival 사건에 의해 시스템에 도착하여 대기열 Queue에 들어간다.

Queue에 들어간 고객은 서비스를 받을 수 있을 때 Service에 들어가고,

서비스 시간 후 시스템을 떠난다.

각 고객에 대한 프로세스 모델은 다음과 같이 가상적인 코드의 순차적인

명령문들로 표현될 수 있다.

Arrival(InterArrivalTime);

Enter(Queue);

Seize(Teller);

Depart(Queue);

Advance(ServiceTime);

Release(Teller);

Exit;

각 명령문에 대한 설명은 다음과 같다.

Arrival(InterArrivalTime)

1) 고객 엔터티를 생성하고, 다음 고객의 Arrival을 스켸듈한다.

Enter(Queue)

1) Queue에 고객 엔터티를 추가한다.

Seize(Teller)

1) Teller 란 resource 의 상태가 IDLE 이면 BUSY 로 바꾸고 다음

명령문을 수행한다.

2) 아니면, 다음 사건의 발생까지 기다린다.

Depart(Queue)

1) Queue에서 고객 엔터티를 꺼내온다.

Advance(ServiceTime)

1) 고객 엔터티에 대해 미래사건을 스켸듈 한다.

2) ServiceTime이 끝날 때 까지 기다린다.

Release(Teller)

1) Teller의 상태를 IDLE로 바꾼다.

Page 62: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

58

Exit

1) 고객 엔터티를 삭제한다.

각 명령문은 크게 두가지로 구성된다. 하나는 현 명령문의 실행 후 즉시

다음 명령문을 수행하는 것이 있고, 다른 하나는 현 명령문을 수행한 후

다음 사건 까지 기다려야 하는 것이 있다. 또한, 다음 사건 까지 기다려야

하는 명령문은 조건이 만족돼야 다음 명령문을 수행할 수 있는

것(conditional event) 과 단지 계획된 시간 후에 다음 명령문을 수행할 수

있는 것(future event)으로 구분된다.

Page 63: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

59

시뮬레이션 소프트웨어

구성요소

System State

Simulation clock

Event List

Statistical counter

Initialization routine

Timing routine

Event routine

Report generator

Main program

시뮬레이션 시각 진전 방법

시뮬레이션 시각을 진전시키는 방법으로 두가지가 있다. 고정시각 증가

방법은 증가 시각을 고정시켜 시뮬레이션 시각을 진전시킨다. 반면, 다음

사건 시각 증가 방법은 다음에 발생할 사건의 시각으로 시뮬레이션

시각을 전진 시키는 방법이다.

Fixed incremental time advance

단계 1: SimulationClock += d

단계 2: SimulationClock에서 계획된 사건이 있으면 발생시킨다.

단계 3: 단계 1로 간다.

Next-Event Time Advance

단계 1: 가장 빠르게 발생될 사건을 결정한다.

단계 2: SimulationClock을 결정된 사건의 시각으로 이동한다.

단계 3: 결정된 사건들을 발생 시킨다.

단계 4: 단계 1로 간다.

Event list의 처리

이산 사건 시뮬레이션의 구성요소는 크게 모델과 엔진으로 나눌 수 있다.

특정의 시스템을 표현한 모델은 다수의 이벤트 루틴으로 구성되어 있어

예정된 시각에 사건이 발생되면, 그 사건 발생에 따라 정의된 이벤트

루틴이 실행된다. 그 결과 시스템의 상태가 바뀌고, 미래에 발생될 새로운

사건들이 계획된다. 계획된 미래 사건들은 미래사건 리스트 (Future Event

List: FEL)에 저장되고, 시뮬레이션의 엔진은 이러한 FEL 을 관리하여

정해진 시간에 정의된 미래 사건들이 발생될 수 있도록 한다.

다음 사건 진전 (next time advance) 방식에 의한 엔진은 현재의 시뮬레이션

시각에서 더 이상의 발생될 사건이 없을 때 FEL 에 있는 사건 중 가장

빨리 발생되어야 할 사건의 시각으로 시뮬레이션 시각을 진전 시키고, 그

사건을 발생시킨다. 따라서, FEL 에 저장된 미래사건들은 발생될 시각

순서에 의하여 차례대로 삭제된다.

FEL 은 사건들의 발생 시각을 키 값으로 하는 우선순위 큐 (priority

queue)를 이용하여 구현된다. 우선 순위 큐 구조에는 비교적 단순한 연결

리스트(linked list) 뿐 만 아니라, 다소 복잡한 힙 트리(heap tree), 스프레이

트리(splay tree), 그리고, 칼렌다 큐(calendar queue) 등 다양한 구조들이

Page 64: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

60

있다. 이러한 우선 순위 큐 구조들은 두 가지 중요한 연산인 자료의

삽입과 삭제가 어떤 패턴으로 수행되는가에 따라 시간 복잡성이

달라진다.

그림 5.10 은 순서화된 선형 리스트를 구현한 단순 연결 리스트(single

linked list)를 나타낸다. 각 노드는 미래 사건을 의미하여 발생 시각인 타임

스템프(time stamp)를 특성치로 갖고 있다. 링크드 리스트의 HEAD 가

가리키는 노드는 가장 높은 우선순위, 즉, 가장 빠른 타임 스템프를

가지도록 유지된다. Enqueue 연산은 삽입될 노드의 타임 스템프를 기존

리스트의 타임 스템프들과 비교하여 제 위치에 있도록 리스트를

구성한다. 만약, 타임 스템프 11 을 갖는 노드를 그림의 연결 리스트에

삽입한다면 그림 5-10(b)와 같이 타임 스템프 9와 11을 갖는 노드 사이에

위치하게 된다.

Dequeue 연산은 항상 Head 가 가리키는 노드를 삭제시킨다. 때문에,

dequeue 연산에서는 타임 스템프들의 비교가 필요 없어 빠르게

수행되지만, enqueue 연산에서는 삽입될 사건의 타임 스템프를 기존

사건들의 타임 스템프와 비교하여야 하는 노력이 필요하게 된다. 만약,

리스트에 10,000 개의 사건이 저장되어 있다면 enqueue 연산은 최악의

경우 10,000 번의 타임 스템프 비교가 필요하게 되는 경우가 발생된다.

물론, 최선의 경우 1 번의 타임 스템프 비교로 끝날 수도 있다. 그러나,

최악의 경우가 반복된다면, FEL 을 유지하는데 많은 계산시간이

소요되어 복잡성이 증가하는 결과를 낳는다.

1HEAD 3 5 7 9

15 18 19 21 0

TAIL

1HEAD 3 5 7 9

15 18 19 21 0

TAIL

11

(a) Single linked list

(b) Time stamp 11의 삽입 결과

그림 5 . 1 0 단순 연결 리스트

칼렌다 큐

칼렌다 큐[Brown, 1988]는 기본적으로 동일한 시간 간격을 갖는 배열인

버켓(bucket)으로 구성되어 있고, 각 버켓에는 그 시간 간격에 해당하는

사건들이 타임 스템프 순으로 정렬된 링크드 리스트를 가르키고 있다.

사건이 enqueue 될 때 해당 시간 간격을 찾아 이에 해당하는 바켓의

링크드 리스트에 타임 스템프 순으로 삽입된다. Dequeue는 가장 최근에

삭제된 버켓에서 가장 빠른 사건을 찾아 삭제한다. 만약, 현재 버켓에

사건이 비어 있으면 다음 버켓을 조회하여 가장 빠른 타임 스템프를 갖는

사건을 삭제한다.

칼렌다 큐를 운용할 때 요구되는 파라미터에는 다음과 같은 것들이 있다.

Page 65: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

61

오늘 버켓(가장 먼저 발생할 사건이 있는 버켓)을 가르키는 포인터

다음 버켓의 중앙시각

가장 최근에 삭제된 사건의 시각

한 버켓의 기간

현재의 총 버켓 수

그림 5 . 1 1 칼렌다 큐

그림 5.11 의 8 개 버켓을 갖는 칼렌다 큐에서 버켓의 기간은 1 분이다.

현재 시각을 0 이라 하면, 1 분 이전의 타임 스템프를 갖는 사건들은

인덱스 0의 버켓에 저장된다. 8분부터 9분 사이의 타임 스템프를 갖는

사건 역시 인덱스 0의 버켓에 저장된다. 따라서, 사건의 enqueue 연산은

간단하다. 사건이 들어갈 버켓의 인덱스(bucketIndex)는 아래 식과 같이

쉽게 계산될 수 있고, 그 버켓이 가르키는 링크드 리스트에 사건을

삽입하면 된다.

bucketIndex = timeStamp % bucketWidth

Dequeue 연산은 현재 버켓인 인덱스 0을 갖는 버켓의 링크드 리스트에서

가장 빠른 타임 스템프의 사건을 삭제하면 된다. 만약 인덱스 0의 버켓에

사건이 없거나, 가장 빠른 타임 스템프가 다음 버켓의 중앙시각 보다

크다면 다음 버켓인 인덱스 1의 버켓을 조회한다. 예를 들어, 인덱스 0의

버켓에 타임 스템프 0.2 사건이 삭제되었다고 가정하고, 그 다음 사건을

삭제 한다고 하자. 현재 버켓인 인덱스 버켓에 있는 가장 빠른 타임

스템프는 8.2이다. 그러나, 다음 버켓인 인덱스 1의 중앙 시각은 1.5이다.

따라서, 8.2는 1.5 보다 크므로 8.2의 사건을 삭제하지 않고, 현재 버켓을

인덱스 1의 버켓으로 수정한다. 인덱스 1 버켓의 가장 빠른 타임 스템프는

1.3이고, 다음 버켓의 중앙값인 2.5보다 작다. 따라서, 타임 스템프 1.3의

사건을 삭제한다.

칼렌다 큐에서 중요한 파라미터인 총 버켓 수는 저장된 사건의 수에

따라 조절되어 성능을 향상시키는 효과를 가져오도록 한다. 평균적으로

한 버켓에 2개 정도의 사건이 있도록 하여, 현재 사건 수가 현재 버켓 수의

배 이상이면 총 버켓 수를 두배로 증가 시킨다. 반대로 현재 사건 수가

현재 버켓 수의 반 보다 작으면 총 버켓 수를 반으로 줄인다.

0

head

0.2

next8.2

next

1

head

1.3

next1.5

next

2

head

2.0

next

3

head

3.2

next3.3

next3.8

next

4

head

4.6

next

5

head

6

head

6.2

next6.5

next6.6

next6.7

next

7

head

7.1

next7.2

next7.8

next

6.8

next6.9

next

null

nowBucket=0 lastTime=0.0 timeWidth = 1.0 nBuckets = 8 bucketTop = 1.5

Page 66: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

62

버켓의 수 외에 또 다른 중요한 파라미터는 버켓의 기간이다. 이 기간을

잘 조정하여야 사건의 삭제시 복잡도를 감소시킬 수 있다. 칼렌다 큐를

제안한 Brown (1988)은 다음 방법으로 버켓의 기간을 결정하였다.

[버켓 기간 결정 방법]

단계 1: 현 사건 중 가장 빠른 시각의 사건을 최대 25 개 뽑아 이들

사건들의 시간 간격에 대한 평균을 구한다. 단, 샘플의 시간 간격이 너무

크면 이를 제외한다.

단계 2: 단계 1의 평균 3배를 하여 시간 간격을 구한다.

Page 67: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

63

Page 68: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

64

6 시뮬레이션 모델링

흐름 라인 제조 시스템

흐름라인은 많은 수의 작업물이 각 작업장에서 순차적으로 작업되는

생산 라인이다. 주로 대량생산에서 채택하는 시스템으로 한가지 또는

여러가지 생산품을 만들기 위한 전용 작업장들을 일렬로 배치하는

형태를 취하여 모든 작업물은 동일한 작업 순서를 거쳐 최종 생산품이

만들어 진다.

흐름라인의 설계자는 우선 생산품을 만들기 위해 필요한 작업들이

무엇인지를 도출하여 이들을 단위 작업으로 분리하여야 한다. 각 단위

작업은 서로 다른 작업장에서 순차적으로 처리될 수 있는 작업을

의미한다.

흐름라인의 성능은 주로 단위시간 당 생산되는 제품의 수인 생산율

(production rate)을 척도로 한다. 생산율을 높이기 위하여 라인은

균형(balance)되어 있어야 한다. 만약 라인 상에 존재하는 어느 한

작업장의 생산율이 다른 작업장에 비해 가장 나쁘다면, 라인의 생산율은

이 작업장의 생산율에 의존한다.

흐름라인에서의 시뮬레이션은 다음과 같은 질문에 답하기 위하여

이용된다.

주어진 흐름라인의 최대 생산율은 ?

병목(bottleneck)이 되는 작업장은?

만약 병목이 되는 작업장을 제거 했을 때 다음 병목이 되는

작업장은?

각 작업장의 앞에 위치한 버퍼의 용량은?

한 단위작업을 위한 기계의 수는?

조정 방법은? (push, pull, CONWIP)

우선, 가상적인 생산라인을 통하여 흐름라인의 시뮬레이션 로직을

이해하자.

시뮬레이션 로직

기념 동전 생산 라인 1 은 기념 동전을 만드는 간단한 생산 라인이다.

라인은 순차적인 4기계(즉, 4 작업장)로 구성되어 있고, 잘 정의되어 있는

안정된 공정을 사용한다. 첫번째 기계는 펀치 프레스로 원판을 동전

모양으로 자르는 작업을 한다. 두 번째 기계는 동전의 한면에 공을 차는

선수의 모습을 찍고, 다른 면에 올림픽 로고를 찍는다. 세 번째 기계는

동전의 둘레를 가공한다. 마지막으로 4 번째 기계는 동전에 붙어 있는

찌꺼기를 제거하는 청소를 한다. 각 기계는 공정 당 정확히 2분이 걸린다.

각 동전은 한 기계에서 가공된 후 즉시 다음 기계로 이동된다. 라인은

일일 24 시간 가동되고, 식사, 휴식등에는 여분의 작업자가 투입된다.

예제의 목적 상 동전에 대한 수요는 무한이라고 가정하여 모든 제품은

즉시 팔리므로, 생산율이 클수록 좋은 시스템이다.

Page 69: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

65

우선, 각 기계의 용량(capacity)은 모두 같은 값으로 분 당 1/2개 작업물을

처리할 수 있다. 각 기계의 용량이 같은 이러한 라인을

밸런스(balance)되어 있다고 말한다.

이 라인에 허용되는 총 작업물의 수를 1, 2, 3, 4로 하여 시뮬레이션 해보자.

종이와 연필, 그리고, 동전 몇 개를 이용하면 쉽게 시뮬레이션 할 수 있다.

그림 6.1은 라인에 하나의 작업물 만을 허용하는 경우 한 사이클 동안을

시뮬레이션한 결과를 나타낸다.

1T=0

T=2

T=4

T=6

1

1

1

그림 6 . 1 W I P = 1 인 경우의 기념 동전 생산라인 1 시뮬레이션

이 시뮬레이션에서 각 작업물은 8분 동안을 시스템에서 보낸다. 따라서,

매 8 분 마다 작업물이 생산되어 다음과 같은 성능 척도를 나타낸다.

생산율 = 1개/8분 = 1/8 개/분

흐름시간 = 8분

평균 작업물 수 = 1

그림 6.2는 라인에 두 개의 작업물 만을 허용하는 경우 한 사이클 동안을

시뮬레이션한 결과를 나타낸다.

1T=0

T=2

T=4

T=6

2

1

1

12

2

2

그림 6 . 2 W I P = 2 인 경우의 기념 동전 생산라인 1 시뮬레이션

각 작업물에 대한 흐름시간을 첫번째 기계에 투입되는 시점으로부터

라인을 빠져 나갈 때 까지의 시간이라고 하자. 각 작업물의 흐름시간은

이전의 경우와 동일하다. 그러나, 라인에 두 개의 작업물이 허용되므로

생산율은 두배로 증가한다.

Page 70: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

66

흐름시간 = 8분

WIP = 2개

생산율 = 2개/8분 = 1/4 개/분

그림 6.3은 라인에 세 개의 작업물 만을 허용하는 경우 한 사이클 동안을

시뮬레이션한 결과를 나타낸다.

1T=0

T=2

T=4

T=6

2

1

1

12

2

2

3

3

3

3

그림 6 . 3 W I P = 3 인 경우의 기념 동전 생산라인 1 시뮬레이션

흐름시간은 이전의 경우들과 동일하나 생산율은 증가한다.

흐름시간 = 8분

WIP = 3개

생산율 = 3개/8분 = 3/8 개/분

만약, 4 개의 작업물이 라인에 허용된다면 다음의 결과를 가져올 것은

자명하다.

흐름시간 = 8분

WIP = 4개

생산율 = 4개/8분 = 1/2 개/분

기념 동전 생산 라인 2 는 조금 복잡한 경우로서 다수의 기계를 갖고,

밸런스가 되어 있지 않는 라인이다. 이전의 예와 같이 동전을 만드는 4개

공정으로 구성되어 있지만, 각 작업장에서의 기계수 와 공정 시간은 표

6.1 에서와 같이 서로 상이하다. 또한, 인접한 두 기계 사이에 재공품을

임시 저장할 수 있는 무한대의 용량을 갖는 버퍼가 위치하고 있다고 하자.

다수 기계를 갖는 작업장들의 라인에 대한 용량은 역시 병목율 또는 가장

늦은 속도의 작업장에 의해 정의된다. 이 예에서 병목은 작업장 2이다.

표 6 . 1 기념동전 생산라인 2

작업장 번호 기계대수 공정시간(분) 작업장 율

1 1 2 0.50 쟙/분

2 2 5 0.40 쟙/분

3 5 10 0.50 쟙/분

4 2 3 0.67 쟙/분

Page 71: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

67

총 7개의 작업물을 생산 완료할 때 까지를 시뮬레이션 해보자(그림 6.4).

2 hr

5 hr

10 hr

3 hr

7

12

3

4

5

6

그림 6 . 4 기념 동전 생산라인 2 시뮬레이션

표 6.2 는 각 기계와 버퍼에 있는 작업물을 시간대별로 나타낸 것이다.

Sij 는 I 번째 작업장의 j 번째 기계를 의미하고, Bi 는 I 번째 작업장의

버퍼를 의미한다. 표의 값 a/b에서 a는 기계 작업의 종료시간, b는 작업물

번호이다.

표 6.2에서 보듯이 7개의 작업물에 대한 처리가 끝나는 시각은 35이다.

따라서, 0 부터 35 시간 동안의 시뮬레이션한 결과에 의해 생산율은

7/35(개/분)이다.

각 작업물의 흐름시간은 서로 상이하다. 표 6.3 은 각 작업물에 대해

첫번째 기계에 투입되는 시간, 가공시간, 대기시간, 흐름시간을 나타낸다.

따라서, 평균 흐름시간은 (20+20+21+21+22+22+23)/7 = 21.3 분이다.

평균 WIP 은 35 시간 동안의 재공품 수인 WIP 의 평균으로 다음의

수식으로 구할 수 있다.

T

tWIPWIP

T

average

0

)(

따라서, 평균 WIP 을 구하기 위하여는 시간대별로 라인내에 있는

재공품의 수를 구하여야 한다. 이를 나타낸 것이 그림 6.5 이다. 이

그림에서 그래프 하단의 면적을 구하여 시뮬레이션 시간인 35로 나누면

149/35 = 4.27 이다.

Page 72: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

68

표 6 . 5 시간대별 시스템 상태 (기념 동전 생산라인 2 )

시각 S1 B2 S21 S22 B3 S31 S32 S33 S34 S3

5

B4 S41 S42

0 2/1

2 4/2 7/1

4 6/3 7/1 9/2

6 8/4 /3 7/1 9/2

7 8/4 12/3 9/2 17/1

8 10/5 /4 12/3 9/2 17/1

9 10/5 12/3 14/4 17/1 19/2

10 12/6 /5 12/3 14/4 17/1 19/2

12 14/7 /6 17/5 14/4 17/1 19/2 22/3

14 /7 17/5 19/6 17/1 19/2 22/3 24/4

17 22/7 19/6 27/5 19/2 22/3 24/4 20/1

19 22/7 27/5 29/6 22/3 24/4 20/1 22/2

20 22/7 27/5 29/6 22/3 24/4 22/2

22 27/5 29/6 32/7 24/4 25/3

24 27/5 29/6 32/7 25/3 27/4

25 27/5 29/6 32/7 27/4

27 29/6 32/7 30/5

29 32/7 30/5 32/6

30 32/7 32/6

32 35/7

표 6 . 6 기념컵 동전 생산라인 2 의 작업물 별 흐름시간

작업물 시작시간 가공시간 대기시간 흐름시간

1 0 20 0 20

2 2 20 0 20

3 4 20 1 21

4 6 20 1 21

5 8 20 2 22

6 10 20 2 22

7 12 20 3 23

평균 20

그림 6 . 5 W I P 의 변화

각 기계의 이용율은 표 7.7에 의한다.

0

1

2

3

4

5

6

7

8

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35

Page 73: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

69

표 6 . 7 기념 동전 생산라인 2 의 이용율

기계 이용시간 이용율 작업장 이용율

S1 14 14/35 14/35

S21 20 20/35 20/35

S22 15 20/35

S31 20 20/35 14/35

S32 20 20/35

S33 20 20/35

S34 10 10/35

S35 0 0

S41 12 12/35 10.5/35

S42 9 9/35

M/M/1 대기

한명의 이발사가 있는 이발소에 고객들이 도착하여 서비스를 받는다.

고객들의 도착율은 평균 10명/시간의 포아슨 분포에 따르고, 이발시간은

평균 4.8분의 지수분포에 따른다.

이 시스템에서의 상태는 이발사의 상태와 대기하는 고객 수이다. 사건은

두 가지로 고객의 도착과 서비스 종료이다. 8 시간 동안을

시뮬레이션한다면 부가적으로 시뮬레이션 종료 사건이 추가된다.

Event Type Event description

1 고객 도착

2 서비스 종료

3 시뮬레이션 정지 (8시간)

각 이벤트 발생에 따르는 실행 루틴은 그림 7.6과 같다.

고객 도착

다음 고객의 도착을계획

이발사Idle?

고객의 서비스 시작이발사의 상태 = BUSY

고객을 대기열에넣는다

이발 끝나는 시각을계획

이발 끝

대기열에고객이 있나?

대기열에서 고객을 제거 이발사의 상태 = IDLE

다음 사건?

그림 6 . 6 M / M / 1 사건 실행 루틴

Page 74: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

70

재고 시스템

시뮬레이션의 대상이 되는 재고 시스템은 다음과 같은 특성을 갖는다.

한가지 품목에 대한 재고관리

수요 사이의 시간은 평균 0.1월의 지수 분포

수요량(D)은 다음 확률에 따른다.

6/1,4

3/1,3

3/1,2

6/1,1

p

p

p

p

D

주문비용: 32원/주문

재고비용: 1원/개/월

Backlog 비용: 5원/개/월

주문과 납품간 시간(delivery lag)은 (0.5월, 1월)의 균일분포

(s, S) 정책

매월 1일에 재고 파악

초기 재고: 60개

(s, S) 정책은 두가지 파라미터 s, S를 갖고 있다. 현 재고(I)를 파악하여

s이하로 떨어지면 주문을 한다. 주문양은 S-I이다.

S

s

1 2t

S-I(1)

S-I(1)

Delivery lag

주문발생

주문도착

그림 6 . 7 ( S , S )정책하에서의 재고 추이

이러한 특성을 갖는 재고 시스템을 12 개월간을 시뮬레이션하여 다음

대안들을 비교해보자.

Page 75: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

71

s 20 20 20 20 40 40 40 60 60

S 40 60 80 100 60 80 100 80 100

대안들을 비교하기 위한 성능척도는 총비용이다.

총 비용 = 주문 비용 + 재고 비용 + Backlog 비용

재고비용 산정을 위해서는 다음 수식에 의해 월간 평균 재고량을

구하여야 한다.

n

dttI

I

n

0

)(

월간 평균 backlog 양은 다음 식에 구한다.

n

dttI

I

n

0

)(

재고 시스템에서 고려되는 사건은 다음과 같다.

Event Type Event description

1 공급자로부터 주문양 도착

2 고객의 수요 발생

3 시뮬레이션 정지 (12월)

4 재고 파악 (매월 시작일)

다음 사건

주문양 도착

현재재고량 += 주문양

수요 발생

수요량 결정

현제재고량 -= 수요량

다음 수요 발생사건 계획

재고 파악

현재 재고량 < s

주문량 결정

주문 도착사건 계획

다음 재고 파악사건 계획

그림 6 . 8 ( S , S ) 정책 모델의 사건 루틴

공항

하나의 활주로를 갖고 있는 공항에서 비행기들의 이착륙이 이루어진다.

이륙 또는 착륙을 하고자 하는 비행기들은 줄을 서서 자기 차례가 되면

Page 76: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

72

이륙 또는 착륙을 한다. 착륙하려는 비행기들은 이륙하려는 비행기들에

비해 높은 우선순위를 갖는다. 즉, 착륙하려는 비행기가 있으면

우선적으로 착륙 시키고, 착륙하려는 비행기가 없는 경우에만 이륙이

허용된다.

착륙 비행기의 평균 도착율: 5/시간

이륙 비행기의 평균 도착율: 5/시간

평균 이착륙 시간: 4.8분

8시간 동안을 시뮬레이션 하여 평균 대기 시간, 평균 대기 수를 구해보자.

Event Type Event description

1 착륙 비행기 도착

2 이륙 비행기 도착

3 이착륙 종료

4 시뮬레이션 정지 (8시간)

착륙 비행기 도착

다음 착륙 비행기의도착을 계획

활주로Idle?

활주로의 상태 = BUSY착륙 비행기를착륙대기열에넣는다

착륙이 끝나는시각을 계획

이착륙 끝

착륙대기열이비었나?

이륙대기열에서비행기 제거

다음 미래 사건?

YesNo

이륙 비행기 도착

다음 이륙 비행기의도착을 계획

착륙대기열이비었나?

활주로의 상태 = IDLE

활주로Idle?

Yes

활주로의 상태 = BUSY

이륙이 끝나는시각을 계획

이륙 비행기를이륙대기열에넣는다

No

No

Yes

이륙대기열이비었나?

이륙이 끝나는시각을 계획

No

No

착륙대기열에서비행기 제거

착륙이 끝나는시각을 계획

Yes

그림 6 . 9 공항의 사건 실행 루틴

Page 77: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

73

Page 78: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

74

7 출력분석

시뮬레이션과 통계적 분석의 관계

통계적 분석이 시뮬레이션과 어떤 관계가 있을까? 시뮬레이션은 대상이

되는 실제 시스템을 흉내내는 것이다. 따라서, 실제 시스템이 완벽하게

예측될 수 없는 성질의 것이라면, 시뮬레이션 역시 랜덤의 성질을 가져야

한다.

그렇다면, 실제 시스템에서의 이러한 예측될 수 없는 특성은 어디서 오는

걸까? 불행하게도, 랜덤에 대한 의미의 해석은 우리 모두에게 어려움을

초래한다. 랜덤 현상에 대한 한가지 해석은, 우리가 불완전한 정보를

가지고 있으므로 시스템이 랜덤으로 행동하는 것처럼 보인다는 것이다.

이 관점에 깔려있는 전제는 만약 우리가 모든 우주의 법칙을 알고 있고,

어느 시점에서의 우주에 대하여 완벽한 묘사를 할 수 있다면 우리는 그 때

이후의 일들에 대한 전모를 확실하게 예측할 수 있다는 것이다.

두 번째 해석은 우주는 원래 랜덤으로 행동한다는 것이다. 다르게

표현하면, 우주에 대한 완벽한 묘사와 법칙은 미래를 예측하는데 불충분

하다는 말이다. 이들은 잘해봐야 무엇이 발생할 지에 대한 통계적

추정만을 제공한다는 것이다. 더욱이 동일한 초기 조건은 동일한 미래를

가져오지 않는다. 인과 법칙을 명백하게 무너뜨림으로써 이 관점은

철학자들 사이에 비판을 받아왔다. 그러나, 이를 옹호하는 사람들은

랜덤에 의해 영향을 받지 않는 다른 근본적인 양들을 정의함으로써

인과법칙이 복구될 수 있음을 지적한다.

이러한 두 사고에 대한 논쟁은 20 세기 초 물리학자들 사이에서 뜨겁게

달아올랐다. 아인스타인은 첫번째 관점을 옹호하였고, 보어는 두 번째

관점을 믿어 아인스타인에게 “신에게 무엇을 해달라고 졸라대지 말라”는

내용의 편지를 보냈다. 근자에 들어, 몇몇 철학자의 반박에도 불구하고,

실험적 증명은 두 번째 관점의 손을 들어 주었다.

랜덤 현상이 기본적으로 발생하는 것이건 아니면 지식의 결핍에서

기인하건 효과는 동일하다. 실제 시스템의 많은 단면들은 본질적으로

예측 불가능하다. 사실, 서로 다른 때에 동일한 조건과 동일한 조정

정책으로 시작한다고 해서 동일한 출력을 경험할 수 없을 것이다.

이러한 불확실성의 실세계를 묘사한 시뮬레이션 모델이 갖고 있는

일관성의 결여는 모델이 잘못 구성되었음을 의미하지 않는다. 이는 단지

시뮬레이션이 우리가 알고자 하는 실제 시스템의 랜덤을 그대로

반영하고 있다는 것을 의미한다. 따라서, 실제 시스템에 내재하고 있는

랜덤 효과를 시뮬레이션하는 것은 모델의 큰 장점이 된다.

랜덤 현상을 모델에 포함하는 것은 좋은 모델링을 의미하지만, 약간의

문제를 발생시킨다. 시뮬레이션 모델에서 랜덤은 일반적으로 난수

생성기에 의해 발생된다. 만약 시뮬레이션이 난수 생성기에 의한 랜덤의

입력을 사용한다면 출력 역시 랜덤이다. 결과적으로 동일한 시뮬레이션

모델을 두 번 실행시킨 결과는 서로 다른 결과를 가져온다.

말하자면, 시뮬레이션은 실험의 일종으로 결과 데이터의 분석과 해석에

통계적 도구가 필요하다.

그러나, 불행하게도 시뮬레이션 실험의 통계적 설계나 분석은

시뮬레이션 프로젝트에서 간과되기 일수이다. 시뮬레이션 모델을 위한

Page 79: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

75

모델링, 코딩, 모델의 검증은 매우 중요한 일들로 인식되지만, 모델의

실행은 단순한 일로 인식되어 한번의 실행으로 시뮬레이션 결과를

이해하려고 할 수도 있다. 그러나, 한번의 실행으로 결과를 이해하려고

하는 것은 주사위를 한번 던져 4가 나올 경우 주사위의 모든 면이 4일

거라고 결론짓는 것과 같다.

랜덤효과의 필요성

랜덤 입력으로 인해 랜덤의 출력이 발생되어 분석에 어려움을

초래한다면, 아예 모델에 랜덤 입력을 없애는 방안을 생각할 수 도 있다.

이러한 방안은 다음과 같은 장점을 가져온다.

입력 분포의 필요성을 없애 모델링 과정을 간단하게 한다.

시뮬레이션의 실행이 빠르다.

시뮬레이션 모델의 실행은 한번으로 족하다.

이러한 장점은 일견 좋게 생각되지만, 이미 언급한 바와 같이 올바른

시뮬레이션 모델은 아니다. 이를 설명하기 위하여 다음의 예를 보자.

하나의 머시닝 센터와 검사 작업장으로 구성된 그림 7.1의 생산 시스템이

있다. 작업물의 도착간 시간은 평균 1 분의 지수분포이고, 기계의

작업시간은 0.7 분에서 0.8 분 사이의 균일분포이다. 검사시간은

0.8분에서 0.9분 사이의 균일분포이다. 검사장을 거쳐간 작업물의 90%는

시스템을 빠져 나가지만, 10%는 재작업이 이루어 진다. 또한, 머시닝

센터에서는 고장이 발생하여 고장간 시간은 평균 6 시간의 지수분포에

따르고, 수리시간은 8분에서 12분 사이의 균일분포에 따른다.

이 시스템의 초기 조건은 시스템 내에 작업물이 없고, 기계는 방금

수리되어 쉬고 있고, 검사기기 역시 쉬고 있다. 이 시스템은 정확히

16시간 동안 운영된다. 표 7.1의 기본 모델은 이 모델을 5번 반복 수행한

결과를 나타낸다.

랜덤을 없애는 한 방법은 랜덤의 시간 대신에 평균 시간을 사용하는

것이다. 따라서, 작업물의 도착간 시간은 1 분이고, 기계 작업시간은

0.75 분, 검사시간은 0.85 분, 기계 고장 간 시간은 360 분, 수리 시간은

10 분이다. 또한, 검사를 끝낸 모든 작업물은 시스템을 빠져 나간다고

가정하자. 이러한 확정적 가정하에서의 시뮬레이션 결과는 표 7.1 의

확정적 모델에 포함되어 있다. 랜덤 효과가 없으므로 시뮬레이션은 한번

만 실행되었다.

이 확정적모델의 결과를 랜덤효과가 포함된 올바른 모델의 결과와

비교하면, 생산율은 그래도 비슷하게 나온다. 그러나, 작업물이

시스템내에 보내는 흐름시간은 4배 이상 적게 나온다. 왜 그럴까? 기계

작업시간과 검사시간의 변동을 배제함으로써 대기 중인 작업물간의

혼잡을 없애기 때문이다. 말하자면 작업물의 혼잡을 유발하는 것은 바로

변동 그 자체이기 때문이다. 따라서, 변동을 없앤 결과는 매우 좋은

성능을 가져와서 시스템의 능력을 과대 평가하게 된다.

결국 시스템의 성능을 제대로 평가하기 위하여는 랜덤 효과를

시뮬레이션 모델에 포함시켜야 한다. 그 결과 시뮬레이션의 출력 역시

랜덤의 특성을 갖는다. 출력에 대한 통계적 분석이 필요한 이유는 바로

여기에 있다.

Page 80: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

76

Machiningcenter

Inspectionstation

Queue

Good0.9

Bad0.1

EXP(1) U(0.7,0.8) U(0.8,0.9)

MTBF: EXP(360)MTTR: U(8,12)

그림 7 . 1 생산 시스템의 예

표 7 . 1 생산시스템 시뮬레이션 결과

기본 모델 확정적 모델 정규분포의 도착간

시간

반복 생산율 흐름시간 생산율 흐름시간 생산율 흐름시간

1 971 10.2 958 2.3 867 4.7

2 913 8.1 973 3.7

3 996 12.2 927 5.4

4 956 6.9 904 4.3

5 937 9.1 929 5.0

평균 954.6 9.3 958 2.3 900.0 4.6

입력분포 선택

시스템에 대한 시뮬레이션 모델을 만드는 과정에서 모델을 실행시키기

위한 다양한 파라미터 값들을 결정하여야 한다. 만약 모델이 랜덤이라면,

확률변수에 대한 관측을 토대로 하여 분포를 설정하여야 한다. 이전의

예에서 작업물의 도착간 시간 간격이 평균 1분의 지수분포에 따른다고

하였지만 이를 어떻게 결정하였을까? 분포를 설정하기 위하여 우선

분포의 형태나 모양을 결정하여야 하고, 이에 따른 파라미터를

결정하여야 한다. 이러한 목적에서의 분포 선택은 매우 중요하다. 분포가

시뮬레이션의 출력에 지대한 영향을 미치기 때문이다. 이를 설명하기

위하여 이전의 예를 보자. 평균 1 분을 갖는 지수분포의 도착간 시간

간격이 평균과 분산이 1 분인 정규분포에 따른다고 하자. 두 분포는

다르지만 평균과 분산은 동일하다. 만약, 지수분포가 올바르다면,

정규분포의 사용은 모델링 오차에 속한다. 정규분포를 사용한 5 번의

실행결과가 [표 8.1]에 나와 있다. 평균 생산율은 900 개로 기본 모델의

경우에 비해 약 6%정도 낮게 나온다. 그러나, 작업물이 시스템에서

보내는 평균 흐름시간은 4.6 분으로 기본 모델에 비해 51%나 낮다. 이

예에서 보듯이 잘못된 입력 분포의 설정은 모델의 출력에 중요한 영향을

미친다.

그렇다면 입력분포의 결정은 어떻게 하여야 할까? 가장 바람직한 것은

확률변수에 대한 관찰을 충분히 하는 것이다. 이 관측된 데이터를

이용하여 가장 잘 맞는 분포를 찾아내는 것이다. 즉, 관찰 데이터를

Page 81: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

77

이용하여 히스토그램을 그리고, fitting에 의해 이 히스토그램에 가장 잘

맞는 형태의 분포와 파라미터를 찾는 것이다. 그 다음에는 적합도 검정에

의해 선택된 분포를 통계적으로 검사하는 것이다. 만약, 잘 맞는 분포가

없다면 경험적 분포로서 관측된 데이터를 그대로 이용할 수 있다.

그러나, 관측된 데이터가 없거나, 혹은 관측이 불가능한 경우에는 어떻게

할까? 일반적으로 다음의 방법이 사용된다.

시스템을 잘 아는 사람에게 확률변수에 대한 낙관적 값과 비관적

값을 물어보아 이 두 값을 끝점으로 하는 균일분포로 가정한다.

위의 두 값에 추가하여 가장 많이 나올 것 같은 값(most likely

value)을 물어본다. 이들 세 값을 이용하여 삼각분포로 가정한다.

위의 세 값에 추가하여 평균치 값을 추정한다. 만약 이 값이 추정될

수 있다면, 이들 값을 이용하여 베타 분포로 가정한다.

a b x

f(x)

x

f(x)

a bmx

f(x)

a bm

(a) 일항분포 (b) 삼각분포 (c) 베타분포

그림 7 . 2 입력 분포의 종류

유한시간과 안정상태 분석

시뮬레이션 분석의 대상이 되는 시스템이 어느 상태에 있을 때를

분석하느냐에 따라 유한 분석과 안정상태 분석으로 나뉜다. 유한 시간

분석이란 정해진 시간 범위내의 상태에 대한 성능을 분석하는 것을

의미한다. 반면, 안정상태 분석은 시스템의 운영을 무한 시간으로

가정하여 안정상태에 도달했을 때의 성능을 분석한다.

예를 들어 은행의 고객서비스를 대상으로 고객이 가장 많이 몰리는 오전

11 시부터 오후 2 시 까지를 시뮬레이션 하여 성능을 분석한다면, 이는

유한적인 시간을 갖는다. 또는 생산 라인에서 100 개의 쟙을

처리하기까지의 성능을 분석한다면 이는 유한적인 시간을 갖는다.

물론 모든 시스템이 유한시간을 갖는다고 할 수 있다. 그러나,

시뮬레이션의 목적 상 시스템의 운영을 무한시간으로 한다고 가정하는

경우가 있다. 예를 들어, 새로운 재고관리 시스템을 설치하여 5년 이상을

운영한다는 계획을 세웠다고 하자. 재고관리 시스템에서는 transaction이

하루에도 수없이 발생한다고 가정하면, 5 년 이라는 기간은 매우 긴

기간으로 간주될 수 있고, 매우 빠른 시간에 안정상태에 도달한다. 이러한

시스템을 시뮬레이션 하였을 경우, 시스템이 안정 상태에 도달 한 후의

상태에 대한 분석을 수행하는 것이 바람직하다.

유한시간 성능 분석

Page 82: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

78

Terminating system 의 성능 분석을 위한 시뮬레이션 실행은 보통 여러

번을 반복하여 한번의 실행에서 하나의 샘플을 수집한다. 각각의

시뮬레이션 출력은 시스템의 확률적인 특성으로 인해 서로 다른 값이

나올 것이다(확률적 모델인 경우, 난수의 seed를 바꿔줌으로써 서로 다른

결과가 나온다). 이러한 출력 데이터에 대한 분석에 전통적인 통계이론을

적용할 수 있다.

:N 시뮬레이션 실행 반복 수

iX : i번째 시뮬레이션의 결과 한 성능의 추정치

NXX

N

i

i /

1

)1/()(

1

22

NXXs

N

i

i

이러한 출력 데이터를 이용하여 성능척도의 평균치 X 에 대한 추정을

한다. 만약, 각 iX 들이 독립이라면, X 는 기대 성능에 대한 불편

추정치(unbiased estimate)이다. 또한, X 의 분산에 대한 불편 추정치는

Ns /2 이다.

X의 신뢰구간을 구하는 것은 매우 중요하다. 그러나, X에 대한 분포를

모르는 상황에서 정확한 구간을 구할 수 없다. 따라서, X에 대한 분포를

근사적으로 구하여야 한다. 이는 다음의 중심극한 정리에 따른다.

중심 극한 정리(Central limit theorem)

확률변수 iX 의 기대치( ][XE )와 분산( ][XV )이 유한한 값을 갖고 있다고

가정하자. N개의 iX 들에 대한 평균은 다음과 같다.

NXX

N

i

i /

1

이 평균값에 대한 기대치와 분산은 다음과 같다.

NXVXV

XEXE

/][][

][][

만약 N이 무한대라면 다음의 확률변수는 표준정규분포에 근사한다.

)1,0(][

][N

XV

XEX

위의 중심극한 정리에 의해 샘플의 수가 무수히 많다면, X는 정규분포에

따르므로, X 에 대한 신뢰구간은 ][][ XVkXE 이다. k 는 표준

정규분포에서 각 양쪽 끝의 확률을 (1-)/2로 한 양수의 값이다. 그러나,

우리는 X에 대한 기대치와 분산을 주어진 샘플로부터 추정하여야 한다.

따라서, 신뢰 구간은 NskX /2 로 k는 N-1 자유도의 t분포에서 각 양쪽

끝의 확률을 (1-)/2로 한 값이다.

Terminating 시스템은 보통 불안정한 transient 상태를 보여 시간대 별로

시스템 상태가 상이할 수 있다. 이러한 상황에서 전체 평균으로 하나의

성능 척도를 추정하는 것은 의미가 없을 수 있다. 때문에, 시간대별 또는

사건별로 성능척도를 추정하는 것이 바람직할 수 있다.

:N 시뮬레이션 실행 반복 수

:M 한 시뮬레이션에서의 관측 수

Page 83: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

79

ijX : i번째 시뮬레이션의 결과 j 번째 관측에서의 성능 추정치

iY : i번째 시뮬레이션 결과 성능 추정치

MjNXX

N

i

ijj ,,2,1,/

1

NYY

n

i

i /

1

)1/()(

1

22

NXXs

N

i

jijj

)1/()(

1

22

NYYs

N

i

iY

M/M/1 대기 시스템에서 도착률은 시간당 10, 평균 서비스 시간은

4.8 분으로 traffic rate 는 0.8 이다. 8 시간 동안을 시뮬레이션 한다고

가정하자. 25번을 반복 실행한 결과 시간대별 고객 당 평균 대기 시간은

표 7.2와 같다.

Page 84: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

80

표 7 . 2 M / M / 1 유한시간 시스템 시뮬레이션 결과

반복 Xi1 Xi2 Xi3 Xi4 Xi5 Xi6 Xi7 Xi8 평균

1 4.12 0.72 11.71 3.16 11.6 0.32 6.82 5.44 6.18

2 7.41 20.54 16.18 2.14 1.11 2.82 8.21 8.93 9.06

3 9.14 8.65 2.18 1.99 3.88 39.9 49.14 46.2 23.9

4 1.69 0.36 9.52 17.12 9.86 21.96 11.01 11.47 12.18

5 6.94 0.95 13.63 18.59 13.81 9.64 3.33 32.63 13.99

6 3.39 9.65 2.21 3.2 3.71 23.89 39.98 28.17 15.89

7 3.89 24.54 24.81 5.13 0.6 5.45 5.81 4.34 9.68

8 9.82 10.1 24.09 7.74 10.09 5.25 13.42 3.69 11.96

9 7.89 2.6 0.67 3.44 2.05 13.05 12.25 7.53 6.99

10 3.83 23.93 10.65 2.48 0.26 0 11.22 21.07 10.28

11 3.74 25.82 43.11 40.76 54.88 63.77 84.02 118.19 54.42

12 1.83 3.7 5.94 12.04 7.62 41.37 31.6 12.93 14.6

13 2.75 2.61 0.85 4.24 0.76 4.43 0 1.89 2.32

14 6.11 10.5 12.15 12.79 17.18 5.38 0.35 3.39 9.73

15 0.89 17.09 26.62 14.36 13.5 39.89 12.29 13.96 18.19

16 12.09 5.31 14.75 22.34 3.74 3.6 0 3.97 10.33

17 0 14.36 6.44 3.76 3.03 4.4 1.18 15.14 5.72

18 0.5 8.58 11.41 20.92 25.19 0.73 14.97 7.84 13.66

19 0.54 3.49 4.38 3.34 8.57 3.4 27.95 14.07 9.49

20 7.25 9.13 9.23 0.95 1.65 6.06 15.57 3.84 7.86

21 5.06 4.11 16.23 9.66 2.19 18.41 0.31 3.89 8.36

22 10.86 2.19 1.19 6.94 4.07 16.82 3.26 1.75 6.77

23 0.17 8.59 9.77 2.1 11.2 3.21 4.09 10.06 6.21

24 0.61 4.35 14.92 1.99 0.63 1.51 24.63 17.25 9.25

25 2.47 4.31 5.43 32.19 3.2 2.81 2.27 2.52 8.71

평균 4.52 9.05 11.92 10.13 8.58 13.52 15.35 16.01 12.23

분산 3.58 7.79 9.78 10.30 11.47 16.51 19.32 23.85 9.87

CI/2 1.48 3.21 4.04 4.25 4.74 6.82 7.98 9.84 4.08

Low 3.04 5.83 7.88 5.88 3.84 6.71 7.37 6.16 8.15

Upper 6.00 12.26 15.96 14.39 13.31 20.34 23.32 25.85 16.31

안정상태 출력분석

안정 상태 분석은 시스템의 운영을 무한대로 한다고 가정하고,

안정상태에서의 성능 척도를 분석하는 것이다. 이 문제는 다음과 같이

수학적으로 서술할 수 있다.

}{ nX 을 확률적 과정(stochastic process)이라고 하고, 잘 정의된 다음의

확률 분포를 가진다고 하자.

][lim)( xXPxF nn

문제는 이 확률적 과정의 long-term 기대치를 구하는 것이다.

][lim nn

XE

그러나, 실제적으로는 유한시간 동안의 시뮬레이션 실행을 통하여

안정상태의 분석을 하기 때문에 일반적인 통계이론이 적용되기 어려운

점이 존재한다. 특히, 안정 상태 분석을 위해 다음과 같은 문제점을

고려하여야 한다.

Page 85: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

81

초기 Transient 상태

시뮬레이션의 초기 상태는 안정상태가 아닌 transient 현상을 보인다[그림

7.3]. 일반적으로 초기 transient 상태에 있는 출력 데이터를 제거하고

안정상태에 들어간 후의 출력 데이터를 분석하는 것이 합리적일 수 있다.

그렇다면, 어느 시점이 안정상태인지 아닌지를 판단할 수 있는 방법은

무엇인가? (안정상태까지의 기간을 warm up period 라고 한다) 불행하게도

안정상태를 판단할 수 있는 확실한 방법이 아직 없기 때문에 warm up

period를 결정하기가 어려운 실정이다.

샘플간의 공분산

한번의 시뮬레이션을 수행한 결과 생성된 성능 척도의 샘플들은

독립적이 아니고, 서로 관계가 있는 성질의 것이다. 때문에 샘플들이

독립적이라는 가정하에서 구한 성능 척도의 분산은 부적합하다.

실행 시간 길이

안정 상태의 성능 척도를 구하기 위한 시뮬레이션은 얼마나 오랫동안

실행하여야 할까?

그림 7 . 3 T R A N S I E N T S T A T E 와 안정상태

본 장에서는 안정상태의 시뮬레이션 분석을 위한 2가지 방법을 설명한다.

반복에 의한 방법 (truncation-replication)

배취 평균 방법 (batch mean)

반복에 의한 방법

Terminating system 의 분석에 이미 반복에 의한 방법을 사용하였다. 즉,

여러 번의 시뮬레이션 실행을 통하여 각 실행에서 성능 척도에 대한

안정상태에서의 결과를 수집한 후 일반적인 통계이론을 적용한다. 이미

언급한 바와 같이 시뮬레이션 실행에서 warm-up period 와 run length,

그리고 부가적으로 반복 수를 결정하여야 한다.

여기서는 Welch에 의한 warm-up period 결정방법을 소개한다. Welch의

방법은 transient state 를 그래프를 이용하여 시각적으로 판단하는

방법으로서 각 반복에서의 성능척도들을 평균하여 smoothing한다.

0

0.05

0.1

0.15

0.2

0.25

0.3

1 51 101 151 201 251 301 351 401 451 501 551

Flow Time

Flow…

Page 86: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

82

예) M/M/1 대기 시스템에서 도착률은 시간당 9, 평균 서비스 시간은

6 분으로 traffic rate 는 0.9 이다. 1,000 명이 서비스를 받을 때 까지를

시뮬레이션하여 고객 당 시스템에서 보낸 시간을 plotting한 결과는 그림

7.4 와 같다. 5 번을 반복하여 각 고객의 평균 시간을 그린 결과는 그림

7.5와 같다. 그림 7.5는 그림 7.4에 비해 안정상태가 어느 때인지를 보다

선명히 판단할 수 있게 한다. 그러나 보다 나은 판단을 위해 이동평균법을

사용한다. 그림 7.6 은 이동 평균에 의한 결과를 그린 것으로 30 개의

평균법을 사용하였다. 그림 7.6 에서 약 500 명의 고객이 떠난 후에

시스템은 안정상태로 돌입한다고 판단되었다. 500 명 이후 나머지

500명에 대한 평균 시간을 추정한 결과는 표 7.3과 같다.

따라서, 평균시간에 대한 90% 신뢰구간은 다음과 같다.

그림 7 . 4 M / M / 1 대기 시스템에서의 고객 당 F L O W T I M E

그림 7 . 5 M / M / 1 시스템에서 5 번의 실행을 평균한 고객당 F L O W T I M E

0

0.5

1

1.5

2

2.5

3

3.5

4

1 101 201 301 401 501 601 701 801 901

0

0.5

1

1.5

2

2.5

3

3.5

4

1 101 201 301 401 501 601 701 801 901

Page 87: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

83

그림 7 . 6 M / M / 1 시스템에서 5 번의 실행을 평균한 결과의 이동평균

표 7 . 3 반복에 의한 안정상태 분석 결과

반복 500명의 평균시간

1 0.56

2 0.50

3 0.50

4 0.84

5 0.50

평균 0.58

분산 0.0222

배취 평균 방법

반복에 의한 방법의 단점은 각 시뮬레이션에서 warm-up period 동안

실행한 후 안정 상태에 돌입한 후의 상태에서 run length 동안 실행하여야

하는 장기간 동안의 실행을 필요로 한다는 것이다. 즉, 매 실행 마다 warm-

up을 시켜 주어야 하기 때문에 실행시간에 낭비가 발생할 수 밖에 없다.

배취 평균 방법은 이러한 단점을 극복하기 위하여 고안된 것으로 한번의

시뮬레이션 실행을 통하여 안정상태의 분석을 가능케 한다.

한 시뮬레이션 실행에서 m 개의 관측치를 구하였다고 하자. 예를 들어,

M/M/1대기의 시뮬레이션에서 각 고객의 대기 시간이 이에 속한다.

관측치: mxxxx ,,,, 321

)1/()(

/

2

1

2

1

mxxs

mxx

m

i

ix

m

i

i

b를 배취의 크기라고 하자. n은 배취의 수이다.

0

0.5

1

1.5

2

2.5

3

3.5

4

1 101 201 301 401 501 601 701 801 901

Page 88: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

84

)1/()(

/

/

/

1

2

1

)1(1

nyys

nyy

bxy

bmn

n

i

iy

n

i

i

ib

bi

ii

우리가 관심을 갖는 것은 x의 기대치, ][xE , 와 x의 분산, ][xV 이다. 배취

평균 방법은 x로 ][xE 를 추정한다. 정의에 의하면, xy 이다. ix 들이

독립이라면, ][xVar 의 불편 분산 추정치는 ms x /2 이다. 그러나, ix 들이

독립이 아니라면, 다음 관계가 성립한다.

1

1 1

2 ),()/2(/][][m

i

m

ij

jii xxCovmmxVarxVar

일반적으로 공분산이 양의 값을 갖는다고 하면, 독립적이라는 가정에서

구한 분산은 실제값보다 적은 값이 될 것 이다.

독립이라는 가정에서 구한 또 다른 추정치는 nsy /2 이다. 물론, 양의

공분산을 갖는다면 이 값 역시 편중된 추정치이다. 그러나, 이 값은 ms x /2

보다 덜 편중되어 있다. iy 들의 공분산이 ix 들의 공분산 보다 적기

때문이다.

1

1 1

2 ),()/2(/][][n

i

n

ij

jii yyCovnnyVaryVar

배취 평균 방법에는 fixed sample size와 sequential 의 두 가지 방법이 있다.

Fixed sample size 방법을 소개한다.

Fixed Sample Size Batch Mean 방법

Fixed sample size 방법은 배취의 크기 b와 관측치의 크기 m을 고정 시켜

iy 들에 대한 평균과 y의 분산을 구하는 것이다. 그러나, 배취 크기 b를

구하는 확실한 방법은 없다. 단지, 데이터를 분석하여 알맞은 b 를

결정하여야 한다. 단, iy 들 간의 공분산이 적도록 충분히 큰 배취 크기를

정하여야 한다.

이전의 M/M/1 대기 예에서 500 명의 고객이 시스템을 떠난 후부터

500 명에 대한 흐름시간을 배취평균법에 의해 구한다. 배취의 크기를

10으로 하여 총 50개의 배취에 대한 평균을 구하였다.

y = 0.565

nsy /2 = 0.1804/50 = 0.003617

90%의 신뢰구간은 다음과 같다.

1009.0565.0)06014.0678.1(565.0003617.0)05.0,50(565.0 t

Page 89: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

85

대안 비교

시뮬레이션의 장점은 “what if”이다. 즉, 시스템의 구성이나 파라미터가

바뀌었을 때 시스템의 성능이 어떻게 변하는지를 알 수 있도록 한다. 서로

다른 여러 대안의 시뮬레이션 결과를 얻었다면, 이들을 비교 분석하여

가장 바람직한 대안을 결정하여야 한다. 그림 7.1의 생산 시스템 예에서

성능이 좋은 새로운 기계의 도입을 고려하고 있다고 가정하자. 새로운

기계의 처리시간은 0.5 분에서 0.6 분 사이의 균일분포에 따른다. 또한,

고장 간 시간은 평균 10시간의 지수분포이다. 표 7.4는 16시간 동안의

시뮬레이션 결과를 나타낸다. 두번째 열은 새로운 기계의 도입에 따른

시뮬레이션 결과로 생산율은 기본 모델의 경우에 비해 별 차이가 없어

보인다. 그러나, 흐름시간의 경우 더 좋은 성능을 가져온다. 그러나, 이들

수치는 단지 시뮬레이션 결과이므로, 이들을 비교 평가할 통계적 절차가

요구된다. 한 방법은 두 모델에서 각각 j번째 반복의 결과에 대한 차이를

구하여 이들 차이에 대한 통계적 검정을 수행하는 것이다. 표 7.4 의

마지막 열은 이러한 차이( jD )를 나타낸다. 흐름시간의 차이에 대한

평균과 분산은 다음과 같이 계산된다.

9846.0)54/()(/

1.1

5

1

22

j

jD DDns

D

이들 흐름시간의 차이가 독립이고, 정규분포에 따른다면, 95%의

신뢰구간은 다음과 같다.

75.21.199.0776.21.199.0)025.0,4(1.1 t

이 신뢰구간은 0을 포함한다. 따라서, 흐름시간의 측면에서 본다면, 5%의

유의 수준하에서 두 모델사이에 통계적으로 차이가 없다고 결론지을 수

있다.

이 통계적 검정 방법은 두 모델에서 동일한 반복에서의 차이를 독립된

데이터로 가정한다. 만약, 서로 다른 반복에서의 차이를 고려한다면, 다른

결과가 생성될 수 있을 것이다. 보다 확실한 비교를 위해서는 동일한

난수를 사용한 두 모델의 비교를 수행하는 것이 더 바람직 할 것이다. 이

방법은 보통 common random numbers라고 부른다. 이 방법의 장점은 두

시스템의 차이가 단지 랜덤의 효과 보다는 실제 시스템의 차이에

기인한다는데 있다. 따라서, 두 모델의 차이( jD )에 대한 분산이 감소할

것이다. 그 결과 신뢰구간이 적어져 비교를 보다 확실하게 할 수 있게

한다.

표 7 . 4 대안의 비교

기본 모델 새로운 모델 차이(기본 모델-

새로운 모델)

반복 생산율 흐름시간 생산율 흐름시간 생산율 흐름시간

1 971 10.2 942 6.6 29 3.6

2 913 8.1 956 4.8 -43 3.3

3 996 12.2 965 13.3 31 -1.1

4 956 6.9 955 6.2 1 0.7

5 937 9.1 943 9.9 -6 -0.8

평균 954.6 9.3 952.2 8.2 2.4 1.1

Page 90: 0 Chapter titles - HNUmip.hnu.kr/courses/simulation/book.pdf · 2018-09-10 · 시뮬레이션 분석절차 시뮬레이션 프로젝트의 수행절차는 다음의 8 단계로 구성된다

86