티스토리 뷰

시뮬레이션이란

시뮬레이션이란? 왜 필요한가

다이나믹소프트 2013. 5. 28. 17:21

 

 

시뮬레이션이란? 왜 필요한가

 

 

 

 

 

그림을 보니 사람들이 아마도 무슨 공연이나 경기를 관람하기 위해서 줄을 서서 기다리고 있는 것 같아요.

 

이렇게 기다리는 줄을 우리는 대기행렬이라고도 하지요.

 

그런데 어디에 들어가기 위해서 이렇게 줄을 서서 기다리고 있나요?

 

 

 

우리들은 어디를 가나 줄을 서서 기다립니다.

 

공항에서 비행기를 타기 위해서...  

 

또 입국심사를 받기위해서....

 

국제선 비행기를 타려면 출발 3시간 전에 공항에 도착해야 한다는군요.

 

 

 

 

 

 

 

 

런던 올림픽때는 그래서 사람들이 공항으로 안가고 유로스타 기차를 타고 가려고 기차역으로 몰렸답니다.

 

기차를 타기 위해서도 엄청 기다려야겠네요.

 

 

 

 

 

 

 

 

인기 있는 공연이나 경기를 관람하려면 항상 줄을 서야 한답니다.

 

여러분은 박람회나 엑스포 공원에 가면 엄청 기다려야 한다는 거 알고 계시죠?

 

 

 

 

 

 

 

 

 

 

드라마 허준에서도 그러잖아요. "줄을 서시오 ~~!!!"

 

때로는 인기있는 병원에 가면....

 

 

아픈 몸을 이끌고 병원 접수창구 앞에서 줄을 서고

 

치료 받기 위해서 진료실 앞에서 줄을 서고

 

진료비를 내기 위해서 수납창구 앞에서 줄을 서고

 

그리고 또 약을 타기 위해서 약국 앞에서 줄을 서야 해요.    

 

아픈 사람 혼자서 이런 병원에 가면 병이 악화되어서 집으로 돌아오지 못할 수도 있어요.

 

 

 

 

그런데 왜 병원에서는 환자들이 넘쳐나는데,,, 

 

아픈 환자들을 위해서 좀 더 많은 접수창구나 진료실을 만들지 않는 것일까요?

 

여러분은 알고 있나요? 

 

한 번 알아 맞춰 보세요.

 

 

 

 

 

 

 

 

 

 

 

한 번 이런 예를 들어 볼께요.

 

우리가 카드로 현금을 찾는 은행의 자동화창구(ATM)을 아시지요?

 

이 ATM에서 사람들이 현금을 찾는데 소요되는 시간은 평균적으로 3 걸린다고 해봐요.

 

그리고 평균적으로 4 분에 한 명의 손님이 이 ATM을 찾아 온다고 생각해 보세요.

 

사람들은 이 ATM을 사용하기 위해서 얼마나 기다려야 할까요?

 

그리고 이 ATM의 가동률은 몇 %가 될까요?

 

 

 

금방 계산이 되시지요?  

 

4분에 한 명씩 도착하고 현금을 찾는데 3분이 걸리니까....

 

아무도 기다릴 필요가 없이 모든 사용자는 ATM에 도착하자 마자 현금을 찾아서 돌아가는구요.

 

즉, 고객의 평균 대기시간이 0초이고, ATM의 가동률도 75%로 충분하군요.

 

훌륭한 시스템입니다.

 

 

 

 

 

 

 

 

그런데 이런 가정은 현실세계의 상황과는 조금 다른 것 같아요.

 

왜냐하면 사람들이 시간에 맞춰서 딱 딱 4분에 한 명씩 도착하지는 않챦아요.

 

 

물론 모두 합쳐서 계산하면 평균적으로는 4분에 한 명씩 도착하지만

 

어떤 때에는 여러 명이 동시에 몰려 오기도 하고, 어떤 때에는 한 참만에 한 명이 오기도 하고 그렇챦아요. 

 

 

 

그래서 이와 같이 사람들이 도착하는 시간이 일정하지 않고 계속해서 변화하는 것을

 

시스템(도착시간 간격 또는 도착률)의 변동성 이라고 하구요.

 

이와 같은 시스템의 변동성을 모델에 반영하기 위해서 분포라는 개념을 활용해야 한답니다.

 

 

 

우리가 모델을 만들 때 특정한 분포를 지정하면, 컴퓨터는 가상의 주사위를 막 던져가면서

 

고객의 도착시간 간격이 평균적으로 4분이 되도록 모델을 실행한답니다. (여기에 대해서는 후에 자세히 설명할 겁니다)  

 

 

위의 그림에서 보니까, 이럴 경우에 고객들은 약 1분정도씩 기다려야 하고 ATM의 가동률은 아직도 75%정도를 유지하는군요.

 

물론 충분한 기간동안 실험을 하고 분석을 해보면 고객들은 평균적으로 4분 이상 기다려야 한답니다.

 

 

 

 

 

 

 

 

 

 

그런데 가만히 생각해 보면 도착시간 간격뿐 아니라 현금을 찾는데 걸리는 시간도 사람마다 다른 것 같아요.

 

어떤사람은 1분 안에 찾기도 하지만 어떤 사람은 익숙치가 않아서 5분이 넘게 걸리기도 하지요.

 

물론 다 합쳐서 평균은 3분이지만....

 

 

 

마찬가지로 이번에는 시스템(처리시간)의 변동성도 모델에 반영하기로 해요.

 

그리고 나서 실험을 해보니 위의 그림과 달리 오랜 기간동안을 실험하면

 

고객들은 평균적으로 9분 정도를 기다려야 하고, ATM의 가동률은 75% 정도가 되네요.

 

 

 

가만히 생각해 보면 ATM의 가동률이 75%로 분명히 고객이 필요로 하는 이상의 처리능력을 가지고 있지만

 

고객들은 여전히 기다려서 서비스를 받아야 하는 상황이 발생하고 있지요?

 

위와 같은 상황에서 실험을 해본면 최대 26명이 줄을 서서 기다리는 경우도 발생하고

 

어떤 사람은 한시간 40분을 기다려야 현금을 찾을 수 있는 경우도 발생한답니다. 

 

(inter arrival time = negexp(4.0), process time = negexp(4.0) 인 경우)

 

 

 

이쯤 되면 누가 줄을 서서 기다리고 있겠어요? 

 

그런데 아까 이야기 한 병원의 경우에는 원장님이 돈을 아끼려고 그런 것이 아니라...

 

병원의 프로세스를 설계한 사람이 아마도 시뮬레이션을 활용하지 않고 설계를 한 것 같아요.

 

 

 

그래서 우리는 그런 실수를 다시 하지 않기 위해서 시스템의 변동성이 반영된 모델을 작성하고 

 

모델의 시뮬레이션을 통해서 시스템의 실행이 서비스 목표를 달성할 수 있는지를 검증한답니다.

 

서비스 목표가 뭐냐구요? 

 

예를 들면 이러겁니다. 

 

고객의 90% 이상이 5분 이내에 의사의 진료를 받아야 한다.

 

사실은 많은 병원이나 서비스 시설들이 이와 같은 시스템의 변동성을 줄이기 위해서 예약제를 운용하고 있답니다.

 

 

 

 

오늘 우리가 이야기한 내용은 시뮬레이션을 왜 해야 하느냐 인데...

 

시스템의 변동성 때문에 시뮬레이션을 해야 한다고 말씀드렸죠? 

 

그리고 그러한 변동성의 예로는 도착시간의 변동성 또는 처리시간의 변동성이 있다는 것을 이야기 했어요. 

 

그런데 이러한 변동성을 수반하는 시스템의 처리 능력을 어떻게 계산할 것인가

 

그리고 얼마나 많은 대기상황이 발생하는가를 수학적으로 계산할 수 있는 이론이 있어요.

 

 

 

 

 

 

 

 

 

지난 시간에 한 번 본 그림인데요.

 

여기서 Queuing Theory(대기행렬 이론)가 바로 그런 것을 알아보는 이론이예요.

 

시뮬레이션을 하기 위해서 Queuing theory를 공부할 필요는 없지만 컴퓨터가 없던 시절에는 매우 유용한 방법이었어요.

 

위의 ATM 문제를 풀자면 아래와 같아요. (복잡해 보이면 그냥 패스해도 상관없어요)

 

 

 

 고객 도착률 :  λ = 15명 / 시간,  도착시간 간격 :  1 / λ  =  1 / 15 시간 = 4분

 창구당 서비스 율 : μ = 1 / 서비스시간 = 1 / ( 3 / 60시간 ) = 20명 / 시간, 서비스 시간 = 1/ μ 시간 =3분

 서비스를 기다리는 평균고객 수 : Lq = λ2  / μ (μ- λ) = 152 / 20(20-15) = 2.25명

 고객이 대기행렬에서 소비하는 시간 : Wq = Lq  / λ = 2.25/15  = 0.15  즉,  약 9분

 고객이 시스템에서 소비하는 시간 : Ws = Lq  / λ  +  1/ μ  = 2.25/15  +  1/20  = 0.09 즉,  약 12분

 

λ    :  고객 도착률  (1/λ 고객의 도착시간 가격 , Inter Arrival Time)
μ    :  창구당 서비스 율 (1/μ  서비스 시간, Cycle Time)
Lq    :  서비스를 받기 위해 대기하는 평균 고객 수 (Avg. Size)
Ls  :  시스템 내 평균고객 수 (대기하거나 서비스를 받고 있는 Avg. W.I.P)
r  :  서비스를 받고 있는 평균 고객 수 (λ/μ )
ρ :  시스템 이용율
Wq :  고객이 행렬에서 대기하는 평균시간
Ws  :  고객이 시스템 내에서 소비하는 시간(행렬에서 대기하는 시간과 서비스 시간 Avg. Time)
M  :  창구의 수
Lmax :  행렬에서 대기하는 기대 최대고객 수 (max)

 

 

 

 

조금 복잡해 보이지요?

 

하지만 이런 수학적 방법은 현실세계의 시스템이 여러가지 수학적 제약조건을 만족한다는 전제에서만 문제를 풀수가 있어요.

 

예를 들자면 고객이 도착하는 도착률(시간당 몇 명  도착)이 포아송 분포를 가지고 ATM의 처리시간은 지수분포를 따른다...

 

 

하지만 현실세계는 그렇지가 않은 경우가 훨씬 더 많아요. 

 

아침 저녁으로 도착하는 고객들의 도착률이 다르고, 

 

또 처리시간도 오전에는 어르신들이 주로 창구에 들르기 때문에 오래걸리고... 등등

 

 

 

 

 

 

 

 

그리고 중요한 또 다른 문제는 ATM 창구와 달리 생산시설이나 대부분의 프로세스는 시스템 안에서 서로 연결되어서

 

서로 영향을 미치면서 시스템이 운용된다는 거예요.

 

 

즉 만약에 그림에서 두 번째 기계가 문제가 생겨서 서게되면 첫 번째 기계도 잠시 후에는 서야되고

 

세 번째와 마지막 기계는 할 일이 없이 놀아야 하는 상황이 발생하겠지요?

 

 

이렇게 서로 영향을 미치면서 프로세스 수행에 간섭하는 것을 시스템의 상관성 그리고 복잡성이라고 하는데요.

 

여기에 대해서는 다음시간에 이야기 해야 될것 같아요.

 

오늘은 그냥 이렇게 정리하면 될 것 같아요. 

 

 

시스템의 수행을 알아보기 위한 수학적 방법중에 대기행렬이론이라는 것이 있구나....

 

그런데 참 좋은 방법이지만 여러가지 수학적 제약조건을 만족해야만 이용할 수 있는 방법이구나...

 

그리고 현실세계의 문제를 수학적 모델로 단순화 시켜서 만들기에는 엄청난 어려움이 있겠구나...

 

이러한 문제를 해결하기 위해서 사람들이 시뮬레이션을 활용하는구나...

 

 

왜 시뮬레이션이 필요하냐구요? 

 

시스템의 변동성 (도착시간 간격의 변동성, 처리시간의 변동성),

 

즉 시간의 진행에 따라서 시스템의 상황이 계속적으로 변한다는 거예요.

 

변하는 것을 우리는 다이마믹하다고 하고 그런 시뮬레이션을 하기위한 모델을 다이나믹모델이라고 하는거지요.

 

Bye!!!