El sistema de simulación de propósito general ( GPSS ) es un lenguaje de programación de propósito general de simulación de tiempo discreto , donde un reloj de simulación avanza en pasos discretos. Un sistema se modela cuando las transacciones ingresan al sistema y pasan de un servicio (representado por bloques) a otro. Se utiliza principalmente como un lenguaje de simulación orientado al flujo de procesos; [1] esto es particularmente adecuado para problemas como una fábrica .
Historia
El GPSS fue desarrollado por Geoffrey Gordon de IBM a principios de la década de 1960. Él lo nombró G de Ordon P rogrammable S imulation S istema. El nombre se cambió cuando IBM decidió lanzarlo como producto. [2]
La parte de "propósito general" del nuevo nombre era crear un estándar en las simulaciones de la línea de espera.
Los lanzamientos originales fueron para mainframes 7044 y 7090 de IBM. Posteriormente, hubo lanzamientos para IBM 360 , [3] Univac 1108 y CDC. [4] [5] [6]
Con el tiempo, se desarrollaron otras implementaciones, en otros lenguajes y dirigidas a sistemas de diferentes tamaños, incluido el VAX de DEC , una versión APL especializada para sistemas Univac de gran escala, [7] y Macintosh , entre otros. [8]
JGPSS
J GPSS (Java General Purpose Simulation System) es unaherramienta basada en Java que fue desarrollada para enseñar el lenguaje de simulación GPSS. [2] [9]
Descripción del idioma
GPSS se asemeja a una estructura de LEGO donde el modelador elige los bloques para funciones específicas para imitar un sistema en particular. [10]
El lenguaje no es programación procesal, orientada a objetos ni funcional. El mundo se simula con entidades que se mueven a través del modelo. [11] Estas entidades, denominadas transacciones , se prevén como pasar de bloque a bloque , donde un bloque es una línea de código y representa acciones de la unidad que afecta a la propia transacción u otras entidades.
Los bloques pueden estar orientados a las instalaciones (como máquinas en un taller de trabajo) u orientados a las transacciones (tales partes del trabajo en proceso, señales en componentes electrónicos o documentos en un procedimiento burocrático). GPSS realiza un seguimiento automático de las estadísticas que trae de forma fija al final de una simulación como informe estándar. GPSS es uno de los lenguajes candidatos más antiguos del primer enfoque orientado a objetos porque, si bien las transacciones son realmente instancias de objetos modelo, los bloques son métodos en el concepto moderno de POO.
Las entidades pueden clasificarse ampliamente en recursos, entidades computacionales y entidades estadísticas. [11] Los recursos, como las instalaciones y los almacenes, representan recursos de capacidad limitada. Se utilizan entidades computacionales, como Ampervariables (variables), Funciones y generadores aleatorios para representar el estado de las Transacciones o elementos de su entorno. Las entidades estadísticas, como Colas o Tablas (histogramas) recogen información estadística de interés.
Código de muestra
El siguiente ejemplo, tomado de Simulación usando GPSS , [12] es el "¡Hola mundo!" de GPSS e ilustrará los conceptos principales.
El objetivo es simular un día de funcionamiento de una peluquería. Los clientes llegan en un flujo constante aleatorio, entran a la tienda, hacen cola si el peluquero está ocupado, se cortan el pelo por orden de llegada y luego salen de la tienda. Deseamos conocer la línea de espera media y máxima, así como el número de clientes.
SIMULAR; Definir modelo * * Modelo segmento 1 * GENERAR 18,6; El cliente llega cada 18 ± 6 mn Sillas COLA; Entrar en la linea APROVECHA a Joe; Captura al barbero Sillas DEPART; Deja la linea AVANCE 16,4; Córtate el pelo en 16 ± 4 mn LIBERAR Joe; Libera al barbero TERMINAR ; Salir de la tienda * * Modelo segmento 2 * GENERAR 480; El temporizador llega a la hora = 480 mn TERMINE 1; Apaga la carrera * * Tarjetas de control * INICIO 1; Iniciar una carrera FINAL ; Modelo final
El "programa" está comprendido entre el SIMULATE
y END
declaraciones, y se divide en segmentos "modelo" y "tarjetas de control".
El primer segmento modela a los clientes. El GENERATE
bloque crea un flujo de transacciones y las programa para ingresar al modelo con un tiempo entre llegadas distribuido uniformemente en el rango de 18 ± 6. Es responsabilidad del programador interpretar estas transacciones como clientes y comprender que el tiempo debe contarse en minutos. Las Transacciones comienzan su existencia en el GENERATE
bloque y avanzan de Bloque en Bloque, de acuerdo con ciertas reglas, hasta llegar a una TERMINATE
que las elimina del modelo.
Normalmente, las transacciones progresan de un bloque al siguiente, por lo que las transacciones del cliente saldrán del GENERATE
bloque para ingresar al QUEUE Chairs
bloque. Este bloque simula una línea de espera y recopila estadísticas en consecuencia. En el ejemplo, materializa una línea de sillas y, al final de la simulación, conoceremos, entre otras cosas, el tamaño máximo de la cola (cuántas sillas se necesitan) y el tiempo medio de espera. El QUEUE
bloque requiere el nombre de la cola como parámetro, porque puede existir más de una cola en el modelo. Cada uno está asociado a un DEPART
bloque, que se activa cuando la transacción sale de la cola. GPSS recuerda qué transacciones están en la cola, de modo que es posible conocer el tiempo medio empleado y comprobar que ninguna transacción con errores está saliendo de una cola sin haber entrado previamente en ella.
Después del QUEUE chairs
bloqueo, la transacción intentará continuar con el SEIZE Joe
bloque, un bloque que simula la captura de la Instalación llamada Joe. Las instalaciones modelan servidores únicos de capacidad uno. Si la instalación está ocupada, SEIZE
le negará el derecho a ingresar a la transacción que está intentando. En el ejemplo, el cliente esperará en el QUEUE
bloque. Si es gratis, o tan pronto como esté disponible, la transacción podrá capturar la instalación, marcarla como ocupada para otras transacciones y comenzar a contar el tiempo de servicio y otras estadísticas, hasta que la misma transacción pase el RELEASE Joe
bloque correspondiente .
Los pares SEIZE
/ RELEASE
están vinculados por el nombre de la instalación, porque pueden existir muchas instalaciones independientes en el modelo. Pueden modelar operadores, como un barbero, un reparador, un agente, pero también piezas de equipo, como una grúa, una gasolinera, un documento de autorización, etc., de hecho cualquier cosa con capacidad uno. Para simular múltiples servidores paralelos, como un equipo de cinco barberos, o un horno con una capacidad de 10, GPSS usa entidades llamadas STORAGE
s.
Después de que un cliente se apodera de Joe, pasa a la siguiente declaración, que es ADVANCE 16,4
, cuya tarea es congelar la entidad durante un período de tiempo prescrito, aquí un número aleatorio elegido entre 16-4 = 12 y 16 + 4 = 20 millones. Otras distribuciones de tiempo de servicio están disponibles a través de GPSS FUNCTION
(una noción de alguna manera diferente a la función en otros lenguajes de programación). Durante ese tiempo, se permitirá que otras transacciones se muevan a través del modelo, bloqueando algunas otras instalaciones que pueden existir en el modelo, pero no Joe porque esta instalación está ocupada con el cliente congelado. Después del tiempo prescrito, el cliente se despertará, pasará a la siguiente declaración, que liberará a Joe y TERMINATE
.
Entonces, la siguiente transacción en el bloque anterior, es decir, un cliente sentado en una silla, podrá hacerlo SEIZE Joe
. Para seleccionar la transacción "siguiente", GPSS utiliza el orden de llegada, con prioridad. Se pueden programar otras políticas de selección mediante la manipulación directa de la entidad futura de la cadena de eventos .
Paralelamente a este primer segmento, simulando el comportamiento del cliente, un segundo segmento modelo simula el final del día. En el momento 480mn = 8h una entidad es GENERATE
d, que estará TERMINATE
en el siguiente bloque. Esta vez, TERMINATE
como parámetro de 1, lo que significa que un contador especial se reduce en 1. Cuando ese contador llega a 0, el programa se detiene y se imprime la salida. Este contador especial se configura con el START
estado de cuenta. En el ejemplo, se establece en uno, por lo que la simulación finalizará después de una ejecución de 480 mn en el tiempo simulado.
La salida contiene:
NÚMERO PROMEDIO DE LA INSTALACIÓN TOMA PROMEDIO PREVENCIÓN UTILIZACIÓN ENTRADAS TIEMPO / TRAN TRANS. NO. TRANS. NO. Joe .860 26 15.884 26COLA MÁXIMO PROMEDIO TOTAL CERO POR CIENTO PROMEDIO $ PROMEDIO ACTUAL DE LA TABLA CONTENIDO CONTENIDO ENTRADAS ENTRADAS TIEMPO CERO / TIEMPO TRANS / NÚMERO TRANS CONTENIDO Sillas 1 .160 27 12 44.4 2.851 5.133 1$ TIEMPO PROMEDIO / TRANS = TIEMPO PROMEDIO / TRANS EXCLUYENDO ENTIDADES CERO
Indica que Joe estuvo ocupado el 86.0% del tiempo, cortó el cabello a 26 clientes y que el corte de cabello tomó 15.88 minutos en promedio. Por cierto, Joe estaba cortando el cabello del cliente número 26 cuando se cerró la simulación. No se tomaron disposiciones de programación para que el peluquero terminara el corte de cabello antes de cerrar la tienda.
Indica también que se observó un máximo de 1 cliente esperando su turno, de hecho el número de clientes en espera fue en promedio 0.160. Un total de 27 clientes entraron en la cola, de modo que el cliente número 27 todavía estaba sentado, esperando su turno, cuando Joe cerró la tienda. De estos 27 clientes, 12 fueron atendidos sin tener que esperar. De hecho, la cola estuvo vacía el 44,4% del tiempo. El tiempo de espera promedio fue de 2.851 min, y el tiempo de espera promedio para los 15 = 27-12 clientes que realmente esperaron fue de 5.133 min.
Ver también
Referencias
- ^ Arne Thesen; J. William Schmidt (2014). Métodos informáticos en la investigación operativa . ISBN 978-1483260747.
GPSS es un lenguaje de simulación orientado al flujo de procesos
- ^ a b P. Fonseca Casas (2009). "jgpss, un marco gpss de código abierto para enseñar simulación" (PDF) .
Simplificar el desarrollo de una completa herramienta de simulación siguiendo la sintaxis GPSS. Este artículo presenta ... En el original, GPSS significaba Sistema de simulación programable de Gordon, en honor a Geoffrey Gordon, su creador.
- ^ (GPSS / 360, en MFT / MVT pero no en DOS)
- ^ DC Div (1968). "Nota tecnica". Transacciones IEEE sobre ciencia de sistemas y cibernética . 4 (4): 446–447. doi : 10.1109 / TSSC.1968.300174 .
IBM tiene GPSS III disponible para las series 7044 y 7090 y GPSS / 360 para los 360 más grandes ... GPSS II también ha estado disponible en UNIVAC 1108
- ^ "Introducción a GPSS" (PDF) .
sobre el lenguaje de modelado de simulación GPSS. ... resumido; fuentes que comparan GPSS y otros ... GPSS de la Corporación para hardware Univac 1108)
- ^ B. Liskov (1981). "Sesión GPSS" . Historia de los lenguajes de programación . ScienceDirect . págs. 403–437 . doi : 10.1016 / B978-0-12-745040-7.50013-2 . ISBN 9780127450407.
Antecedentes: El Sistema de simulación de propósito general (GPSS) es un ... los fabricantes que han producido versiones de GPSS son UNIVAC (Gorchow, 1968), CDC
- ^ Nabil R. Adam; Ali Dogramaci (2014). Problemas actuales en simulación por computadora . pag. 25. ISBN 978-1483258034.
Similar a GPSS ... en la versión APL de GPSS, aunque APL resulta ser un lenguaje interpretativo. ... Univac Corporation, GPSS 1100 para el sistema UNIVAC 1108.
- ^ Ståhl, Ingolf (1990). Introducción a la simulación con Gpss en el Pc, MacIntosh y Vax . ISBN 0-1348-323-10.
- ^ "Sistema de simulación de propósito general de Java" .
Aprenda la simulación construyendo un motor de simulación. JGPSS es una implementación del sistema GPSS basado en Java.
- ^ "GPSS 50 años, pero aún joven" . ResearchGate.net . 1 de agosto de 2018.
En 2011, GPSS, el sistema de simulación de propósito general, ... salón de clases, los estudiantes pueden estudiar un modelo de ferrocarril Lego muy simple.
- ^ a b Stanley Greenberg (1972). Manual de GPSS . Nueva York: Wiley-Interscience. ISBN 0471324906.
- ^ Schriber, Thomas (1974). Simulación mediante GPSS . Wiley. ISBN 9780471763109.
enlaces externos
- Versión GPSS / H del software Wolverine
- Minuteman Software , una empresa que ofrece algunas implementaciones
- aGPSS: PC y Mac: dirigido a la educación y los profesionales
- Sistema de simulación de propósito general JGPSS Java.
- GPSS360 GPSS360 en línea - Descendiente del GPSS original