Вы находитесь на странице: 1из 36

y DEVS: Discrete EVent System

specificarion

Juan de Lara
Escuela Politcnica Superior Ingeniera Informtica Universidad Autnoma de Madrid
1

z Indice
y Introduccin. y DEVS atmico. y DEVS compuestos. y DEVS y Orientacin a Objetos. y Multi-Formalismo: y Bibliografa

z Introduccin
Bernard Zeigler (1976, Theory of Modelling and Simulation)

y Una base formal para la representacin


(a bajo nivel) de todos los formalismos de simulacin discreta e implementaciones de simuladores.

y Basado en teora de sistemas.

Bernard Zeigler

z Introduccin
Grafo de eventos 15 50 60

rojo
{ S = Rojo }

verde
{ S = verde } Trayectoria de Estados

amarillo
{ S = amarillo }

verde verde rojo rojo amarillo 50 60 15


4

amarillo rojo

z Introduccin
Autmata Finito = DEVS sin transiciones externas y sin salida

S1 ta(s3)

ta(s1)

S2 ta(s2)

S3 ta(s3) ta(s2) int(s2)

Trayectoria de Estados S3

S2

ta(s1)
S1 0

int(s1)

int(s3)

z Introduccin
X

S1

ta(s1) ta(s3)

S2 ta(s2) x

S3

S S3

t e

ta(s3)

DEVS sin salida

ta(s2)
S2

int(s2) ext(s3,e,X)

ta(s1)
S1

int(s1)
t
6

z Introduccin
X

x
S S3 e

S1
t

ta(s1)/(s1)

S2
ta(s2) /(s1) x

ta(s3)

ta(s3) /(s3)

S3

ta(s2)
S2

int(s2) ext(s3,e,X)

ta(s1)
S1 Y (s2) (s1) (s3)

int(s1)

z Indice
y Introduccin. y DEVS atmico. y Definicin formal. y Ejemplo. y DEVS con puertos. y Ejemplo. y DEVS compuestos. y DEVS y Orientacin a Objetos. y Multi-Formalismo. y Bibliografa

z DEVS atmico: Definicin Formal


DEVS = <X, S, Y, int, ext, , ta>

y T = , yX yS yY y int: SS y ext: Q x X S y : y ta:

base temporal conjunto de valores de entrada conjunto de estados conjunto de valores de salida funcin de transicin interna funcin de transicin externa, donde Q={(s,e)|sS, 0e ta(s)} es el conjunto de estados total e es el tiempo que ha pasado desde la ltima transicin. SY La funcin de salida. S+0, El conjunto de los nmeros reales positivos incluido 0 e .
9

z DEVS atmico: Definicin Formal


x1
X

xo
t

s2 s1 so
ext(s0,e,X0)

intt(s1) ext(s2, e, x1)

y1
Y

yo

(s1)
10

z DEVS atmico: Ejemplo (i)


y Contador Binario: da como salida un uno por cada dos unos
que recibe. y DEVS = (X, S, Y, int, ext, , ta) y X = {1, 0} y Y = {1} y S = {pasivo, activo} x {0, 1}, y ext(pasivo, count, e, x) = (pasivo, count+x) (activo, 0)

S0 = (pasivo, 0) if count+x < 2 en otro caso

y int (fase, count) = (pasivo, count) y (activo, count) = 1 y ta (pasivo, count) = y ta (activo, count) = 0

11

z DEVS atmico: Ejemplo (i)


1
X

0
t

S
(activo, 0) (pasivo, 1) (pasivo, 0) ext ext int ext ext int

12

z DEVS atmico: Ejemplo (ii)


y Servidor: Procesa piezas en tPROC segundos y genera un 1 cuando termina
de procesar cada pieza. y DEVS = (X, S, Y, int, ext, , ta) y X = {1} y Y = {1} y S = {busy, idle} x N x R S0 = (idle, 0, 0) y ext((idle, 0, 0), e, 1) = (busy, 0, tPROC) y ext((busy, n, t), e, 1) = (busy, n, t-e) y int ((idle, 0, 0)) = (idle, 0, 0) y int ((busy, n, t)) = (busy, n-1, tPROC) if n > 0 (idle, 0, 0) if n == 0 y ((busy, n, t)) = 1 y ta ((idle, n, t)) = y ta ((busy, n, t)) = t

13

z DEVS atmico: Ejemplo (ii)


1
X t

0
S

3 Idle N=0 T=0 Busy N=0 T=10

8 Busy N=1 T=5

13

15 17
Busy Busy N=0 N=1 T=10 T=8 Busy N=2 T=6

21 23

Busy Busy N=3 N=2 T=2 T=10

1
Y
14

z DEVS atmico: Ejercicio (entregar).


y
Modificad el ejemplo anterior para modelar un servidor con dos colas de distinta prioridad (es decir, recibe dos tipos distintos de piezas). El servidor atender primero las piezas de mayor prioridad. Tarda 10 segundos en procesar las piezas de menor prioridad y 5 las de prioridad alta. El servidor debe generar una salida 1 por cada pieza procesada de prioridad alta y un 0 por cada pieza de prioridad baja.

15

z DEVS atmico: Puertos


DEVS = <X, S, Y, int, ext, , ta>
y T = , y X={(p,v)|p InPorts, v Xp} y Y={(p,v)|p OutPorts, v Yp} yS y int: SS y ext: Q x X S y : y ta:
base temporal conjunto de valores y puertos de entrada conjunto de valores y puertos de salida conjunto de estados funcin de transicin interna funcin de transicin externa, donde Q={(s,e)|sS, 0e ta(s)} es el conjunto de estados total e es el tiempo que ha pasado desde la ltima transicin. SY La funcin de salida. S+0, El conjunto de los nmeros reales positivos incluido 0 e .

16

z DEVS atmico: Puertos.


Ejemplo: switch
in1 in2 out1 out2

switch

DEVS = <X, S, Y, int, ext, , ta>

y InPorts={in1, in2}, Xin1 = Xin2 = {1, 0} y OutPorts={out1, out2}, Yin1 = Yin2 = {0, 1} y S = {pasivo, ocupado} x +0 x {in1, in2} x {0, 1} x {true, false} y S0 = (pasivo, 0, in1, 0, false) y ext(fase, , inPort, store, Sw, e, (p, v)) = y y

(ocupado, t_proceso, p, v, not Sw) si fase = pasivo y p {in1, in2} (fase, -e, inPort, store, Sw) en otro caso int (fase, , inPort, store, Sw) = (pasivo, , inPort, store, Sw) (fase, , inPort, store, Sw) = y (out1, store) si fase == ocupado y Sw = true and inPort = in1 y (out2, store) si fase == ocupado y Sw = true and inPort = in2 y (out1, store) si fase == ocupado y Sw = false and inPort = in2 y (out2, store) si fase == ocupado y Sw = false and inPort = in1 ta(fase, , inPort, store, Sw) =
17

z DEVS atmico: Puertos


Xin1 1 0 1 0
ext int ext

Xin2

Fase InPort Store Sw

pasivo ocupado 0 5 in1 in2 0 1 false true


5 1 Yout1 0 1 Yout2 0

pasivo in2 1 true

ocupado ocupado 5 1 in1 in1 0 0 false false


5 4

pasivo in1 0 false

18

z Indice
y Introduccin. y DEVS atmico. y DEVS compuestos. y Ejemplo y DEVS Paralelo. y DEVS y Orientacin a Objetos. y Multi-Formalismo. y Bibliografa

19

zDEVS Compuestos
CDEVS = <X, Y, D, {Md|dD}, EIC, EOC, IC, Select>
y T = , y X={(p,v)|p InPorts, v Xp} y Y={(p,v)|p OutPorts, v Yp} yD
base temporal. conjunto de valores y puertos de entrada. conjunto de valores y puertos de salida. conjunto de los nombres de los componentes.

Requisitos de los componentes y Md es un DEVS o CDEVS |

Xd = {(p, v)| p InPortsd, v Xp} Yd = {(p, v)| p InPortsd, v Yp}

Requisitos de las conexiones y EIC {((N, ipN), (d, ipd)) | ipN InPorts, d D, ipd InPortsd} y EOC {((d, opd), (N, opN)) | opN OutPorts, d D, opd OutPortsd} y IC {((a, opa), (b, ipb)) | a, b D, a b, opa OutPortsa, ipb InPortsb} y Select: 2D-{} D. Una funcin para deshacer empates en caso de que dos o ms
componentes puedan aplicar int a la vez.
20

zDEVS Compuestos
y Los DEVS tienen la propiedad de ser un conjunto cerrado bajo
composicin. c CDEVS, s DEVS | el comportamiento de c y s es el mismo.

21

z DEVS Compuestos: Ejemplo


y Contador Binario con Puertos.
y DEVS = (X, S, Y, int, ext, , ta) y InPorts = {in}, Xin = {1, 0} y OutPorts = {out}, Yout = {1} y S = {pasivo, activo} x {0, 1}, S0 = (pasivo, 0) y ext(pasivo, count, e, (p, x)) =
(pasivo, count+x) (activo, 0)

if count+x < 2 en otro caso

y int (fase, count) = (pasivo, count) y (activo, count) = (out, 1) y ta (pasivo, count) = y ta (activo, count) = 0
22

zDEVS Compuestos: Ejemplo

out1 in C0 in out C1 in out out2

23

zDEVS Compuestos: Ejemplo


CDEVS = <X, Y, D, {Md|dD}, EIC, EOC, IC, Select>
y InPorts = {in} y Xin= {0, 1} y OutPorts = {out1, out2} y Yout1 = Yout2 = {0, 1} y D = {c0, c1}, Mc0 = c0, Mc1 = c1 y EIC = {((N, in), (c0, in))} y EOC = {((c0, out), (N, out1)), ((c1, out), (N, out2))} y IC = {((c0, out), (c1, in))} y Select(c0, c1) = c1

24

zDEVS Compuestos: Ejercicio


y
Modificar el ejercicio anterior para que el servidor tenga un puerto de entrada por el que reciba piezas, y un puerto de salida por el que emita las piezas procesadas. Modelar una cadena de montaje formada por dos de estos servidores, de tal manera que la salida de la cadena sean las piezas procesadas por el segundo servidor.

25

zDEVS Paralelos
PDEVS = <XM, YM, S, int, ext, con,, ta>
y T = , y XM={(p,v)|p InPorts, v Xp} y YM={(p,v)|p OutPorts, v Yp} yS y int : SS y con: Q x XMb S y ext : Q x XMb S y : y ta:
base temporal. conjunto de valores y puertos de entrada. conjunto de valores y puertos de salida. conjunto de estados funcin de transicin interna funcin de transicin confluente funcin de transicin externa, donde Q={(s,e)|sS, 0e ta(s)} es el conjunto de estados total e es el tiempo que ha pasado desde la ltima transicin. SYMb La funcin de salida. S+0, El conjunto de los nmeros reales positivos incluido 0 e .

26

zDEVS Paralelos
y Permite la activavin de todos los componentes inminentes. y Diferencias con DEVS clsico:
Entradas y Salidas pasan de ser elementos nicos a bolsas ( conjuntos en los que se admite la repeticin).

y y y

con: Decide el prximo estado en caso de colisin entre eventos internos y externos.

DEVS Paralelos compuestos: Como DEVS compuestos pero sin funcin Select.
27

z DEVS y Orientacin a Objetos


DEVS permite el modelado jerrquico, encapsulamiento de componentes (Puertos interfaces).

y y y

La implementacin ms natural de DEVS es mediante Orientacin a Objetos. Una herramienta de modelado con DEVS podra permitir la herencia estructural (puertos, conexiones) entre componentes.

28

z Indice
y Introduccin. y DEVS atmico. y DEVS compuestos. y DEVS y Orientacin a Objetos. yMulti-Formalismo: y De DEVS a StateCharts. y Bibliografa

29

z De DEVS a StateCharts (i)


Arrival Arrival
ARR IN

Queue Queue
NEXT

NEW

NEW

NEXT

Server Server

S = {arrival, idle} S0 = idle InPorts = {} OutPorts = {ARR} int(arrival) = idle int(idle) = arrival

S = N x {send, None} S0 = (0, None) InPorts = {IN, NEXT} OutPorts = {NEW} int((q, send)) = (q, None) ext((q,x), e), (IN,1)) = q == 0 ? (q+1, x) : (q+1, send) ext((q,x), e), (NEXT,1)) = q > 0 ? (q-1, send) : (0, None)

S = {busy, idle, next} x R S0 = (idle, 0) InPorts = {NEW} OutPorts = {NEXT} int((busy, T)) = (next, 0) int((next, 0)) = (idle, 0) int((idle, 0)) = (idle, 0) ext(((busy,X),e), (NEW,1) ) = (busy, X-e) ext(((idle,X),e), (NEW,1) ) = (busy, Tcomp) ta((busy, X)) = X, ta((idle, 0)) = , ta((next, 0)) = 0 ((next, X)) = (NEXT, 1) 30

ta(arrival) = 0 ta(idle) = rand(IAT) (idle) = (ARR, 1)

ta((q, send)) =0 ta((q, None)) = ((q, send)) = (NEW, 1)

z De DEVS a StateCharts (ii)


Arrival Arrival
ARR IN

Queue Queue
NEXT

NEW

NEW

NEXT

Server Server

Arrival Arrival Arrival tm(0)

S = N x {send, None} S0 = (0, None) InPorts = {IN, NEXT} OutPorts = {NEW} int((q, send)) = (q, None)

S = {busy, idle, next} x R S0 = (idle, 0) InPorts = {NEW} OutPorts = {NEXT} int((busy, T)) = (next, 0) int((next, 0)) = (idle, 0) int((idle, 0)) = (idle, 0) ext(((busy,X),e), (NEW,1) ) = (busy, X-e) ext(((idle,X),e), (NEW,1) ) = (busy, Tcomp) ta((busy, X)) = X, ta((idle, 0)) = , ta((next, 0)) = 0 ((next, X)) = (NEXT, 1) 31

tm(IAT)/ ARR_IN_1 Idle Idle

ext((q,x), e), (IN,1)) = q == 0 ? (q+1, x) : (q+1, send) ext((q,x), e), (NEXT,1)) = q > 0 ? (q-1, send) : (0, None) ta((q, send)) =0 ta((q, None)) = ((q, send)) = (NEW, 1)

z De DEVS a StateCharts (iii)


Arrival Arrival
ARR IN

Queue Queue
NEXT

NEW

NEW

NEXT

Server Server

Arrival Send Send Arrival Arrival tm(0) [q>0] / q--

Queue [q==1]
tm(0) / NEW_NEW_1

S = {busy, idle, next} x R S0 = (idle, 0) InPorts = {NEW} OutPorts = {NEXT} int((busy, T)) = (next, 0) int((next, 0)) = (idle, 0) int((idle, 0)) = (idle, 0)
ARR_IN_1 / q++

[else]

tm(IAT)/ ARR_IN_1 Idle Idle

NEXT_NEXT_1

None None

[else] /q=0

ext(((busy,X),e), (NEW,1) ) = (busy, X-e) ext(((idle,X),e), (NEW,1) ) = (busy, Tcomp) ta((busy, X)) = X, ta((idle, 0)) = , ta((next, 0)) = 0 ((next, X)) = (NEXT, 1) 32

z De DEVS a StateCharts (iv)


Arrival Arrival
ARR IN

Queue Queue
NEXT

NEW

NEW

NEXT

Server Server

Arrival Send Send Arrival Arrival tm(0) [q>0] / q--

Queue [q==1]
tm(0) / NEW_NEW_1

Tesp = 0 Idle Idle

Server

tm(0) / NEXT_NEXT_1

tm(IAT)/ ARR_IN_1 Idle Idle

NEW_NEW_1 / Tesp = Tcomp

Next Next

[else]

ARR_IN_1 / q++

NEXT_NEXT_1

None None

[else] /q=0

Busy Busy

tm(Tesp)

33

z De DEVS a StateCharts (v)


Arrival [q==1] Arrival Arrival tm(0) Send Send
tm(0) / NEW_NEW_1

Queue

Tesp = 0 Idle Idle

Server

tm(0) / NEXT_NEXT_1

tm(IAT)/ ARR_IN_1 Idle Idle

[q>0] / q-NEXT_NEXT_1

NEW_NEW_1 / Tesp = Tcomp T_in = TIME


ARR_IN_1 / q++

Next Next

None None

[else]

Busy Busy

tm(Tesp)

[else] /q=0

NEW_NEW_1 / Tesp -= TIME - T_in T_in = TIME

34

zDEVS vs. StateCharts


DEVS permite la comunicacin de componentes explcitamente, mediante puertos. La composicin es ms fcil de entender.

En Statecharts, la comunicacin entre componentes ortogonales es mediante eventos. La composicin es ms complicada de entender.

En ambos se pueden utilizar y modificar variables cuando suceden eventos.

y Ambos son jerrquicos.


35

z Bibliografa
Discrete Event and Continuous Complex Dynamic Systems. B. P. Zeigler, H. Praehofer, T. G. Kim. Academic Press, 2000.

y Theory of Modeling and Simulation 2nd Edition. Integrating

y Pginas del curso Modelling and Simulation 308-522 de H.


http://www.cs.mcgill.ca/~hv/classes/MS/lectures

Vangheluwe en la escuela de informtica, Universidad de McGill en Montreal, Canad:

36