179
Event System Toolbox 사용자 지침서 1.0 Version 서울 대학교 전기공학부 이산현상 시스템 연구그룹 조 영철, 장 혁진, 박 제형 이 책은 셈툴(CemTool)에서 이산현상 시스템의 성능분석과 제어기를 설계하기 위한 ToolBox 에 대하여 설명한다. 우선 이산현상 시스템의 모델들을 제시하고, 이러한 모델들을 통하여 이산현상시스템의 성능분석하고 제어하는데 어떻게 이용되는지를 설명한다. 이산 현상시스템의 성능 분석부분에서는 큐잉모델과 시간 페티리네트 모델을 이용하여 시스템을 분석하고 성능을 분석하는 방법들을 제시한다. 또한, 이산현상시스템의 제어 부분에서는 논리적 모델과 시간적 모델로 분류한 후, 각각의 경우에 제어기를 합성하는 문제를 어떻게 다루는가를 설명한다.

Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Event System Toolbox

사용자 지침서

1.0 Version

서울 대학교 전기공학부

이산현상 시스템 연구그룹

조 영철, 장 혁진, 박 제형

이 책은 셈툴(CemTool)에서 이산현상 시스템의 성능분석과 제어기를 설계하기 위한

ToolBox에 대하여 설명한다. 우선 이산현상 시스템의 모델들을 제시하고, 이러한

모델들을 통하여 이산현상시스템의 성능분석하고 제어하는데 어떻게 이용되는지를

설명한다. 이산 현상시스템의 성능 분석부분에서는 큐잉모델과 시간 페티리네트 모델을

이용하여 시스템을 분석하고 성능을 분석하는 방법들을 제시한다. 또한, 이산현상시스템의

제어 부분에서는 논리적 모델과 시간적 모델로 분류한 후, 각각의 경우에 제어기를

합성하는 문제를 어떻게 다루는가를 설명한다.

Page 2: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Event System Toolbox

- 목 차 -

제 1 장 이산현상 시스템 개요

제 2 장 페트리 네트 (Petri Net) 모델

2.1 페트리네트의 동작

2.2 페트리네트의 분석

2.3 reachability tree 와 coverability tree

2.4 Boundedness

2.5 Liveness

2.6 Reversability

2.7 Siphon & Trap

제 3 장 시간 페트리 네트 (Timed Petri Net) 모델

3.1 Firing Times

3.2 Holding Times

3.3 Enabling Times

3.4 Holding Times 와 Enbling Times의 비교

3.5 Place-Timed Petri Nets

제 4 장 큐잉 (Queueing)의 기본 이론

4.1 개요

4.2 기호

4.3 Little's Law

4.4 Markov Process

4.5 Discrete-time Markov Chain

4.6 Continuous-time Markov Chain

4.7 Birth-death Process

제 5 장 단일 큐잉 모델

5.1 큐잉모델의 분류

5.2 M/M/1모델

5.3 M/M/n 모델

5.4 M/M/1/K 모델

5.5 M/M/n/K 모델

Page 3: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.6 M/M/c/c 모델

5.7 M/M/∞ 모델

5.8 Finite Source Queue 모델

5.9 M/G/1 모델

5.10 G/G/1 모델

제 6 장 큐잉 네트워크

6.1 Burke's Theorem

6.2 Opened Queueing Networks

6.3 Closed Queueing Networks

제 7장 관련 함수

부 록

A. List of Function

B. List of Example

Page 4: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

1. 이산 현상 시스템

자연계에 존재하는 동적 시스템은 주로 연속적인 특성을 지닌다. 온도와 수량, 속도, 가속도등

시스템의 상태는 주로 미분방정식과 부분 미분 방정식으로 표현하고 이를 이용하여 동적시스템을

효과적으로 다루는데 성공하였다. 반면에, 현대기술의 발전은 인공적인 동적인 시스템을

탄생시키고 있다. 그러한 시스템의 예로는 생산공정의 조립라인, 컴퓨터/통신시스템, 공중과

지상에서의 교통시스템, 경제의 동작등이다. 이러한 시스템의 특성은 시스템의 상태가 이산적인

사건(Discrete Events)에 의해 시간적으로 변화한다는 것이다. 예를 들면, 사람이나 작업 하나가

도착하고 나가는 것, 메시지가 전송되고 도착하는 것등이 이산적인 사건들이다. 이렇게 시스템의

상태가 이산적인 사건에 의해 시간적으로 변화하는 시스템을 이산 현상 시스템(Discrete Event

System, DES) 혹은 이산 현상 동적 시스템(Discrete Event Dynamic System, DEDS) 이라고 부른다.

이것과 반대되어, 기존의 자연적이며 물리적인 세계를 표현하는 시스템을 연속변수 동적 시스템

(Continuous Variable Dynamic System, CVDS) 혹은 그냥 `연속 시스템' 이라 부른다. 이러한

시스템은 대개 미분 방적식(differential equations)이나 차등 방정식(difference equations)등으로

표현된다.

그림 1.(a)와 같이 이산현상시스템의 전형적인 괘적(trajectory)를 통하여 이산 현상 시스템의

특성을 살펴보자. 그림 1.(a)는 간단한 통신 시스템의 동작을 묘사한 것이다. 이와는 대조적으로

미분 방정식으로 표현되는 연속변수 시스템의 괘적을 그림 1.(b)를 통하여 대조할 수 있다. 그림

1.(a)는 하나의 큐(Queue)와 서버(Server)의 동작을 나타내고 있다. 는

대기중인 고객의 수를 나타내며, 는 고객이 도착하는 사건, 는

서버에 의해 한 고객의 서비스가 완료한 사건이다. 특히 는 고객 2명이 동시 에 큐에 도착 한

경우이다. 그림에서 알 수 있듯이 이산 현상 시스템의 괘적은 이벤트에 의해 구동되어(event

driven) 다른 상태로 천이(transition)되고 다른 이벤트가 발생하기 전까지는 그 상태는 변하지

않는다 (piecewise constant). 시스템의 상태는 연속적이지 않고 이산적이다. 유지시간 (Holding

Times)는 어느 특정 상태에 머무는 시간을 의미한다. 따라서, 시스템의 괘적은 (이산 상태,

유지시간)으로 표현할 수 있다.

Page 5: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. (a) DES 의 괘적의 예와 (b) CVDS의 괘적의 예

시스템의 괘적은 이산 상태, 유지시간, 이산 사건의 특성에 따라 여러 가지로 분류할 수 있다.

이산 상태는 그 개수가 유한한 것(Finite States)과 무한한 것(Infinite States)의 종류로 나눌 수

있으며, 유지시간은 불규칙/규칙(Random/Determinstic)으로 구분할 수 있고, 이산 사건의 발생도

불규칙/규칙(Random/Determinstic)한 경우로 구분할 수 있다. 이러한 구분은 본 장에서 상세히

설명하도록 한다.

여기서 유의할 점은 DES 의 상태와 CVDS의 상태는 다르게 정의된다는 것이다. 연속시스템에서

상태의 정의는 수학적인 의미를 갖는 것이 일반적이다. 즉, 시스템의 다이나믹스가 수학적인

모델에 의해 주어지고 현재의 '상태'를 알고 있다면, 미래의 어느 시간에서의 상태를 예측할 수

있다. 하지만, DES의 상태는 말 그대로 시스템의 상태만을 지칭하는 것이 일반적이다. 예를

들어서, 그림 1.(a)에서 현재의 상태는 (큐에 대기열의 수)와 시스템의 다이 나믹스를 알지라도

미래의 상태는 예측이 불가능하다.

이산현상시스템은 생활속에서 자주 접할 수 있다. 예를 들어, 햄버거를 사기위해 줄을 서는

경우를 생각해 보자. 상점에는 2명의 점원이 들어오는 고객의 순서대로 서비스한다고 가정하자.

그림 2.(a)는 두명의 점원이 각각의 줄에 들어온 고객을 서비스하는 경우을 나타내고, 그림 2.(b)는

두명의 점원이 하나의 줄에 들어온 고객을 분담하여 서비스하는 경우을 나타낸다. 고객의

입장에서 본다면, 두 개의 방법중 어느 방법이 더 서비스의 질이 좋을지를 생각해 보자.

그림 2. 햄버거를 사기위해 줄을 서는 시스템 (두명의 점원).

Page 6: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 2.(a)는 만약 하나의 큐가 비어 있고, 또 다른 큐가 비어 있지 않은 경우에, 비어있는 큐의

점원은 더 이상 서비스를 하지 않고 휴지상태(Idle) 상태가 된다. 즉, 상점에 대기중인 고객이

있음에도 불구하고 한사람의 점원이 쉬고 있다는 의미이다. 이와는 대조적으로, 그림 2.(b)은

큐가 비어 있을 경우에만 (상점에 대기중인 고객이 한 명도 없는 경우에만) 두 명의 점원이

휴지상태가 된다. 서비스의 질을 높이기 위해서는 고객의 대기시간을 줄여야 하므로,

햄버거상점의 주인 은 (b)의 경우를 채택하여야 옳을 것이다. 고객의 대기시간을 줄임으로써

단위시간당 처리할 수 있는 고객의 수(Throughput)가 증가하고, 결국 하루동안의 판매량이

증가할 것이다. 반면에, (b)의 경우는 서비스를 진행중인 상태(Busy State)가 더 자주 발생하므로

`점원의 입장'에서 본다면 서비스하는 시간(Utilization)이 증가하고, 고된 직장 생활이 될 것이다.

이러한 이산 현상 시스템을 체계적으로 모델링하고, 그 모델을 바탕으로 분석하여, 우리가 원하는

상태를 유지시키거나 피하도록 제어하는 것은 중요한 연구분야중의 하나일 것이다.

4

2. 페트리 네트 모델

Petri Net는 1960년대 C.A. Petri에 의해 처음 개발되었다. 페트리 네트는 오토마타와 유사한 점이

많고, 실제로 오토마타는 페트리 네트로 표현이 가능하다. 페트리 네트의 장점은 동시성

(Concurrency)과 동기적인 사건(Synchronized Event)을 표현할 수 있으며, 가시적으로 표현

(Visuality)이 가능하여 이해하기 편리하다는 장점이 있다. 지금까지 페트리 네트를 이용한 많은 이

론적인 연구과 개발툴들이 개발되어 왔다.

페트리 네트에서 일반적으로 사건은 트랜지션(transition)으로 언급된다. 트랜지션이 발생하기 위해

서는 시스템의 여러 조건이 만족되어야 한다. 이러한 조건에 대한 정보는 플레이스(places)에 저

장된다. 어떠한 플레이스들은 한 트랜지션의 입력 조건이 되고, 어떠한 플레이스들은 한 트랜지션

의 출력 조건이 된다. 이러한 관계를 통하여 페트리 네트는 아래와 같이 정의한다.

Page 7: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

정의 1. Petri Net은 아래의 튜이플(three-tuple)로 구성된다.

여기서,

P : Place Set

T : Transition Set

Ai : Input Incedence Matrix : (TxP) -> {0, 1, 2, 3,....}.

Ao : Output Incedence Matrix : (PxT) -> {0, 1, 2, 3,....}.

플레이스 집합은 으로 표현하고, 트랜지션 집합은 으로 표현한다. 아

크 함수, Ai는 플 레이스로 들어오는 트랜지션의 연결정보를 나타내며, 입력 Incedence Matrix라고

부르고, 각 원소의 기호는 a(t,p)로 쓴다. Ao는 플레이스에서 나가는 트랜지션 연결정보를 나타내

며, 기호는 출력 Incedence Matrix라고 하고 a(p,t)로 표현한다. 여기서 이다.

a(t,p)=a(p,t)=0은 플레이스 p와 트랜지션 t사이에 입출력관계가 없다 는 것을 의미한다. a(t,p)가 0

이 아닐때에는 트랜지션 t가 플레이스 p의 입력이 되고, a(p,t)가 0이 아닐 때에는 플레이스 p가

트랜지션 t의 입력이 됨을 의미한다. 플레이스와 트랜지션의 입출력 관계를는 아래의 기호를 사용

하여 표현한다.

,

,

는 place p 의 출력(입력) 집합이라 부르고, 는 transition t 의 출력 (입력)집합이라

부른다.

페트리 네트는 다른 모델과 유사하게 관례적으로 graph형태로 표현하여 사용한다. 플레이스와

트렌지션 그리고 모든 아크 함수는 동그라미와 사각형 그리서 화살표로 표현한다. 그 예가

그림에 나와 있다.

예제 1 아래와 같이 정의된 페트리 네트 (P, T, Ai, Ao)를 생각해 보자. , , A :

a( ) = 1, a( ) = 1, a( ) = 2, 기타의 아크 함수는 0이라고 가정한다. 따라서

Page 8: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

해당 페트리 네트의 그라프는 그림 1과 같다. 여기서, 이고 이다. a( ) =

2의 의미는 transition 으로부터 로 나가는 출력 의 arc가 2개임을 의미한다.

그림 1. 예 1의 페트리 네트 그라프.

2.1 페트리 네트의 동작

페트리 네트는 이산현상 시스템의 동작을 표현하기 위하여 `토큰'의 개념을 도입한다. `토큰'은 각

플레이스에 부여된 상태의 값이다. 앞에서 언급하였듯이 플레이스는 시스템의 이벤트를 발생시키

기 위한 조건정보를 담고 있고 그 조건 정보가 토큰의 개수로 표현된다. 그러므로, 각 플레이스에

부여된 토큰의 개수들의 정보로 시스템의 상태를 나타낸다.

정의. 2 페트리 네트의 마킹 m이란 아래의 함수와 같다.

m : P -> { 0, 1, 2, ... }

따라서 마킹은 여기서 은 페트리네트내의 플레이스의 개수이다.

정의. 3 마크트 페트리 네트(Marked Petri Nets) : 마크트 페트리 네트는 아래의 튜이플로

구성된다.

여기서 (P, T, Ai, Ao)는 페트리 네트이고, 는 초기 마킹이다.

Page 9: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

마크트 페트리 네트는 초기 마킹을 기반으로 시스템의 동작을 표현하는데 자주 이용된다.

따라서, 마크트 페트리 네트와 그냥 페트리 네트와의 차이가 확실한 경우, 마크트 페트리 네트를

그냥 페트리 네트라 부르도록 한다. 페트리 네트에서 마킹은 이산 현상시스템의 상태를 나타낸다.

상태와 상태의 천이는 인에이블 규칙과 점화 규칙에 의해 따라 동작한다.

정의. 4 : 인에블 규칙

어느 트랜지션의 입력 플레이스에 대하여 아래의 조건을 만족하면, 그 트랜지션은 인에이블

되었다라고 한다.

인에이블된 트랜지션들은 점화가 가능하며 트랜지션의 점화에 의해 마크트 페트리네트의 마킹은

점화 규칙에 의해 변화한다. 점화규칙의 정의는 아래와 같다.

정의. 5 : 점화 규칙

트랜지션 가 점화될 때 현재의 마킹 은 새로운 마킹 으로 아래와 같이 변화 한다.

예제 2 아래와 같은 마크트 페트리네트의 마킹의 동작을 기술하라.

그림 1. marked Petri net example

Page 10: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 4.의 마크트 페트리네트는 로봇이 물건을 운반하는 시스템을 기술한 것이다. 현재

사용가능한 로봇의 개수는 1개이고, 운반해야 할 물건은 두 개가 있다. 이러한 상태는

각각 과 의 토큰의 수로 표현된다.

초기 마킹이 일 때 현재 인에이블된 트랜지션은 하나 뿐이다. 의 점화에 의해

초기 마킹은 점화규칙에 따라, 으로 바뀐다. 이러한 인에이블 규칙과 점화규칙에 따른

마킹의 변화는 아래의 그림에 나타나 있다. 그림 5.(d)에서는 인에이블된 트랜지션이 존재하지

않으므로 더 이상의 마킹의 변하는 없다. 이러한 상태를 live하지 않다고 말한다.

그림 2. 그림 4의 페트리 네트의 동작

Page 11: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

마크트 페트리 네트의 동작을 컴퓨터를 통하여 실행하는 것을 일반적으로 토큰

게임플레이어(Token Game Player) 혹은 실행기(Executor)라고 말한다.

예제 3 예제 2에서 제시된 페트리 네트를 CemTool 에서는 토큰 게임플레이어는 아래와 같이

동작한다.

CemTool>> Ai = [0 1; 0 0; 1 0]

CemTool>> Ao =[1 0; 1 0; 0 1]

CemTool>> m0= [ 1 2 0]

CemTool>> tokeng(Ai, Ao, m0)

(1 2 0)

(0 1 1)

(1 1 0)

(0 0 1)

(1 0 0)

2.2 페트리 네트의 분석

페트리 네트의 장점중의 하나는 모델을 통하여 시스템의 성질을 분석할 수있다는 것이다. 페트리

네트에서 다루는 성질에는 Reachability, Boundedness, Liveness, Reversibility 이있다.

Reachability : 마킹 m'이 m로부터 천이할 수 있는 점화벡터가 존재할 때, 마킹 m'는 마킹

m으로부터 도달가능하다라고 한다. 이러한 천이할 수 있는 점화 트랜지션의

시퀀스를 로 표현한다. 그리고, 기호로 라고 표현 한 다. 초기 마킹이 일 때,

모든 도달가능한 마킹 집합을 로 표현한다.

Boundedness : 페트리네트의 각 플레이스에 존재할 수 있는 토큰의 개수가 무한대가 아닐 때,

그 페트리 네트는 Bounded되어 있다라고 한다. 만약 각 플레이스에 존재할 수 있는 토큰의

개수가 하나이상을 넘지못하는 경우를 Safe 하다라고 한다. 이를 수식적으로 표현하면

Page 12: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

이 다. 만약 각 플레이스에 존재할 수 있는 토큰의 개수가 K개 이 상을

넘지못하는 경우를 K-bounded 하다라고 한다. 이를 수식적으로

표현하면, 이다. Bouned하지 않은 경우를 Unbounded되었다라고 하고,

Unbounded Net 의 도달가능한 마킹 집합은 무한개의 원소를 갖는다. 시스템을 분석할

때 Boundedness는 자원에 대한 overflow가 없다는 것을 내포한다. 예를 들어서,

제조공정시스템에서 버퍼나 머신에서 part를 다룰 수 있는 용량을 초과하지 않음을 나타낸다.

Liveness : 초기마킹에 의해 도달가능한 마킹 에서 네트안의 어떠한 트랜지션 t도 다시

점화될 수 있는 페트리 네트를 Live하다고 한다. Live한 페트리 네트는 어떠한 동작상황하에서도

시스템의 DeadLock 에 걸리지 않는다.

Reversibility : 초기마킹에 의해 도달가능한 모든 마킹 에서 다시 초기마킹 으로

도달할 수 있는 유효한 점화 시퀀스(Firing sequence), 가 존재하면 그러한 네트는

reversible 하다고 한다. 이를 수식적으로 표현하면,

예제 4 그림 4에서 제시한 페트리 네트의 Reachability, Boundedness, Liveness,

Reversibility성질을 알아보자.

우선 에서 도달가능한 집 합 은, ,

여기서 , , , 이다. 은 에서 의 점화에 의해

도달가능하므 로, 이고, 은 에서 의 점화에 의해 도달 가능하므로,

이다. 모든 마킹에서 각 플레이스에 존재하는 토큰의 개수가 가장 큰 값이 2 이므로, 네트는 2-

bounded이며, safe하지는 않다. 그리고, 에 도달하며 더 이상 점화가능한 트랜지션이

없으므로, 본네트는 Live 하지 않다. 그리고, 에서는 로 도달하기 위한 유효한

점화시퀀스가 존재하지 않으므로, Reversible 하지 않다.

일반적으로 Reachability, Boundedness, Liveness, Reversibility 를 검사하는 것은 reachability문제를

이용하여 검사할 수 있다. 주의할 점은 각 성질의 조건의 다른 성질을 포함하거나, 포함되는

것이아니라, 독립적인 성질이라는 것이다. 예를 들면, Live하지만 Reversible 하지 않은 net가 있고,

reversible 하지만, Live 하지 않은 net가 존재할 수 있다.

예제 5 아래의 그림은 여러종류의 petri net에서 Boundedness, Liveness, Reversibility 를 조사한

것이다.

Page 13: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

2.3 Reachability Tree 와 Coverability Tree

Reachability tree는 초기마킹이 주어져 있을 때 도달가능한 모든 마킹의 정보를 트리형태로 표현

한 것을 말한다. 마킹과 마킹사이는 트랜지션의 점화에 의해 천이한다. 일반적으로 bounded하지

않은 네트의 reachability tree는 무한개의 상태를 가지므로 이를 트리형태로 표현하는 것은 불가

능하다. 이러한, 경우에는 coverability를 이용하여 효과적으로 나타낼 수 있다.

Page 14: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

정의: 마킹 m'는 마킹 m에 대하여 아래의 조건을 만족하면 coverable하다라고 한다.

예를 들어 m'=(1 2 1 0)은 m=(1 1 1 0)에 대하여 coverable하다. 그러나, m'는 자기자신에 대하

여 coverable하지 않다. coverability를 이용하여 무한개의 상태를 가지는 reachability tree를 줄여

서 표현할 수 있다. 그것을 coverability tree라고 한다. coverability tree를 생성하기위한 알고리즘

은 여러 문헌에 제시되었으며, 그 핵심적인 내용은 아래와 같다.

step 1 : 초기의 마킹 을 "new" tag 를 붙인다. 는 root이다.

step 2 : "new" 마킹이 존재하는 한, loop를 수행한다.

step 2.1 : 새로운 마킹 m 을 하나 선택한다.

step 2.2 : m이 root 에서 도달경로에 있는 또다른 마킹과 동일하면,

step 2.3 : m에서 점화가능한 트랜지션이 하나도 없으면, m 에 "DeadEnd" tag 를 붙인다.

step 2.4 : m에서 점화가능한 트랜지션이 있으면, m 에 각 점화가능한 트랜지션 에

대하여 다음을 수행한다.

step 2.4.1 : m에서 의 점화에 의한 새로운 마킹 m'를 얻는다.

step 2.4.2 : root 로부터 m 까지의 도달경로에 m'가 coverable할 수 있는 m''가 있는지

검사한다. 즉(m'>=m), 만약 m''가 존재하면, m'(p)>m''(p)를 만족하는 모든 p 에 대하여

m'(p)= 로 교체한다.

Page 15: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

step 2.4.3 : m'를 하나의 node로 생성하고, m으로부터 의 레이블를 갖는 아크로

연결한다. 그리고, m'에 "new" tag 를 붙인다.

예제 6 아래와 같은 마크트 페트리 네트를 생각해 보자.

그림 1. A Petri Net

이러한 페트리 네트의 도달가능 가지는 아래와 같다.

그림 2. 그림 4의 Reachability Tree

CemTool을 이용하여 Reachability Tree를 구성하여 보면

CemTool>> Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

CemTool>> Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

CemTool>> m0 = [2 0 0 0];

CemTool>> [Rset, Tree] = covert(Ai, Ao, m0)

Page 16: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CemTool>> Rset =

2 0 0 0

1 1 1 0

0 2 2 0

1 0 0 1

0 1 1 1

0 0 0 2

CemTool>> Tree =

0 1 0 0 0 0

0 0 1 2 0 0

0 0 0 0 2 0

3 0 0 0 1 0

0 3 0 0 0 2

0 0 0 3 0 0

Rset은 각 row vector가 marking하나를 나타낸다. 따라서, 총 마킹의 개수는 row의 수와

동일하다. Rset = [ 이다. Tree 정보는 각 marking과 marking이 어느 transition의

점화에 의해 도달되는지를 나타낸다. 즉, 라면 Tree(i,j) = k이다.

Coverability tree를 통하여 아래와 같은 여러 종류의 net 특성을 알아볼 수 있다.

1) coverability tree에 어떠한 노드에도 마킹의 값이 가 나타나지 않으면, 그 페트리네트는

bounded이다.

2) coverability tree에 노드에 마킹의 값이 0혹은 1 로 구성되면, 그 페트리 네트는 safe하다.

3) coverability tree에 트랜진션 t가 arc의 연결에 한번도 사용되지 않으면, 그 트랜지션은

dead이다.

4) 마킹 m 이 로부터 도달가능이면, 이되는 coverability tree에 가 반드시 존재한다.

bounded한 페트리 네트에서는 coverability tree가 모든 도달가능한 마킹의 연결관계를

포함하기때문에 rechability tree와 동일하다. rechability tree 를 얻은 경우에는 모든 네트의

특성을 완벽히 조사할 수 있다. 하지만, 이를 수행하기 위해서는 완전한 탐색(exhaustive search)을

해야하기 때문에 비효율적이면, 시간적이 비용과 저장용량이 많이 필요한 단점이 있다.

일반적으로, coverability tree는 완벽히 마킹의 정보를 담지 못한다. 즉, = , = 등으로

표현되기 때문 에, 홀수나 짝수, 증가하는 수, 감소하는 수등을 표현할 수는 있지만, 불규칙적인

수열등을 나타낼 수 없으므로, reachability 나 liveness등을 coverability tree 를 통하여 풀 수 없다.

Page 17: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

예제 7 아래와 같은 마크트 페트리 네트를 생각해 보자.

Rset은 각 row vector가 marking하나를 나타낸다. 따라서, 총 마킹의 개수는 row의 수와

동일하다. Rset = [ 이다. Tree 정보는 각 marking과 marking이 어느 transition의

점화에 의해 도달되는지를 나타낸다. 즉, 라면 Tree(i,j) = k이다.

그림 3. A Unbounded Petri Nets

이러한 페트리 네트의 Unbounded한 marking을 가진다. 이러한 페트리 네트의 coverbility

Tree는 그림 7과 같다. CemTool을 이용하여 Coverbility Tree를 구하면

CemTool>> Ai = [ 1 0 0; 1 1 0; 0 1 1];

CemTool>> Ao = [ 1 1 0; 0 0 1; 0 0 1];

CemTool>> m0 = [1 0 0];

CemTool>> [Rset, Tree] = covert(Ai, Ao, m0);

CemTool>> Rset =

1 0 0

1 Inf 0

0 1 1

0 Inf 1

0 0 1

CemTool>> Tree =

0 1 2 0 0

0 1 0 2 0

0 0 0 0 3

0 0 0 3 0

0 0 0 0 0

Page 18: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 4. 그림 9 에 대한 Coverbility Tree

예제 8 아래와 같은 마크트 페트리 네트를 생각해 보자.

그림 5. An bounded Petri Net

이러한 페트리 네트의 bounded한 marking을 가진다. 이러한 페트리 네트의 coverbility Tree는

아래와 같다.

Page 19: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 6. 그림 8의 Coverbility Tree

여기서,

CemTool을 이용하여 Coverbility Tree를 구하면

CemTool>> Ai = [

1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0;

0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 0 1 0 0; 0 0 0 0 0 0 1 0;

0 0 0 1 0 0 0 0; 0 1 0 1 0 1 0 1;

0 0 0 1 0 0 0 0; 0 0 0 0 0 0 0 1;

Page 20: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

0 0 0 0 0 0 0 1];

CemTool>> Ao = [

0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0;

0 0 0 1 0 0 0 0; 0 0 0 0 0 1 0 0;

0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1;

1 0 0 0 0 0 0 0; 1 0 1 0 1 0 1 0;

1 0 0 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 1 0 0 0];

CemTool>> m0 = [ 0 0 0 0 0 0 1 1 1 1 1];

CemTool>> [Rset, Tree] = covert(Ai, Ao, m0)

CemTool>> Rset =

0 0 0 0 0 0 1 1 1 1 1

1 0 0 0 0 0 0 0 0 1 1

0 0 0 1 0 0 1 0 1 0 0

0 1 0 0 0 0 0 1 0 1 1

0 0 0 0 1 0 1 1 1 0 0

0 0 1 0 0 0 0 0 0 1 1

0 1 0 1 0 0 0 0 0 0 0

1 0 0 0 1 0 0 0 0 0 0

0 0 0 0 0 1 1 0 1 0 0

0 1 0 0 1 0 0 1 0 0 0

0 0 1 0 1 0 0 0 0 0 0

0 1 0 0 0 1 0 0 0 0 0

CemTool>> Tree =

0 1 5 0 0 0 0 0 0 0 0 0

0 0 0 2 0 0 0 0 0 0 0 0

0 0 0 0 6 0 0 0 0 0 0 0

0 0 0 0 0 3 5 0 0 0 0 0

0 0 0 0 0 0 0 1 7 0 0 0

4 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 6 0 0

0 0 0 0 0 0 0 0 0 2 0 0

8 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 3 7

0 0 0 0 4 0 0 0 0 0 0 0

0 0 0 8 0 0 0 0 0 0 0 0

Page 21: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

2.4 Boundedness

boundedness (혹은, safeness)는 reachability tree 혹은 coverability tree 를 조사하여 알 수 있다.

CemTool에서는 아래와 같은 함수를 이용하여 이를 구할 수 있다.

예제 9 앞의 예제 8에서 주어진 네트의 safeness 를 검사해보시오.

CemTool>> Ai = [

1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0;

0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 0 1 0 0; 0 0 0 0 0 0 1 0;

0 0 0 1 0 0 0 0; 0 1 0 1 0 1 0 1;

0 0 0 1 0 0 0 0; 0 0 0 0 0 0 0 1;

0 0 0 0 0 0 0 1];

CemTool>> Ao = [

0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0;

0 0 0 1 0 0 0 0; 0 0 0 0 0 1 0 0;

0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1;

1 0 0 0 0 0 0 0; 1 0 1 0 1 0 1 0;

1 0 0 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 1 0 0 0];

CemTool>> m0 = [ 0 0 0 0 0 0 1 1 1 1 1];

CemTool >> safe(Ai, Ao, m0)

The net is safe.

예제 10 앞의 예제 1에서의 safeness 를 검사해보시오.

CemTool>> Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

CemTool>> Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

Page 22: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CemTool>> m0 = [3 0 0 0];

CemTool >> bounded(Ai, Ao, m0)

The net is bounded.

upper bound is 3

예제 11 앞의 예제 2에서의 boundedness를 검사해보시오.

CemTool>> Ai = [ 1 0 0; 1 1 0; 0 1 1];

CemTool>> Ao = [ 1 1 0; 0 0 1; 0 0 1];

CemTool>> m0 = [1 0 0];

CemTool >> bounded(Ai, Ao, m0)

The net is not bounded.

inf

2.5 Liveness

Liveness의 개념은 컴퓨터과학분야에서 운영체제(operating systems)의 deadlock이 없는 경우와

매우 유사하다. 페트리네트 는 아래와 같은 경 우에 live하다라고 한다.

초기마킹 에서 어떠한 마킹에 에 도달하였을때, 어떤 유 효한

점화시퀀스를 통하여 네트의 어떤 transition도 결국에 점화될 수 있다.

Liveness의 정의에 따라 Live한 페트리 네트는 어떠한 점화 시퀀스를 선택하더라도, deadlock-

free를 보장한다. Liveness 는 많은 경우에 매우 이상적인 특성이다. 하지만,복잡한 시스템의

liveness 를 검사하는 것은 매우 비효율적이면 비현실적이다. 따라서, 우리는 liveness의 정의을

완화하여 아래와 같은 여러 단계의 liveness를 정의하여 사용한다.

0) 트랜지션 t는 어떠한 점화 시퀀스 를 선택하더라도 점화될 수 없으면 dead(L0-

live)라고 한다.

1) 트랜지션 t는 어떤 점화 시퀀스 에 대하여, 적어도 한번이상 점화할 수 있으면 L1-

live라고 한다.

2) 트랜지션 t는 어떤 점화 시퀀스 에 대하여, 적어도 k(k=1,2,3,4,5...)번이상 점화할 수

있으면 L2-live라고 한다.

Page 23: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

3) 트랜지션 t는 어떤 점화 시퀀스 에 대하여, 무한번 점화할 수 있으면 L3-live라고

한다.

4) 트랜지션 t는 모든 에 대하여 L1-live하면 L4-live라고 한다.

Lk-live(k=0,1,2,3)는 각각의 live 단계를 나타내기 위해 사용한다. L4-live는 가장 강한 제한조건을

가지고 맨앞에서 제한한 liveness 정의와 동일하다. 그리고, 우리는 각 단계에 대하여 아래와 같은

포함관계를 생각할 수 있다.

L4-Liveness L3-Liveness L2-Liveness L1-Liveness.

그리고, 특별히 Lk-live하면서, L(k+1)-live하지 않은 경우를 strictly Lk-Live하다라고 한다.

예제 12 아래의 그림은 strictly L1-live하다. 왜냐면, 으로 정확히 한번씩만 점화할 수

있기 때문이다.

그림 1. A Petri net

아래의 페트리 네트의 각 트랜지션에 대하여 liveness를 조사하여 보자. 는 strictly L0-

live(dead)이고, 는 strictly L1-live이고, 는 strictly L2-live이고, 는 strictly L3-live이다.

그림 2. A Petri net

CemTool을 이용하여, 각 트랜지션의 liveness 을 조사하는 과정은 아래와 같다.

CEMTOOL>> Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

CEMTOOL>> Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

Page 24: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTOOL>> m0 = [1 0 0];

CEMTOOL>> tran = live(Ai, Ao, m0)

not live Petri net

tran =

0 1 1 1

0 0 0 0

0 1 1 1

0 0 1 0

tran 변수에서 제공되는 정보는 각 행은 각 도달가능한 마킹을 의미하고, 각 열은 각 마킹에서

점화가능한 트랜지션을 의미한다. 예를 들어서, 에서 점 화 가능한 트랜지션은 이고,

에서 점화가능한 트랜지션은 없다. 에서 점화 가능 한 트랜지션은 이고, 에서

점화가능한 트랜지션 이 다.

2.6 Reversability

페트리 네트 가 초기 마킹에서 도달가능한 어떠한 마킹 에 대하여,

가 으로부터 도달가능이면, reversible하다고 한다. 리버 서블한 네트에서는 모든 마킹에서

초기마킹으로 돌아올 수 있다. 많은 경우에는 reversible한 특징은 매우 엄격하므로, liveness 와

유사하게 제한 조건을 완화하여 Home State를 정의하여 사용한다. 즉, 모든 마킹 에서

도달가능한마킹을 Home State라고 한다.

그림 1. A Petri net

예제 13 주어진 페트리 네트의 각 마킹에 대한 reversibility를 조사하여 보자.

CEMTool>> Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

CEMTool>> Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

Page 25: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTool>> m0 = [1 0 0];

CEMTool>> check = reverse(Ai, Ao, m0)

Rset =

1 0 0

0 0 1

1 INF 0

0 INF 1

check = 1 0 0 0

CEMTool을 통한 결과는 m0는 reversible 하며(자기자신의 마킹으로 돌아갈 수 있다는

의미이므로 당연하다), m1, m2, m3는 reversible 하지 않음(m0로 돌아갈 수 없다)을 나타낸다.

2.7 Siphon 과 Trap

Siphon 과 trap 은 페트리 네트의 특별할 구조이다. 이것들은 페트리 네트의 liveness의 성질과

매우 밀접한 관계에 있다. 우리는 Siphon과 trap을 통하여서 페트리 네트의 모든 도달가능한

마킹을 조사함이 없이 페트리 네트의 liveness 성질을 분석할 수 있다.

정의 :

어느 플레이스 집합 에 대하여, 을 만족하는 집합 S 을 Siphon이라고 한다.

정의에 따라서, S 에 속하는 플레이스의 입력 트랜지션이 그 플레이스의 출력 트랜지션에 반드시

속하게 된다.

정의 :

어느 플레이스 집합 에 대하여, 을 만족하는 집합 을 Trap이라고 한다.

정의에 따라서, S 에 속하는 플레이스의 출력 트랜지션이 그 플레이스의 입력 트랜지션에 반드시

속하게 된다.

아래의 그림은 Siphon 과 trap의 예이다.

Page 26: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Siphon에 존재하는 마킹은 Siphon으로 되돌아 오거나, 외부로 나간다. 따라서, Siphon에 초기에

토큰이 존재하지 않는 경우에 영원토록 토큰이 들어오지 않게 된다. 이와는 반대로 trap에

존재하는 마킹은 trap안으로 반드시 돌아오고, 외부로부터 들어오는 토큰은 계속 trap안에

머문다. 따라서, trap안에 토큰이 초기에 있으면, 영원토록 trap안에 토큰이 존재하게 된다.

일반적으로 서로 다른 두 개의 siphon (trap)의 합집합도 siphon (trap)이다. Basic siphon (trap)

이란 더 이상 서로 다른 두 개의 siphon (trap)의 합으로 나타낼 수 없는 siphon (trap)을 말한다.

Minimal siphon (trap)이라는 것은 또다른 siphon을 포함하고 있지 않은 shphon (trap)을

의미한다. 따라서, Minimal siphon (trap)은 항상 basic siphon이 되지만, basic siphon이 항상

minimal siphon (trap)이 되는 것은 아니다. 즉, basic siphon은 쪼갤 수는 없지만 더 작은

siphon을 포함할 수 있다.

예. 아래의 그림에서 라고

하자. 이므로, 은 siphon이다.

이므로 는 trap이다. 이 와 같이, 는 siphon이며, 는 siphon이며 동시에 trap 이며 는

trap이다. 그리고, 는 minimal 이며 basic siphon이며, 는 basic trap 이고, 는

minimal trap이 아니다.

그림 2. siphon과 trap의 예

Page 27: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

아래의 정리는 여러 종류의 페트리 네트에서 liveness와 siphon, trap의 관계이다.

정리 1 : free-choice net (N,m0)에서 모든 siphon 이 marked trap을 포함하면 (iff) live하다.

정리 2 : live한 free-choice net에서 네트가 strongly-connected SM(State Machine) component 에

의해 covered 되고 그 SM component 가 유일하게 하나의 토큰만을 가지면(iff) 그 네트는

safe하다.

정리 3 : An asymmectric choice net (N, m0)는 모든 siphon이 marked trap을 포함하면 (if)

live하다.

예제 14 위의 그림 19의 네트는 Free-choice net이다. 이 네트는 siphon 이 marked

trap을 포함하고 있지 않 기 때문에 live하지 않다.

예제 15 아래의 AC 네트는 minimal siphon 가 marked trap 를 포함하고,

siphon 이 marked trap , 를 포함 하고 있기 때문에 live하다.

그림 3. A Live AC net

예제 16 아래의 그림에 나타난 AC net은 siphon 이 marked trap을 포함하고 있지

않더라도 네트는 live하다.

Page 28: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

3. 시간 페트리 네트 (Timed Petri Net) 모델

일반적으로 이산현상시스템의 동작은 시간적인 동작을 포함하고 있는 것이 대부분이다. Timed

Petri net(TPN)은 기존의 논리적인 특성만을 표현하기 위한 기존의 Petri net 모델을 시간적인

정보를 추가하여 확장한 확장모델이다. Timed Petri net 은 논리적인 Petri net 의 place와

transition, arc, token 에 시간정보를 추가하여 표현하게 된다. 예를 들어, 어느 플레이스에 도착한

토큰이 그 곳에 머무는 시간은 아래의 그림과 같이 표현된다. 플레이스에 시간의 정보가

첨가되는 TPN을 Place-Timed Petri Net 이라고 한다.

그림 1. A Place-TPN

한편으로, 트랜지션에 시간정보가 추가된다. 트랜지션에 추가된 시간정보는 그 정의에 따라

여러가지로 해석될 수 있다. 예를 들어, 해당 트랜지션이 인에이블 되기위해 지연되는 시간으로

해석이 가능하며, 혹은 점화지연시간으로 해석이 가능하다. 일반적으로, 통틀어서, 트랜지션에

시간정보가 추가된 TPN을 Transition-Timed Petri Net(T-TPN)이라고 한다. 아래의 그림은

Transition-Timed Petri Net 의 예이다.

그림 2. A Transition-TPN

Page 29: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

본 장에서는 T-TPN 을 중심으로 설명한다. 트랜지션에 시간을 추가하는 방법은 크게 Firing times,

Holding times 그리고, Enable times, 3가지로 분류할 수 있다.

3.1 Firing times

시간이 부가되지 않은 페트리 네트에서는 트랜지션이 점화가능이 되었을때, 아무때나 점화가

가능하면, 점화시점에서 입력 플레이스의 토큰이 제거되고, 출력 플레이스에 토큰이 추가된다.

Firing time이 트랜지션에 첨가되면 그 해석이 달라진다. 즉, 트랜지션이 점화가능하게 되면, 입력

토큰은 즉시 제거된다. 하지만, 출력 토큰은 Firing time이 경과한 후에 야 생성된다.

아래의 예제는 Firing time 에 따른 시간페트리네트의 동작을 나타낸다. 아래의 페트리 네트에

대하여 에 1sec의 firing time이 추가되었고 에 4sec 의 firing time이 추가되었다.

플레이스에 모두 토큰이 있으므로, 은 time=0 에서 점 화가능하다. 하지만, time=1 될때까지는

출력플레이스 에 토큰이 생성하지 않는다. 그림(b)와(c)는 점화시간 1sec가 경 과후에 토큰이

에 생성된다. 그리고, 즉시 가 점화가능하게 되어 의 토큰은 제거된다. 하지만, 에 토큰은

time=5sec 에 생성된다.

Page 30: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

따라서, Firing time 이 추가된 페트리 네트는 기존의 non-timed PN의 상태가 존재할 뿐만아니라

새로운 상태가 그림 (b)와 (d)에서 처럼 새로 발생한다. 이것은 TPN에서 생성되는 모든

상태공간을 마킹뿐만이 아니라, 각 트랜지션의 조건으로 재정의할 필요를 만든다. 이것은 결국

상태공간을 더 크게 만들며, Firing time을 사용할때의 커다란 걸림돌이다.

3.2 Holding Times

Holding Times은 Firing Time과 유사하다. Holding Time 은 가용한 토큰(Available), 가용하지 않은

토큰(Unavailable Token), 두가지 종류의 토큰으로 분류하여 동작한다. 가용한 토큰은 트랜지션을

점화가능하게 하는데 사용될 수 있지만, 가용하지 않은 토큰은 트랜지션을 점화가능하게 하는데

사용될 수 없다. 트랜지션에 시간정보가 추가되었을 때, 그 트랜지션의 점화에 의하여 생성된

토큰은 그 점화트랜지션의 시간(Holding Times)만큼 가용하지 않은 상태로 머문다. Holding

Time이 경과된 후에는 즉시 해당 토큰은 가용한 토큰이 된다.

아래의 그림을 살펴보자. 트랜지션 은 현재 점화가능이다. 의 점화에 의하여 에 있는

토큰이 제거되어, 로 옮겨온다. 에 생성된 토큰은 동안 가용하지 않은

토큰상태이므로, 는 에서 점화가능하지 않다. 에서 는 비로서 점화가능하게

된다. 점화이후의 과 정은 앞과 유사하다.

Firing times과 Holding times은 시간을 표현하는 면에서는 동일하다. 유일한 차이는 점화된

토큰이 트랜지션에 머무느냐, 아니면 출력플레이스에 가용하지 않은 상태로 머무느냐 하는

것이다. 이러한 입장에서보면 두개의 차이는 없다. 하지만, 트랜지션에의 상태정보를 필요치

않는다는 점에서 Holding time는 Firing times보다 더 non-timed Petri net 의 의미론과 더

가깝다라고 할 수 있다. 그리고, reachability graph 도 Holding time을 사용할때에는 non-timed

Petri net의 그것보다 더 커지지 않는다.

Page 31: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

때때로, Holding Times은 트랜지션에 첨가되지 않고, 플레이스에 첨가되어 사용된다. 시간이

플레이스에 첨가되면, 입력되는 토큰은트랜지션을 점화가능하게하는 가용한(Available) 토큰이

되기위하여 해당 시간만큼을 기다려야한다. 이 두개의 차이는 토큰의 holding time이

트랜지션으로 부터 할당되느냐, 플레이스로부터 할당되느냐 하는 차이이다.

시간이 트랜지션으로부터 할당될 때는 그 트랜지션의 점화에 의해 생성되는 모든 토큰은 같은

holding time을 가지고, 시간이 플레이스로부터 할당될 때는 그 플레이스에 들어오는 모든

토큰은 같은 holding time 을 가진다.

아래의 그림(a)는 트랜지션 에 holding time이 첨가된 TPN이고, 그림(b)는 플레이스 에

holding time이 추가 된 TPN이다. 두개의 그림모두 에서 가 점화가능하고, 점화에 의해 에

토큰은 2개가 된다. 하지만, 그림(a)에서 의 토큰은 holding time이 각각 1sec, 2sec이고,

그림(b)에서 의 2개의 토큰은 holding time 이 모두 1sec이다.

Page 32: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

3.3 Enabling Times

Transition 에 시간정보를 나타내는 또하나의 방법은 Enabling Times이다. Enabling time은

아래의 규칙을 따른다. 해당 트랜지션이 점화가능하게 되면, 일정시간(Enabling time) 동안 지연된

후에 점화가 이루어진다. 점화 즉시 토큰도 입력플레이스에서 제거되고, 출력플레이스에 생성된다.

아래의 그림은 인에이블 타임에 의한 페트리네트의 동작을 나타낸 것이다.

그림에서 에 토큰이 있으므로, 은 점화가능이지만, 인에이블 타임이 1sec

이므로, 에서는 점화가 능하지 않다. 이 되었 을때 비로서 이 점화된다.

마찬가지로 에 도착한 토큰은 4sec 동안 인에블타임을 경과한 후에 가 점화한다.

3.4 Holding Time과 Enabling Time의 비교

Holding Time규칙과 Enabling 규칙에 의한 동작의 차이는 앞의 예제의 그림을 통하여 알 수

있지만, 두 규칙은 페트리네트에 충돌(Confusion)이 있을 때 중요한 차이점을 들어낸다.

아래의 그림을 예를 들어보자. 그림(a)는 초기마킹을 나타내고, 그림(b)는 holding time을 적용한

경우이고, 그림(c)는 enabling time을 적용한 경우이다. 그림(b)에서는 트랜지션 는 즉시

Page 33: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

점화가능하므로, 의 토큰은 로 옮겨온다. 따라 서, 또다른 토큰이 에 도착하였을때 는

더이상 점화가능하 지 않다. 그러나, 그림(c)에서 에 Enabling time을 적용하 면,

이므로 동안 의 토큰은 점화가능하지 않다. 에서는 플레이 스 에 토큰이

도착하고, 에 비로서 는 점화가능하게 된다. 그리고, 의 출력트랜지션 에

confusion이 발생하여 가 우선적으로 점 화된 다. 이와같이, holding time과 enabling time을

적용시 페트리네트는 전혀 다른 동작을 나타낸다.

일반적으로, 순간 트랜지션(Immediate Transition)을 사용하면 Enabling time 을 사용하여 Holding

time을 모델링할 수 있다. 순간 트랜지션(Immediate Transition)은 Enabling time 0을 가지는

트랜지션을 말한다. Holding time 을 표현하기위해서는 동일한 시간의 Enabling time을 가지는

트랜지션과 그 앞에 순간 트랜지션을 추가하여 동일한 동작을 보장할 수 있다.

Enabling time과 Holding time을 적용한 TPN의 reachability graph는 non-timed Petri net 의

reachability graph의 상태공간과 작아지거나 동일하다. 하지만, 그 연결관계는 더 복잡해 질 수

있다. 왜냐하면, 각 상태공간에서 토큰의 가용시간을 나타내 주어야 하기 때문이다.

3.5 Place-Timed Petri Nets

Page 34: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTOOL에서 Timed Petri net 는 플레이스에 시간이 첨부된 Place-timed PN 을 구현하였다.

그리고, 타이밍 규칙은 Holding time규칙을 적용하였다.

예제. 본 예제는 아래의 Place-timed PN에 대하여 시뮬레이션하는 과정이다.

그림 1. A Place-TPN

페트리네트의 입.출력 Matrix는 아래와 같다.

CEMTOOL>> Ai = [ 1 0 0 1; 0 1 0 0; 0 0 1 0];

CEMTOOL>> Ao = [ 0 1 1 0; 1 0 0 0; 0 0 0 1];

각각의 플레이스에는 각각 [1], [2], [1]sec의 holding time 이 할당되어있다. (H_time=[1 2

1]'). 그리고, 현재 Conflict(혹은 Confusion)이 발생하는 트랜지션은 이고 Conflict 정보를 담는

메트릭스는 CtxMtx이고, Conflict가 발생하였을 때 각 트랜지션으로 점화할 확률 메트릭스는

CtxMtxProb로 주어진다. 본 예제에서는 각 트랜지션의 점화확률은 동일하다.

CEMTOOL>> H_time = [ 1 2 1]'; %Holding times

CEMTOOL>> CtxMtx = [0 1 1 0]; % conflict 가 발생할 수 있는 transition들의 matrix

CEMTOOL>> CtxProb = [0 0.5 0.5 0];

현재의 초기마킹은 [2 0 0]'이고, 시뮬레이션시간은 99sec이다.

CEMTOOL>> m0 = [2 0 0]';

CEMTOOL>> TotalTime = 29;

Page 35: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTOOL>> [time,Ni,Nt]=tpn_sim(Ai,Ao,CtxMtx,CtxProb,m0,H_time,TotalTime);

시뮬레이션 결과 시간에 따른 마킹의 정보가 출력된다. 여기서 Ni는 가용하지 않는 토큰에 의한

마킹을 의미하고, Nt는 가용한 토큰과 가용하지 않는 토큰을 합한 모든 토큰의 마킹을의미한다.

Ni로서 각 플레이스의 Utilization을 검사할 수 있고, Nf로서 각 플레이스에 머무는 토큰의

trajectory를 아래와 같이 얻을 수 있다.

CEMTOOL>> Data = [time; Ni];

CEMTOOL>> Uz = tpn_util(Data);

CEMTOOL>> Data = [time; Nt];

CEMTOOL>> SCALE = 10; % 1/10 sec

CEMTOOL>> M = tpn_traj(Data, TotalTime, SCALE);

CEMTOOL>> x = 0:TotalTime*SCALE-1;

CEMTOOL>> figure

CEMTOOL>> plot(x, M(1;:)+10, x, M(2;:)+7, x, M(3;:)+4);

Page 36: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

4.1 개요

큐(queue)라고 하는 것은 어떤 서비스를 받을 목적으로 대기하고 있는 고객들의 집합이다.

이러한 큐를 다루는 학문이 큐잉 이론(queueing theory)이다. 큐잉 모델은 이산현상 시스템의

전형적인 예이며, 교통량 분석 (통신 시스템, 자동차), 스케줄링 (컴퓨터 프로그램, 기계의 작업,

병원의 환자), 편의 시설 설계 (은행, 우체국, 놀이 동산, 패스트 푸드) 등 일상 생활에 흔히 볼 수

있다.

4.2 기호

본 매뉴얼에서 일반적으로 사용되는 기호와 의미는 아래와 같다.

: 시간당 승객의 평균 도착 비율 (수/시간)

Page 37: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

: 시간당 서비스 받는 승객의 평균 비율 (수/시간)

: 서버의 개수

: 교통량 집중률 ( )

: 큐에서 서비스를 받기 위해 기다리는 평균 시간

: 큐에서 서비스를 받기 위해 기다리는 평균 승객의 수( , Little'e formula)

: 시스템에서 소요되는 평균 시간( )

: 시스템에 있는 평균 승객의 수( , Little'e formula)

: 임의의 서버가 서비스 중일 확률 ( )

: 서비스 받고 있는 승객의 평균 수( )

4.3 Little's theory

정상 상태에서 시스템의 평균 고객수 와 시스템에서 기다리는 평균 시간 과의 관계를

나타낸 식으로 다음과 같다.

이러한 성질을 little's theory 라고 한다. 이러한 성질은, 큐의 도착율과 서비스율이 어떠한

확률분포를 가지고 더라도 마찬가지로 성립한다. 또한, 정상 상태에서 큐의 대기 평균 고객수

와 시스템에서 기다리는 평균 시간 과의 관계에서도 아래의 식을 만족한다.

Page 38: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

시스템에서 기다리는 평균 고객의 수는 시스템에서 고객이 들어오는 비율과 시스템에서 기다리는

평균 시간을 곱한 것과 같다는 것이다. 이 성질은 임의의 큐에서 항상 성립한다.

여기서 와 는 아래의 관계가 있다.

.

이 식은 시스템에서 기다리는 평균 시간은 큐에서 기다리는 평균 시간과 서비스 받는 평균

시간을 더한 것이다.

4.4 마코프 프로세스 (Markov Process)

미래의 프로세스가 현재의 상태에 의해서만 결정되는, 즉 과거와는 독립적인 램덤 프로세스

를 마코프 프로세스 (Markov Process)라고 한다. 과거의 상태를 기억하지 않는다는 점에서 비기억

프로세스(Memoryless Process)라고도 한다. 임의의 시간 에 대해 가

이산값이면

이고 가 연속값이면

로 마코프 성질이 기술된다. 위의 식에서 는 현재, 은 미래, 그리고 은 과거의

시점이다. 여기서 시간 에서 의 값을 `상태(State)'라 정 의한다.

마코프 프로세서의 값이 정수이면 마코프 체인(Markov Chain)이라고 한다. 마코프 체인은 가

이산적이냐 연속적이냐에 따라 이산시간 마코프 프로세스 (Discrete-time Markov provess),

연속시간 마코프 프로세스(Continuous-time Markov Chain)로 나뉜다. 가 마코프 체인일 때,

조건부 확률과 마코 프 성질을 이용하면 임의의 세 시점에서 조인트 확률(Joint Probability)은

Page 39: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

이 된다. 이를 확장하면

이 된다.

4.5 이산시간 마코프 체인(Discrete-time Markov Chain)

를 정수값을 가지는 프로세스를 이산시간 마코프 체인이라 하고 에서 확률이

이라 하자.

그리고 라 정의하고 이 때, 을 동차 천이 확률(homogeneous

transition probability)을 가진 다고 한다. 마코프 특성에 의해

로 표시된다. 따라서 은 초기 확률과 아래와 같은 한단계 천이 확률(one-step transition

probability) 행렬에 의해 결정된다.

Page 40: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

를 천이 확률 행렬이라 부른다.

예제)

번째 패킷이 무의미한 정보를 보낼 때, 다음 패킷이 다시 무의미한 정보를 보낼 확률이

이고 의미 있는 정보를 보낼 확률은 이다. 마찬가지로 번째 패킷이 의미 있는 정보를 보낼 때,

다음 패킷이 다시 의미 있는 정보를 보낼 확률이 이고 무의미한 정보를 보낼 확률은 이다.

이를 상태 천이 다이아그램으로 나타내면

따라서 은 시간 에서 패킷이 의미있는 정보를 보내는가 하는 것을 나타내는 함수이고 두 단계

마코프 체인이고 상태 천이 행렬 는

가 된다.

-단계 천이 확률 행렬

-단계 천이 확률 행렬 의 원소는

그리고 -단계 천이 확률 행렬 은

이다.

Page 41: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

예제)

2 단계 천이 확률을 생각한다. 시간 , 상태 에서 시간 , 상태 를 경유하여

시간 상태 로 끝날 확률은 생각 한다.

따라서

한 단계의 천이 확률 행렬로 두 단계의 천이 확률 행렬을 표시했다.

상태 확률

이제 시간 에서 상태 확률은 나타내보자. 상태 확률 행렬의 행(row)를 으로 정의하면

따라서

시간 에서 상태의 확률은 초기 상태의 확률에 을 곱하면 된다.

정상 상태 확률

단계 천이 확률에서 일 때, 행렬의 모든 행(row)의 벡터는 같은 값을 가진다. 따라서

Page 42: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

이 되고 또한

이 때, 를 고정 상태 확률(stationary state prob.)라고 한다. 을 초기 확률이라 하면 상태

확률 벡터는

이 된다. 결과적으로 이 프로세서는 고정 랜덤 프로세서(stationary random process)가 된다.

증명은

시간 와는 무관하고 처음 시간의 확률에 의존적이다.

4.6 연속시간 마코프 체인(Continuous-time Markov Chain)

마코프 체인에서 임의의 시간 에서 또 다른 임의의 시간 으로의 천이 확률이

와 같이 표시될 수 있을 때, 연속시간 마코프 체인이라고 한다.

Page 43: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

시간 동안 천이 확률 행렬을 라고 할 때, 이고 이므로

이 된다. (단, 는 단위 행렬)

상태 차지 시간 (State Occupancy Times)

마코프 체인에서 각 스테이트에서 보내는 시간을 상태 차지 시간 (State Occupancy Time)이라고

한다. 이 시간이 지수적인 분포를 갖는 랜덤 변수가 된다면 정해진 시간이 지난 후 다음 상태로

넘어가는 것은 이산시간 마코프 체인을 따르게 된다. 이 때, 상태 변이 확률 를 내재적 마코프

체인 (Embedded Markov chain)이라고 한다.

증명) 상태 에서 보내는 시간을 라고 하면 이 상태에서 이상 보낼 확률은

이 된다. 상태 에서 시간 동안 이미 있었고 같은 상태에서 시간동안 더 있을

확률은 이 다. 그런데 마코프 성질에

의해 라면 동안의 확률 은 과거와는 무관하므로 이 시스템을 시간 에서 상태

에서 새로 시작하는 것으로 볼 수 있다. 따라서, 이 된다. 이 성질은

오직 지수적 랜덤 변수만이 이러만 기억없는 성질(memoryless property)를 만족한다. 따라서

상태 에서 보내는 시간이 평균 를 갖는 지수적 랜덤 변수라고 한다면 이 된다.

평균 상태 차지 시간 는 각 상태마다 다르다.

천이 비율과 시간-의존적인 상태 확률(Transition Rates and Time-Dependent State Probability)

아주 짧은 시간 동안 천이하는 확률을 생각하자. 그 시간 동안 상태 에서 머무르는 확률은

이다. 는 가 0에 감에 따라 무시할 수 있을 정도의 수이다. 한 상태에서 머무르는 시간이

지수적 분포를 가지면 시간 동안 천이 확률은 성분을 가 짐을 알 수 있다. 따라서

Page 44: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

는 프로세스 가 상태 를 떠날 비율이다. 상태 에서 상태 로 천이할 때의 확률을 라고

하면,

여기서 는 프로세스 가 상태 에서 상태 로 들어가는 비율을 나타낸다. 라

두면

가 된다. 와 를 로 나눈 다음 극한 을 취하면

가 된다.

이제 시간 에서 상태 확률을 구해보자.

여기서, 이다.

Page 45: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

위의 식에서 를 빼면

와 식의 양변을 로 나누고 극한 을 취하면

위의 식이 연속시간 마코프 체인에서 Chapman-Kolmogorov equation 이 된다.

초기 상태의 확률에 따라 초기 조건 에 따라 결정된다.

예제)

상태 0에서, 시스템은 idle하고 승객이 도착하기를 기다린다. idle 시간은 평균이 인 지수적

랜덤 변수가 된다. 상태 1 에 서, 시스템은 busy 상태이고 승 객을 서비스하는 시간이 평균 를

가지는 지수적 랜덤 변수를 가진다. 상태 확률 와 를 초기 상태 확률인 와 로

표시해보자.

상태 0에서 상태 1로 가는 비율을 , 상태 1에서 상태 0으로 가는 비율을 라고 하면 ,

이고

가 된다. 이므로 첫 번째 식은

Page 46: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

가 된다. 마찬가지로

일 때,

따라서 일 땐, 상태 확률은 초기 상태의 확률과 무관한 상수가 된다.

정상 상태 확률과 글로벌 평형 수식(Steady State Probability and Global Balance Equation)

그림 3 글로벌 균형 확률 흐름도

일 때, 가 되고 이 된다. 따라서

Page 47: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

여기서 을 적용하면

위의 식을 글로벌 평형 수식(global balance equation)이라고 한다. 이 수식은 상태 에서 밖으로

나가는 확률의 비율, 즉 와 상태 안으로 들어오는 비율이 같다는 것을 의미한다. 이 수식을

풀면 고정 상태(stationary state)확률을 구할 수 있다.

4.7 Birth-Death Process

2.7 Siphon 과 Trap Siphon 과 trap 은 페트리 네트의 특별할 구조이다. 이것들은 페트리 네트의

liveness의 성질과 매우 밀접한 관계에 있다. 우리는 Siphon과 trap을 통 하여서 페트리 네트의

모든 도달가능한 마킹을 조사함이 없이 페트리 네트의 liveness 성질을 분석할 수 있다.

정의 : 어느 플레이스 집합 에 대하여, 을 만족하는 집합 S 을 Siphon 이라고 한다.

정의에 따라서, S 에 속하는 플레이스의 입력 트랜지션이 그 플레이스의 출력 트랜지션에 반드시

속하게 된다.

정의 : 어느 플레이스 집합 에 대하여, 을 만족하는 집합 을 Trap이라고 한다.

Page 48: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

정의에 따라서, S 에 속하는 플레이스의 출력 트랜지션이 그 플레이스의 입력 트랜지션에 반드시

속하게 된다.

아래의 그림은 Siphon 과 trap의 예이다. Siphon 에 존재하는 마킹은 Siphon 으로 되돌아 오거나,

외부로 나간다. 따라서, Siphon에 초기에 토큰이 존재하지 않는 경우에 영원토록 토큰이

들어오지 않게 된다. 이와는 반대로 trap에 존재하는 마킹은 trap안으로 반드시 돌아오고,

외부로부터 들어오는 토큰은 계속 trap안에 머문다. 따라서, trap안에 토큰 이 초기에 있으면,

영원토록 trap안에 토큰이 존재하게 된다. 일반적으로 서로 다른 두 개의 siphon (trap)의

합집합도 siphon (trap)이다. Basic siphon (trap) 이란 더 이상 서로 다른 두 개의 siphon (trap)의

합으로 나타낼 수 없는 siphon (trap)을 말한다. Minimal siphon (trap)이라는 것은 또다른

siphon을 포함하고 있지 않은 shphon (trap)을 의미한다. 따라서, Minimal siphon (trap)은 항상

basic siphon이 되지만, basic siphon이 항상 minimal siphon (trap)이 되는 것은 아니다. 즉, basic

siphon은 쪼갤 수는 없 지만 더 작은 siphon을 포함할 수 있다.

예. 아래의 그림에서 라고 하자. 이므로, 은 siphon 이다. 이므로 는 trap 이다. 이와 같이, 는

siphon이며, 는 siphon 이며 동시에 trap이며 는 trap이다. 그리고, 는 minimal 이며 basic

siphon이며, 는 basic trap 이고, 는 minimal trap이 아니다. 그림 2. siphon과 trap의 예 아래의

정리는 여러 종류의 페트리 네트에서 liveness와 siphon, trap 의 관계이다.

정리 1 : free-choice net (N,m0)에서 모든 siphon 이 marked trap을 포함하면 (iff) live하다.

정리 2 : live한 free-choice net에서 네트가 strongly-connected SM(State Machine) component 에

의해 covered 되고 그 SM component 가 유일하게 하 나의 토큰만을 가지면(iff) 그 네트는

safe하다.

정리 3 : An asymmectric choice net (N, m0)는 모든 siphon이 marked trap을 포함하면 (if)

live하다.

예제 14 위의 그림 19의 네트는 Free-choice net이다. 이 네트는 siphon 이 marked trap을

포함하고 있지 않기 때문에 live하지 않다. 예제 15 아래의 AC 네트는 minimal siphon 가

marked trap 를 포함하고, siphon이 marked trap , 를 포함하 고 있기 때문에 live하다. 그림 3. A

Live AC net 예제 16 아래의 그림에 나타난 AC net 은 siphon이 marked trap 을 포함하고 있지

않더라도 네트는 live하다.

위의 그림과 같은 상태 변화를 가지는 마코프 체인을 Birth-Death Process라 한다. 인구가 늘고

주는 것을 모델링하여 큐의 모델링에 응용할 수 있다. 위의 그림에서 시스템의 상태 n은 인구의

수가 되고 은 n 스테이트에 있을 확률, 은 탄생 률(birth rate), 은 사망률(death rate)이다.

Page 49: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

상태 방정식은 다음과 같다.

위의 식을 계산하면,

이 된다.

5. 단일큐잉모델

본 장에서는 단일 큐잉 모델을 분류하고 각 모델에 대한 이론적인 접근법과 시뮬레이션을 통한

성능평가방법을 설명한다. 일반적으로 큐잉모델은 마코프 성질을 가지는 시스템(예를 들어,

M/M/n/K) 에서는 해석적인 연구가 많이 있지만, 일반적인 시스템에서는 (예를 들어, G/G/1,

queueing networks)등에서는 해석이 불가능한 경우가 많다. 본 장에서는 큐잉 모델을 해석적으로

다루는 방법과 해석적으로 다루기 힘든 경우에 시뮬레이션을 통하여 성능을 평가하는 방법에

대하여 설명한다.

5.1 큐잉 모델의 분류

큐잉모델은 아래의 특성에 의해 분류된다.

(1) 고객의 도착 시간의 확률분포

(2) 서버의 서비스 시간의 확률분포,

(3) 서버의 개수,

Page 50: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

(4) 큐의 길이,

(5) 총고객의 수,

(6) 대기 행렬의 정책.

이와 같은 특성에 의해 다음과 같이 큐잉모델을 기술할 수 있다. (Kendall,1953)

A/S/c/K/P/Z

A: 도착시간의 확률 분포에는

M: 지수적(exponential)

D: 결정적 (deterministic)

Ek: Erlang type k (k=1, 2, ...)

Hk: k개의 지수적 혼합(mixture of k exponentials)

PH: 단계적(phase)

G: 일반적(general)

이 있다.

S: 서비스시간의 확률적 분포 (A와 동일)

c: 서버의 개수(1, 2, ..., ∞)

K: 큐의 길이(0, 1, 2, ..., ∞)

P: 시스템에서 총 고객의 수(1, 2, ..., ∞)

Z: 대기행렬 정책 :

FCFS: first come, first served

LCFS: last come, first served

RSS: random selection for service

PR: priority

GD: general discipline

등이 있다.

예를 들면 M/D/2/∞/∞/FCFS는 지수적 도착시간간의 분포, 결정적 서비스 시간, 두 개의 병렬

서버, 큐의 길이는 무한대, 총 고객 수는 제한 없음, first-come, first-served 큐 정책을 가지는

대기행렬이다. 보통 큐의 길이가 무한대이고, 총 고객 수가 제한이 없고, 큐 정책이 FCFS일 때는

처음 세 개의 기호만 적는다. (위의 경우는 M/D/2 )

5.2 M/M/1 model

Page 51: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. M/M/1 큐모델

M/M/1 모델은 Poisson 입력, 지수적 서비스, 한 개의 서버일 때, birth-death process를 이용하자.

이 때, 탄생률과 사망률은 상수가 된다. 즉, = , = 로 두고 을 계산하면

이제 정상 상태에서의 시스템 성능 지표를 구해보자. 성능 지표로는 평균 대기 시간 및 평균

대기자 수를 큐에서와 시스템 전체에서의 수치로 나타내도록 한다. 시스템에서의 평균 대기자

수, L은

가 되고 위에서 구한 을 대입하면

Little's formula(L= λW)에 의해 시스템에서 보내는 평균 시간 는

그리고 큐의 평균 대기자 수, 는

Page 52: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

이다. 또한, Little's formula(Lq=λWq)에 의해 큐에서의 평균 대기 시간 Wq는 아래와 같다.

예제 1 고객의 도달시간의 간격과 서비스 시간 모두가 지수적 분포라고 한다. arrival rate ,

service rate 일 때, 성능은 아래와 같다.

시스템의 효율 :

시스템의 평균 대기자 수: (명)

시스템의 평균 서비스 시간 : (sec)

CemTool을 이용한 시뮬레이션의 결과는 아래와 같다.

Page 53: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex1.cem

Page 54: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

[time, Qt, St] = queue("exp","exp", 1/0.25, 1, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE);

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Uz = que_util(time, St, 1);

figure;

plot(time, Uz);

title("Utilization");

결과 : E(system queue length) = 0.3206

E(average service time) = 1.1825

System Utilization = 0.2321

Page 55: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.3 M/M/c model

Page 56: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. M/M/c 큐모델

이 모델은 입력이 Poisson 이고 들어오고 지수적인 서비스시간을 가지며 c개의 서버가 존재한다.

이 때, = 이고, 은 customer가 서버의 개수 c에 따라

이 되고 은

먼저 평균 큐의 크기 를 먼저 구한 다음, Little's formula 에 의해 를, 그리고

와 을 이 용 하여 시스템 전체의 성능 평 가 항목을 쉽게 계산한다.

큐에서의 평균 대기 열 수 :

큐에서의 평균 대기 시간 :

Page 57: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

시스템의 평균 대기자 수 :

시스템의 평균 서비스 시간 :

예제 2 M/M/c 큐에서 c = 2라고 하자. arrival rate , service rate 일 때 CemTool을

이용한 시뮬레이션의 결과는 아래와 같다.

que_ex2.cem

Page 58: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

sn = 2;

[time, Qt, St] = queue("exp","exp", 1/0.5, 1, TotalTime, sn);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, sn);

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 0.4402

E(average service time = 0.9700

System Utilization = 0.21

Page 59: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.4 M/M/1/K (유한 기억공간)

Page 60: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. M/M/1/K 큐모델

이 모델은 입력이 Poisson 이고 지수적인 서비스시간을 가지며 1개의 서버가 존재하고 큐의

길이가 K로 제한된 경우이다. 여기서 큐에서 처음 들어온 고객이 서비스를 받는다고 하면

시스템에서 존재할 수 있는 총 승객의 수는 가 된다. 따라서 총 승객의 수가 가 되면 더 이상

승객이 입장할 수 없다. 따 라서 = 이고 은

최종적으로,

예제 3 M/M/1/K 큐에서 K= 3라고 하자. arrival rate , service rate 일 때 CemTool을

이용한 시뮬레이션의 결과 는 아래와 같다.

Page 61: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex3.cem

Page 62: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

sn = 1;

Qcap = 3;

[time, Qt, St] = queue("exp","exp", 1/0.5, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure; plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE);

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 0.953

E(average service time) = 1.813

System Utilization = 0.58

Page 63: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.5 M/M/c/K model

Page 64: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. M/M/c/K 큐모델

이 모델은 입력이 Poisson 이고 지수적인 서비스시간을 가지며 개의 서버가 존재하고 큐의

길이가 로 제한된 경우이다. 이 때

M/M/C 에서와 같이 전개하면 ( 을 이용)

Page 65: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

ρ=1인 경우 는 l'Hopital's rule을 두 번 적용하여 계산한다. , L, W를 구하기 위해선 입력

비율인 를 고려해야 한다. 상수가 아니므로 를 정의한다. 도착한 승객 중 의

비율로 시스템에 들어 갈 수 없기 때문에 실제 시스템 에 들어가는 비율은 1- 가 된다.

따라서

5.6 M/M/c/c

M/M/c/K 의 특별한 형태이다. 예를 들어 전화국의 경우 고객의 요구에 응답할 수 있는 서버의

개수가 현재 통화하고 있는 승객의 수와 같다. 용량 이상의 승객은 서비스 되지 않는다. 따라서

큐의 크기는 서버의 크기와 같다. 이러한 분포는 Erlang's first formula 를 따른다.

M/M/c/K 에서 K=c라 두면,

Page 66: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

위의 를 Erlang 's loss formula라고 하며 정상상태에서 시스템이 꽉 차있을 때, 즉 더 이상

서비스 할 수 없을 때의 확률이다. M/G/c/c 일 때도 위의 을 따른다. 이는 정상 상태의 확률은

평균 서비스 시간과는 관계되지만 확률 분포와는 상관없다는 말이다.

나머지 성능평가 항목은 K=c를 대입한 M/M/c/K과 같다.

예제 4 M/M/c/K 큐에서 c = K= 3라고 하자. arrival rate , service rate 일 때 CemTool을

이용한 시뮬레이션의 결 과는 아래와 같다.

Page 67: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex4.cem

Page 68: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

sn = 3;

Qcap = 3;

[time, Qt, St] = queue("exp","exp", 1, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 1.1754

E(average service time) = 1.1557

System Utilization = 0.303

Page 69: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.7 M/M/∞/∞

Page 70: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 1. M/M/∞/∞

Poisson 입력, 지수적 서비스, 무한 개의 서버가 있을 때, 이런 경우는 스스로 서비스를 행하는

경우이다. (self-service)

= 이고 은 = , = 로 두면

위의 은 M/G/∞ 일 때도 성립된다. 이는 은 평균 서비스 시간에는 관계하지만 서비스 시간

분포와는 무관하다는 말이다. M/M/c/c와 마찬가지로 같은 성질을 가지는데 이는 일 때의

경우이기 때문이다.

예제 5 M/M/ / 큐에서 arrival rate , service rate 일 때 CemTool을 이용한

시뮬레이션의 결과는 아래와 같 다.

Page 71: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex5.cem

Page 72: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 199;

sn = 100;

Qcap = 100;

[time, Qt, St] = queue("exp","exp", 1, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 0.9126

E(average service time) = 0.9870

System Utilization = 0.0078

Page 73: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.8 Finite Source Queue

Page 74: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

서비스 시간이 지수적이고(평균 ) 서버가 c개, 그리고 전체 승객의 수가 M으로 제한되었을 때,

이 되고,

여기서 위의 의 계수를 이라고 할 때,

이 된다. 와 를 구하기 위해선 를 구해야 한다. 이유는 평균 도착 비율이 서비스 받는

승객의 수에 따라 다르기 때문이다. 즉, 명이 서비스 받고 있을 때, 도착 비율은 이

된다. 따라서

Page 75: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

L 명이 시스템이 있을 때, M-L 명이 시스템 밖에 있고 각각 의 도착 비율을 가진다. 그러므로

5.9 M/G/1 Model

M/G/1 큐는 고객이 도달하는 프로세스는 의 rate를 가지는 쁘와송 프로세스이며, 서비스

시간은 일반적인 분포를 가지 는 프로세스이다. i번째 고객에 대한 서비스 시간을 의 불규칙

변수로 정의하면, 는 identically distributed, mutually independent 하며 에도

독립적이다. 서비스 시 간은 아래와 두 개의 moment로 결정된다.

:average service time

: second moment of service time

아래의 공식을 이용하여 M/G/1 큐에 대하여 시스템의 성능을 구한다.

Pollaczek-Khinchin(P-K) formula

고객의 큐의 대기시간 :

고객의 전체 대기시간 :

Little's Law 에 따라,

Page 76: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

큐에 대기중인 고객의 수 :

시스템에 있는 고객의 수 : :

예제 6 M/G/1 큐에서 이고, 이라 하자.

고객의 큐의 대기시간 :

고객의 전체 대기시간 :

Little's Law 에 따라,

큐에 대기중인 고객의 수 :

시스템에 있는 고객의 수 : :

CEMTool에서의 시뮬레이션 결과은 아래와 같다.

Page 77: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex6.cem

Page 78: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

at = 1;

st = [0.4 1]; % mean = 0.4, variance = 1

[time, Qt, St] = queue("exp","norm", at, st, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 1.4603

Average service time = 1.3547

System의 utilization = 0.5756

Page 79: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

5.10 G/G/1 Model

G/G/1 시스템은 M/G/1 과 유사하고, 도달시간에 대한 분포가 쁘와송분포가 아니라 일반적인

분포를 가진다. 도달시간의 분포는 평균= 분산= 으 로 주어지고, 서비스시간의 분포도

평균= 분산 = 로 주어질 때, 큐의 대기시간에 대 하 여 아래의 사실이 알려져 있다.

Page 80: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

여기서, 이다.

예제 7 도달시간의 분포는 평균= 분산= 으로 주어지고, 서비스시간의 분포도

평균= 분산 = 로 주어질 때, G/G/1 시스템의 성능 을 분석하여 보자.

CEMTool에서의 시뮬레이션 결과은 아래와 같다.

Page 81: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex7.cem

Page 82: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 199; % 시뮬레이션 시간.

at = [1 1]; % inter-arrival time

st = [0.4 1]; % st(1) : , st(2): 표준편차( )

[time, Qt, St] = queue("norm","norm", at, st, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 1.3593

Average service time = 1.2947

System의 utilization = 0.6367

Page 83: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

6.1 Burke's Theorem

Burke's Theorem 은 시간의 가역성(time reversibility)와 매우 밀접한 관계에 있다. `시스템이

가역이다'라는 말은 시간이 정상적으로 흐르는 시스템(forward system)과 역으로 흐르는 (reversed

system)의 통계적 특성(statistical feature)가 동일함을 말한다. 일반적으로 우리가 알고 있는

Page 84: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

irreducible, aperiodic, discrete-time Markov chain 이나, irreducible, aperiodic, continuous-time

Markov chain등은 시간적으로 가역임이 알려져 있다. 아래의 예를 통하여 가역인 시스템의

동작을 살펴보자. 아래의 그림 1, 2는 M/M/1인 큐에서 도착사건과 출발사건에 따른 시간의

정상정인 흐름에서 forward system 의 상태를 기술한 것이다.

시간을 역으로 생각했을 때의 reversed system의 생김새와 동작은 아래의 그림 3, 4와 같다.

그림 3. M/M/1 reversed system

Page 85: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 4. M/M/1 reversed system 의 동작

Reversible한 시스템에서 도착 프로세스(Arrival process)는 forward system 에서의 출발

프로세스와 동일하게 된다. 즉 이고 둘 모두 쁘와송 프로 세스이다.

Burke's Theorem 은 아래와 같이 정리할 수 있다.

Burke's Theorem

도착율 를 가지는 M/M/1, M/M/m, M/M/ 중의 한 시스템을 생각하여 보자. 그 시스템이

안정상태에 있다면, 아래의 사 실을 만족한다.

a) 출발 프로세스(departure process)는 의 rate를 가지는 쁘와송 프로세스이다.

b) 임의의 시간 t에서 시스템에 머무는 고객의 수는 t 시간전에 출발한 고객의 프로세스에

무관하다.

증명)

a)의 증명은 안정상태에서 forward system 과 reversed system은 통계적으로 구별할 수가 없다는

특성에 따른다. forward system에서의 출발 프로세스(departure process)는 reversed system의

도착 프로세서(arrival process)가 된다. 그런데, reversed system의 arrival process 는 쁘와송을

이루므로, forward system 의 출발 프로세스도 쁘와송이며 그 rate는 이다.

b) forward system에서 시간 t전에 출발한 사건은 reversed system 에선 시간 t 이후에 도착한

사건이 된다. reversed system에서의 도착 사건은 독립적인 쁘와송 프로세스이므로, 미래의 도착

Page 86: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

사건들은 reversed system 의 현재의 고객의 수에 의존하지 않는다. 그것은 forward system 에서

과거의 출발 프로세스가 현재의 고객의 수에 영향을 미치니 않음을 의미한다.

예제 1 두 개의 M/M/1 큐가 연속적인 텐덤(tandem)으로 연결된 아래와 같은 시스템을 생각해

보자. 도착율은 이며 쁘와 송 분포를 가진다. 각 큐의 서비 스율은 이다.

그림 5. M/M/1의 Tandem 큐

Burke's theorem 에 의해 첫 번째 큐를 서비스 받은 고객의 분포는 또한 의 쁘와송 프로세스가

되고, 이는 두 번째 큐의 도 착 프로세스가 된다. 따라서 독립적인 2개의 M/M/1 큐로 생각할 수

있다.

각 큐의 유효율은 이다. 그리고, 정상상태(steady-state conditions)에서 각각의 큐에

머무는 고객의 수에 대한 확률은

그리고, 각 큐에 머무는 고객의 평균수는

이다. 예제에서 , 을 사용하였다. 이론적인 값은

CEMTool을 이용하여 시뮬레이션 한 결과는 아래와 같다.

Page 87: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

tandem_ex.cem

Page 88: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

qn = 2;

ad = "exp";

sd = "exp";

at = 1;

st = [1/3; 1/2];

sn = [1 1];

stime=15;

[time,Qt,St]= tandem(qn, ad, sd, at, st, stime, sn);

% 결과 time, Qt, St

SCALE = 10; % 1/10 sec

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

결과 : E(system queue length) = 0.4404

E(system queue length) = 0.8293

utilization =

0.364

0.473

Page 89: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

6.2 Opended Queueing network

지금까지는 단일 큐(M/M/1, G/G/c/K) 의 특성에 대하여 공부하였다. 하지만, 복잡한 시스템은

단일 큐들의 여러 조합으로 구성되어져있는 경우가 많다. 이렇게 단일 큐들이 네트워크를 이루어

있는 시스템을 큐잉네트워크(Queueing network)이라고 한다.

Page 90: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

K개의 큐( )로 이루어진 큐잉 네트워크를 생각해 보자. 외부에서 각 큐 에 들어오는

고객의 도달간격시간율 (inter-arrival time rate)를 라 고 하자. 외부에서 고객의 입력이 없을

때는 이다. 특히, 다음과 같은 성질을 만족하는 망을 잭슨망(Jackson's network)이라 한다.

1) 망 외부로부터 망 내부 노드 i로 의 비율로 뽀아송 프로세스(Poisson process)를

따르며 들어온다.

2) 각 노드 i는 독립적이고 서비스 시간이 의 파라미터로 지수적으로 분포한다.

3) 노드 i에서 서비스가 끝난 승객이 노드 j로 가는 확률은 이다.

승객은 네트워크 외부에서 네트워크 내부의 임의의 큐로 쁘아송 프로세스로 들어 올 수 있다.

그리고 어떤 큐에서도 네트워크 외부로 나갈 수 있다. 젝슨 네트워크에서 각 큐( )에서 각

고객이 서비스받은 후에 망을 벗어나는 확률은 아 래와 같이 구할 수 있다.

여기서, 네트워크을 벗어 나는 경우는 외부세계의 또 다른 노드 번째 큐로 이동하는

것으로 간주한다.

그림 1. Opened Queueing network

따라서, 젝슨 네트워크를 나타내는 정보는 도달시간율에 대한 벡터 와 서비스율

벡터 , 그리 고 네트워크의 연결 정보 이다. 을 자세히

표현하면,

Page 91: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

여기서, 을 Routing Probability Matrix (RP-matrix)라고 부르자. 외부로부터 들어오는 입력 rate

와 RP-matrix를 통하여 각 큐에 도달하는 전체 고객의 도달율을 결정할 수 있다. 하나의 노드

에서 외부로부터 들어오는 고객과 다른 노드로부터 들어오는 고객의 합은 로 표현한다. 아래의

그림은 각 노드 와 노드의 연결관계를 나타낸 것이다.

그리고, 그 식은 아래와 같다.

위의 K 개의 선형 방정식을 풀어서 를 계산할 수 있다. 위의 선형방정식이 고유하게

존재하려면, 외부로부터 들어온 고객은 반드시 외부로 나갈 확률이 1이어야 한다.

각 노드에서 도달율(arrival rate)가 정하였졌고 각 노드의 서비스 시간을 알고 있으므로, 그

서비스 시간이 각각 독립적이며 지수적으로 분포하므로, 각 큐의 utilization factor는

이다.

Page 92: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

젝슨망을 분석하기 위하여, 시스템의 상태를 각 큐 에 있는 고객의 수 들의 조합

즉, 으로 정의하고, 이를 연속시간 마코프 체인 (continuous-time Markov chain) 으로

해석할 수 있다. 한명의 고객이 도달하거나 출발하는 사건에 의하여, 다음의 상태가 결정된다.

특히 큐 에 외부 로부터 고객이 도착하는 사건에 대하여 현재의 상태 은 아래와 같이 천이한다.

그리고, 에서 으로의 천이율(transition rate)는

이다.

반면에, 큐 에서 외부로 고객이 나가는 사건에 대하여 현재의 상태 은 아래와 같이 천이한다.

그리고, 에서 으로의 천이율(transition rate)는

이다.

젝슨망의 큐 에서 큐 로 고객이 이동하는 경우에 상태 천이는

이고, 천이율은

이다. 일반적으로, 시스템의 상태가 에 대하여 정상상태시 확률은 아래의 정리로 표현된다.

Jackson's Thoerem

젝슨망에서 각 큐의 utilization factor가 라고 하자. 각 노드에 머물고 있는 고객의

승객의 수에 대한 상태 에 대한 확률은

여기서, 이다.

Page 93: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

증명) 생략.

예제 2 아래와 같이 I/O device와 연결된 computer 시스템을 생각해 보자. 작업은

프와송분포로 의 rate 로 시스템에 도착 한다. 각각의 작업은 순차적으 로 서비스를 받고, CPU의

서비스시간은 지수적인 분포를 가지며, 그 평균값은 이다. 작 업이 CPU의 서비스를 받은

다음에는 의 확률로 시스템 을 빠져나가거나 의 확률로 I/O service를요청한 다.

I/O device에서 서비스되는 시간도 지수적인 분포를 가지면, 그 평균값은 이다. I/O 의

서비스를 받은 작업은 독립 적으로 들어오는 작업과 같이 CPU의 서비스를 요청한다.

그림 4. CPU와 I/O device 의 Feedback model

위의 예에서 큐의 연결 matrix R은 아래와 같다.

우선 그림에서 해석적 방법을 통하여 를 계산해보자.

,

따라서,

,

그러므로 각 시스템의 Utilization은

Page 94: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

이다. CPU의 큐와 I/Odevice의 큐의 대기열의 길이는

이다.

전체 시스템에 머무는 작업의 수는

이다.

일 때

CEMTool을 이용한 시뮬레이션은 아래와 같은 과정을 거친다.

Page 95: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

jacko_ex1.cem

Page 96: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

qn = 2;

R = [ 0 0.3 0.7;1 0 0];

ad = "exp";

sd = "exp";

at = [1; 1];

st = [1/3; 1/2];

stime=10;

sn = ones(1,qn);

qc = [20 20];

[time,Qt,St]= jack_on(R, qn, ad, sd, at, st, stime, sn, qc);

%%%%%%%%%%%%%%%%%%% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

jacko_ex1.cem 의 실행 결과는 아래와 같다.

E(average queue length) = 1.0168 % cpu

E(average queue length) = 0.1874 % i/o device

Utilization = 0.4868 % cpu

Utilization = 0.1774 % i/o device

Page 97: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Jackson's Thoerem 은 시스템의 각 큐에 머무는 고객의 수의 분포가 M/M/1 큐의 분포와

동일하며, 또한 다른 큐들과는 독립적임을 의미한다. 하지만, 그것이 각 큐에 도달하는 고객의

도달시간 분포가 쁘와송분포를 이룬다는 것을 의미하지는 않는다.

Tandem queue (직렬 대기행렬)는 젝슨망의 특별한 종류로 볼 수 있다. 아래의 조건을 만족하는

젝슨망은 Tandem 큐를 형성한다.

Page 98: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

직렬 대기행렬에서는 승객의 흐름이 한 방향이고 망 외부에서 노드 1으로만 들어오고 노드

k에서 망 외부로 나간다.

그림 7. Tandem 큐의 일반 형태

Tandem 큐의 연결 matrix R은 일반적으로 아래와 같다.

CEMTool을 이용한 시뮬레이션은 아래와 같은 과정을 거친다.

Page 99: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

jacko_ex2.cem

Page 100: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

qn = 2;

R = [ 0 1 0 ; 0 0 1];

ad = "exp";

sd = "exp";

at = [1; 1];

st = [1/3; 1/2];

stime=99;

sn = ones(1,qn);

[time,Qt,St]= jack_on(R, qn, ad, sd, at, st, stime, sn);

%%%%%%%%%%%%%%%%%%% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

결과 : E(Queue length) = 0.4990

E(Queue length) = 0.7778

Utilization =

0.2881

0.5337

Page 101: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

6.3 Closed Queueing Network

Page 102: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

네트워크의 외부에서 들어오는 승객이 없고 외부로 나가는 승객 또한 없다는 경우를 Closed

Network이라 한다. 4.9장의 Finite source queue와 같다. 예를 들면 1번 노드에서 2번 노드로

가는 확율이 이고 1번에서 3번 노드로 가는 확율은 이고 2번, 3번 노드는 다시 1번

노드로 들어가는 닫힌 네 트워크를 생각하면 다음과 같다.

그림 1. closed network의 예

네트워크의 연결 matrix R 은 아래와 같다.

해석적인 방법에 의하면, 각 큐에 도달하게 되는 도달율은

의 관계가 성립한다. 위의 관계식를 만족하는 해를

라 하자. 이 때, 각 큐의 utilization factor는

정상상태에서의 확률분포는

Page 103: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

여기서,

예제 3 위의 Closed network 의 예에서 이고 으로 주어져 있고, 시스템의

전체 고객이 4명일 때, 각 노드의 utilization 과 평균 큐의 길이를 구해 보자.

CEMTool을 이용한 시뮬레이션 결과는 아래와 같다.

Page 104: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

jacko_ex2.cem

Page 105: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

cn = 4; % number of customers

qn = 3; % number of Queue

R = [ 0 0.5 0.5 0; 1 0 0 0; 1 0 0 0];

sd = "exp";

st = [1/3; 1/2; 1/2];

stime=99;

sn = ones(1,qn);

[time, Qt, St]= jack_cn( R, qn, cn, sd, st, stime, sn);

%%%%%%%%%%%%%%%%%%% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

결과 : E(Queue 1 length) = 1.9374

E(Queue 2 length) = 1.1646

E(Queue 3 length) = 0.3939

Utilization =

0.9401

0.6514

0.2566

Page 106: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

7 Functions

List of Functions

Page 107: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Petri Net 모델

펑션명 설 명 사용처

tokeng token game player 2.1절

covert make coverability tree 2.3절

safe check the safeness 2.4절

bounded check the boundedness 2.4절

reachable check the reachability 2.3절

coverable check the coverability 2.3절

live check the liveness 2.5절

reverse check the reversibility 2.6절

tpn_sim timed Petri net simulator 3.5절

Queuing Systems

펑션명 설 명 사용처

queue single queue simulator 5.1, 5.2, 5.3,

5.5 5.6 5.8절

tandem tandem system simulator 6.1절

jack_on opened jackson network

simulator 6.2절

jack_cn closed jackson network

simulator 6.3절

get_st get service time of a system 5, 6장

get_aql get average queue length of

a system 5, 6장

Page 108: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

공 통 함 수

펑션명 설 명 사용처

get_uti get utilization of a system 5, 6장

get_traj get trajectory of a system 5, 6장

tokeng

목 적 : token game player

문 법 : Rset = tokeng(Ai, Ao, m0, stime)

설 명 : 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0 로 주어질 때,

untimed Petri net 의 마킹의 동작을 Period 동안 시뮬레이션한다. 결과는 stime 동안의 도달한

마킹을 순서대로 저장한 마킹의 Sequence Rset.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

Rset : 도달가능한 마킹의 시퀀스

관련 함수 : covert

예 제 : 아래와 같은 마크트 페트리네트의 토큰게임을 실행하여 보자.

Page 109: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 2. marked Petri net example

그림의 마크트 페트리네트는 로봇이 물건을 운반하는 시스템을 기술한 것이다. 현재 사용가능한

로봇의 개수는 1개이고, 운반해야 할 물건은 두 개가 있다. 이러한 상태는 각각

과 의 토큰의 수로 표현된다.

초기 마킹이 이다. 인에이블 규칙과 점화규칙에 따른 마킹의 변화는 아래의 그림에

나타나 있다. 그림 3.(d)에서는 인에이블된 트랜지션이 존재하지 않으므로 더 이상의 마킹의

변화는 없다.

Page 110: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 3. 그림 2의 페트리 네트의 동작

CemTool에서의 토큰 게임플레이어는 아래와 같이 동작한다.

CemTool>> Ai = [0 1; 0 0; 1 0]

CemTool>> Ao =[1 0; 1 0; 0 1]

CemTool>> m0= [ 1 2 0]

CemTool>> tokeng(Ai, Ao, m0)

(1 2 0)

(0 1 1)

(1 1 0)

(0 0 1)

(1 0 0)

(1 0 0)

.....

Page 111: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

queue

목 적 : single queue simulator

문 법 : [time, Qt, St] = queue(AD, SD, at, st, TotalTime);

[time, Qt, St] = queue(AD, SD, at, st, TotalTime, sn);

[time, Qt, St] = queue(AD, SD, at, st, TotalTime, sn, QCap);

[time, Qt, St] = queue(AD, SD, at, st, TotalTime, sn, QCap, PD, pt);

설 명 : 단일 큐에 대하여 시뮬레이션을 실행한다.

<입력>

AD : arrival time's distribution

SD : service time's distribution

at : arrival time

st : service time

TotalTime : simulation period

sn : number of servers

QCap : the length of queue

PD : setup time's distribution

pt : setup time

<출력>

time : event 가 발생한 시점에 대한 기록

Qt : event 가 발생한 시점의 queue에 대기중인 고객에 대한 기록

St : event 가 발생한 시점의 server 에 서비 tm중인 고객에 대한 기록

- AD, SD, PD 는 아래의 분포중의 하나를 선택하여 사용한다.

분포 의미

"exp" 지수적 분포 (혹은 쁘와송 분포)

Page 112: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

"norm" 정상 분포

"uniform" 균일 분포

"det" 고정(deterministic)

- at, st, pt 는 AD, SD, PD 의 선택에 따라 아래의 구조를 가진다.

분포 at, st, pt의 구조 의미

"exp" var1 var1 = mean

"norm" [ var1 var2 ] var1=mean,

var2=variance

"uniform" [ var1 var2 ] var1 = min,

var2 = max

"det" [ var1 ]

관련 함수 : get_util, get_st, get_aql, get_traj

예 제 :

예제 1. M/M/c/K 큐에서 c = K= 3라고 하자. arrival rate , service rate 일 때

CemTool을 이용한 시뮬레이 션의 결과는 아래와 같다.

Page 113: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex4.cem

Page 114: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

sn = 3;

Qcap = 3;

[time, Qt, St] = queue("exp","exp", 1, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE); %get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 :

E(system queue length) = 1.1754

E(average service time) = 1.1557

System Utilization = 0.303

Page 115: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

예제 2. 도달시간의 분포는 평균= 분산= 으로 주어지고, 서비스시간의 분포도

평균= 분산 = 로 주어지는, G/G/1 시스템의 성능을 분석하여 보자.

CEMTool에서의 시뮬레이션 결과은 아래와 같다.

Page 116: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex7.cem

Page 117: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 199; % 시뮬레이션 시간.

at = [1 1]; % inter-arrival time

st = [0.4 1]; % st(1) : , st(2): 표준편차( )

[time, Qt, St] = queue("norm","norm", at, st, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

Srvtime = get_st(Tr2,TotalTime,SCALE);

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1);

figure; plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

결과 : E(system queue length) = 1.3593

Average service time = 1.2947

System의 utilization = 0.6367

Page 118: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

tandem

목 적 : tandem queueing network simulator

문 법 : [time, Qt, St] = tandem( qn, AD, SD, at, st, TotalTime);

Page 119: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

[time, Qt, St] = tandem( qn, AD, SD, at, st, TotalTime, sn);

[time, Qt, St] = tandem( qn, AD, SD, at, st, TotalTime, sn, QCap);

[time, Qt, St] = tandem( qn, AD, SD, at, st, TotalTime, sn, QCap, PD, pt);

설 명 : 텐덤 큐에 대하여 시뮬레이션을 실행한다.

<입력>

qn : number of queues

AD : arrival time's distribution

SD : service time's distribution

at : arrival time

st : service time

TotalTime : simulation period

sn : number of servers,

QCap : the length of queue,

PD : setup time's distribution

pt : setup time,

<출력>

time : event 가 발생한 시점에 대한 기록

Qt : event가 발생한 시점의 queue에 대기중인 고객의 기록

St : event가 발생한 시점의 server에 서비 tm 중인 고객의 기록

- AD, SD, PD 는 아래의 분포중의 하나를 선택하여 사용한다.

분포 의미

"exp" 지수적 분포 (혹은 쁘와송 분포)

"norm" 정상 분포

"uniform" 균일 분포

"det" 고정(deterministic)

- at, st, pt 는 AD, SD, PD 의 선택에 따라 아래의 구조를 가진다.

Page 120: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

분포 at, st, pt의 구조 의미

"exp" var1 var1 = mean

"norm" [ var1 var2 ] var1=mean,

var2=variance

"uniform" [ var1 var2 ] var1 = min,

var2 = max

"det" [ var1 ]

관련함수 : get_util, get_st, get_aql, get_traj

참고문헌 : Leonard Kleinrock, "Queuing system Volume 1: Theory", John Wiley & Sons,

1975

Leonard Kleinrock, "Queuing system Volume II: Computer Application", John Wiley

& Sons, 1975

Dimitri Bertsekas, Robert Gallager, "Data networks", Prentice-Hall, 1992

Donald Gross, Carl M. Harris, "Fundamental's of Queueing Theory", Third

Edition, John Wiley & Sons, 1998

예 제 : 두 개의 M/M/1 큐가 연속적인 텐덤(tandem)으로 연결된 아래와 같은 시스템을

생각해 보자. 도착율은 이 며 쁘와송 분포를 가진다. 각 큐의 서비스율은

이다.

그림 2. M/M/1의 Tandem 큐

본 예제에서 , 을 사용하였다. CEMTool을 이용하여 시뮬레이션 한 결과는 아래와

같다.

Page 121: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

tandem_ex.cem

Page 122: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

qn = 2;

ad = "exp";

sd = "exp";

at = 1;

st = [1/3; 1/2];

sn = [1 1];

stime=15;

[time,Qt,St]= tandem(qn, ad, sd, at, st, stime, sn);

SCALE = 10; % 1/10 sec

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

결과 : E(system queue length) = 0.4404

E(system queue length) = 0.8293

utilization =

0.364

0.473

Page 123: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

jack_on

목 적 : jackson's opened network simulator

문 법 :

[time, Qt, St] = jack_on( R, qn, AD, SD, at, st, TotalTime);

[time, Qt, St] = jack_on( R, qn, AD, SD, at, st, TotalTime, sn);

[time, Qt, St] = jack_on( R, qn, AD, SD, at, st, TotalTime, sn, QCap);

[time, Qt, St] = jack_on( R, qn, AD, SD, at, st, TotalTime, sn, QCap, PD, pt);

설 명 : Jackson's opened network 대하여 시뮬레이션을 실행한다.

<입력>

R : Node Transition matrix

qn : number of queues

AD : arrival time's distribution

SD : service time's distribution

at : arrival time

st : service time

TotalTime : simulation period

sn : number of servers,

Page 124: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

QCap : the length of queue,

PD : setup time's distribution

pt : setup time,

<출력>

time : event 가 발생한 시점에 대한 기록

Qt : event가 발생한 시점의 queue에 대기중인 고객의 기록

St : event가 발생한 시점의 server에 서비 tm중인 고객의 기록

- Node Transition Matrix R 은 system 안에 있는 node와 node 사이의 연결관계가

확률적 값으로 주어진 정보를 담는다. 예를 들어 R(i,j) = p가 의미하는 것은 i-th

node에서 서비스 받은 고객이 j-th node로 갈 확률이 p라는 것을 의미한다. R은

차원은 이다. R(i, qn+1) 는 망밖 으로 고객이 나갈 확률을 의미한다.

그리고 을 항상 만족해야 한다.

- AD, SD, PD 는 아래의 분포중의 하나를 선택하여 사용한다.

분포 의미

"exp" 지수적 분포 (혹은 쁘와송 분포)

"norm" 정상 분포

"uniform" 균일 분포

"det" 고정(deterministic)

- at, st, pt 는 AD, SD, PD 의 선택에 따라 아래의 구조를 가진다.

분포 at, st, pt의 구조 의미

"exp" var1 var1 = mean

"norm" [ var1 var2 ] var1=mean,

var2=variance

Page 125: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

"uniform" [ var1 var2 ] var1 = min,

var2 = max

"det" [ var1 ]

관련 함수 : get_util, get_st, get_aql, get_traj

참고문헌 : Leonard Kleinrock, "Queuing system Volume 1: Theory", John Wiley & Sons,

1975

Leonard Kleinrock, "Queuing system Volume II: Computer Application", John Wiley

& Sons, 1975

Dimitri Bertsekas, Robert Gallager, "Data networks", Prentice-Hall, 1992

Donald Gross, Carl M. Harris, "Fundamental's of Queueing Theory", Third

Edition, John Wiley & Sons, 1998

예 제 : 예제. 아래와 같이 I/O device와 연결된 computer 시스템을 생각해 보자. 작업은

프와송분포로 의 rate로 시스템에 도착한다. 각각의 작 업은 순차적으로

서비스를 받고, CPU의 서비스시간은 지수적인 분포를 가지며, 그 평균값은

이다. 작업이 CPU의 서비스를 받은 다음 에는 의 확률로 시스템을

빠져나가거나 의 확률로 I/O service를요청한다. I/O device에서

서비스되는 시간도 지수적인 분포를 가지면, 그 평균값은 이다. I/O의

서비스를 받은 작업은 독립적으로 들어오는 작업과 같이 CPU의 서비스를

요청한다.

그림 2. CPU와 I/O device 의 Feedback model

위의 예에서 큐의 연결 matrix R은 아래와 같다.

Page 126: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTool을 이용한 시뮬레이션은 아래와 같은 과정을 거친다.

jacko_ex1.cem

Page 127: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

qn = 2;

R = [ 0 0.3 0.7;1 0 0];

ad = "exp";

sd = "exp";

at = [1; 1];

st = [1/3; 1/2];

stime=10;

sn = ones(1,qn);

qc = [20 20];

[time,Qt,St]= jack_on(R, qn, ad, sd, at, st, stime, sn, qc);

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

jacko_ex1.cem 의 실행 결과는 아래와 같다.

E(average queue length) = 1.0168 % cpu

E(average queue length) = 0.1874 % i/o device

Utilization = 0.4868 % cpu

Utilization = 0.1774 % i/o device

Page 128: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

jack_cn

목 적 : jackson's closed network simulator

문 법 : [time, Qt, St] = jack_cn( R, qn, cn, AD, SD, at, st, TotalTime);

[time, Qt, St] = jack_cn( R, qn, cn, AD, SD, at, st, TotalTime, sn);

[time, Qt, St] = jack_cn( R, qn, cn, AD, SD, at, st, TotalTime, sn, QCap);

[time, Qt, St] = jack_cn( R, qn, cn, AD, SD, at, st, TotalTime, sn, QCap, PD, pt);

설 명 : Jackson's opened network 대하여 시뮬레이션을 실행한다.

<입력>

R : Node Transition matrix

qn : number of queues

cn : number of customers

AD : arrival time's distribution

SD : service time's distribution

Page 129: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

at : arrival time

st : service time

TotalTime : simulation period

sn : number of servers,

QCap : the length of queue,

PD : setup time's distribution

pt : setup time,

<출력>

time : event 가 발생한 시점에 대한 기록

Qt : event가 발생한 시점의 queue 에 대기중인 고객의 기록

St : event가 발생한 시점의 server에서 서비스중인 고객의 기록

- Node Transition Matrix R 은 system 안에 있는 node와 node 사이의 연결관계가

확률적 값으로 주어진 정보를 담는다. 예를 들어 R(i,j) = p가 의미하는 것은 i-th

node에서 서비스 받은 고객이 j-th node로 갈 확률이 p라는 것을 의미한다. R은

차원은 이다. R(i, qn+1)는 망밖으로 고객이 나갈 확률이므로, R(i, qn+1)

= 0 이다. 그리고 을 항상 만족해야 한다.

- AD, SD, PD 는 아래의 분포중의 하나를 선택하여 사용한다.

분포 의미

"exp" 지수적 분포 (혹은 쁘와송 분포)

"norm" 정상 분포

"uniform" 균일 분포

"det" 고정(deterministic)

- at, st, pt 는 AD, SD, PD 의 선택에 따라 아래의 구조를 가진다.

Page 130: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

분포 at, st, pt의 구조 의미

"exp" var1 var1 = mean

"norm" [ var1 var2 ] var1=mean,

var2=variance

"uniform" [ var1 var2 ] var1 = min,

var2 = max

"det" [ var1 ]

관련 함수 : get_util, get_st, get_aql, get_traj

참고문헌 : Leonard Kleinrock, "Queuing system Volume 1: Theory", John Wiley & Sons,

1975

Leonard Kleinrock, "Queuing system Volume II: Computer Application", John

Wiley & Sons, 1975

Dimitri Bertsekas, Robert Gallager, "Data networks", Prentice-Hall, 1992

Donald Gross, Carl M. Harris, "Fundamental's of Queueing

Theory", Third Edition, John Wiley & Sons, 1998

예 제 : 아래와 같은 Closed network의 예에서 이고 으로 주어져

있고, 시스템의 전체 고객이 4명일 때, 각 노드의 utilization 과 평균 큐의 길이를

구해 보자.

그림 2. closed network의 예

네트워크의 연결 matrix R 은 아래와 같다.

Page 131: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTool을 이용한 시뮬레이션 결과는 아래와 같다.

jacko_ex2.cem

Page 132: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

cn = 4; % number of customers

qn = 3; % number of Queue

R = [ 0 0.5 0.5 0; 1 0 0 0; 1 0 0 0];

sd = "exp";

st = [1/3; 1/2; 1/2];

stime=99;

sn = ones(1,qn);

[time, Qt, St]= jack_cn( R, qn, cn, sd, st, stime, sn);

%%%%%%%%%%%%%%%%%%% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k));

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

결과 : E(Queue 1 length) = 1.9374

E(Queue 2 length) = 1.1646

E(Queue 3 length) = 0.3939

Utilization =

0.9401

0.6514

0.2566

Page 133: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

get_util

Page 134: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

목 적 : get system utilization from the simulation result

문 법 : Uz = get_util(time, St)

Uz = get_util(time, St, server)

설 명 : queueing system의 시뮬레이션 데이터(time, St) 로부터 utilization을 구한다.

<입력>

time : event 가 발생한 시점에 대한 기록

St : event가 발생한 시점의 server에서 서비스중인 고객의 기록

server : 서버의 수

<출력>

Uz : System Utilization

관련 함수 : queue, tandem, jack_on, jack_cn

예 제 : queue, tandem, jack_on, jack_cn 의 예제 참조.

get_traj

목 적 : get a trajectory from the simulation result

문 법 : Tr = get_traj(time, Qt, endtime, scale);

Page 135: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

설 명 : queueing system이나 Petri net의 시뮬레이션 데이터(time, Qt, St)로부터 시간에 대한 상태

괘적을 구한다.

<입력>

time : event 가 발생한 시점에 대한 기록

Qt : event가 발생한 시점의 기록

endtime : 시뮬레이션 시간

scale : 상태괘적의 셈플율/sec (= 1/주기)

<출력>

Tr : 상태 괘적

관련 함수 : queue, tandem, jack_on, jack_cn, get_st

예 제 : queue, tandem, jack_on, jack_cn 의 예제 참조.

get_st

목 적 : get serive time data from a trajectory

문 법 : st = get_st(Tr, endtime, scale);

설 명 : queueing system의 시간에 대한 상태괘적으로부터 서비스 시간 data를 추출한다.

<입력>

Tr : 상태 괘적

Page 136: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

endtime : 시뮬레이션 시간

scale : 상태괘적의 셈플율/sec (= 1/주기)

<출력>

st : 서비스 시간 data

관련 함수 : queue, tandem, jack_on, jack_cn, get_traj

예 제 : queue, tandem, jack_on, jack_cn 의 예제 참조.

get_aql

목 적 : get service time data from a trajectory

문 법 : aql = get_aql( time, Qt)

설 명 : queueing system 의 시뮬레이션 데이터(time, Qt)로부터 평균 큐의 길이를 구한다.

<입력>

time : event 가 발생한 시점에 대한 기록

Qt : event가 발생한 시점의 queue에 대기중인 고객의 기록

<출력>

aql : 평균 큐의 길이

관련 함수 : queue, tandem, jack_on, jack_cn, get_traj

예 제 : queue, tandem, jack_on, jack_cn 의 예제 참조.

Page 137: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

covert

목 적 : constuct coverability tree/ reachability tree

문 법 : [Rset, Tree] = covert(Ai, Ao, m0)

설 명 : 페트리 네트의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, reachable marking 이 한정적인 경우에는 reachability tree 를 생성하고, 무한대인

경우에는 coverability tree 를 만든다. 출력은 reachable marking set, Rset 과 각 마킹의

연결관계인 Tree이다. Tree의 각 원소, Tree(i;j)는 에 로 천이하게 되는 트 랜지션의 id 이다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

Rset : 도달가능한 마킹의 시퀀스

Tree : transition relation matrix

관련함수 : tokeng, safe, bounded, reachable, coverable

예 제 :

예제 1. 아래와 같은 마크트 페트리 네트를 생각해 보자.

이러한 페트리 네트의 도달가능 가지는 그림 6과 같다.

CemTool을 이용하여 Reachability Tree를 구성하여 보면

Page 138: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CemTool>> Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

CemTool>> Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

CemTool>> m0 = [2 0 0 0];

CemTool>> [Rset, Tree] = covert(Ai, Ao, m0)

CemTool>> Rset =

2 0 0 0

1 1 1 0

0 2 2 0

1 0 0 1

0 1 1 1

0 0 0 2

CemTool>> Tree =

0 1 0 0 0 0

0 0 1 2 0 0

0 0 0 0 2 0

3 0 0 0 1 0

0 3 0 0 0 2

0 0 0 3 0 0

예제 2. 아래와 같은 마크트 페트리 네트를 생각해 보자.

그림 4. A Unbounded Petri Nets

이러한 페트리 네트의 Unbounded한 marking을 가진다. 이러한 페트리 네트의

coverbility Tree는 아래와 같다.

Page 139: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 5. 그림 7 에 대한 Coverbility Tree

CemTool 을 이용하여 Coverbility Tree를 구하면

CemTool>> Ai = [ 1 0 0; 1 1 0; 0 1 1];

CemTool>> Ao = [ 1 1 0; 0 0 1; 0 0 1];

CemTool>> m0 = [1 0 0];

CemTool>> [Rset, Tree] = covert(Ai, Ao, m0);

CemTool>> Rset =

1 0 0

1 Inf 0

0 1 1

0 Inf 1

0 0 1

CemTool>> Tree =

0 1 2 0 0

0 1 0 2 0

0 0 0 0 3

0 0 0 3 0

0 0 0 0 0

Page 140: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

safe

목 적 : check the safeness of a Petri net

문 법 : boolean = safe(Ai, Ao, m0)

설 명 : 페트리 네트의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, 네트의 safeness을 검사한다. 네트가 safe하면 1, 아니면 0을 출력한다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

boolean : check bit. 1 = safe, 0 = not safe.

관련함수 : covert, bounde

예 제 :

그림 2. An bounded Petri Net

Page 141: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 10과 같은 페트리 네트는 bounded한 marking을 가진다. 이러한 페트리

네트의 coverbility Tree 는 아래와 같다.

그림 3. 그림 8의 Coverbility Tree

여기서,

CemTool>> Ai = [

1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0;

0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 0 1 0 0; 0 0 0 0 0 0 1 0;

0 0 0 1 0 0 0 0; 0 1 0 1 0 1 0 1;

0 0 0 1 0 0 0 0; 0 0 0 0 0 0 0 1;

0 0 0 0 0 0 0 1];

Page 142: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CemTool>> Ao = [

0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0;

0 0 0 1 0 0 0 0; 0 0 0 0 0 1 0 0;

0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1;

1 0 0 0 0 0 0 0; 1 0 1 0 1 0 1 0;

1 0 0 0 0 0 0 0; 0 0 0 0 1 0 0 0;

0 0 0 0 1 0 0 0];

CemTool>> m0 = [ 0 0 0 0 0 0 1 1 1 1 1];

CemTool >> safe(Ai, Ao, m0)

The net is safe.

bounded

목 적 : check the boundedness of a Petri net

문 법 : k = bounded(Ai, Ao, m0)

설 명 : 페트리 네트가의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, 네트의 boundedness를 검사한다. 네트의 모든 reachable marking 중 최대 값을

리턴한다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

k : 도달가능한 마킹에서의 토큰의 최대값

관련함수 : tokeng, covert, safe

Page 143: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

예 제 :

그림 2. A Unbounded Petri Nets

이러한 페트리 네트의 Unbounded한 marking을 가진다. 이러한 페트리 네트의 coverbility

Tree는 그림 8과 같다. CemTool을 이용하여 boundedness를 검사하면

CemTool>> Ai = [ 1 0 0; 1 1 0; 0 1 1];

CemTool>> Ao = [ 1 1 0; 0 0 1; 0 0 1];

CemTool>> m0 = [1 0 0];

CemTool >> bounded(Ai, Ao, m0)

inf

coverable

목 적 : check the coverability of a marking in a Petri net

문 법 : boolean = coverable(Ai, Ao, m0, m1)

설 명 : 페트리 네트가의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, 네트에서 도달가능한 marking 중 m1을 cover할 수 있는지 검사한다. 네트가

coverable 하면 1, 아니면 0을 출력한다.

Page 144: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

boolean : check bit: 1 = coverable, 0 = not coverable

관련함수 : covert, reachable

예 제 :

그림 2. A Unbounded Petri Nets

이러한 페트리 네트의 Unbounded한 marking을 가진다. 이러한 페트리 네트의 coverbility

Tree는 그림 8과 같다. CemTool을 이용하여 마킹 (0 10 1)이 Coverable 한지 조사하여 보아라.

CemTool>> Ai = [ 1 0 0; 1 1 0; 0 1 1];

CemTool>> Ao = [ 1 1 0; 0 0 1; 0 0 1];

CemTool>> m0 = [1 0 0];

CemTool>> m1 = [0 10 1];

CemTool >> coverable(Ai, Ao, m0, m1)

answer : 1

Page 145: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

reachable

목 적 : check the reachability of a marking in a Petri net

Syntax : boolean = reachable(Ai, Ao, m0, m1)

설명: 페트리 네트가의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, m1이 초기마킹으로부터 reachable 한지를 검사한다. reachable 하면 1, 아니면 0을

출력한다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

boolean : check bit: 1 = reachable, 0 = not reachable

관련함수 : covert, coverable

예 제 : 아래와 같은 마크트 페트리 네트를 생각해 보자.

그림 2. A Petri Net

CemTool을 이용하여 마킹(1 0 0 2)가 Reachable한지 조사하여 보아라.

CemTool>> Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

Page 146: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CemTool>> Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

CemTool>> m0 = [2 0 0 0];

CemTool>> m1 = [1 0 0 2];

CemTool>> reachable(Ai, Ao, m0, m1)

answer : 0

live

목 적 : check the liveness of a Petri net

문 법 : [Rset, T] = live(Ai, Ao, m0)

설 명 : 페트리 네트가 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, 네트의 liveness을 검사한다. 출력으로 네트가 도달가능한 marking의 집합과 각

marking에서 출발하여 점화가능한 모든 transition 을 나타낸다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

Rset : reachable marking set

T : 각 마킹에서 점화가능 transition set.

관련함수 : covert, coverable, reachale

예 제 :

Page 147: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 2. A Petri net

CemTool을 이용하여, 주어진 네트의 liveness을 조사하는 과정은 아래와 같다.

CEMTOOL>> Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

CEMTOOL>> Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

CEMTOOL>> m0 = [1 0 0];

CEMTOOL>> tran = live(Ai, Ao, m0)

not live Petri net

tran =

0 1 1 1

0 0 0 0

0 1 1 1

0 0 1 0

tran 변수에서 제공되는 정보는 각 행은 각 도달가능한 마킹을 의미하고, 각 열은 각 마킹에서

점화가능한 트랜지션을 의미한다. 예를 들어서, 에서 점 화 가능한 트랜지션은 이고,

에서 점화가능한 트랜지션은 없다. 에서 점화 가능 한 트랜지션은 이고, 에서

점화가능한 트랜지션 이 다.

reverse

목 적 : check the reversibility of a Petri net

Page 148: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

문 법 : boolean = reverse(Ai, Ao, m0)

설 명 : 페트리 네트가의 입력 incedence matrix Ai, 출력 incedence matrix Ao, 초기 마킹이 m0로

주어질 때, 네트의 reversibility 를 검사한다. 네트가 reversible 하면 1, 아니면 0을 출력한다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

m0 : 초기 마킹

stime : simulation period

<출력>

boolean : check bit: 1 = reversible, 0 = not reversible

관련함수 : covert, coverable

예 제 :

그림 2. A Petri net

주어진 페트리 네트의 각 마킹에 대한 reversibility 를 조사하여 보자.

CEMTool>> Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

CEMTool>> Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

CEMTool>> m0 = [1 0 0];

CEMTool>> check = reverse(Ai, Ao, m0)

Rset =

1 0 0

0 0 1

1 INF 0

0 INF 1

check = 1 0 0 0

Page 149: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTool을 통한 결과는 m0는 reversible 하며(자기자신의 마킹으로 돌아갈 수 있다는

의미이므로 당연하다), m1, m2, m3는 reversible 하지 않음(m0로 돌아갈 수 없다)을 나타낸다.

tpn_sim

목 적 : Timed Petri net simulator

문 법 : [time, Ni, Nt] = tpn_sim(Ai, Ao, CtxMtx, CtxProb, m0, ht, stime);

설 명 : 각 플레이스 에 ht(i)동안의 holding time이 있는 Place-timed Petri net 를 시뮬레이션

한다.

<입력>

Ai : 입력 incedence matrix

Ao : 출력 incedence matrix

CtxMtx : Conflict Matrix

CtxProb : Conflict Probability Matrix

m0 : 초기 마킹

ht : Holding time vector

stime : simulation period

<출력>

time : event 가 발생한 시점에 대한 기록

Ni : 각 place의 unavailable tokens의 수에 대한 기록

Nt : 각 place의 모든(unavailable + available) tokens 의 수에 대한 기록

관련 함수 : get_traj, get_util

예 제 :

본 예제는 아래의 Place-timed PN에 대하여 시뮬레이션하는 과정이다.

Page 150: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

그림 2. A Place-TPN

페트리네트의 입.출력 Matrix는 아래와 같다.

CEMTOOL>> Ai = [ 1 0 0 1; 0 1 0 0; 0 0 1 0];

CEMTOOL>> Ao = [ 0 1 1 0; 1 0 0 0; 0 0 0 1];

각각의 플레이스에는 각각 [1], [2], [1]sec의 holding time 이 할당되어있다. (H_time=[1 2

1]'). 그리고, 현재 Conflict(혹은 Confusion)이 발생하는 트랜지션은 이고 Conflict 정보를 담는

메트릭스는 CtxMtx이고, Conflict가 발생 하였을 때 각 트랜지션으로 점화할 확률 메트릭스는

CtxMtxProb로 주어진다. 본 예제에서는 각 트랜지션의 점화확률은 동일하다.

CEMTOOL>> H_time = [ 1 2 1]'; %Holding times

CEMTOOL>> CtxMtx = [0 1 1 0]; % conflict 가 발생할 수 있는 transition들의 matrix

CEMTOOL>> CtxProb = [0 0.5 0.5 0];

현재의 초기마킹은 [2 0 0]'이고, 시뮬레이션시간은 99sec이다.

CEMTOOL>> m0 = [2 0 0]';

CEMTOOL>> TotalTime = 99;

CEMTOOL>> [time,Ni,Nt]=tpn_sim(Ai,Ao,CtxMtx,CtxProb,m0,H_time,TotalTime);

시뮬레이션 결과 시간에 따른 마킹의 정보가 출력된다. 여기서 Ni는 가용하지 않는 토큰에 의한

마킹을 의미하고, Nt는 가용한 토큰과 가용하지 않는 토큰을 합한 모든 토큰의 마킹을의미한다.

Ni로서 각 플레이스의 Utilization을 검사할 수 있고, Nt로서 각 플레이스에 머무는 토큰의

trajectory를 아래와 같이 얻을 수 있다.

CEMTOOL>> Uz = get_util(time, Ni);

Page 151: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

CEMTOOL>> SCALE = 10; % 1/10 sec

CEMTOOL>> M = get_traj(time, Nt, TotalTime, SCALE);

CEMTOOL>> x = 0:TotalTime*SCALE-1;

CEMTOOL>> figure

CEMTOOL>> plot(x, M(1;:)+10, x, M(2;:)+7, x, M(3;:)+4);

Page 152: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

8 Examples

List of Example

Petri Net 모델

예제명 설 명 관련된 절

pn_ex0.cem togen game player예제 2.1절

pn_ex1.cem reachability tree 예제 2.3절

pn_ex2.cem coverability tree 예제 2.3절

pn_ex3.cem coverability tree 예제 2.3절

pn_ex4.cem reachability check 예제 2.3절

pn_ex5.cem coverability check 예제 2.3절

pn_ex6.cem liveness check 예제 2.5절

pn_ex7.cem reversibility check 예제 2.6절

tpn_ex1.cem timed-PN simulation 예제 3.5절

Queueing 모델

예제명 설 명 관련된 절

que_ex0.cem M/M/1/K queue 예제 5.4절

Page 153: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

que_ex1.cem M/M/1 queue 예제 5.2절

que_ex2.cem M/M/n queue 예제 5.3절

que_ex3.cem M/M/n/K queue 예제 5.5절

que_ex4.cem M/M/c/c queue 예제 5.6절

que_ex5.cem M/M/ / queue 예제 5.7절

que_ex6.cem M/G/1 queue 예제 5.9절

que_ex7.cem G/G/1 queue 예제 5.10절

tandem_ex.cem tandem queue 예제 6.1절

jacko_ex1.cem opened jackson network 예제 6.2절

jackc_ex1.cem closed jackson network 예제 6.3절

pn_ex0.cem

% Token game player example

del *;

Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

m0 = [ 2 0 0 0];

Period = 10;

[Rset, Rfv]= tokeng(Ai, Ao, m0, Period);

Rset

Rfv

Page 154: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

pn_ex1.cem

% Coverability Tree Example

del *;

% bounded PN example.

Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

m0 = [2 0 0 0];

[Rset, Tree] = covert(Ai, Ao, m0);

Rset

Tree

pn_ex2.cem

% Coverability Tree Example

del *;

% unbouned PN example

Ai = [ 1 0 0; 1 1 0; 0 1 1];

Ao = [ 1 1 0; 0 0 1; 0 0 1];

m0 = [1 0 0];

% ex2

%Ai = [ 0 0 1; 1 0 0; 1 0 0];

%Ao = [ 1 0 0; 0 1 1; 0 1 0];

%m0 = [1 0 0];

[Rset, Tree] = covert(Ai, Ao, m0);

Rset

Tree

Page 155: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

pn_ex3.cem

% Coverability Tree Example

del *;

% unbouned PN example

%Ai = [ 1 0 0; 1 1 0; 0 1 1];

%Ao = [ 1 1 0; 0 0 1; 0 0 1];

%m0 = [1 0 0];

% ex2

%Ai = [ 0 0 1; 1 0 0; 1 0 0];

%Ao = [ 1 0 0; 0 1 1; 0 1 0];

%m0 = [1 0 0];

% bounded PN example.

%Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

%Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

%m0 = [2 0 0 0];

Ai = [

1 0 0 0 0 0 0 0;

0 1 0 0 0 0 0 0;

0 0 1 0 0 0 0 0;

0 0 0 0 1 0 0 0;

0 0 0 0 0 1 0 0;

0 0 0 0 0 0 1 0;

0 0 0 1 0 0 0 0;

0 1 0 1 0 1 0 1;

0 0 0 1 0 0 0 0;

0 0 0 0 0 0 0 1;

0 0 0 0 0 0 0 1];

Ao = [

0 1 0 0 0 0 0 0;

Page 156: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

0 0 1 0 0 0 0 0;

0 0 0 1 0 0 0 0;

0 0 0 0 0 1 0 0;

0 0 0 0 0 0 1 0;

0 0 0 0 0 0 0 1;

1 0 0 0 0 0 0 0;

1 0 1 0 1 0 1 0;

1 0 0 0 0 0 0 0;

0 0 0 0 1 0 0 0;

0 0 0 0 1 0 0 0];

m0 = [ 0 0 0 0 0 0 1 1 1 1 1];

[Rset, Tree] = covert(Ai, Ao, m0);

Rset

Tree

pn_ex4.cem

% Reachable() Example

del *;

% unbouned PN example

Ai = [ 1 0 0; 1 1 0; 0 1 1];

Ao = [ 1 1 0; 0 0 1; 0 0 1];

m0 = [1 0 0];

m1 = [1 3 0];

% ex2

%Ai = [ 0 0 1; 1 0 0; 1 0 0];

%Ao = [ 1 0 0; 0 1 1; 0 1 0];

%m0 = [1 0 0];

Page 157: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

% bounded PN example.

%Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

%Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

%m0 = [2 0 0 0];

%m1 = [1 0 0 2];

reachable(Ai, Ao, m0,m1);

pn_ex5.cem

% Coverability Check Example

del *;

% unbouned PN example

Ai = [ 1 0 0; 1 1 0; 0 1 1];

Ao = [ 1 1 0; 0 0 1; 0 0 1];

m0 = [1 0 0];

m1 = [1 3 0];

% ex2

%Ai = [ 0 0 1; 1 0 0; 1 0 0];

%Ao = [ 1 0 0; 0 1 1; 0 1 0];

%m0 = [1 0 0];

% bounded PN example.

%Ai = [ 0 0 1; 1 0 0; 1 0 0; 0 1 0];

%Ao = [ 1 0 0; 0 1 0; 0 1 0; 0 0 1];

%m0 = [2 0 0 0];

%m1 = [1 0 0 2];

coverable(Ai, Ao, m0, m1);

pn_ex6.cem

% Liveness check Example

Page 158: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

del *;

% unbouned PN example

Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

m0 = [1 0 0];

tran = live(Ai, Ao, m0)

pn_ex7.cem

% Reversibility check

del *;

% unbouned PN example

Ai = [ 0 0 0 1; 0 0 0 1; 0 1 1 0];

Ao = [ 1 1 0 1; 0 0 1 0; 1 0 1 0];

m0 = [1 0 0];

check = reverse(Ai, Ao, m0)

tpn_ex1.cem

% Timed Petri Nets 의 시뮬레이션, 성능평가

% Conflict가 '있는'Ordinary Petri Nets인 경우

% dead-lock은 검사할 수 없음.

% K-boundedness = 3개로 한정함.

del *;

SCALE = 10; % 1/10 sec

% example 1 : simple conflict structure

%---------------------------------------------------------------

Page 159: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

Ai = [ 1 0 0 1; 0 1 0 0; 0 0 1 0];

Ao = [ 0 1 1 0; 1 0 0 0; 0 0 0 1];

CtxMtx = [0 1 1 0]; % conflict가 발생할 수 있는 가능성의 set들

CtxProb = [0 0.5 0.5 0];

m0 = [2 0 0]';

PNtimes = [ 1 2 1]';

%Ai = [ 1 0 0 1 0; 0 1 0 0 0; 0 0 1 0 1];

%Ao = [ 0 1 1 0 0; 1 0 0 0 1; 0 0 0 1 0];

%CtxMtx = [0 1 1 0 0; 1 0 0 0 1]; % conflict가 발생할 수 있는 가능성의 set들

%CtxProb = [0 0.5 0.5 0 0; 0.7 0 0 0 0.3];

[time,Ni,Nt]=tpn_sim(Ai,Ao,CtxMtx,CtxProb,m0,PNtimes,TotalTime);

Data = [time; Ni];

Uz = tpn_util(Data);

Data = [time; Nt];

M = tpn_traj(Data, TotalTime, SCALE);

x = 0:TotalTime*SCALE-1;

figure

plot(x, M(1;:)+10, x, M(2;:)+7, x, M(3;:)+4);

que_ex0.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate:Markov process(M),Gaussian(G),Uniform(U),Determistic(D)

Page 160: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

% departure: Markov process(M),Gaussian(G),Uniform(U),Determistic(D)

% server 의 수 = n개

% finite queue. = K (-> QUEUE_CAP)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%

del *;

TotalTime = 399;

Cap = 30;

sn = 1;

[time, Qt, St] = queue("exp","exp", 1/0.25, 1,TotalTime, sn, Cap);

figure;

plot(time, Qt);

title("Queue Trajectory");

figure;

plot(time, St+Qt);

title("System Trajectory");

Uz = que_util(time, St, sn); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

SCALE = 10;

Page 161: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Tr = get_traj(time, Qt+St, TotalTime, SCALE);

Srvtime = get_st(Tr,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

que_ex1.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/1

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%

del *;

TotalTime = 99;

[time, Qt, St] = queue("exp","exp", 1/0.25, 1, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

Page 162: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex2.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% M/M/n

% server 의 수 = sn개

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%

del *;

Page 163: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

TotalTime = 99;

sn = 2;

[time, Qt, St] = queue("exp","exp", 1/0.5, 1, TotalTime, sn);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, sn); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Transient Utilization");

"Utilization = "

Uz(length(Uz))

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

Page 164: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex3.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D).

% server 의 수 = sn개

% finite queue. = Qcap

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%

del *;

TotalTime = 99;

sn = 1;

Qcap = 3;

[time, Qt, St] = queue("exp","exp", 1/0.5, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

Page 165: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex4.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D).

Page 166: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

% server 의 수 = sn개

% finite queue. = Qcap

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%

del *;

TotalTime = 99;

sn = 3;

Qcap = 3;

[time, Qt, St] = queue("exp","exp", 1, 1, TotalTime, sn, Qcap);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

Page 167: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex5.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D).

% server 의 수 = sn개

% finite queue. = Qcap

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%

% M/M/inf/inf model

del *;

TotalTime = 199;

sn = 100;

Qcap = 100;

[time, Qt, St] = queue("exp","exp", 1, 1, TotalTime, sn, Qcap);

SCALE = 10;

Page 168: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex6.cem

Page 169: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D).

% server 의 수 = sn개

% finite queue. = Qcap

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%

% M/G/1 model

del *;

TotalTime = 99;

at = 1;

st = [0.4 1]; % mean = 0.4, variance = 1

[time, Qt, St] = queue("exp","norm", at, st, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

Page 170: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(length(Uz))

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

que_ex7.cem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%

% Queuing Model Simulation

% (M,G,U,D)/(M,G,U,D)/n/K

% arrival rate/service process

% Markov process(M),

% Gaussian(G),

% Uniform(U),

% Determistic(D).

% server 의 수 = sn개

% finite queue. = Qcap

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%

Page 171: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

% G/G/1 model

del *;

TotalTime = 199;

at = [1 1]; % mean = 1, variance = 1

st = [0.4 1]; % mean = 0.4, variance = 1

[time, Qt, St] = queue("norm","norm", at, st, TotalTime);

SCALE = 10;

t = 0:TotalTime*SCALE-1;

Tr1 = get_traj(time, Qt, TotalTime, SCALE);

figure;

plot(t, Tr1);

title("Queue Trajectory");

Tr2 = get_traj(time, Qt+St, TotalTime, SCALE);

figure;

plot(t, Tr2);

title("System Trajectory");

Srvtime = get_st(Tr2,TotalTime,SCALE); % get average system time

population = length(Srvtime);

"Average service time = "

sum(Srvtime)/(population*SCALE)

Uz = que_util(time, St, 1); % server place is busy if Ni(3,:) > 0.

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Page 172: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

Uz(length(Uz))

aql = get_aql(time, Qt); % average queue length

"E(waiting queue length) ="

aql

asl = get_aql(time, Qt+St); % get average customers in system

"E(system queue length) = "

asl

tandem_ex.cem

% Tandem Queue Model Simulation

% -> Q1 -> Q2 ... -> Qn

% input :

% qn = number of queue;

% ad = arrival time distribution;

% sd = service time distribution;

% at = arrival time

% st = service time

% sn = server number

% qc = queue capacity

% stime = simulation time

% pd = setup time distribution

% pt = setup time

% output :

% time

% Qt = queue trajectory

% St = server trajectory

% syntax

% [time,Qt,St]= tandem(qn, ad, sd, at, st, stime);

% [time,Qt,St]= tandem(qn, ad, sd, at, st, stime, sn);

% [time,Qt,St]= tandem(qn, ad, sd, at, st, stime, sn, qc);

% [time,Qt,St]= tandem(qn, ad, sd, at, st, stime, sn, qc, pd, pt);

function;

Page 173: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

time,Qt,St <> qn, ad, sd, at, st, stime, sn, qc, pd, pt;

if (nargin == 6) {

pd = "exp";

pt = zeros(qn,1);

sn = ones(1,qn);

qc = 30*ones(1,qn);

}

if (nargin==7) {

pd = "exp";

pt = zeros(qn,1);

qc = 30*ones(1,qn);

}

if (nargin==8) {

pd = "exp";

pt = zeros(qn,1);

}

QueueNum=qn;

QUEUE_CAP = qc; %finite capacity of queue.

SERVER=sn;

TotalTime=stime;

%---------- Queue Model --------------------

Ai_1 = [ 1 0 0; 1 0 0; 0 1 0; 0 0 1; 0 1 0]; % 5개의 플레이스로 구성

Ao_1 = [ 1 0 0; 0 1 0; 0 0 1; 0 1 0; 1 0 0];

Ai_2 = [ 1 0 0; 0 1 0; 0 0 1; 0 1 0]; % 4개의 플레이스로 구성

Ao_2 = [ 0 1 0; 0 0 1; 0 1 0; 1 0 0];

Ai = zeros(QueueNum*4+1,QueueNum*2-1);

Ao = Ai;

Page 174: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

for(k=1; k<=QueueNum; k++){

if (k==1){

Ai(1:5;1:3) = Ai_1;

Ao(1:5;1:3) = Ao_1;

}

else{

Ai(4*k-2:4*k+1;2*k-1:2*k+1) = Ai_2;

Ao(4*k-2:4*k+1;2*k-1:2*k+1) = Ao_2;

}

}

% Incedence matrix

A = Ai - Ao;

% Initial Conditions

mi = zeros(1,QueueNum*4+1)';

mf = zeros(1,QueueNum*4+1)';

PNtimes = zeros(QueueNum*4+1,2);

mf(1) = 1; % source of arrival passengers

PNtimes(1;1) = at(1);

if(length(at)==2) PNtimes(1;2) = at(2); % variance

for(k=1;k<=QueueNum;k++){

mf(4*k) = sn(k); % server number

mf(4*k+1) = qc(k); % queue capacity

PNtimes(4*k-1;1) = st(k;1); % service mean

if(length(st(k;:))==2) PNtimes(4*k-1;2) = st(k;2); % variance

PNtimes(4*k;1) = pt(k;1);

if(length(pt(k;:))==2) PNtimes(4*k;2) = pt(k;2); % setup variance

}

TotalPlaces = length(mf);

T = inf*ones(TotalPlaces, max([QUEUE_CAP SERVER ])); % 각 플레이스의 내부 clock을 나타낸다.

Page 175: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

tick = 1;

N = [];

Nt = [];

Ni = [];

Nf = [];

N(:;tick) = mf + mi;

time(tick) = 0;

while(time(tick) < TotalTime)

{

time(tick)

% mf' + mi'

% 점화가능한 firing vector를 구한다.

x = multoa(not(Ao'), not(not(mf)));

%x'

%input;

while(sum(x)!=0)

{

mf = mf - Ao*x;

mi_new = mi + Ai*x;

for(k=1; k <= TotalPlaces; k++){

for ( j=mi(k)+1; j<=mi_new(k); j++){

if (k==1){

T(k;j) = time_cal(ad, PNtimes(k;:));

}

else{

if(mod(k-3,QueueNum)==0) % service time

T(k;j) = time_cal(sd, PNtimes(k;:));

else{

if(mod(k-4,QueueNum)==0){ % service time

T(k;j) = time_cal(pd, PNtimes(k;:));

Page 176: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

}

else T(k;j) = PNtimes(k;1);

}

}

} % for j

} % for k

mi = mi_new;

x = multoa(not(Ao'), not(not(mf)));

} % while

for(i = 1; i<=TotalPlaces; i++)

T(i;:) = sort(T(i;:)); % T의 각열을 순차적으로 정렬

[e_time, p_id] = min(T(:;1)); % 가장 이른 token의 시간과 place의 위치를 찾는다.

if (e_time < 0 )

msgprint("error 1");

else{

if (e_time == inf)

else{

tick = tick+1;

Nt(:;tick) = mf+mi;

Ni(:;tick) = mi;

Nf(:;tick) = mf;

time(tick) = time(tick-1) + e_time;

% time

T = T - ones(size(T))*e_time; % mi의 토큰의 시간을 e_time만큼 감소.

% mi에서 한개를 빼내고, 나머지를 초기화함.

temp_len = length(T(1;:));

T(p_id; 1:temp_len-1) = T(p_id; 2:temp_len);

T(p_id; temp_len) = inf;

mi(p_id) = mi(p_id)-1;

mf(p_id) = mf(p_id)+1;

} % else

Page 177: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

} %else

} % while end

for(k=1;k<=qn; k++){

St(k;:) = Nt(4*k-1;:); % server history

Qt(k;:) = Nt(4*k-2;:); % queue history

}

jacko_ex1.cem

% JackSon's Opened Network Simulation Example

% Queue의 갯수 : qn개

% 각 큐은 연결 관계 : R

del *;

%-------------------------------

%qn = 4;

%R = [ 0 0.33 0.33 0.33 0.01;

% 0.1 0 0 0 0.9;

% 0.3 0 0 0 0.7;

% 0.1 0 0 0 0.9];

%qn = 3;

%R = [ 0 0.5 0.5 0;

% 0 0 0 1;

% 0.0 0 0 1];

% ----> Q1 ---|--- > Q2--->

% | |---> Q3 --|

% |<------------------|

qn = 2;

R = [ 0 0.3 0.7;1 0 0];

ad = "exp";

Page 178: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

sd = "exp";

at = [1; 1];

st = [1/3; 1/2];

stime=10;

sn = ones(1,qn);

qc = [3 3];

[time,Qt,St]= jack_on(R, qn, ad, sd, at, st, stime, sn, qc);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k)); % server place is busy if Ni(3,:) > 0.

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))

jackc_ex1.cem

% JackSon's Closed Network Simulation

% Queue의 갯수 : QueueNum개

% 각 큐은 연결 관계 : R

%-----------------------------------------------

Page 179: Event System Toolbox · 2018. 9. 11. · Event System Toolbox - 목 차-제 1 장 이산현상 시스템 개요 제 2 장 페트 y 네트 (Petri Net) 모델 2.1 페트네트의 동

del *;

cn = 4; % number of customers

qn = 3; % number of Queue

R = [ 0 0.5 0.5 0; 1 0 0 0; 1 0 0 0];

sd = "exp";

st = [1/3; 1/2; 1/2];

stime=99;

sn = ones(1,qn);

qc = [6 6 6];

[time, Qt, St]= jack_cn( R, qn, cn, sd, st, stime, sn, qc);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 결과 time, Qt, St

SCALE = 10;

figure;

for(k=1;k<=qn; k++){

Uz(k;:) = que_util(time, St(k;:), sn(k)); % server place is busy if Ni(3,:) > 0.

len=squelen(time, Qt(k;:)+St(k;:), stime, SCALE);

subplot(qn,1,k);

if (k==1) title("Queue Trajectory");

plot(time, St(k;:)+Qt(k;:));

}

figure;

plot(time, Uz);

title("Utilization");

"Utilization = "

Uz(:;length(Uz(1;:)))