stringtranslate.com

Sistema de posicionamiento global (GPS)

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, con muchas estadísticas que se recopilan automáticamente. [1] La simulación típica consiste en la generación de transacciones en el sistema (generalmente en un intervalo determinado), la ejecución de un conjunto definido de reglas (como usar un recurso, esperar, transferir) y su eliminación de la simulación.

Historia

GPSS fue desarrollado en la década de 1960 por Geoffrey Gordon , un empleado de la División de Desarrollo de Sistemas Avanzados (ASDD) de IBM. Esta división estaba muy involucrada en la investigación del diseño de sistemas de teleprocesamiento, tratando de lograr un equilibrio económico del uso de los recursos informáticos y las líneas compartidas entre terminales de servidor. El sistema de simulación, entonces conocido como Simulador Gordon, se volvió muy popular en el estudio de los 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 (incluido Gordon) reescribieron 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 este punto, Gordon dejó de trabajar en el sistema de simulación.

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

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

En 1967, se lanzó GPSS/360 para ejecutarse 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. Parece que fueron las últimas versiones oficiales de IBM antes de que el lenguaje perdiera su licencia. [3]

Posteriormente, hubo lanzamientos para IBM 360 , [4] Univac 1108 y CDC. [5] [6] [7]

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

En 2001, se lanzó el programa GPSS World [10] para Windows con nuevas características para GPSS. Incluye scripts con PLUS (un lenguaje similar a Pascal ), visualizaciones gráficas 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. [11] [12]

Descripción

Una simulación GPSS está escrita en un "lenguaje de diagrama de bloques" de estilo 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 a través del comando, como un cliente que ingresa a una tienda. Luego, se realizan acciones mediante la solicitud de instalaciones / almacenamiento (como un cajero), la espera, el almacenamiento de estadísticas, etc. Finalmente, la transacción simulada sale de la simulación a través del TERMINATEcomando. Cada verbo de comando se denomina "control".

Los bloques pueden estar orientados a instalaciones (como máquinas en un taller) o a transacciones (como partes de un 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 para mostrarlas en un informe.

Las entidades se pueden clasificar en términos generales en recursos, entidades computacionales y entidades estadísticas. [13] Los recursos, como las instalaciones y los almacenamientos, representan recursos de capacidad limitada. Las entidades computacionales, como las variables de amperaje (Ampervariables), las funciones y los generadores aleatorios se utilizan para representar el estado de las transacciones o 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 transacciones

Las transacciones pueden:

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

Puede haber varias transacciones en el código que se realizan a la vez. Una transacción comienza con GENERATE y termina con TERMINATE. El código intermedio podría potencialmente compartirse entre varias transacciones mediante el comando TRANSFER, pero además de eso, los ciclos de vida de las transacciones estarán separados. Ayuda agregar espacios en blanco entre las líneas de acción de una transacción y otra.

GENERAR

GENERAR 0.1

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

GENERAR 15,4

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

GENERAR

AVANCE

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

AVANCE 10,6

La transacción espera 10+-6 segundos.

AVANCE

APRETAR, LIBERAR (Instalaciones)

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

 GENERAR 30,5 ; Generar un cliente cada 30+-5 unidades de tiempo SEIZE Barber; Utilizar una instalación AVANCE 15,4 ; Esperar 15+-4 unidades de tiempo LIBERACIÓN Barbería; Deje de utilizar las instalaciones TERMINAR 1 ; Salir de la peluquería

Si desea más de un uso a la vez, utilice Almacenamiento .

APROVECHAR

LIBERAR

ENTRAR, SALIR (Almacenes)

Asientos ALMACENAMIENTO 100; se permiten 100 personas en los asientos del salón GENERAR 10,5 ; Generar una persona cada 10+-5 unidades de tiempo ENTRAR Asientos,1 ; Persona sentada AVANCE 15,4 ; Esperar 15+-4 unidades de tiempo DEJAR Barbero,1 ; La persona deja de sentarse TERMINAR 1 ; Salir de la zona de asientos

De esta manera, varias personas pueden sentarse en el Asiento a la vez. Si se tratara de una Instalación (usando SEIZE/RELEASE), bloquearía a otros que intentaran usar el recurso.

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

INGRESAR

DEJAR

TERMINAR

Para eliminar la transacción, utilice TERMINAR.

El argumento opcional decrementa el contador de finalización , que es una variable que es elegida por el usuario al ejecutar la simulación. Digamos que desea 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á para siempre (a menos que, por supuesto, tenga otro TERMINATE que decremente este contador).

TERMINAR

Minutero

Para que su programa se ejecute durante un tiempo predeterminado, asegúrese de que ninguno de sus TERMINATES disminuya el contador e incluya una sección como esta:

GENERAR ; Generar una transacciónAVANCE 100; Corre durante 100 unidades de tiempoTERMINAR 1 ; Fin

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

ASIGNAR (Parámetro "Metadatos")

Utilice el bloque de control ASSIGN 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 pedidoCustwait ADVANCE 5; el plazo de entrega es de 5 días ENTER 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 , [14] 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 y aleatorio, entran en la peluquería, hacen cola si la peluquería está ocupada, se cortan el pelo por orden de llegada y, a continuación, abandonan la peluquería. Queremos saber la cola de espera media y máxima, así como el número de clientes.

 SIMULAR; Definir modelo * * Segmento modelo 1 * GENERAR 18,6 ; El cliente llega cada 18±6 mn Sillas de la COLA; Entrar en la fila ATRAPAR A Joe; Capturar al barbero DEPART Sillas; Salir de la fila AVANCE 16,4 ; Córtate el pelo en 16±4 min LIBERACIÓN Joe; Libera al barbero TERMINAR; Salir de la tienda * * Segmento modelo 2 * GENERAR 480; El temporizador llega a la hora = 480 mn TERMINAR 1 ; Apagar la ejecución * * Tarjetas de control * INICIO 1 ; Iniciar una carrera FIN; Fin del modelo

El "programa" está comprendido entre las instrucciones SIMULATEy END, y se divide en "segmentos de modelo" y "tarjetas de control".

El primer segmento modela a los clientes. El GENERATEbloque crea un flujo de Transacciones y las programa para que ingresen al modelo con un tiempo entre llegadas distribuido uniformemente en el rango 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 GENERATEbloque y progresan de Bloque en Bloque, de acuerdo con ciertas reglas, hasta que alcanzan un Bloque TERMINATEque las elimina del modelo.

Normalmente las transacciones pasan de un bloque al siguiente, por lo que las transacciones de los clientes saldrán del GENERATEbloque para entrar en el QUEUE Chairsbloque. Este bloque simula una cola de espera, y recoge estadísticas en función de ello. En el ejemplo, se materializa una fila de sillas y, al final de la simulación, sabremos, 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, porque pueden existir más de una cola en el modelo. Cada una de ellas está asociada a un DEPARTbloque, que se dispara cuando la transacción sale de la cola. GPSS recuerda qué transacciones hay en la cola, de modo que es posible saber el tiempo medio empleado, y comprobar que ninguna transacción con errores está saliendo de una cola sin entrar previamente en ella.

Después del QUEUE chairsbloque, la transacción intentará proceder al SEIZE Joebloque, un bloque que simula la captura de la Instalación llamada Joe. Las Instalaciones modelan servidores individuales de capacidad uno. Si la instalación está ocupada, SEIZEnegará a la transacción que intenta entrar el derecho a entrar. En el ejemplo, el cliente esperará en el QUEUEbloque. Si está libre, o tan pronto como esté disponible, se le permitirá a la transacción 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 Joebloque correspondiente.

Los pares SEIZE/ RELEASEestán vinculados por el nombre de la instalación, ya que 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 estación de servicio, un documento de autorización, etc., de hecho, cualquier cosa con capacidad para uno. Para simular varios servidores paralelos, como un equipo de cinco barberos o un horno con capacidad para 10, GPSS utiliza entidades denominadas STORAGEs.

Después de que un cliente captura a Joe, 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í un número aleatorio elegido entre 16-4 = 12 y 16 + 4 = 20mn. 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 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 se despertará, procederá a la siguiente instrucció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á SEIZE Joe... Para seleccionar la "próxima" transacción, GPSS utiliza el principio 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 .

En paralelo a este primer segmento, que simula el comportamiento del cliente, un segundo segmento del modelo simula el final del día. En el momento 480mn = 8h, una entidad es GENERATEd, que estará TERMINATEen el siguiente bloque. Esta vez, el TERMINATEcomo 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 la STARTdeclaración . 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:

INSTALACIÓN NÚMERO PROMEDIO PROMEDIO DECOMISO PREVENCIÓN ENTRADAS DE UTILIZACIÓN TIEMPO/TRAN N.º DE TRANS. N.º DE TRANS. José .860 26 15.884 26COLA MÁXIMO PROMEDIO TOTAL CERO PORCENTAJE 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/TRANS = TIEMPO PROMEDIO/TRANS EXCLUYENDO ENTIDADES CERO

Esto indica que Joe estuvo ocupado el 86,0% del tiempo, cortó el pelo a 26 clientes y que el corte de pelo le llevó 15,88 minutos de media. Por cierto, Joe estaba cortando el pelo al cliente número 26 cuando se cerró la simulación. No se tomaron medidas de programación para que el barbero terminara el corte de pelo antes de cerrar la tienda.

También se indica 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 estaba 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.

Cortes de pelo

* Pág. 108, pregunta 18*Una peluquería unisex de un solo sillón tiene llegadas a razón de una cada 20+15 minutos.* La mitad de los clientes que llegan quieren un corte seco, el 30% quiere un peinado y el 20%* solo quiero un corte. Un corte en seco demora entre 15 y 5 minutos, un corte de estilo demora entre 25 y 10 minutos,* y un corte de pelo lleva entre 10 y 3 minutos. Simula que 50 clientes pasan por la peluquería.* 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 el binomio* distribución.Llegadas FUNCIÓN RN1,D4; 1=corte en seco, 2=estilo, 3=recorte0,0,0/0,5,1/0,8,2/1,0,3GENERAR 20,15 ; Generar llegadasASIGNAR 1,FN$Llegadas; Asignar tipo de llegada a P1Prueba1 PRUEBA E P1,1,Prueba2; Si P1=1, transferir a DryCut. De lo contrario, Prueba2TRANSFERENCIA, corte en secoTest2 TEST E P1,2,TrimHair ; Si P1=2, transferir a StyCut. De lo contrario, recortar.TRANSFERENCIA, corte de estiloSilla DryCut SEIZEAVANCE 15,5VALOR DE GUARDADO Se busca DryCut+,1TRANSFERENCIA, TérminoSilla SEIZE de StyCutAVANCE 25,10GUARDARVALOR WantedStyleCut+,1TRANSFERENCIA, TérminoSilla TrimHair SEIZEAVANCE 10,3AHORREVALOR Se busca Recortar el cabello +,1Término LIBERACIÓN PresidenteTERMINAR 1

Autopista

* Pág. 108, pregunta 14* Una superautopista 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 paso.* 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 entre 60 y 10 minutos en viajar entre las dos estaciones de metro.* áreas politanas ¿Cuánto tiempo tardan 5000 personas en llegar a la segunda ciudad?Pasajero FUNCIÓN RN1,D60,0,0/0,2,1/0,5,2/0,6,3/0,7,4/1,0,40GENERATE 20,15 ; Nuevo vehículo entra en la superautopista (segundos)ASIGNAR 1,FN$Passenger ; Asignar número de pasajeros a P1AVANCE (60#60),(10#60) ; Recorrido (minutos a segundos)TERMINAR P1 ; Disminuir el conteo por número de pasajeros* El tiempo de finalización se expresa en segundos y debe dividirse por 60.* RESULTADO: 10958 segundos => 182,645 minutos = 3 h 2 min

Prefijos de datos

Fuente: [15]

Actas

Cadenas

Bloques

Atributos del sistema

Cantidades

Atributos del equipo

Almacenes

Instalaciones

Grupos

Atributos estadísticos

Colas

Tablas

Guardar valores

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. ^ Schriber, Thomas (1977), Introducción al GPSS (PDF) , p. 1 , consultado el 12 de diciembre de 2023
  2. ^ Geoffrey Gordon (1981). "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 0127450408Al desarrollar GPSS no hubo un esfuerzo consciente por basar el diseño en computadoras analógicas, pero estoy seguro de que la notación del diagrama de bloques y el énfasis en hacer que la simulación sea directamente accesible a los analistas de sistemas en lugar de a través de programadores, que son características de GPSS, fueron influenciados inconscientemente por la experiencia con las computadoras analógicas .
  3. ^ IEEE (1984), Actas de la conferencia de simulación de invierno, ISBN 9780911801040, consultado el 12 de diciembre de 2023
  4. ^ (GPSS/360, en MFT/MVT pero no en DOS)
  5. ^ 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 las 360 más grandes... GPSS II también ha estado disponible en el UNIVAC 1108
  6. ^ "Introducción a GPSS" (PDF) . sobre el lenguaje de modelado de simulación GPSS. ... resumido; fuentes que comparan GPSS y otros .... GPSS de Corporation para hardware Univac 1108)
  7. ^ B. Liskov (1981). "Sesión GPSS". Historia de los lenguajes de programación. ScienceDirect . pp. 403–437. doi :10.1016/B978-0-12-745040-7.50013-2. ISBN . 9780127450407Antecedentes : 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
  8. ^ Nabil R. Adam; Ali Dogramaci (2014). Cuestiones actuales en simulación por ordenador. Academic Press. pág. 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.
  9. ^ Ståhl, Ingolf (1990). Introducción a la simulación con GPS en PC, MacIntosh y Vax . Prentice Hall. ISBN 0-1348-323-10.
  10. ^ "MANUAL DE REFERENCIA DE GPSS World". athena.ecs.csus.edu . Consultado el 11 de diciembre de 2023 .
  11. ^ P. Fonseca Casas (2009). "jgpss, un framework 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 trabajo presenta... En el original, GPSS significaba Gordon's Programmable Simulation System, en honor a Geoffrey Gordon, su creador.
  12. ^ "Sistema de simulación de propósito general en Java". Aprenda a crear un motor de simulación. JGPSS es una implementación del sistema GPSS basado en Java.
  13. ^ Stanley Greenberg (1972). Introducción al GPSS . Nueva York: Wiley-Interscience. ISBN 0471324906.
  14. ^ Schriber, Thomas (1974). Simulación mediante GPSS . Wiley. ISBN 9780471763109.
  15. ^ Sistema de simulación de propósito general/360: Manual del usuario (PDF) , 1967 , consultado el 10 de diciembre de 2023

Enlaces externos