420 likes | 509 Views
Animación de un Sistema de Puertas (código en GLIDER). NETWORK L (I):: IT:=1; Tipo:=((NUMBER-1) mod 4) + 1; SENDTO(P[Tipo]); P (G) [1..4]:: STATE BEGIN IT:=5; ABIERTA:=NOT ABIERTA END; IF ABIERTA THEN SENDTO(S) ELSE STOPSCAN;
E N D
Animación de un Sistema de Puertas(código en GLIDER) NETWORK L (I):: IT:=1; Tipo:=((NUMBER-1) mod 4) + 1; SENDTO(P[Tipo]); P (G) [1..4]:: STATE BEGIN IT:=5; ABIERTA:=NOT ABIERTA END; IF ABIERTA THEN SENDTO(S) ELSE STOPSCAN; S (E):: WRITELN(NUMBER:2,' ',Tipo:1,' ',' ',GT:2:0,' ',TIME:2:0); INIT ACT(L,0); TSIM:=21; ABIERTA:=FALSE; FOR I:=1 TO 4 DO ACT(P[I],5); DECL VAR ABIERTA:BOOLEAN; I: INTEGER; MESSAGES L(Tipo:INTEGER); END.
P1 L P4 P3 P2 0 5 5 5 5 Lista de Eventos Pendientes Tiempo: 0 Abierta: False P1 S L P2 P3 ACT(L,0); ABIERTA:=FALSE; P4 FOR I:=1 TO 4 DO ACT(P[I],5); Simulación lista para arrancar
L P4 P3 P2 P1 5 5 5 0 5 Lista de Eventos Pendientes Tiempo: 0 Abierta: False P1 S L P2 P3 P4 Se procesa el primer evento y se activa L
L P4 P3 P2 P1 5 5 5 5 1 Lista de Eventos Pendientes Tiempo: 0 Abierta: False 1 P1 S L P2 P3 P4 Se genera la próxima llegada y el cliente [1]
P4 P3 P2 L P1 5 5 5 5 1 Lista de Eventos Pendientes Tiempo: 1 Abierta: False 1 P1 S L P2 P3 P4 Se procesa el segundo evento y se activa L
L P4 P3 P2 P1 5 5 5 5 2 Lista de Eventos Pendientes Tiempo: 1 Abierta: False 1 P1 S 2 L P2 P3 P4 Se genera la próxima llegada y el cliente [2]
P4 P3 P2 L P1 5 5 5 5 2 Lista de Eventos Pendientes Tiempo: 2 Abierta: False 1 P1 S 2 L P2 P3 P4 Se procesa el próximo evento y se activa L
P2 L P4 P3 P1 3 5 5 5 5 Lista de Eventos Pendientes Tiempo: 2 Abierta: False 1 P1 S 2 L P2 3 P3 P4 Se genera la próxima llegada y el cliente [3]
P2 P4 P3 L P1 5 5 5 5 3 Lista de Eventos Pendientes Tiempo: 3 Abierta: False 1 P1 S 2 L P2 3 P3 P4 Se procesa el próximo evento y se activa L
P2 L P4 P3 P1 4 5 5 5 5 Lista de Eventos Pendientes Tiempo: 3 Abierta: False 1 P1 S 2 L P2 3 P3 4 P4 Se genera la próxima llegada y el cliente [4]
P2 P4 P3 L P1 5 5 5 5 4 Lista de Eventos Pendientes Tiempo: 4 Abierta: False 1 P1 S 2 L P2 3 P3 4 P4 Se procesa el próximo evento y se activa L
L P4 P3 P2 P1 5 5 5 5 5 Lista de Eventos Pendientes Tiempo: 4 Abierta: False 1 P1 5 S 2 L P2 3 P3 4 P4 Se genera la próxima llegada y el cliente [5]
L P4 P3 P2 P1 5 5 5 5 5 Lista de Eventos Pendientes Tiempo: 4 Abierta: False 5 1 P1 S 2 L P2 3 P3 4 P4 Se procesa el próximo evento (P1)
L P4 P3 P1 P2 5 10 5 5 5 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True 1 P1 5 S 2 L P2 3 P3 STATE BEGIN IT:=5; ABIERTA:=NOT ABIERTA END; 4 P4 Se activa P1 (por evento), se genera próximo evento y se cambia el valor de Abierta
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True 1 P1 5 S 2 L P2 3 P3 4 P4 P1 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 5 S 2 L P2 1 3 P3 4 P4 P1 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 5 S 2 L P2 1 3 P3 4 P4 P1 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S 2 L P2 5 1 3 P3 4 P4 P1 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S 2 L P2 5 1 3 P3 4 P4 Se activa P2 (por revisión)
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S 2 L P2 5 1 3 P3 4 P4 P2 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 2 5 1 3 P3 4 P4 P2 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 2 5 1 3 P3 4 P4 Se activa P3 (por revisión)
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 2 5 1 3 P3 4 P4 P3 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 3 2 5 1 P3 4 P4 P3 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 3 2 5 1 P3 4 P4 Se activa P4 (por revisión)
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 3 2 5 1 P3 4 P4 P4 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 4 3 2 5 1 P3 P4 P4 deja pasar los clientes
P1 L P4 P3 P2 5 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 4 3 2 5 1 P3 P4 Se activa S (por revisión)
P1 L P4 P3 P2 5 10 5 5 5 Lista de Eventos Pendientes Tiempo: 5 Abierta: True Abierta: False P1 S L P2 4 3 2 5 1 P3 N T G T 1 1 0 5 5 1 4 5 2 2 1 5 P4 3 3 2 5 4 4 3 5 S elimina los clientes
L P4 P3 P1 P2 10 5 5 5 5 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 P3 P4 Se procesa el próximo evento. Se activa P2 por evento.
P2 P1 L P4 P3 5 5 5 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: False P1 S L P2 P3 P4 Abierta cambio y se genera el próximo evento
L P4 P3 P1 P2 10 5 5 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 P3 P4 Se procesa el próximo evento. Se activa P3 por evento.
P2 P1 L P4 P3 5 5 10 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: True P1 S L P2 P3 P4 Abierta cambio y se genera el próximo evento
P2 P1 L P4 P3 5 5 10 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: True Abierta: False P1 S L P2 P3 P4 Se procesa el próximo evento. Se activa P4 por evento.
P2 P1 L P4 P3 5 10 10 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False Abierta: False P1 S L P2 P3 P4 Abierta cambio y se genera el próximo evento
L P4 P3 P2 P1 10 10 10 5 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False P1 S L P2 P3 P4 Se procesa el próximo evento
P4 P3 P2 P1 10 10 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False P1 S L P2 P3 P4 Se activa L
P4 P3 P2 L P1 10 10 10 10 6 Lista de Eventos Pendientes Tiempo: 5 Abierta: False P1 S L P2 6 P3 P4 Se genera la próxima llegada y el cliente [6]
L P4 P1 P2 P3 6 10 10 10 10 Lista de Eventos Pendientes Tiempo: 5 Abierta: False P1 S L P2 6 P3 P4 Se procesa el próximo evento y se activa L
L P4 P3 P2 P1 10 10 10 10 7 Lista de Eventos Pendientes Tiempo: 6 Abierta: False P1 S L P2 6 7 P3 P4 Se genera la próxima llegada y el cliente [7]
Observaciones • La 4 puertas están controladas por la misma variable ABIERTA. • Al activarse por evento P1 en el tiempo 5, ABIERTA toma el valor TRUE y se dejan pasar todos los clientes retenidos en P1. • Luego por revisión, pasan también los retenidos en P2, P3 y P4.
Observaciones • Las activaciones por evento posteriores de P2, P3 y P4 no causan movimientos de mensajes (no quedaron clientes) y lo único que hacen es alternar el valor de ABIERTA a FALSE, TRUE y finalmente FALSE. • El efecto es que se abrieron las puertas, se dejaron pasar los clientes y se cerraron (se abrieron y cerraron instantáneamente)