Articulo de referencia

GPS

\nGENERATE 15,5\nSEIZE Barber\nADVANCE 10,2\nRELEASE Barber\nTERMINATE 1\n "},"paradigm":{"wt":""},"family":{"wt":""},"designer":{"wt":"[[Geoffrey Gordon (computer scientist)|Ge...

El Sistema de Simulación de Propósito General ( GPSS ) es un lenguaje de simulación utilizado para simulaciones de eventos discretos . Es especialmente útil en el modelado de sistemas de colas, ya que recopila automáticamente muchas estadísticas. [ 1 ] La simulación típica consiste en la generación de transacciones en el sistema (generalmente a intervalos regulares), la ejecución de un conjunto definido de reglas (como usar un recurso, esperar o transferir) y su posterior eliminación de la simulación.

Historia

GPSS fue desarrollado en la década de 1960 por Geoffrey Gordon , empleado de la División de Desarrollo de Sistemas Avanzados (ASDD) de IBM. Esta división participaba activamente en la investigación del diseño de sistemas de teleprocesamiento, buscando un equilibrio económico en el uso de recursos informáticos y líneas compartidas entre terminales de servidor. El sistema de simulación, entonces conocido como Gordon Simulator, se popularizó enormemente en el estudio de sistemas de teleprocesamiento dentro de ASDD. Posteriormente, fue corregido y documentado el 25 de octubre de 1960 en un memorando interno de IBM. [ 2 ] Entre el invierno y el verano de 1961, un grupo de tres programadores (entre ellos Gordon) reescribió el sistema de simulación con un nuevo algoritmo y nuevos tipos de bloques. Fue lanzado oficialmente como un programa con soporte de IBM el 27 de septiembre de 1961 con 25 tipos de bloques. En ese momento, Gordon dejó de trabajar en el sistema de simulación.

En 1963, se lanzó GPSS II con 32 tipos de bloques. Introdujo atributos numéricos del sistema, que permitían realizar un seguimiento del contenido actual de un almacenamiento , la longitud de una cola o la hora actual del reloj.

En 1965 se lanzó GPSS III. Estuvo disponible para los sistemas IBM 7090/94 y 7040/44 .

En 1967, se lanzó el GPSS/360 para funcionar en el recién lanzado Sistema 360 .

En 1970, se lanzó GPSS V con 49 tipos de bloques.

En la década de 1980 se lanzaron GPSS/VAC y GPSS/PC. Estos parecen ser los últimos lanzamientos oficiales con la etiqueta de IBM antes de que el lenguaje dejara de tener licencia. [ 1 ]

Posteriormente, se publicaron versiones para IBM 360 , [ 3 ] Univac 1108 y CDC. [ 4 ] [ 1 ] [ 5 ]

Con el tiempo, se desarrollaron otras implementaciones para sistemas como VAX de DEC , una versión especializada de APL para sistemas Univac a gran escala, [ 6 ] y Macintosh . [ 7 ]

En 2001, se lanzó el programa para Windows GPSS World [ 8 ] con nuevas características para GPSS. Incluye scripting con PLUS (un lenguaje similar a Pascal ), visualización gráfica del estado del sistema, gráficos y experimentos de optimización.

En 2009, se desarrolló una herramienta gráfica basada en Java llamada JGPSS (Java General Purpose Simulation System) para enseñar el lenguaje de simulación GPSS. [ 9 ] [ 10 ]

Descripción

Una simulación GPSS está escrita en un " lenguaje de diagramas de bloques " al estilo del lenguaje ensamblador , con muchos comandos diferentes de propósito único ("Bloques") para controlar el flujo de una transacción , la recopilación de estadísticas y las variables.

Las simulaciones tienen puntos de entrada de transaccionesGENERATE mediante comandos, como por ejemplo, cuando un cliente entra en una tienda. A continuación, se realizan acciones como reclamar instalaciones o almacenamiento (como un cajero), esperar, guardar estadísticas, etc. Finalmente, la transacción simulada sale de la simulación mediante un TERMINATEcomando. Cada comando se denomina "control".

Los bloques pueden estar orientados a instalaciones (como las máquinas en un taller ) o a transacciones (como las partes de un trabajo en curso, las señales en componentes electrónicos o los documentos en un procedimiento burocrático). El GPSS registra automáticamente las estadísticas para mostrarlas en un informe.

Las entidades se pueden clasificar en términos generales en recursos, entidades computacionales y entidades estadísticas. [ 11 ] Los recursos, como las instalaciones y los almacenes, representan recursos de capacidad limitada. Las entidades computacionales, como las variables ( Ampervariables ), las funciones y los generadores aleatorios, se utilizan para representar el estado de las transacciones o los elementos de su entorno. Las entidades estadísticas, como las colas o las tablas (histogramas), recopilan información estadística de interés.

Comandos básicos de transacción

Las transacciones pueden:

  • Ingresar automáticamente a la simulación (GENERAR)
  • Utilice una instalación o almacén (SEIZE/ENTER respectivamente)
  • Deje de utilizar una instalación o almacén (LIBERAR/DESPEJAR respectivamente).
  • Espere (AVANCE)
  • Transferencia a otra sección de código (TRANSFERENCIA)
  • Salir de la simulación (TERMINAR)

Además de estas tareas principales, también pueden contener parámetros con el comando ASSIGN. Las transacciones se dividen implícitamente en secciones en el código.

En el código pueden ejecutarse varias transacciones simultáneamente. Una transacción comienza con GENERATE y termina con TERMINATE. El código intermedio podría compartirse entre varias transacciones mediante el comando TRANSFER, pero, aparte de eso, los ciclos de vida de las transacciones estarán separados. Es recomendable añadir espacios en blanco entre las líneas de acción de una transacción y las de otra.

GENERAR

GENERAR 0.1

Transacción generada cada 0,1 unidades de tiempo.

GENERAR 15,4

La transacción se genera cada 15 unidades de tiempo, con una variación de más o menos 4 unidades de tiempo.

GENERAR

AVANCE

Para que una transacción espere, utilice el comando ADVANCE. Tiene argumentos similares a los de GENERATE.

AVANCE 10,6

La transacción tarda 10 ± 6 segundos.

AVANCE

INCAUTACIÓN, LIBERACIÓN (Instalaciones)

Para usar una instalación , que solo permite un uso a la vez, utilice el comando SEIZE. Para dejar de usarla, utilice el comando RELEASE.

 GENERAR 30,5; Generar un cliente cada 30 ± 5 unidades de tiempo SEIZE Barbero; Utilizar una instalación AVANCE 15,4; Espera 15±4 unidades de tiempo LIBERAR Barbero; Deje de usar las instalaciones TERMINAR 1; Salir de la barbería

Si desea usarlo más de una vez, utilice Almacenamiento .

APROVECHAR

LIBERAR

ENTRAR, SALIR (Almacenes)

Capacidad de asientos: 100 personas; se permite la entrada de 100 personas a la zona de estar. GENERAR 10,5; Generar una persona cada 10±5 unidades de tiempo INTRODUCIR Asientos,1 ; La persona se sienta AVANCE 15,4; Espera 15±4 unidades de tiempo SALIR Barbero,1; La persona deja de estar sentada TERMINAR 1; Salir de la zona de asientos

De esta forma, varias personas pueden sentarse en la zona de asientos al mismo tiempo. Si se tratara de una instalación (que utilizara SEIZE/RELEASE), bloquearía a otros usuarios que intentaran utilizar el recurso.

El comando ENTER toma la referencia de almacenamiento como argumento A y la cantidad a reservar como argumento B. Los argumentos del comando LEAVE son los mismos.

INGRESAR

DEJAR

TERMINAR

Para eliminar la transacción, utilice TERMINATE.

El argumento opcional decrementa el contador de finalización , que es una variable que elige el usuario al ejecutar la simulación. Digamos que quisiera probar 100 clientes: comenzaría la ejecución de su simulación con START 100. TERMINATE 1al final de cada transacción decrementaría el valor inicial 100 en 1 (99, 98, 97 ...) hasta que llegara a cero. En este punto, la simulación se detiene y se devuelven los resultados. Si omite el argumento en TERMINATE, se asumirá que es 0. Esto significa que su simulación se ejecutará indefinidamente (a menos que, por supuesto, tenga otro TERMINATE que sí decremente este contador.

TERMINAR

Minutero

Para que tu programa se ejecute durante un tiempo predeterminado, asegúrate de que ninguna de tus instrucciones TERMINATES decremente el contador e incluye una sección como esta:

GENERAR; Generar una transacción AVANCE 100; Ejecutar durante 100 unidades de tiempo. TERMINAR 1; Fin

Luego, ejecute su programa con INICIO 1. Se ejecutará durante 100 unidades de tiempo.

ASIGNAR (Parámetro "Metadatos")

Utilice el bloque de control ASIGNAR para asignar un valor a un parámetro de transacción. Se llama con Pj (j = número de parámetro).

 ASIGNAR 2,V$Orderqty ;Parámetro 2=Cantidad del pedido   Custwait ADVANCE 5 ; El plazo de entrega es de 5 días.          INTRODUCIR Stock,P2 ;El stock aumenta en P2     

ASIGNAR  : Los bloques ASIGNAR se utilizan para colocar o modificar un valor en un parámetro de transacción.

Ejemplos

Peluquería

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 barbería. Los clientes llegan de forma aleatoria y constante, entran al local, hacen cola si el barbero está ocupado, se cortan el pelo por orden de llegada y, finalmente, se marchan. Queremos conocer la cola de espera media y máxima, así como el número de clientes.

SIMULAR; Definir modelo * * Segmento del modelo 1 * GENERAR 18,6; Los clientes llegan cada 18±6 minutos. Sillas de la COLA; Únase a la fila ATRAPA A Joe; Captura al barbero Sillas DEPARTA; Abandonar la fila AVANCE 16,4; Córtate el pelo en 16 ± 4 minutos LIBEREN a Joe; Liberen al barbero TERMINAR; Salir de la tienda * * Segmento del modelo 2 * GENERAR 480; El temporizador llega en el tiempo = 480 min TERMINAR 1; Apagar la ejecución * * Tarjetas de control * INICIO 1; Iniciar una carrera FIN; Fin del modelo

El "programa" está comprendido entre las SIMULATEinstrucciones ENDy se divide en "segmentos del modelo" y "tarjetas de control".

El primer segmento modela a los clientes. El GENERATEbloque crea un flujo de transacciones y las programa para ingresar al modelo con un intervalo entre llegadas uniformemente distribuido en el rango de 18 ± 6. Es responsabilidad del programador interpretar estas transacciones como clientes y comprender que el tiempo se mide en minutos. Las transacciones comienzan su existencia en el GENERATEbloque y progresan de bloque en bloque, según ciertas reglas, hasta que llegan a un punto TERMINATEque las elimina del modelo.

Normalmente, las transacciones progresan de un bloque al siguiente, por lo que las transacciones de los clientes saldrán de un GENERATEbloque para entrar en QUEUE Chairsotro. Este bloque simula una cola de espera y recopila estadísticas al respecto. En el ejemplo, se materializa una fila de sillas y, al final de la simulación, se conocerá, entre otras cosas, el tamaño máximo de la cola (cuántas sillas se necesitan) y el tiempo medio de espera. El QUEUEbloque requiere el nombre de la cola como parámetro, ya que puede haber más de una cola en el modelo. Cada una está asociada a un DEPARTbloque, que se activa cuando la transacción sale de la cola. GPSS recuerda qué transacciones están en la cola, lo que permite conocer el tiempo medio de espera y comprobar que ninguna transacción errónea salga de la cola sin haber entrado previamente en ella.

Tras el QUEUE chairsbloqueo, la transacción intentará acceder al SEIZE Joesiguiente bloque, que simula la captura de la Instalación denominada Joe. Las Instalaciones modelan servidores individuales con capacidad para un solo servidor. Si la Instalación está ocupada, se SEIZEdenegará el acceso a la transacción. En el ejemplo, el cliente esperará en el QUEUEbloque. Si este se libera, o en cuanto esté disponible, se permitirá a la transacción capturar la Instalación, marcarla como ocupada para otras transacciones y comenzar a contabilizar el tiempo de servicio y otras estadísticas, hasta que la misma transacción alcance el RELEASE Joebloque correspondiente.

Los pares SEIZE/ RELEASEestá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 capacidad para 10, GPSS utiliza otra entidad llamada STORAGE.

Después de que un cliente toma a Joe, se procede a la siguiente instrucción que es ADVANCE 16,4, cuya tarea es congelar la entidad durante un período de tiempo prescrito. Aquí, se elige un número aleatorio entre 16-4=12 y 16+4=20 min. Otras distribuciones de tiempo de servicio están disponibles a través de GPSS FUNCTION. Durante ese tiempo, se permitirá que otras transacciones se muevan a través del modelo, bloqueando algunas otras instalaciones que puedan existir en el modelo, pero no a Joe porque esta instalación está ocupada con el cliente congelado. Después del tiempo prescrito, el cliente despertará, procederá a la siguiente instrucción, que liberará a Joe y TERMINATE.

La siguiente transacción en el bloque anterior, que corresponde a un cliente sentado en una silla, podrá seleccionarse SEIZE Joe. Para seleccionar la siguiente transacción, GPSS utiliza el criterio de primero en llegar, primero en ser atendido, con prioridad. Se pueden programar otras políticas de selección mediante la manipulación directa de la entidad de la cadena de eventos futuros .

Paralelamente a este primer segmento, que simula el comportamiento del cliente, un segundo segmento del modelo simula el final del día. A los 480 min (8 h) se encuentra una entidad GENERATE, que se procesará TERMINATEen el siguiente bloque. En este caso, el TERMINATEparámetro es 1, lo que significa que un contador especial se decrementa en 1. Cuando dicho contador llega a 0, el programa se detiene y se imprime la salida. Este contador especial se configura con la STARTinstrucción. En el ejemplo, se establece en uno, por lo que la simulación finalizará tras una ejecución de 480 min en el tiempo simulado.

La salida contiene:

NÚMERO PROMEDIO DE INSTALACIONES PROMEDIO DE APROPIACIÓN PREVENTIVA ENTRADAS DE UTILIZACIÓN HORA/TRANS. NÚM. DE TRANS. Joe .860 26 15.884 26 COLA MÁXIMO PROMEDIO TOTAL CERO POR CIENTO PROMEDIO $PROMEDIO TABLA ACTUAL CONTENIDO CONTENIDO ENTRADAS ENTRADAS CEROS TIEMPO/TRANS TIEMPO/TRANS NÚMERO CONTENIDO Sillas 1 .160 27 12 44.4 2.851 5.133 1 TIEMPO PROMEDIO/TRANSACCIÓN = TIEMPO PROMEDIO/TRANSACCIÓN EXCLUYENDO ENTIDADES CERO

Indica que Joe estuvo ocupado el 86,0% del tiempo, atendió a 26 clientes y cada corte duró un promedio de 15,88 minutos. Casualmente, Joe estaba atendiendo al cliente número 26 cuando se cerró la simulación. No se incluyeron en la programación instrucciones para que el barbero terminara el corte antes de cerrar la barbería.

También indica que se observó un máximo de 1 cliente esperando su turno; de hecho, el número promedio de clientes en espera fue de 0,160. Un total de 27 clientes entraron en la cola, por lo que el cliente número 27 seguía 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 minutos, y el tiempo de espera promedio para los 15 = 27 - 12 clientes que sí esperaron fue de 5,133 minutos.

cortes de pelo

* Pág. 108 Pregunta 18 * Una peluquería unisex con una sola silla tiene una afluencia de clientes a razón de uno cada 20 ± 15 minutos. * La mitad de los clientes que llegan quieren un corte en seco, el 30% quiere un estilo y el 20% * solo quiero un recorte. Un corte en seco tarda 15±5 minutos, un corte con estilo tarda 25±10 minutos, * y un corte lleva 10±3 minutos. Simule 50 clientes pasando por el cabello. * tienda. Compare la proporción dada de solicitudes de servicio de cada tipo con la * Resultado simulado. ¿Son razonables los resultados? Base su respuesta en la distribución binomial. * distribución. Llegadas FUNCIÓN RN1,D4; 1=corte en seco, 2=peinado, 3=recorte 0,0,0/0,5,1/0,8,2/1,0,3 GENERAR 20,15 ; Generar llegadas ASIGNAR 1,FN$Arrivals ; Asignar tipo de llegada a P1 Prueba1 PRUEBA E P1,1,Prueba2 ; Si P1=1, transferir a DryCut. De lo contrario, Prueba2 TRANSFERENCIA, Corte en seco Prueba2 PRUEBA E P1,2,RecortarCabello; Si P1=2, transferir a EstilizarCorte. De lo contrario, recortar. TRANSFERENCIA, StyCut Silla DryCut SEIZE AVANCE 15,5 VALOR AHORRADO WantedDryCut+,1 TRANSFERENCIA, Plazo Silla StyCut ​​SEIZE AVANCE 25,10 GUARDARVALOR EstiloCorteDeseado+,1 TRANSFERENCIA, Plazo Silla TrimHair SEIZE AVANCE 10,3 AHORRARVALOR DeseadoRecortarCabello+,1 Presidente del programa RELEASE TERMINAR 1

Autopista

* Pág. 108 Pregunta 14 * Una autopista conecta una gran área metropolitana con otra. Un vehículo sale * la primera ciudad cada 20±15 segundos. El veinte por ciento de los vehículos tienen 1 pase- * enger, el 30% de los vehículos tienen 2 pasajeros, el 10% tienen 3 pasajeros y el 10% * tienen 4 pasajeros. El 30% restante de los vehículos son autobuses que transportan 40 * personas. Un vehículo tarda 60±10 minutos en viajar entre las dos áreas metropolitanas. * áreas politizadas. ¿Cuánto tiempo tardan 5000 personas en llegar a la segunda ciudad? Función de pasajero RN1,D6 0,0,0/0,2,1/0,5,2/0,6,3/0,7,4/1,0,40 GENERAR 20,15; Nuevo vehículo ingresa a la autopista (segundos) ASIGNAR 1,FN$Pasajero; Asignar el número de pasajeros a P1 AVANCE (60#60),(10#60) ; Viaje (minutos a segundos) TERMINAR P1; Disminuir el conteo en número de pasajeros * El tiempo de finalización está en segundos. Debe dividirse entre 60. * RESULTADO: 10958 segundos => 182.645 minutos = 3 h 2 min

prefijos de datos

Fuente: [ 13 ]

Actas

Cadenas

Bloques

Atributos del sistema

Cantidades

Atributos del equipo

Almacenamientos

Instalaciones

Grupos

Atributos estadísticos

Colas

Tablas

valores de guardado

Atributos computacionales

Rango de los atributos numéricos estándar

Operadores condicionales

Esto se utiliza en el comando TEST .

Véase también

Referencias

  1. 1 2 3 Schriber, Thomas J (1984). Introducción a GPSS . Actas de la 16.ª conferencia sobre simulación invernal (WSC '84). IEEE Press. págs. 12–15 . ISBN  978-0-911801-04-0.
  2. Gordon, Geoffrey (1978). «El desarrollo del Sistema de Simulación de Propósito General (GPSS)». Historia de los lenguajes de programación . págs. 403–426 . doi : 10.1145/800025.1198386 . ISBN  0-12-745040-8En el desarrollo de GPSS no hubo un esfuerzo consciente por basar el diseño en computadoras analógicas, pero estoy seguro de que la notación de diagramas de bloques y el énfasis en hacer que la simulación sea directamente accesible para los analistas de sistemas en lugar de a través de programadores, características de GPSS, fueron influenciadas inconscientemente por la experiencia con las computadoras analógicas.
  3. (GPSS/360, en MFT/MVT pero no en DOS)
  4. DC Div (1968). "Nota técnica". IEEE Transactions on Systems Science and Cybernetics . 4 (4): 446– 447. doi : 10.1109/TSSC.1968.300174 . IBM tiene disponible GPSS III para las series 7044 y 7090 y GPSS/360 para la serie 360 ​​más grande... GPSS II también ha estado disponible en el UNIVAC 1108.
  5. Liskov, Barbara; Gordon, Geoffrey (1981). "GPSS Session". History of Programming Languages . pp. 403–437 . doi : 10.1016/B978-0-12-745040-7.50013-2 . ISBN  978-0-12-745040-7.
  6. Nabil R. Adam; Ali Dogramaci (2014). Temas actuales en simulación por computadora . Academic Press. pág. 25. ISBN  978-1483258034. Similar a GPSS ... en la versión APL de GPSS, aunque APL es un lenguaje interpretativo. ... Univac Corporation, GPSS 1100 para el sistema UNIVAC 1108.
  7. Ståhl, Ingolf (1990). Introducción a la simulación con GPS en PC, Macintosh y VAX . Prentice Hall. ISBN 0-1348-323-10.
  8. "Manual de referencia mundial del GPSS" . athena.ecs.csus.edu . Consultado el 11 de diciembre de 2023 .
  9. P. Fonseca Casas (2009). "jgpss, un marco gpss de código abierto para enseñar simulación" (PDF) . simplificar el desarrollo de una herramienta de simulación completa siguiendo la sintaxis GPSS. Este documento presenta... En el original, GPSS significaba Gordon's Programmable Simulation System, en honor a Geoffrey Gordon, su creador.
  10. "Sistema de simulación de propósito general en Java" . Aprende a crear un motor de simulación. JGPSS es una implementación del sistema GPSS basada en Java.
  11. Stanley Greenberg (1972). GPSS Primer . Nueva York: Wiley-Interscience. ISBN 0471324906.
  12. Schriber, Thomas (1974). Simulación con GPSS . Wiley. ISBN 978-0-471-76310-9.
  13. Sistema de simulación de propósito general/360: Manual del usuario (PDF) , 1967 , consultado el 10 de diciembre de 2023
  • Software Wolverine versión GPSS/H
  • Minuteman Software Archivado el 07/05/2017 en Wayback Machine , una empresa que proporciona algunas implementaciones
  • aGPSS: PC y Mac: Dirigido a la educación y a los profesionales.
  • JGPSS Sistema de simulación de propósito general en Java.
  • GPSS360 Online GPSS360 - Descendiente del GPSS original