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

Unidad I Software de Simulacin

UNIDAD I. SOFTWARE DE SIMULACIN 1.1 HERRAMIENTAS GPSS

El Lenguaje de Simulacin GPSS (Introduccin) Una vez que se aprendi a identificar los datos que debern alimentar a la simulacin y a saber que hacer para analizar los resultados de ella, el paso ms natural es aprender un lenguaje de propsito especfico para elaborar el programa de simulacin. Se puede seleccionar el lenguaje de una gran variedad existente en el mercado, pero es conveniente hacerlo con base en criterios adecuados tanto para el aprendizaje como para la aplicacin a sistemas prcticos. El GPSS tiene varias caractersticas que lo hacen un lenguaje de simulacin adecuado para introducirse en la programacin de modelos de simulacin con un lenguaje de propsito especfico. Estas cualidades se pueden agrupar en tres que son: 1. GPSS es completo. Esto quiere decir que es un lenguaje muy rico ya que contiene incorporadas muchas opciones estadsticas y se puede aplicar en una gran variedad de situaciones prcticas. 2. Es de fcil empleo y tiene poder. GPSS es fcil de aprender y de usar ya que se requiere invertir una cantidad mnima de tiempo en la curva de aprendizaje para poder simular y modelar de una manera tan compleja como necesite. 3. Tiempo de Prueba. El GPSS es uno de los primeros lenguajes de simulacin que se desarroll, as que se ha probado durante mucho tiempo. (Gordon lo implement en 1962). Sin embargo tiene la desventaja de que no incluye una animacin incorporada, aunque sus resultados se pueden animar por otros paquetes tales como el Proff Annimation. Antecedentes El GPSS (General Purpose Simulation System) lo implemento Gordon en 1962 y fu J. O. Henrikesen quien hizo la primera liberacin para la Wolverine Sofware en 1977, desde entonces se ha mantenido como un lenguaje capaz de simular adecuadamente una gran cantidad de entornos de inters prctico y terico. Existen diferentes versiones de GPSS, cada una con sus variantes particulares, pero la filosofa operativa es semejante en todas las versiones. En el ITESM-CEM se dispone de dos: el GPSS/H para plataforma DOS y compatibles, y el GPSS/C para Plataforma UNIX. En este curso se presentan las instrucciones de manera que sean aceptadas por ambos compiladores de GPSS (en lo posible) ,marcando siempre que lo amerite, las diferencias entre una y otra versin. Sien embargo es conveniente recordar que las versiones de los lenguajes y programas cambian continuamente por lo que, si dispone de una versin de GPSS en donde no corran las instrucciones tal y como aparecen en este curso, consulte su manual de referencia donde, seguramente, encontrar la sintaxis apropiada para su versin.

Dnde localizar y correr GPSS En el ITESM-CEM el GPSS se puede localizar en las mquinas de los laboratorios de cmputo de aulas IV. En el laboratorio de PCs. (piso 3) se puede encontrar disponible una versin estudiantil y una profesional de GPSS/H. Mientras que en el laboratorio para Workstationacutes con plataforma UNIX (piso 2) se encuentra disponible un GPSS/C con capacidad equivalente a una profesional. Tambin est disponible una versin estudiantil de GPSS/H en la red donde se puede correr y codificar programas. El GPSS no dispone de un editor as que para formar un programa es necesario tener un editor de texto (en formato ASCCI) tanto en la plataforma DOS como en UNIX. Bajo DOS y compatibles es posible utilizar el editor de texto que viene acompaando a sistema operativo o algn editor donde usualmente teclee sus programas en lenguajes como QBASIC, PASCAL, C, FORTRAN y similares. L.I. Jos Raymundo Ceja Vzquez 1

Unidad I Software de Simulacin Bajo UNIX se dispone del editor vi (no grfico) y el asedit que es ms sencillo y amable en su manejo, la recomendacin es teclear el programa en asedit. Una vez que se tenga el programa se recomienda salvarlo con extensin .gps. Al correr el programa el compilador GPSS genera un archivo con los resultados de la simulacin, este archivo tendr extensin .lis y se crea en el mismo directorio donde se encuentre el archivo del programa (.gps). Para correr el programa (bajo DOS) solo hace falta colocarse en el directorio donde resida el compilador GPSS y teclear gpss el cual preguntar cual es el nombre del programa que desea correr (File: ); responda dando el nombre completo del archivo, es decir incluya la unidad de disquete si es necesario y el nombre (incluyendo directorios) p. e. a:\diruno\prog.gps. En caso de estar en entorno UNIX colquese en el directorio donde se encuentra su programa, teclee gpss y responda con el nombre de su archivo directamente. En que no est presente la liga al directorio del GPSS consulte con el administrador donde localizar el paquete. Esta es la manera elemental de correr un programa GPSS pero existen diversas modalidades bajo las cuales se puede correr el programa para hacer un seguimiento especial de la corrida. Una vez que corra su programa para inspeccionar sus resultados que estn en el archivo .lis es necesario que edite este archivo para visualizar sus resultados. Para abrir el archivo puede utilizar el mismo editor que emple para crear el programa. La interpretacin de los resultados bsicos de este reporte se ver posteriormente, cuando sea capaz de fabricar programas bien formados. Finalmente para quienes opten por utilizar el GPSS disponible en la red, al conectarse lo harn a un directamente a un editor de la red y posteriormente la red mandar su archivo al compilador GPSS y le retornar el archivo con los resultados, visualizndolos con el editor que provee la red. Conceptos Bsicos de GPSS Para entender el funcionamiento de GPSS se tienen que conocer las entidades que maneja GPSS para la simulacin estas entidades son: a) Transacciones Las transacciones son entidades dinmicas que atraviesan las instrucciones de bloque del GPSS y que en el modelo pueden simbolizar autos, personas, mquinas, etc. Una de las propiedades interesantes de GPSS es que las instrucciones del programa no sern ejecutadas de manera secuencial ya que el GPSS procesar paralelamente (en tiempo simulado) todas las transacciones del modelo, esto implica que pueden existir muchas transacciones que circulen a travs del modelo al mismo tiempo simulado. Las transacciones poseen atributos que les permiten tanto recolectar informacin de lo que les sucede en el modelo, como definir sus caractersticas particulares, por ejemplo la prioridad que tendrn en el modelo, etc., y esto facilita la modelacin adecuada de los sistemas de inters. b) Entidades de equipo Estas entidades se usarn para simular el empleo de equipo real (o recursos reales) y se clasifican en FACILITIES, STORAGES, LOGIC SWITCHES Y USER CHAINS. FACILITIES (recursos).- Se emplean para simular servidores simples, como la caja de un banco, un surtidor de gasolina, una computadora, un telfono etc. Slo una transaccin puede ocupar este tipo de recursos y bloquea el acceso a las dems hasta que desocupe el recurso (de este tipo). STORAGES (almacenes o grupos).- Se usan para simular servidores mltiples e idnticos en cada una de sus unidades, por ejemplo un grupo de computadores, y conjunto de cajeros automticos etc. LOGIC SWITCHES (compuertas lgicas).- Se emplean para simular compuertas de acceso que pueden abrirse y cerrarse para permitir o negar el acceso a una seccin determinada del programa de acuerdo a criterios establecidos. USER CHAINS (cadenas de usuarios).- Se ocupan para simular comportamientos complejos en procesos de filas, este es un recurso que est fuera del alcance del curso. L.I. Jos Raymundo Ceja Vzquez 2

Unidad I Software de Simulacin c) Entidades computacionales Estn constituidas por: Variables aritmticas, variables Booleanas, entidades estadsticas, entidades de almacenamiento de informacin y funciones. Variables aritmticas. En estas entidades se puede almacenar informacin ya sea calculando o asignando valores a las variables mediante el siguiente formato: etiqueta VARIABLE expresin (para variables enteras) y etiqueta FVARIABLE expresin (para variables de punto flotante) Las etiquetas pueden ser nmeros o caracteres alfanumricos, con la restriccin de que el primer carcter sea alfabtico. Otra restriccin es que no pueden tomar la forma de las palabras reservadas en GPSS, que estn formadas por: 1 Los atributos numricos estndar (SNA) 2 Los atributos de carcter estndar (SCA) 3 Los atributos lgicos estndar (SLA) 4 Los nombres de los bloques de GPSS Las expresiones pueden incluir constantes, smbolos o bien otras variables y utilizar los siguientes operadores: (substraccin), + (suma), * (multiplicacin), / (divisin) y @ (mdulo). Ejemplo(s): 16 VARIABLE S2/2 + 10 HORAS FVARIABLE AC1*100/15 Variables Booleanas Las variables Booleanas tienen dos alternativas: Falso (0) o verdadero (1) y para declararlas se emplea el siguiente formato. etiqueta BVARIABLE expresin Para declarar este tipo de variables se aplican las mismas restricciones que en las variables aritmticas pero se admiten los siguientes operadores: 'GE' (para mayor o igual), 'G'(mayor que), 'L' (menor que), 'LE'(menor o igual), 'E' (igual), 'NE' (diferente), OR (para un OR lgico), AND (para AND lgico), + (OR lgico), * (AND Lgico). Ejemplo: VEINTE BVARIABLE Q$'GE'7*Q4'LE'17 (la variable VEINTE ser verdadera si Q4 esta entre 7 y 17)

FUNCIONES Las funciones son entidades muy importantes que servirn para formar relaciones entre variables y/o caractersticas de las diferentes entidades del GPSS. La forma de construirlas y el detalle de su operacin se ver en una seccin especial del curso.

ENTIDADES ESTADISTICAS (QTABLE, TABLE) Estas entidades sirven para hacer un levantamiento estadstico del comportamiento del sistema simulado. Se ver ms detalle posteriormente en este curso.

ENTIDADES DE ALMACENAMIENTO DE INFORMACION Existen 3 tipos (SAVEVALUES, MATRIXSAVEVALUES y AMPERVARIABLES) del los cuales slo se tratar al tercero en este curso, he aqu una breve descripcin.

L.I. Jos Raymundo Ceja Vzquez

Unidad I Software de Simulacin Ampervariables: Es un tipo de variable disponible en GPSS/H (solamente) y se distingue por tener el smbolo & antes del nombre de la variable. Se declaran al principio del programa y se les puede usar como escalares o como arreglos, con valor fijo o con valor recalculable conforme se ejecutan los bloques. Existen los siguientes tipos de ampervariables: INTEGER (para guardar nmeros enteros positivos y negativos) REAL (para nmeros reales) CHAR*N (para cadenas de caracteres de longitud N) EXTERNAL (para aplicaciones especiales en GPSS/H)

Como crear un programa bien formado en GPSS. Para introducir un programa GPSS se debe seguir cierta estructura y formato para que est bien formado y corra eficientemente. La estructura bsica de un programa elemental de GPSS es la siguiente:

Las instrucciones SIMULATE, START y END, que aparecen en el diagrama, son de las llamadas instrucciones de control y sirven para dirigir las acciones del modelo de simulado con las instrucciones de bloque. Las instrucciones GPSS adems de la estructura adecuada deben seguir un formato especfico, cuando se codifica a fin de que sean interpretadas correctamente por el compilador y pueda simular adecuadamente lo que se pide.

Las instrucciones de control (SIMULATE, START, END) Para formular un modelo de simulacin que represente fielmente la idea que se tiene de un sistema, es conveniente conocer con detalle las opciones que brindan las instrucciones a fin de poderlas usar adecuadamente. A continuacin se presenta el detalle de las instrucciones de control iniciales ya que posteriormente cuando se inicie la construccin de programas ser indispensable que las conozca y maneje. SIMULATE. Es la primera instruccin del programa, si no tiene SIMULATE entonces se compilar pero no se ejecuta, es decir, slo se verifica su sintaxis y se traduce a lenguaje de mquina pero no se ejecuta la simulacin. Esta instruccin no se puede etiquetar. Su sintaxis es: SIMULATE A,B,C Donde: A es un operando donde se coloca el tiempo lmite de procesador en minutos. B es un operando que puede tomar el valor "SAVE", en cuyo caso se genera un reporte salvando las estadsticas principales si el programa alcanza el tiempo lmite parea su ejecucin el nombre del archivo generado es GPSCHKPNT.SAV L.I. Jos Raymundo Ceja Vzquez 4

Unidad I Software de Simulacin C es un operando donde se coloca el numero lmite de movimientos de una transaccin antes de recibir una orden de retardo, suspensin de actividades o destruccin. Bajo DOS y sistemas compatibles no se toma en cuenta el valor de A (y no tienen las opciones B, C para GPSS/h). Su valor por omisin es infinito. Esta instruccin es de gran utilidad adicional cuando se trabaja en sistemas donde no se tiene acceso al control del sistema computacional ya que es posible que algn programa este codificado en ciclos de manera accidental. Con esta instruccin se puede dar un lmite en los recursos a emplear por el programa. Bajo sistemas operativos como DOS el operando A no se toma en cuenta ya que se supone que en los sistemas personales el usuario tiene la opcin de apagar la mquina en caso de desear terminar una corrida si esto fuese necesario. START. Esta es una instruccin que sirve para indicar que el programa que modela el sistema esta completo y que se puede iniciar la simulacin de ese grupo de instrucciones hasta que se de la condicin de terminacin del START. Su sintaxis es la siguiente: START A,B,C,D Donde: A es el nmero de terminaciones antes del reporte final. B es un operando que puede llevar la opcin NP para suprimir la impresin del reporte escrito. C es un operando donde se coloca el intervalo de tiempo simulado al cual se desea una impresin de resultados (hasta ese momento). D es un operando para inclur en el reporte la cadena de eventos actuales (CEC) y la cadena de eventos futuros (FEC) en el reporte estndar. El valor par inclur es "1" y nulo en caso contrario. Finalmente, la instruccin de control END indica el final de la ejecucin del programa y retorna el control al sistema operativo ya sea DOS, UNIX o cualquier otro. Su sintaxis es: END END no posee operandos. Este conjunto de instrucciones de control permiten formar programas elementales bien estructurados que corran y simulen el sistema modelado. Existen ms de instrucciones de control que se mostrarn conforme las necesidades del curso. Instrucciones de Bloque GPSS (GENERATE, TERMINATE, SEIZE, RELEASE, ADVANCE). Para iniciar el aprendizaje en la elaboracin de modelos de simulacin en GPSS es necesario saber como generar transacciones ya que son los elementos computacionales que circularn por el modelo representando toda clase de elementos que "viajen" por el sistema. La instruccin de bloque GENERATE La instruccin de bloque que permite generar las transacciones e ingresarlas en el modelo se llama GENERATE. Su sintaxis es: GENERATE A,B, C,D,E,F Donde el operando A es la tasa promedio a la cual se crean las transacciones en unidades de tiempo simulado. Su valor por omisin es cero. B es la dispersin en el tiempo de creacin promedio de las transacciones, es decir, el tiempo de interarrivo de las transacciones al modelo ser de A + - B unidades de tiempo. Su valor por omisin es cero. C es un operando donde se coloca el tiempo simulado al que llega la primera transaccin al modelo. El valor por omisin no est determinado. D es el nmero lmite de transacciones creadas y su valor por omisin es infinito. L.I. Jos Raymundo Ceja Vzquez 5

Unidad I Software de Simulacin E es un operando donde se coloca la prioridad asignada a cada transaccin creada por el GENERATE. En GPSS/C las prioridades posibles son de 0 a 127 y en GPSS/H se pueden usar valores desde -2E-9 hasta 2E9. La prioridad mayor tiene preferencia sobre las de prioridad inferior. F es un operando donde se especifica el nmero y tipo de parmetros asociados a las transacciones creadas. El valor por omisin es 12PF que implica que cada transaccin creada tendr asociados a 12 parmetros de tipo PF (o de palabra completa). Las opciones para el tipo de parmetro son: PF de palabra completa. PH de media palabra. PB de tipo Byte. PL de punto flotante. El tipo PB dispone de 8 bits para guardar informacin, los otros tipos tienen mayor capacidad y por lo tanto ocupan ms memoria. El que mayor capacidad tiene es el PF que puede representar nmeros con punto flotante. Ejemplo(s): GENERATE 2500 Crea una transaccin cada 2500 unidades de tiempo simulado GENERATE 2700,200,1000,100,50,20PL Crea transacciones cada 2700 + - 200 unidades de tiempo, pero la primera transaccin se crea al tiempo 1000. Despus de 100 transacciones no se generan ms y cada una de las 100 generadas tendrn una prioridad de 50 y 20 parmetros asociados de tipo PL. Nota(s): En GPSS/H los operandos pueden tomar valores fraccionarios pero en GPSS/C tienen que ser valores enteros. Adems, en GPSS/H existe disponible una extensin de este conjunto de operandos, consulte el Manual de Referencia para hacer uso de ellos. Las transacciones no pueden ingresar a una instruccin de bloque GENERATE. El ingreso causa error en la ejecucin del programa.

Instruccin de bloque TERMINATE TERMINATE se emplea para destruir las transacciones que ingresen a ella, se puede emplear para simular que un elemento sale del sistema y ahorrar memoria. Ayuda a que se cumplan las condiciones de terminacin de un programa ya que puede afectar al contador del START. Su sintaxis es: TERMINATE A Donde A es un operando donde se coloca el nmero (entero) en que se decrementa el contador de las terminaciones, cuyo nmero inicial se da en la instruccin de control START. Cuando el contador alcanza un valor menor o igual a cero se ejecuta la siguiente instruccin debajo del START, si es un END, la simulacin termina. Ejemplo(s): TERMINATE Cada transaccin que ingresa se destruye: TERMINATE 5 Cada transaccin que ingresa se destruye y decrementa el contador de terminaciones en 5 unidades cada vez. Con las instrucciones de bloque GENERATE y TERMINATE se est en capacidad de crear y destruir transacciones, es decir, de ingresarlas al modelo y de sacarlas, pero sin que ejecute alguna actividad en el modelo. L.I. Jos Raymundo Ceja Vzquez 6

Unidad I Software de Simulacin Para simular la ocupacin de un equipo por una transaccin se puede utilizar la instruccin de bloque SEIZE y para indicar la liberacin del equipo ocupado con SEIZE se ocupa RELEASE.

Instruccin de bloque SEIZE SEIZE sirve para registrar el empleo de una unidad de servicio por parte de una transaccin que entra, de tal forma que la unidad queda ocupada hasta que la transaccin ingresa a una instruccin RELEASE. Una sola transaccin puede ocupar cualquier nmero de unidades de servicio. Su sintaxis es: SEIZE A Donde el operando A se emplea para dar la identificacin a la unidad que se ocupa (nmero o nombre). Ejemplo(s): SEIZE HORNO Registra la ocupacin de una unidad de servicio llamada HORNO. SEIZE 9 Registra la ocupacin de la unidad de servicio nmero 9. Esta forma de hacer referencia a las unidades puede resultar en un programa que no aporta la idea del sistema que se simula y para el no experto puede causar confusin. Para iniciarse en la programacin se recomienda emplear nombres alfabticos para la identificacin.

Instruccin de bloque RELEASE Sirve para desocupar la unidad de servicio ocupada previamente por la transaccin. No se reciben negativas para entrar a este bloque. Su sintaxis es: RELEASE A El operando A indica la identificacin de la unidad que se libera. Ejemplo RELEASE HORNO Indica que la transaccin libera a la unidad de servicio HORNO que ocup con anterioridad.

Instruccin de bloque ADVANCE Suspende el movimiento de una transaccin por una cantidad especificada de tiempo simulado. Puede emplearse para simular el tiempo que una persona tarda en ocupar un equipo, en una sala de espera, etc. Su sintaxis es: ADVANCE A,B Donde el operando A corresponde al tiempo de retardo para la transaccin y B es el intervalo de dispersin alrededor de A. Ejemplo: ADVANCE 12,4 Retarda la transaccin 12 + - 4 unidades de tiempo simulado. ADVANCE 15 Retarda exactamente 15 unidades de tiempo a la transaccin. L.I. Jos Raymundo Ceja Vzquez 7

Unidad I Software de Simulacin Instrucciones de Bloque GPSS (QUEUE, DEPART, ENTER, LEAVE). Las instrucciones de bloque QUEUE, DEPART, ENTER, LEAVE, junto con las vistas la sesin anterior permitirn la simulacin de sistemas simples de manera rpida y eficiente. Instruccin de bloque QUEUE La instruccin de bloque QUEUE se emplea para obtener estadsticas de las transacciones que pasan por esa instruccin. Su sintaxis es: QUEUE A,B Donde el operando A se emplea para colocar el nombre de la fila a la que se le asignarn las estadsticas. Y B es el nmero de unidades que se deben sumar a la fila cuando una transaccin pasa por la instruccin. El valor por omisin es de uno. Ejemplo(s): QUEUE FILAA Declara una fila de nombre FILAA y le suma una unidad a la fila cuando una transaccin pasa por ella. QUEUE FILAB,3 Declara una fila de nobre FILAB y le suma 3 unidades cada vez que una transaccin pasa por ella.

Instruccin de bloque DEPART Reduce el contenido de una fila declarada con QUEUE, en una o ms unidades. DEPART es el complemento de QUEUE ya que sirve para simular que un elemento de la fila se desforma y se va. Su sintaxis es: DEPART A,B Donde A es el operando donde se aporta el nombre de la fila a la que se le removern B unidades, el valor por omisin de B es uno. Ejemplo(s): DEPART FILAA Descuenta una unidad de la fila FILAA que se debe definir antes. DEPART FILAB 3 La fila FILAB se reduce en 3 unidades cada vez que una transaccin pasa por esta instruccin. Es necesario tener cuidado de no remover ms unidades que las que tiene cada una de las filas ya que no es posible hacer esto.

Instruccin de bloque ENTER Esta instruccin se emplea para ocupar unidades de equipo que tienen capacidad mltiple. Por ejemplo un cubculo de cajeros automticos, un conjunto de sillas en un saln, etc. Su sintaxis es: ENTER A,B Donde A es el nombre del equipo de capacidad mltiple y B es el nmero de unidades que solicita una transaccin, en caso de omitirlo se solicitar una unidad de equipo. La capacidad mxima del conjunto se puede fijar con la instruccin de control llamada STORAGE, si no se fija as la capacidad mxima se supone infinita. Ejemplo: ENTER SILLAS, 2 L.I. Jos Raymundo Ceja Vzquez 8

Unidad I Software de Simulacin Aqu la transaccin que ingresa solicita 2 unidades del conjunto llamado SILLAS (el cual puede dimensionarse con STORAGE) este conjunto SILLAS pertenece a las entidades llamadas storage.

Instruccin de bloque LEAVE LEAVE se utiliza para que las transacciones liberen unidades de equipo ocupadas con ENTER. SU sintaxis es: LEAVE A, B Donde A es el operando que se emplea para invocar el nombre del equipo (storage) del cual se liberan B unidades. Si el operando B se omite, su valor ser de uno. Se debe tener precaucin de no liberar ms unidades de las que se tengan ocupadas, para cada equipo especfico, ya que eso implica creacin de unidades. Ejemplo(s): LEAVE MESAS Se pide que se libere una unidad del equipo de capacidad mltiple llamado MESAS. LEAVE MESAS,3 Cada transaccin que ingresa solicita que la unidad de equipo mltiple (o storage) MESAS libere 3 de sus unidades. Instruccin de control STORAGE Se emplea para determinar cuntas unidades estarn disponibles de un equipo de capacidad mltiple (storage). Su sintaxis es: etiqueta STORAGE A Donde "etiqueta" llevar el nombre del equipo que se desea dimensionar y A es el nmero de unidades que tendr el equipo. Ejemplo: CAJA STORAGE 10 Se determina que el storage CAJAS tendr capacidad de 10 unidades. Nota: STORAGE se codifica junto a las instrucciones de control del inicio del programa (donde usualmente se colocan las declaraciones de variables). En la versin GPSS/h la sintaxis es: STORAGE S$etiqueta, A/ S$etiqueta, B/ ... /S$etiqueta, N Donde la etiqueta es el nombre del storage y los operandos A, B, C ... N son las unidades de cada uno de los equipos que se desea dimensionar.

Codificacin de un programa GPSS. Para codificar un programa en GPSS se tienen que recordar las columnas sugeridas para colocar cada tipo de informacin (visto en la sesin uno), tener un sistema de inters que se desee simular, hacer la abstraccin de cmo representar el sistema y su funcionamiento (hacer un modelo), y proceder a representarlo con las instrucciones de GPSS (siempre que sea posible). El GPSS no posee un editor propio (al menos en las versiones GPSS/H y GPSS/C), as que se tiene que emplear algn editor como el asedit en ambiente UNIX o el editor de DOS o el de Pascal etc. a condicin de que se pueda salvar el archivo en caracteres ASCCI (modo texto). L.I. Jos Raymundo Ceja Vzquez 9

Unidad I Software de Simulacin Se desea saber cuntos puntos de cobro se deben abrir, para tenerlos disponibles en caso de que la demanda aumente al doble de autos por unidad de tiempo (en promedio), puesto que se desea que el nmero de autos en espera de servicio no sea superior a 20, por el riesgo de accidente que hay en la zona debido a la topologa particular del caso. Simule ocho horas de operacin para tomar una decisin. El primer paso es crear el modelo conceptual, descomponiendo el sistema de acuerdo a los elementos que es posible simular. Por ejemplo: las cabinas de cobro se pueden visualizar como unidades de equipo mltiple, ya que son similares en caractersticas. Los autos se pueden representar por transacciones y el nmero de autos en espera de servicio se puede cuantificar como una fila frente al servidor. De esta manera se puede inferir que se har uso de las siguientes instrucciones: (bsicamente) SIMULATE para iniciar el programa (compilarlo y correrlo), GENERATE para crear las transacciones que representarn los autos que llegan por la autopista, QUEUE para tomar datos de los autos que estn en espera del servicio, ENTER para simular un conjunto de cabinas de cobro de caractersticas semejantes ADVANCE para representar los tiempos de atencin, TERMINATE para sacar autos del modelo una vez que pasan la caseta, DEPART para descontar de la fila a los autos atendidos, LEAVE para desocupar las cabinas de cobro START para dar una condicin de terminacin y END para detener el programa el programa.

Instrucciones de Bloque GPSS (TRANSFER). La instruccin TRANSFER sirve para bifurcar el trayecto de un grupo de transacciones, que ingresen a esta instruccin de bloque. En los modelos de simulacin a menudo se necesita simular que los elementos que recorren el modelo toman decisiones y siguen rutas y estrategias diferentes, para ello se puede usar TRANSFER en GPSS. Su sintaxis es: TRANSFER A,B,C,D Donde A es el modo de operacin, B es el nombre (o etiqueta) de la direccin de la primera opcin, C es el nombre (o etiqueta) de la segunda opcin y D es un factor de indexacin. Existen 3 formas de hacer uso de TRANSFER a saber: La incondicional La estadstica La condicional La forma ms sencilla de ocuparlo es la incondicional, donde las transacciones que llegan se bifurcan (todas) incondicionalmente a otra direccin. a) Forma Incondicional Para hacer esto se deja el campo A en blanco y en B se coloca una etiqueta que seala el bloque donde ingresar incondicionalmente la transaccin. Ejemplo: TRANSFER ,PROXIMO En este ejemplo la transaccin que llega incondicionalmente se transfiere al bloque etiquetado como PROXIMO. b) Forma Estadstica Se tienen 4 maneras diferentes de hacer una transferencia estadstica de transacciones, a saber: Manera 1. se elige en el campo A una probabilidad de pasar al bloque etiquetado como se menciona en el campo C. Ejemplo 1: TRANSFER .33,DIRUNO,DIRDOS Esta instruccin enva el 33 % de las transacciones que ingresen al bloque etiquetado con DIRDOS y el 67 % restante al etiquetado con DIRUNO. Ejemplo 2: TRANSFER .33,,DIRDOS

L.I. Jos Raymundo Ceja Vzquez

10

Unidad I Software de Simulacin Aqu el 33 % de las transacciones que ingresen se dirigen al bloque etiquetado con DIRDOS y el resto pasa al siguiente bloque. Manera 2. Seleccionando en A el modo PIC, se tiene la opcin de transferir de manera aleatoria uniforme la transaccin que ingrese a cualquier bloque delimitado entre las etiquetas que se aporten en los campos B y C. Ejemplo: TRANSFER PIC,ETIQUNO,ETIQDOS Esta instruccin intentar enviar las transacciones (que ingresen) a algn bloque que est entre el bloque etiquetado como ETIQUNO y el etiquetado como ETIQDOS (incluyendo los bloques etiquetados). Todos los destinos posibles tienen la misma probabilidad de ser seleccionados por la instruccin. Manera 3. Si selecciona el modo SBR en el campo A Ejemplo: TRANSFER SBR,DESTINO,9PH De esta manera se transfiere a una transaccin a la etiqueta DESTINO y almacena el nmero de bloque (donde se hace la transferencia) en el parmetro 9PH. Esta opcin no es del nivel del presente curso, para mayor informacin consulte el manual de Referencia. Manera 4. Se tiene cuando se ocupa la opcin PH PF PB PL en el parmetro A. Ejemplo: TRANSFER PH,4,5 Aqu se transfiere la transaccin que ingrese a la direccin especificada en el parmetro 4PH sumndole 5 unidades. Es decir la enva al bloque nmero 4PH+5. Manera 1. Si en el campo A se emplea la opcin BOTH Ejemplo: TRANSFER BOTH,INICIO,FINAL La transacin al llegar se trasfiere como primera opcin al bloque etiquetado como INICIO y como segunda opcin al etiquetado como FINAL hasta que logre el acceso. Manera 2. Si en el campo A se especifica la opcin ALL Ejemplo: TRANSFER ALL,UUNO,DDOS,2 Esta es una generalizacin del modo BOTH, ya que la transaccin intentar bifurcarse a la etiqueta UUNO, pero si no logra el acceso intentar acceder dos bloques abajo (UUNO + 2) y de no lograr acceso seguir intentando acceder en saltos de D bloques (en este caso 2) hasta que encuentre el lmite marcado con DDOS. Se debe cuidar que UUNO+nD=DDOS para alguna n. Si se llega al lmite superior y no se ha logrado el acceso se inicia un nuevo ciclo desde UUNO, hasta que logre eventualmente su acceso.

Instrucciones de Bloque GPSS (GATE, TEST). En los modelo de simulacin existe la necesidad (algunas veces) de simular compuertas que se abran o cierren dependiendo de las condiciones para el acceso a determinados lugares. GPSS tiene las instrucciones GATE y TEST para esto. TEST Esta instruccin de bloque controla el flujo de transacciones a travs de relaciones lgicas entre los atributos numricos estndar (SNA) del GPSS, que son variables internas de las cuales se sirve para realizar la simulacin. Ejemplo de SNA's La instruccin test opera de dos modos: a) Cuando las transacciones se detienen hasta que la relacin lgica se cumple y b) Cuando las transacciones se dirigen a un bloque alterno cuando la relacin lgica no se cumple. L.I. Jos Raymundo Ceja Vzquez 11

Unidad I Software de Simulacin La sintaxis de TEST es: TEST "X" A,B,C Donde "X" es un operador relacional que puede ser: L (menor que) LE (menor o igual) E (igual) NE (diferente) G (mayor que) GE (mayor o igual). El operando A es el primer SNA comparado, B es el segundo SNA comparado y C es la etiqueta del bloque alterno si la relacin lgica es falsa. A y B tambin pueden tomar valores constantes. Si se omite la etiqueta en el campo C, entonces TEST opera del primer modo, deteniendo las transacciones mientras la relacin no sea verdadera. Funcionando como una compuerta. En caso de que se aporte la etiqueta las transacciones seguirn por el bloque etiquetado cuando la relacin sea falsa. Ejemplo(S) TEST LE Q$LINEA,7,SALIDA En este caso la instruccin enva las transacciones a la etiqueta SALIDA en caso de que la longitud de la fila LINEA sea mayor que 7. Si es menor o igual las transacciones pasan al siguiente bloque. TEST E Q$LINEA,Q$INICIO Aqu la instruccin detendr las transacciones que intenten pasar al bloque siguiente mientras las longitudes de las filas LINEA e INICIO sean diferentes. Cuando sean iguales las transacciones pasarn al siguiente bloque.

GATE Esta es una instruccin semejante a TEST pero utiliza relaciones lgicas asociadas con entidades particulares. Tambin acta de los dos modos en que opera TEST. Su sintaxis es: GATE "X" A,B Donde "X" puede ser: NU que significa (recurso especificado en A no esta en uso) U (recurso especificado en A esta en uso) SF (storage especificado en A esta lleno) SNF (storage especificado en A esta no lleno) SNE (storage especificado en A esta no vaco) SE (storage especificado en A esta vaco). El operando A se emplea para colocar el nombre de la entidad que se inspecciona y en el B se coloca la etiqueta del bloque alterno en caso de no cumplirse la relacin. Si se omite la etiqueta en B, la instruccin detendr las transacciones hasta que la relacin sea verdadera, en cuyo caso pasarn al siguiente bloque. Ejemplo(s) GATE SNF NAVE,OTRO La transaccin al ingresar en el GATE preguntara si es verdad que el storage llamado NAVE esta no lleno, si es verdad pasar al siguiente bloque, si no se dirige al bloque etiquetado con OTRO. L.I. Jos Raymundo Ceja Vzquez 12

Unidad I Software de Simulacin GATE NU CAJAS Aqu las transacciones se preguntan si el facility llamado CAJAS esta no usado (sin usarse), si es verdad pasan al siguiente bloque y si es falso se detienen hasta que este sin usarse.

Instrucciones de control GPSS (FUNCTION). Para crear variables que tengan distribuciones y valores que varen de una manera funcional ya sea aleatoria o deterministica en GPSS se cuenta con la opcin FUNCTION que se puede utilizar de maneras diversas. Las funciones, ya sean continuas o discretas, asocian valores de una variable (independiente) con resultados especficos de los valores que pueden tomar las variables dependientes. La sintaxis es: ETIQUETA FUNCTION A, BC X1,Y1/X2,Y2/X3,Y3/.../Xn,Yn Donde: A se emplea para declarar la variable que se usar como independiente B se emplea para definir el tipo de funcin que se desea C es el nmero de pares coordenados X,Y que se usan para determinar la forma funcional. Los pares X,Y son coordenadas que determinan la forma funcional que se desea. Los tipos de funcin de que se dispone son: C (para denotar una funcin de tipo continuo) D (para denotar funciones de tipo discreto) L (para denotar el tipo lista) E (para el tipo discreto por atributos) M (tipo lista por atributos) S (tipo selector de entidad). La ETIQUETA se emplea para darle un nombre a la funcin que se declara, con el fin de llamarla as cuando se utilice en el programa GPSS. Para llamar a la funcin desde alguna parte del programa se necesita llamar al SNA correspondiente, por ejemplo: Si se declar la funcin TIEMPO, cuando se desea usar el valor actual de la funcin, dependiendo del valor actual de la variable independiente, es necesario invocar al SNA FN$TIEMPO el cual tendr el valor deseado. El valor de la funcin se podr utilizar en muchos de los operandos de las instrucciones de bloque donde tenga sentido un valor como el que aporta la funcin (o funciones) que defina. Por ejemplo: ADVANCE FN$TIEMPO En esta instruccin de bloque se pide que la transaccin suspenda su recorrido por el modelo, durante un lapso especificado en la funcin tiempo. Algunas funciones aparecen de manera tan frecuente que su forma funcional ya esta predefinida en GPSS con el fin de evitar un trabajo inecesario. Por ejemplo: en GPSS/C estn definidas la funcin que genera nmeros aleatorios con distribucin exponencial y normal estndar (adems del generador de aleatorios uniformes en el intervalo 0-1). En GPSS/H se cuenta con la funcin que genera nmeros con distribucin exponencial, normal y la triangular en forma de predefinida. Para usarlas no es necesario hacer toda la declaracin funcional como en otros casos. Para GPSS/C En el caso de GPSS/C el generador exponencial con que se cuenta tiene una media de 1 y se declara de la siguiente manera: L.I. Jos Raymundo Ceja Vzquez 13

Unidad I Software de Simulacin ETIQUETA FUNCTION RN1,BE Donde en la ETIQUETA se coloca el nombre que se desea para la funcin, donde dice RN1 se puede colocar el SNA que invoca a cualquiera de los generadores de aleatorios uniformes, es decir RN2, RN3 etc. y as tener generacin de aleatorios independientes, al emplear corrientes aleatorias (RNi's) diferentes. BE indica que se invoca al generador exponencial (con media uno). Con base en este generador se pueden obtener nmeros aleatorios con distribucin exponencial con media distinta de uno, tomando en cuenta la expresin matemtica del generador de aleatorios exponencial que se dedujo en la primera parte del curso. Si X es un nmero aleatorio exponencialmente distribuido con media uno entonces Y = M*X es un nmero aleatorio exponencial mente distribuido con media M (Demuestre que as es, a partir de la expresin vista en la primera parte) Tambin existe un generador de nmeros aleatorios con distribucin normal estndar (media cero y desviacin estndar uno), se declara de la siguiente manera: ETIQUETA FUNCTION RN1,BN Donde en la ETIQUETA se coloca el nombre que se desea para la funcin, donde dice RN1 se puede colocar el SNA que invoca a cualquiera de los generadores de aleatorios uniformes en el 0-1, es decir RN2, RN3 etc. y as tener generacin de aleatorios independientes, al emplear corrientes aleatorias (los RNi's) diferentes. BN indica que se invoca al generador normal estndar. Con este generador se pueden obtener nmeros aleatorios con distribucin normal con cualquier media y desviacin estndar, haciendo un cambio de variable. Si X es un nmero aleatorio normal estndar entonces Y=M+S*X es un nmero aleatorio normalmente distribuido con media M y desviacin estndar S. Para GPSS/h En el GPSS/h las funciones predefinidas se pueden acceder sin necesidad de declararlas en el encabezado con un FUNCTION. Para hacer uso del generador de aleatorios exponencialmente distribuidos se emplea la expresin RVEXPO(j,M) en cualquier parte del programa donde se desee el nmero en cuestin. En ella j es el nmero de corriente aleatoria que se ocupar y M es la media deseada de los aleatorios que se generen, el rango de j en algunas versiones es de 1 a 2E+09. La corriente aleatoria es equivalente a seleccionar el generador aleatorio uniforme de base, para producir los aleatorios exponenciales, como en el caso del GPSS/C. Para invocar nmeros normalmente distribuidos se cuenta con la expresin RVNORM(j,M,S) donde j es la corriente aleatoria que se desea emplear, M es la media que se desea y S la desviacin estndar. En las versiones de GPSS/H es importante tomar en cuenta que RVEXPO(j,M,S) genera nmeros hasta M+-45*S por lo cual eventualmente es posible que genere nmeros negativos. Con la expresin RVTRI(j,Min,Mod,Max) se generan aleatorios con distribucin triangular empleando la corriente aleatoria j, con mnimo Min, moda Mod y mximo Max. Ejemplo del uso de un generador triangular, un exponencial y un normal en un programa para GPSS/H

Instrucciones de bloque (SPLIT, ASSEMBLE, QTABLE, ASSIGN) SPLIT La instruccin SPLIT permite simular que una pieza o un paquete se desensambla en varios que lo componen, su sintaxis es: SPLIT A,B,C,D,E,F,G,H

L.I. Jos Raymundo Ceja Vzquez

14

Unidad I Software de Simulacin Donde A es el nmero de transacciones creadas en la cascada (cuantas transacciones saldrn despus de que alguna ingrese en el bloque SPLIT. En B se coloca la direccin del bloque al cual se dirige la cascada creada y para los operandos subsecuentes, vase el manual de referencia correspondiente a la versin que posea ya que estn fuera del nivel de este curso.

ASSEMBLE La instruccin ASSEMBLE permite simular el ensamble de piezas o construccin de paquetes ya que sirve para unir varias transacciones en una sola que represente el paquete. Su sintaxis es: ASSEMBLE A Donde A sirve para colocar el nmero de transacciones que constituyen el paquete.

ASSIGN Esta instruccin de bloque reemplaza, incrementa o decrementa el contenido de los parmetros de la transaccin que ingrese a el. Su sintaxis es: ASSIGN A,B,C Donde A es un operando donde se coloca el nmero del parmetro donde se colocar la informacin. Si esta seguido de un + o un - se indica que el valor que este presente se ha de decrementar o incrementar en las unidades especificadas en A. El parmetro B se ocupa para colocar el valor que se emplea para reemplazar al valor actual a travs de la operacin especificada en A. El operando C se ocupa para colocar una funcin modificadora que altera al operando B, como se ilustra en los siguientes ejemplos. Ejemplos: ASSIGN 2,7 Reemplaza el contenido actual del parmetro 2 (P2) con el valor 7. ASSIGN 2+,4 Reemplaza el contenido en P2 sumndole al valor actual 4 unidades. ASSIGN 3-,10,FN$EXP Reemplaza el contenido en P3 con el resultado de restarle al valor actual de P3 la cantidad 10*FN$EXPO.

Instruccin de control RESET La instruccin de control RESET se emplea para borrar todos los resultados estadsticos de la simulacin pero conservando la situacin actual de las transacciones en los bloques, se emplea despus de START. Se puede emplear para simular el precalentamiento de un sistema (warm-up). El warm-up de un sistema es necesario cuando el sistema a simular no esta vaco al iniciar sus operaciones (que se desean simular). Por ejemplo: una fbrica que produce muebles guardar los muebles inconclusos despus de una jornada de trabajo para proseguir con ellos a la jornada siguiente, por lo tanto si se esta simulando este sistema tal vez no sea adecuado tomar estadsticas cuando el sistema inicia como vaco, por tanto, para no tomar en cuenta las estadsticas del inicio puede usar RESET. Su sintaxis es: L.I. Jos Raymundo Ceja Vzquez 15

Unidad I Software de Simulacin RESET Esta instruccin no posee operandos, se usa en conjunto con START Instruccin de control CLEAR Esta es una instruccin de control que borra todos los resultados estadsticos colectados a la fecha y adems borra la situacin actual de las transacciones. Con ella es posible simular las repeticiones necesarias de un programa hasta que se estabilice (vase el material del parcial II de este curso). Su sintaxis es: CLEAR Esta instruccin no posee operandos, se usa en conjunto con START de la siguiente manera:

L.I. Jos Raymundo Ceja Vzquez

16

Вам также может понравиться