SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Diseños de Experimento con GPSS Introducción GPSS soporta tres tipos distintos de diseños de experimentos: Los experimentos de Exploración (Screening) Los experimentos de Optimización Los experimentos de Usuario
Los experimentos de Exploración Los resultados de un diseño de exploración muestran los factores que no son significativos y les da menor prioridad en los estudios adicionales. Además, la sensibilidad de los resultados de un experimento de uno o más de los factores explorados da una alerta sobre las hipótesis hechas que deben ser verificadas cuidadosamente. GPSS tiene un generador de experimentos automático que puede crear un diseño de experimentos para el usuario. Para hacerlo hay que completar un diálogo que se accede desde el menú Edit de la ventana Principal. Esto hace que se inserte un código PLUS en el objeto modelo. Opcionalmente este proceso cargará una tecla de funciones con el comando apropiado CONDUCT para la simulación. simulación. Después de esto, se crea el objeto simulación simulación (Ctrl+Alt+S), se comienza el experimento (F11), y se analizan los resultados.
Los experimentos de Optimización La optimización se hace a través de una superficie de respuesta, que es una ecuación que predice los resultados de la simulación. Es frecuentemente deseable determinar una superficie de respuesta para resumir resultados, dar una metodología predictiva, cuantificar la sensibilidad de los resultados a las entradas numéricas y otras hipótesis y determinar los niveles óptimos del tratamiento. Se puede generar una superficie de respuesta automáticamente basada en la entrada desde el diálogo del usuario. El experimento resultante intenta usar el método de etapas ascendentes y un método de exploración local para encontrar un valor óptimo. Si es favorable, se informa la descripción matemática del mejor ajuste de la superficie de respuesta y las condiciones óptimas predichas en el Journal Window del objeto simulación. Como con los experimentos de exploración, la generación automática de un experimento de optimización comienza en el menú Edit del GPSS World. Cuando se selecciona un objeto modelo, se puede cliquear en Edit / Insert Experiment / Optimizing... para abrir el diálogo. Cuando se lo completa y se edita el procedimiento de corrida, el GPSS World Página 1 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
inserta el Experimento PLUS terminado en su modelo y opcionalmente carga el comando CONDUCT apropiado en la tecla función F12. Después, se debe comenzar el experimento, creando el objeto Simulación (Ctrl+Alt+S) y presionando F12.
Los experimentos de Usuario Finalmente encontramos los experimentos que son realizados por el usuario, éstos son más flexibles pero deben ser creados y corridos de manera manual por el mismo. El usuario debe dar los datos para el procedimiento de la biblioteca ANOVA del GPSS, que analizará los experimentos hasta 6 factores y incluyendo interacciones de 2 a 3 factores. El principal requisito del GPSS ANOVA es pasarle el nombre de la matriz de GPSS donde se guardaron los resultados del experimento.
Página 2 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Creando un experimento de Exploración Los experimentos de Screening como ya se dijo pueden ser creados automáticamente por GPSS. Como ejemplo de aplicación podemos tomar el Ejercicio 7 de la Guía Practica 5, Parte 2. Para ello debemos abrir primero el modelo. Luego de abrir el modelo podemos insertar un experimento de exploración:
Y completar la información sobre el nombre del experimento a generar, el nombre del procedimiento que va a invocar las diferentes ejecuciones, el nombre y los posibles valores de las variables a utilizar como factores, el tipo de diseño, ya sea completo(2 k), Half(2k-1), Quarter(2 k-2), etc; y finalmente la expresión que definirá la variable de salida del experimento.
Página 3 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Esto agregará al código original, toda la codificación en PLUS para definir y correr el experimento, y mostrar sus resultados. Luego creamos la simulación:
Página 4 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Y ejecutamos el experimento con F11 ó utilizando el comando CONDUCT:
Página 5 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Finalmente podemos observar el resultado en el reporte de GPSS:
Página 6 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Creando un experimento de Usuario Introducción EL objetivo inmediato para un diseño de experimentos de usuario en GPSS es proveer los datos para la Matriz de Resultados de la cual el procedimiento ANOVA tomará los datos. Para estoy utilizaremos el lenguaje PLUS que provee el programa para poder realizar las distintas corridas con las variaciones de los niveles. Se debería comenzar seleccionando los factores que utilizaremos para el estudio y la cantidad de niveles que asignaremos a cada uno. Cada uno de ellos lo asignaremos a una dimensión de la Matriz de Resultados. Normalmente se utiliza la última dimensión para las repeticiones.
El lenguaje PLUS PLUS es el lenguaje que nos permitirá la definición del experimento. Nació como una fuente para realizar subrutinas programables para ser accedidas durante las simulaciones. Con el tiempo evolucionó hasta convertirse en un lenguaje de control que puede dirigir los detalles de las corridas de los experimentos y reportar los resultados. Un experimento es un Procedimiento PLUS en donde la palabra clave PROCEDURE es reemplazada por la palabra EXPERIMENT. Los experimentos pueden hacer todo lo que un procedimiento puede hacer, y bastante más. Los comandos más importantes que tenemos que conocer para poder realizar experimentos de usuario con PLUS son: EXPERIMENT Descripción: el procedimiento PLUS que nos permite definir un experimento de usuario. Sintaxis:
EXPERIMENT NombreExperimento (Parametro1,Parametro2,…) BEGIN … END;
NombreExperimento: Nombre del experimento que vamos a definir. Parametro1, Parametro2, …: son los valores que vamos a pasar al experimento por medio del comando CONDUCT.
Página 7 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
PROCEDURE Descripción: nos permite definir un procedimiento PLUS (función). Sintaxis:
PROCEDURE NombreProcedimiento (Parametro1,Parametro2,…) BEGIN … END;
NombreProcedimiento: Nombre del procedimiento que vamos a definir. Parametro1,Parametro2,…: son los valores que vamos a pasar al procedimiento cuando lo llamemos. DOCOMMAND Descripción: traduce el argumento entre paréntesis y lo envía a la simulación para ser
ejecutado. Solo puede ser utilizado en procedimientos o experimentos. Sintaxis:
DOCOMMAND (“NombreComando”)
NombreComando: Lo que vamos a ejecutar en la simulación. WHILE DO Descripción: permite realizar LOOPS dentro del ex perimento. Sintaxis:
WHILE (Condicion) DO BEGIN … END;
Condicion: condición de corte del loop While.
La Matriz de Resultados En GPSS una entidad matriz puede tener hasta seis dimensiones, si bien no hay limitaciones para el tamaño de cada dimensión más allá de la cantidad de memoria disponible en la PC. Hay que tener en cuenta que al tener seis dimensiones nos vemos limitados a esa misma cantidad de factores (Cinco factores en caso de utilizar repeticiones). La matriz puede verse tanto en la pantalla de Matriz como en el reporte estándar, pero hay que tener en cuenta que solo 2 dimensiones pueden ser vistas al mismo tiempo en el programa.
Página 8 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Ahora bien, para un experimento la fuente primaria de datos de una simulación es guardada, como se dijo antes, en la Matriz de Resultados. Para que el procedimiento ANOVA pueda analizar los resultados de un experimento es necesario completar esta matriz correctamente. Para inicializar la matriz de resultados utilizamos el comando INITIAL de la siguiente manera: INITAL NombreMatriz,UNSPECIFIED
Este comando causa que todos los elementos de la matriz sean establecidos en el estado UNESPECIFIED. Normalmente estableceremos este comando fuera del experimento de GPSS. Establecer de esta manera la matriz también nos permite que el experimento pueda ser guardado y reseteado sin repetir corridas que ya han sido hechas.
Estructura de un Experimento de Usuario El experimento lo deberemos estructurar de manera que al inicio definamos la matriz de resultados y la inicialicemos. Luego de hecho esto lo que debemos hacer es definir el Experimento en sí, el cual normalmente estructuraremos en bloques anidados, uno por cada factor, dentro de los cuales iremos incrementando los niveles de los factores hasta que en el mas interior de los WHILE guardaremos el valor que deseamos en la matriz resultado. Podremos definir además funciones adicionales que nos permitan mayor claridad a la hora de estructurar el experimento. Por último insertaremos la llamada al procedimiento ANOVA, pasándole como argumento la matriz, para que de esta manera en el reporte salga el resultado.
El procedimiento de librería ANOVA El procedimiento ANOVA de GPSS puede manejar análisis de varianza considerando hasta seis factores y las combinaciones de hasta 3 de ellos. ANOVA Descripción: el procedimiento ANOVA es la herramienta que nos brinda GPSS para realizar
el análisis de varianza. Sintaxis:
ANOVA (MatrizResultado,Repeticiones,Interacciones)
MatrizResultado: Nombre de la matriz en donde se encuentran los datos para realizar el ANOVA (requerido). Página 9 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Repeticiones: la dimensión de la matriz en donde se encuentran las repeticiones de las corridas (opcional). En caso de no utilizar repeticiones esta columna se deja en 0. Interacciones: este argumento controla la cantidad de interacciones entre factores a ser incluida en la salida del ANOVA. El valor 1 en caso de no incluir interacciones. Y los valores 2 y 3 para interacciones de 2 y 3 factores. GPSS solo soporta hasta interacciones entre 3 factores. La salida del procedimiento es la siguiente:
En la misma podemos observar todos los datos pertinentes para obtener la significancia de los factores.
Ejecutar el Experimentos Para poder ejecutar los experimentos que hemos realizado primero deberemos armar la simulación, lo que permite que GPSS tome cuenta de los experimentos que hemos realizado. Para ello vamos a el menú Command / Create Simulation o simplemente utilizamos el atajo Ctrl+Alt+S. GPSS nos mostrará por la salida que se han registrado los procedimientos que definimos. Página 10 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
Luego de esto deberemos ir al menú Command nuevamente pero esta vez seleccionaremos Conduct, y llamaremos al procedimiento del experimento con los parámetros que seteamos, en el caso del ejemplo:
Y luego se ejecutará el experimento y podremos analizar la salida del ANOVA.
Ejemplo de un Experimento con dos Factores A continuación se incluye un experimento sencillo de 2 factores, el cual puede ser corrido directamente en GPSS. ;======================================================================== ; Matriz Inicial ;======================================================================== MatrizRdo MATRIX ,3,3,3 INITIAL MatrizRdo,UNSPECIFIED MatrizRdo_Residuals TABLE ,-5,1,10 ;======================================================================== ; Experimento ;======================================================================== EXPERIMENT Experimento(MinSala,MaxSala,MinEmp,MaxEmp) BEGIN DOCOMMAND("SHOW """" "); DOCOMMAND("SHOW (""**** Test de ANOVA con 2 Factores****"")"); DOCOMMAND("SHOW """" "); NF1 = 1; CapaEspera = MinSala;
Página 11 de 12
SIMULACIÓN Ingeniería Sistemas de Información
Unidad 7
WHILE ((CapaEspera <= MaxSala)) DO BEGIN NF2 = 1; CantEmpleados = MinEmp; WHILE ((CantEmpleados <= MaxEmp)) DO BEGIN Repeticion = 1; WHILE (Repeticion <= 3) DO BEGIN HacerLaCorrida(CapaEspera,CantEmpleados,Repeticion); MatrizRdo[NF1,NF2,Repeticion] = QT$COLA_TOTAL; Repeticion = Repeticion + 1; END; NF2 = NF2 + 1; CantEmpleados = CantEmpleados + 1; END; NF1 = NF1 + 1; CapaEspera = CapaEspera + 1; END; DOCOMMAND("SHOW """" "); ANOVA(MatrizRdo,3,2); DOCOMMAND("SHOW """" "); END; ;======================================================================== ; Función Auxiliar ;======================================================================== PROCEDURE HacerLaCorrida(CapEspera,CantEmpleados,NumRepeticion) BEGIN TEMPORARY SemillaAleatoria1; SemillaAleatoria1 = 11 # NumRepeticion; DOCOMMAND("CLEAR OFF"); DOCOMMAND(Catenate("RMULT ",SemillaAleatoria1)); DOCOMMAND(Catenate("ESPERA STORAGE ",CapEspera)); DOCOMMAND(Catenate("EMPLEADOS STORAGE ",CantEmpleados)); DOCOMMAND("START 1,NP"); END; ;======================================================================== ; Código GPSS ;======================================================================== GENERATE 120,100 QUEUE COLA_TOTAL QUEUE COLA_CALLE ENTER ESPERA DEPART COLA_CALLE ENTER EMPLEADOS LEAVE ESPERA DEPART COLA_TOTAL ADVANCE 240,80 LEAVE EMPLEADOS TERMINATE GENERATE 18000 TERMINATE 1 Página 12 de 12