290 likes | 594 Views
기본적인 프로세스 모델링. 석사과정 박종원. 목차. 2.1 개체 , 속성 , 그리고 변수 2.2 개체의 생성과 소멸 2.3 변수와 속성의 정의 2.4 개체 처리 2.5 속성 , 변수 , 그리고 입출력 2.6 Arena ™ 에서의 흐름 제어 2.7 개체의 묶음과 해체 2.8 SIMAN 과 Arena ™ 의 Run Controller 2.9 요약. 용어 정리. 시스템 (System) : 공통의 목적들을 달성하기 위해 함께 활동하는 관련된 요소들의 집합
E N D
기본적인 프로세스 모델링 석사과정 박종원
목차 • 2.1 개체, 속성, 그리고 변수 • 2.2 개체의 생성과 소멸 • 2.3 변수와 속성의 정의 • 2.4 개체 처리 • 2.5 속성, 변수, 그리고 입출력 • 2.6 Arena™ 에서의 흐름 제어 • 2.7 개체의 묶음과 해체 • 2.8 SIMAN 과 Arena™의 Run Controller • 2.9 요약
용어 정리 • 시스템 (System) : 공통의 목적들을 달성하기 위해 함께활동하는 관련된 요소들의 집합 • 모수 (Parameter) : 모델의 입력 자료 중에서 시스템을 변화시키지 않는 고유한 특성 • 변수 (Variable) : 시스템의 상태를 표현해주는 수치 • 시스템 상태 (System State) : 특정한 시점에 시스템의 특정한 위치의 상황을 변수의 값을 이용하여 순간적으로 보여 주는 것 • 시스템의 상태 변수 (State Variable) : 시스템이 미래에 어떻게 전개되는지 설명하기 위해 필요한 최소한의 변수들의 집합을 의미 • 개체 (Entity) : 시스템 내에서 움직이거나 사건이 일어나는 원인이 되는 객체 (Object) • 속성 (Attribute) : 개체에 관련된 특성 • 사건 (Event) : 특정 시간에 시스템의 상태를 변화시키는 행동 • 활동 (Activity) : 두 개의 사건(시작 사건과 종료 사건)에 의해 결정되는 시간 간격 • 자원 (Resource) : 시스템에 있는 개체가 활용하기 위해 존재하는 것 • 대기행령 (Queue) : 개체의 움직임이 시스템 내에서 한정될 때 개체들이 기다리는 장소 • 미래 사건 달력 (Future Event List) : 시뮬레이션에서 사건이 일어날 순서를 기록하고 있는 목록
2.1 개체, 속성, 그리고 변수 • 개체는 시스템 내에서 움직이거나 사건이 일어나는 원인이 되는 객체 • 예) 소매상점 –고객, 제품, 상점에 도착하는 트럭 등 • 속성은 개체에 관련된 특성 • 속성은 개체의 종류를 구분함 • 속성은 개체에 붙어있는 변수로 생각할 수 있음 • 예) • 시스템에서의 광역변수는 시스템의 상태를 표현하는 수치 • 예) 상차중인 트럭의 수, 일하고 있는 지게차의 수 등
2.2 개체의 생성과 소멸 • 개체의 생성 : CREATE 모듈 • Type : 개체가 연속적으로 도착하는 유형을 의미 • Value : 도착 간격 시간 입력 • Max Arrivals : Create 모듈에서 최대로 몇 번의 개체 생성 사건을 발생시킬 것인지 설정 • Entities per Arrivals : 묶음(batch)단위로 도착하는 모델링에 사용 • First Creation : 첫 번째 개체가 시스템에 도착하는 시간
2.2 개체의 생성과 소멸 • 개체의 소멸 : DISPOSE 모듈 • 만들어진 각 개체는 각 개체 별로 메모리를 할당 받는데 일단 개체가 모델의 프로세스를 수행한 다음에는 소멸됨 • DISPOSE 모듈은 개체가 더 이상 필요 없을 때 개체를 처리하기 위한 역할
2.3 변수와 속성의 정의 • Arena™ 에서 사용되는 모든 변수는 광역변수 (전역변수) • 변수 선언 시 공백 사용 가능하며 공백 없는 것과 구분됨 • This is a legal name 과 같은 것도 변수로 사용 가능 • PartCount 와 Part Count는 다른 변수 • 변수 정의를 위해 다음과 같이 대화상자 및 스프레드 시트 입력 • 2차원 배열까지 사용 가능
2.3 변수와 속성의 정의 • Arena™ 에서 Entity 모듈을 이용하여 개체의 종류 설정
2.4 개체 처리 • 개체가 모듈 사이를 이동 • 두 모듈을 직접 연결 • 개체 전달 방법(transfer mechanism) • 현재 움직이고 있는 개체 : 활동 중인 개체 (active entity) • 활동 중인 개체는 지연(delay) 되거나 다른 모듈에 의해서 막힐(block) 때 까지 계속 이동 • Resource 모듈 : 자원의 필요 유무에 따라 모델링 • 제약 받지 않는 활동 (unconstrained) • 자원 제약적인 활동 (resource constrained) • Queue 모듈 : 대기 행렬에서 처리 우선순위 결정 • Hold 모듈 : 다른 개체에 의해 특정 신호가 활성화 되거나 특정 조건이 충족되기 전까지 개체가 HOLD 모듈 속에 포함된 대기행렬에서 기다리게 함 • Separate 모듈 : 모델 상에서 개체들이 자기 자신들을 복사
2.5 속성, 변수, 그리고 입출력 • 2.5.1 약국 모델 수정 • 2.5.2 ASSIGN 모듈의 사용 • 2.5.3 READWRITE 모듈의 사용 • 2.5.4 RECORD 모듈의 사용 • 2.5.5 변수의 애니메이션 • 2.5.6 모델 실행시키기
2.5 속성, 변수, 그리고 입출력 • 모델링 방법을 위한 질문들 • 시스템이 무엇인가? 시스템에 대해 어떤 정보가 알려져 있는가? • 요구되는 성능 지표들은 무엇인가? • 개체들은 무엇인가? 각 개체들에게 어떤 정보가 기록되거나 기억되어야 하는가? 개체들은 어떻게 시스템에 투입되는가? • 어떤 자원들이 개체들에 의해 사용되는가? 어떤 개체가 어떤 자원을 어떻게 사용하는가? • 프로세스 흐름(process flow)은 무엇인가? 프로세스나 활동 흐름 다이어그램(activity flow diagram)을 도시하라 • 시뮬레이션을 위한 의사코드를 개발하라 • Arena™를 통해 모델을 구현하라
2.5.1 약국 모델 수정 • 약사가 1명 있고, 고객이 기다리는 대기행렬도 1개인 소규모 약국 • 시간당 평균 10명의 고객이 포아송 과정에 의해 약국에 도착 • 약사가 고객의 주문을 처리하는데 소요되는 시간은 임의로 달라지는데 평균 3분인 지수 분포를 따름 • 선입 선출 서비스 • 대기열 크기 제약은 없음 • ( M / M / 1 ) : ( FCFS / ∞ / ∞ ) 모형 • 시뮬레이션은 오직 30명의 고객들에 대해서 실행
2.5.1 약국 모델 수정 • 사용될 모듈들 • C REATE : 30명의 고객을 생성 • ASSIGN : 변수와 속성에 값을 할당 • READ / WRITE : 고객으로부터 필요한 정보를 기입 • PROCESS : 약사에게 요구된 처방전을 조제하는 활동을 구현 • RECORD : 고객의 시스템 체류 시간에 대한 통계량을 기록 • DISPOSE : 생성된 개체들의 소멸 • FILE : 데이터 모듈 안의 READWRITE 모듈에서 사용되는 운영 체제 파일의 특성들을 정의 • VARIABLE : 고객이 가지고 있는 처방전의 각각의 수량과 전체 수량을 추적하기 위해 변수들을 정의
2.5.1 약국 모델 수정 • 표 2-3의 정보 모델링 • 이 정보는 고객들을 생성하는 방법에 관한 것이므로 시스템에 소속된 것이라고 봐야함 • VARIABLE 데이터 모듈을 선택하여 다음과 같이 변수 정의
2.5.2 ASSIGN 모듈의 사용 • 표 2-3의 정보 모델링 • 이 정보는 고객들을 생성하는 방법에 관한 것이므로 시스템에 소속된 것이라고 봐야함 • VARIABLE 데이터 모듈을 선택하여 다음과 같이 변수 정의
2.5.2 ASSIGN 모듈의 사용 • ASSIGN 모듈에 할당된 순서를 보여주는 스트레드시트 뷰 • myNP : DISC 함수에 의해 무작위로 추출되는 1, 2, 3 중 하나의 값을 가지는데 이것은 현재 고객이 가지고 있는 처방전의 수를 의미 • vNumPrescriptions : 새로운 vNumPrescriptions는 기존의 값에 새롭게 도착한 고객의 처방전 수(myNP) 값을 합산한 것 • myNP 값의 증가 : 1차원 배열 변수 vNP를 이용하여 시스템에 있는 고객의 수를 처방전 수량에 따라 분류 • myArriveTime : TNOW를 이용하여 현재 시뮬레이션 시간 기록 • vEventType : (1 = 도착, 2 = 출발) 등과 같은 사건의 종류를 기록
2.5.3 READWRITE 모듈의 사용 • READWRITE 모듈은 시뮬레이션으로부터 추출된 정보나 시뮬레이션에서 도출되는 값을 필요한 순간에 파일에 기록하는 기능을 제공 • 차후에 정보 처리나 분석 과정에서 유용
2.5.4 RECORD 모듈의 사용 • RECORD 모듈은 개체가 모듈을 통과할 때 마다 정보를 표로 작성 • Count : 이름이 지정된 카운터의 값을 정해진 수량만큼 증가/감소 • Entity Statistics : 지속 시간과 비용처럼 개체에 관련된 일반적인 정보를 만들어냄 • Time Interval : 특정한 속성의 값과 현재 시뮬레이션 시간의 차이를 계산하고 기록 • Tim e Between : 개체들이 해당 모듈에 도착한 시간의 차이를 추적하여 계산하고 기록 • Expression : 특정한 표현식의 값을 기록함
2.5.4 RECORD 모듈의 사용 • RECORD 모듈은 개체가 모듈을 통과할 때 마다 정보를 표로 작성 • Count : 이름이 지정된 카운터의 값을 정해진 수량만큼 증가/감소 • Entity Statistics : 지속 시간과 비용처럼 개체에 관련된 일반적인 정보를 만들어냄 • Time Interval : 특정한 속성의 값과 현재 시뮬레이션 시간의 차이를 계산하고 기록 • Tim e Between : 개체들이 해당 모듈에 도착한 시간의 차이를 추적하여 계산하고 기록 • Expression : 특정한 표현식의 값을 기록함
2.5.5 변수의 애니메이션 • Animate Variables 옵션을 이용하여 현재 시스템에 있는 처방전의 수량 표시 가능
2.5.6 모델 실행시키기 • 모델에서 고객을 30명만 생성하라고 요구
2.6 Arena™ 에서의 흐름 제어 • 모델에서 개체들이 움직이는 방향을 결정하기 위한 매커니즘 • 논리적(logical)이고 확률적인(probabilistic) 조건 • 반복 루프(iterative looping) • 개체의 이송
2.6.1 논리적이고 확률적인 조건 • 논리를 제어하기 위한 구조 • DECIDE • BRANCH • IF-ELSE-ENDIF • 가장 많이 쓰이는 DECIDE 모듈 • 2-way by condition
2.6.2 반복 루프 • C언어와 같은 언어에서 for-loop, do-while과 같이 명령문의 집합을 반복적으로 수행 • WHILE/ENDWHILE 블록 제공 • 2.6.3 예제 : 반복 루프, 표현식과 하위 모델 • 2.6.3.1 모델의 구축 • 2.6.3.2 VARIABLE 모듈 • 2.6.3.3 EXPRESSION 모듈 • 2.6.3.4 계층적 하위 모델 • 2.6.3.5 WHILE-ENDWHILE 블록 • 2.6.3.6 PROCESS 모듈의 지연 옵션
2.6.3 예제 : 반복 루프, 표현식과 하위모델 • CREATE : 모델에서 두 개의 다른 도착 프로세스를 표현하기 위해 두 개의 CREATE 모듈을 사용 • ASSIGN : 변수들과 속성들의 값을 할당하는데 사용 • WHILE&ENDWHILE : 개체들이 조건을 만족시킬 때 까지 순환 • DECIDE : 개체들이 조건을 만족시킬 때 까지 순환 • PROCESS : 모델의 시뮬레이션에서 단순히 시간을 지연 • DISPOSE : 생성된 개체를 소멸 • VARIABLE : 모델에서 사용되는 변수와 배열 정의 • EXPRESSION : 모델에 사용되는 표현식의 이름을 정의 • SUBMODEL : 하위모델은 모델 창의 일부 영역으로 여러 모듈들을 하나의 모듈로 통합한 것
2.6.3 예제 : 반복 루프, 표현식과 하위모델 • 이 시스템은 제품을 생산 • 모델 1과 모델 2라는 두 가지의 모델 구성을 가짐 • 제품들의 기본 작업 시간은 제품의 종류에 따라 독립적 • 실제 작업 시간은 기본 작업 시간 분포를 이용하여 10개의 값을 무작위로 생성한 후, 그 10개의 값을 합한 시간으로 가정 • 작업은 연속적인 두 개의 동일한 공정에서 수행 • 작업이 끝나면 제품은 시스템을 떠남 • EXPRESSION 모듈 : 함수와 연산자를 이용하여 표현식을 만들 때, 표현식을 기억하기 위해 구조가 필요한데 이 때 사용
2.7 개체의 묶음과 해체 • BATCH • 2개 이상의 개체를 일시적으로 혹은 영구적으로 묶어서 하나의 개체로 표현 • 일시적인 개체는 제조 시스템에 대한 모델을 구축할 경우 조립 공정이나 분해 공정을 표현할 때 유용하게 사용 가능 • 영구적인 개체는 조립 공정으로 끝나는 경우 사용 • SEPARATE • 묶인 개체가 다시 원래의 개체로 돌아감
2.8 SIMAN과 Arena™의 Run Controller • Arena™을 이용하여 개발한 프로그램의 오류확인에 도움
CREATE DISPOSE PROCESS ASSIGN RECORD BATCH SEPARATE DECIDE VARIABLE RESOURCE QUEUE ENTITY SET READWRITE FILE EXPRESSION DELAY MATCH IF / ELSE / IF ELSE / END IF WHILE / END WHILE BRANCH 2.9 요약