Está en la página 1de 177

SIMULACIÓN

Ing. David Sergio Castillón Domínguez

Docente del departamento de Sistemas y Computación

Instituto Tecnológico de Piedras Negras

Elaboración de un libro de texto: Simulación

Reporte Final de año sabático

Dictamen No. AS-1-166/2013 (14-ENE-2013 / 13-ENE-2014)

Enero - 2014
CONTENIDO
1.- Introducción a la simulación

1.1.- DEFINICIONES E IMPORTANCIA DE LA SIMULACIÓN EN LA INGENIERÍA. 1


1.2.- CONCEPTOS BÁSICOS DE SIMULACIÓN. 2
1.3.- METODOLOGÍA DE LA SIMULACIÓN. 4
1.4.- MODELOS Y CONTROL. 5
1.5.- ESTRUCTURA Y ETAPAS DE ESTUDIO DE SIMULACIÓN. 7
1.6.- ETAPAS DE UN PROYECTO DE SIMULACIÓN. 8
1.7.- ELEMENTOS BÁSICOS DE UN SIMULADOR DE EVENTOS DISCRETOS. 10

2.- Números pseudoaleatorios

2.1.- MÉTODOS DE GENERACIÓN DE NÚMEROS PSEUDOALEATORIOS. 13


2.2.- PRUEBAS ESTADÍSTICAS. 16
2.2.1.- De Uniformidad. (Chi-cuadrada, Kolmogorov-Smirnov). 17
2.2.2.- De Aleatoriedad. (corridas arriba y debajo de la media y longitud de 22
corridas).
2.2.3.- De Independencia. (Autocorrelación, prueba de huecos, prueba de 25
póquer, prueba de Yule).
2.3.- Método de Monte Carlo. 31
2.3.1.- Características. 32
2.3.2.- Aplicaciones. 33
2.3.3.- Solución de problemas. 33

3.-
3.- Generación de variables aleatorias

3.1.- CONCEPTOS BÁSICOS. 37


3.2.- VARIABLES ALEATORIAS DISCRETAS. 37
3.3.- VARIABLES ALEATORIAS CONTINUAS. 45
3.4.- MÉTODOS PARA GENERAR VARIABLES ALEATORIAS. 51
3.4.1.- Método de la transformada inversa. 51
3.4.2.- Método de convolución. 52
3.4.3.- Método de composición. 52
3.5.- PROCEDIMIENTOS ESPECIALES. 54
3.6.- PRUEBAS ESTADÍSTICAS (BONDAD DE AJUSTE). 54
4.-
4.- Lenguajes de Simulación

4.1.- LENGUAJES DE SIMULACIÓN Y SIMULADORES. 55


4.2.- APRENDIZAJE Y USO DE LENGUAJE DE SIMULACIÓN O UN SIMULADOR. 58
4.3.- CASOS PRÁCTICOS DE SIMULACIÓN. 67
4.3.1.- Problemas con líneas de espera. 67
4.3.2.- Problemas con sistemas de inventario. 84
4.4.- VALIDACIÓN DE UN SIMULADOR. 102
4.4.1.- Pruebas paramétricas (validación del modelo, pruebas de hipótesis y 108
pruebas de estimación.
4.4.2.- Pruebas no paramétricas. 116

5.-
5.- Proyecto integrador

5.1.- ANÁLISIS, MODELADO Y SIMULACIÓN DE UN SISTEMA O SUBSISTEMA DE


SERVICIOS O PRODUCTIVO DE UNA EMPRESA PARA DETECTAR LAS MEJORAS 117
POSIBLES A REALIZAR.
5.1.1.- Manufactura. 117
5.1.2.- Control de calidad. 132
5.1.3.- Supermercado. 142

Apéndice A

Distribución Normal (Z) 157


Distribución chi-cuadrada (࣑૛ ) 158
Tabla K-S (ࢊࢻ,࢔ ) 159

Apéndice B

Instrucciones GPSS para la definición de variables. 160


Instrucciones GPSS para la lógica del programa. 163

REFERENCIAS BIBLIOGRÁFICAS. 174


1
Introducción a la simulación

1.1.- DEFINICIONES E IMPORTANCIA DE LA SIMULACIÓN EN LA INGENIERÍA.

La simulación es una de las herramientas más importantes para analizar el diseño y


operación de sistemas o procesos complejos. Desde el renacimiento se han construido
modelos, pero la palabra simulación se usa a partir de 1940 cuando los científicos Von
Neuman y Ulam trabajaron en el proyecto Monte Carlo, durante la segunda guerra
mundial, resolviendo problemas de reacciones nucleares cuya solución experimental
hubiera sido muy cara y el análisis matemático demasiado complicado.

Con el uso de la computadora en experimentos de simulación, surgen múltiples


aplicaciones resultando en una gran cantidad de problemas teóricos y prácticos,
presentando la posibilidad de investigar aplicaciones importantes de simulación en
diversas áreas tales como: física, matemáticas, economía, administración,
investigación de operaciones. También sugiere algunos métodos alternativos para
resolver problemas teóricos y prácticos que surgen al efectuar simulaciones reales.

La palabra simulación tiene varias definiciones aceptadas. Thomas H. Naylor la define


como:

Simulación es una técnica numérica para conducir experimentos en una computadora digital. Estos
experimentos comprenden ciertos tipos de relaciones matemáticas y lógicas, las cuales son necesarias
para describir el comportamiento y la estructura de sistemas complejos del mundo real a través de
largos períodos de tiempo.

Esta definición muestra un sentido amplio en el cual incluye desde una maqueta, hasta
un sofisticado programa computacional. En un sentido más estricto, H. Maisel y G.
Gnugnoli define a la simulación de la siguiente manera:

Es una técnica numérica para realizar experimentos en una computadora digital. Estos experimentos
involucran ciertos tipos de modelos matemáticos y lógicos que describen el comportamiento de
sistemas de negocios, económicos, sociales, biológicos, físicos o químicos a tráves de largos períodos
de tiempo.

Otra definición de simulación la realiza Robert E. Shannon como:

1
Es el proceso de diseñar y desarrollar un modelo computarizado de un sistema o proceso y conducir
experimentos con este modelo con el propósito de entender el comportamiento del sistema o evaluar
varias estrategias con las cuales se puede operar el sistema.

Todas estas definiciones no especifican si los sistemas modelados son continuos o


discretos. Pero es necesario subrayar que nos enfocaremos exclusivamente al diseño,
análisis y validación de sistemas dinámicos discretos. Geofrey Gordon aborda a detalle
el análisis y estudio de sistemas dinámicos continuos en su libro titulado System
Simulation.

1.2.- CONCEPTOS BÁSICOS DE SIMULACIÓN.

La simulación está basada en la teoría de la probabilidad y la estadística, en


matemáticas, en ciencias computacionales, etc. Por lo que es conveniente mencionar
algunos conceptos que intervienen en el desarrollo y la formulación del modelo de
simulación.

1.2.1.- GENERACIÓN DE VARIABLES ALEATORIAS NO-UNIFORMES.

Si el modelo es estocástico (probabilístico) debe ser capaz de generar variables


aleatorias no uniformes de distribuciones de probabilidad teóricas o empíricas. Las
cuales son obtenidas por un generador de números uniformes y una función que
transforme estos números en valores de la distribución de probabilidad deseada. Se
han generado una gran cantidad de generadores para las distribuciones de
probabilidad más comunes como las distribuciones normal, exponencial, poisson,
erlang, binomial, gamma, beta, F, t, etc.

1.2.2.- LENGUAJES DE PROGRAMACIÓN.

En un momento determinado será necesario construir el modelo computacional. En


esta etapa se tienen dos cursos de acción: 1) Desarrollar el software requerido para
estudios de simulación (Lenguaje de propósito general) o 2) Conseguir un software
(Lenguaje de propósito específico). Este último obliga a la determinación del más
adecuado para el problema a resolver.

Para desarrollar el software requerido es necesario contar con la descripción del


sistema en términos de relaciones lógicas de sus variables y los diagramas de flujo
correspondiente, como fuente de datos para el modelado en términos de un lenguaje
de programación de propósito general o un paquete de propósito específico.

1.2.3.- CONDICIONES INICIALES.

La mayoría de los modelos de simulación estocásticos se ejecutan con la idea de


estudiar al sistema en una situación de estado estable. Pero todos estos modelos
presentan en su etapa inicial estados transitorios que no son típicos del estado estable.

2
Obligando a establecer claramente las acciones o alternativas para resolver este
problema. Algunos expertos recomiendan resolver este problema:

1. Usar un tiempo de corrida lo suficientemente grande de modo los períodos


transitorios sean relativamente insignificantes con respecto a la condición de
estado estable.
2. Excluir una parte apropiada de la parte inicial de la corrida.
3. Utilizar simulación regenerativa.

De las tres alternativas, la última es la que presenta menos desventajas. Las otras
tienen la desventaja de ser excesivamente caras.

1.2.4.- TAMAÑO DE LA MUESTRA.

El tamaño de la muestra (número de corridas en la computadora) es un factor principal


a considerar en un estudio de simulación. La selección de un tamaño de muestra
apropiado que asegure un nivel de precisión y que minimice el costo de operación del
modelo, es difícil pero importante. La información proporcionada por el experimento
de simulación sería la base para decidir con respecto a la operación del sistema real,
esta información debe ser exacta y precisa cuanto sea posible, y conocer el grado de
imprecisión de la información proporcionada. Por consecuencia, es necesario que un
análisis estadístico se realice para la determinación del tamaño de muestra requerido.

El tamaño de la muestra se puede obtener de dos maneras:

• Previa o independientemente de la operación del modelo.


• Durante la operación del modelo y basado en los resultados arrojados por el
modelo.

Para esta última alternativa se utiliza la técnica estadística de intervalos de confianza.

1.2.5.- DISEÑO DE EXPERIMENTOS.

El diseño de experimentos es un tema relevante en los experimentos de simulación, la


cual ha sido reconocida, pero rara vez se aplica. Estos diseños pueden ser de varios
tipos dependiendo de los propósitos específicos planteados. Existen varios tipos de
análisis que pueden ser requeridos, los más comunes son:

1. Comparación de las medias y varianzas de las alternativas analizadas.


2. Determinación de la importancia y el efecto de diferentes variables en los
resultados de la simulación.
3. Búsqueda de los valores óptimos de un conjunto de variables.

Para la realización del primer análisis, el cual comúnmente se le conoce como diseño
de experimentos de un factor simple, es necesario tomar en cuenta el tamaño de la

3
muestra, condiciones iniciales y la presencia o ausencia de auto correlación. Para el
segundo tipo de análisis, existe literatura suficiente que explica el tema de análisis de
varianza y técnicas de regresión como medios para evaluar la importancia y el efecto
de varias variables en los resultados de operación de un sistema. Para el tercer tipo de
análisis, generalmente se requiere utilizar algoritmos heurísticos de búsqueda como
los algoritmos de Hooke y Jeeves.

1.3.- METODOLOGÍA DE LA SIMULACIÓN.

La técnica de simulación generalmente es vista como un método de último recurso, los


avances recientes en las metodologías de la simulación y la disponibilidad de software
en el mercado, han generado que las técnicas de simulación sea una herramienta
utilizada en el análisis de sistemas. Thomas H. Naylor sugiere que un estudio de
simulación es recomendable por las siguientes ventajas que proporciona.

1.3.1.- VENTAJAS.

• Se puede estudiar el efecto de cambios internos y externos del sistema, al


hacer alteraciones en el modelo del sistema y observar los efectos de las
alteraciones en el comportamiento del sistema.
• Una observación detallada del sistema que se está simulando conduce a
comprender mejor el sistema y sugerir estrategias para mejorar la operación y
la eficiencia del sistema.
• La técnica de simulación es utilizada como un instrumento pedagógico para
proporcionar al estudiante las habilidades básicas en análisis estadístico,
análisis teórico, etc.
• La simulación de sistemas complejos ayuda a comprender la operación del
sistema, detectar las variables significativas que interactúan en el sistema y
comprender las interrelaciones entre las variables.
• Se utiliza la técnica de simulación para experimentar nuevas situaciones, en las
cuales se tiene poca o ninguna información, anticipándose a resultados no
previstos.
• También es usada para entrenamiento del personal. En ocasiones es posible
tener una representación de un sistema, y es posible entrenar y generar
experiencia a cierto tipo de personal.
• La simulación es utilizada también cuando nuevos elementos son introducidos
al sistema, para anticipar cuellos de botella o algunos problemas que pueden
surgir en el comportamiento del sistema.

1.3.2.- DESVENTAJAS.

La técnica de simulación requiere de equipo computacional y recursos humanos


costosos, además generalmente se requiere de tiempo para que el modelo se

4
desarrolle y perfeccione, debido a la gran cantidad de datos significativos que no se
encuentran disponibles, requiriendo un análisis profundo para su identificación.

También requiere de expertos para realizar el modelado y un grupo interdisciplinario


para soportar todas las etapas del estudio. Desafortunadamente los directivos no
comprenden la técnica y dificulta la autorización de estos proyectos.

1.4.- MODELOS Y CONTROL.

1.4.1.- DEFINICIÓN DE SISTEMA.

La palabra sistema es utilizada usualmente para definir un conjunto de cosas que están
interrelacionadas para cumplir con un objetivo. Esta forma de contemplar un todo y no
las partes aisladamente es lo que es conocido como el enfoque sistémico. Un sistema
está constituido por varios objetos los cuales poseen propiedades.

Un sistema puede ser definido matemáticamente como un complejo de elementos


interactuantes. Donde la interacción significa que elementos, p, están en relaciones, R,
de suerte que el comportamiento de un elemento p en R es diferente de su
comportamiento con R´. Si los comportamientos R y R´ no difieren, no hay interacción,
y los elementos se comportan independientemente con respecto a las relaciones R y
R´.

El sistema es un modelo de naturaleza general, esto es, un análogo conceptual de


algunos rasgos muy universales de entidades observadas. El uso de modelos o
construcciones analógicas es práctica general de la ciencia, y es, asimismo fundamento
de la simulación por computadora. La diferencia con respecto a las disciplinas
tradicionales no es esencial sino que reside más bien en el grado de generalidad (o
abstracción); el sistema alude a características muy generales compartidas por gran
número de entidades que acostumbraban ser tratadas por diferentes disciplinas.

Un sistema puede ser definido como un conjunto de elementos interrelacionados


entre sí y con el medio circundante. Existen dos modos de describir un sistema: la
interna y la externa. La interna define a un sistema con un conjunto de n medidas,
llamadas variables de estado. La descripción interna del sistema es esencialmente
estructural procura describir el comportamiento del sistema en términos de variables
de estado y de su interdependencia.

La descripción externa del sistema es en términos de entradas y salidas; su forma


general son funciones de transferencia que vinculan entrada y salida. Lo típico es que
se consideren lineales y representados por conjuntos discretos de valores (las
decisiones de si o no). Este es el lenguaje de la tecnología del control; es característico

5
de la descripción externa el uso de términos de comunicación (intercambio de
información entre sistema, medio y dentro del sistema) y de control de la función del
sistema con respecto al medio (retroalimentación). La descripción externa es
funcional, describe el comportamiento del sistema por su interacción con el medio.

Las descripciones tanto internas como externas del sistema coinciden en gran medida
con descripciones mediante funciones continuas o discretas.

1.4.2.- DEFINICIÓN DE MODELO.

Un modelo es definido como una representación de la realidad por medio de


abstracciones, los modelos enfocan ciertas partes importantes del sistema (las que
interesan al modelo) restando importancia a otras partes. Los modelos son creados
usando herramientas de modelado.

Un modelo es un sistema de elementos que reproduce determinados aspectos,


relaciones y funciones del objeto que se investiga; desarrollado en un nivel avanzado
del conocimiento, en el que recopila las características generales del objeto
investigado y las unifica en un concepto global, del cual se puede visualizar el objeto en
un momento dado El modelo es una construcción imaginaria y arbitraria de un
conjunto de objetos y fenómenos con el propósito de estudiar el comportamiento de
de dichos objetos o fenómenos. Son incompletos. Los modelos se pueden dividir en
abstractos y materiales. Donde los materiales se pueden subdividir en icónicos y
analógicos o simbólicos.

Los modelos son simplificaciones o representaciones idealizadas de los sistemas que se


suponen existen en la naturaleza. Los modelos pueden ser de dos tipos: matemáticos o
físicos.

Los modelos de simulación se pueden clasificar en: determinísticos, estocásticos,


estáticos, dinámicos y a escala. En los modelos determinísticos las variables no pueden
ser tomadas al azar y las relaciones entre estas variables deben ser exactas o no deben
estar en función de una probabilidad. En cambio los modelos estocásticos al menos
una variable debe estar en función de una probabilidad; por lo general son utilizados
para la generación de grandes series de muestreos, y son aplicadas en investigaciones
científicas. Los modelos estáticos no toman en consideración el tiempo invertido en el
proceso, y están encaminadas a maximizar o minimizar. En cambio los modelos
dinámicos si consideran la variación del tiempo. Los modelos a escala sirven para
realizar demostraciones del proceso, como también para realizar nuevos
experimentos.

6
1.4.3.- DEFINICIÓN DE CONTROL.

Existen varias definiciones de control a continuación se presentan algunas de ellas:

• Verificar sí todo ocurre de conformidad con el plan adoptado, con las


instrucciones emitidas y con los principios establecidos. Tiene como fin señalar
las debilidades y errores a fin de rectificarlos e impedir que se produzcan
nuevamente.
• El proceso de medir los actuales resultados en relación con los planes,
diagnosticando la razón de las desviaciones y tomando las medidas correctivas
necesarias.
• El proceso para determinar lo que se está llevando a cabo, valorización y, si es
necesario, aplicando medidas correctivas, de manera que la ejecución se
desarrolle de acuerdo con lo planeado.
• Tiene como objetivo cerciorarse de que los hechos vayan de acuerdo con los
planes establecidos.
• La medición de lo logrado en relación con lo estándar y la corrección de las
desviaciones, para asegurar la obtención de los objetivos de acuerdo con el
plan.
• Es un proceso regulador cuya función es medir y evaluar el desempeño y si es
necesario se tomar acciones correctivas.

El control se emplea para mejorar la calidad, enfrentar los cambios que


constantemente se producen, mejorar la eficiencia, minimizar costos y facilitar el
trabajo en equipo. Un control se basa en la realización de las siguientes actividades:
planear, organizar, hacer, evaluar, mejorar. Para alcanzar una meta es necesario contar
con una planeación y una adecuada organización para conocer lo que debe hacerse y
cómo hacerlo. El hacer es poner en práctica lo planeado. La evaluación es la
interpretación y la comparación de la información obtenida para la toma de
decisiones. La mejora es la puesta en práctica de medidas que resuelven desviaciones
que hacen perder el equilibrio al sistema.

1.5.- ESTRUCTURA Y ETAPAS DE ESTUDIO DE SIMULACIÓN.

Según los expertos la manera de estructurar el estudio de simulación es el principio


básico de una organización de las actividades que se requieren desarrollar en este
proyecto. Las actividades a desarrollar en este estudio pueden estructurarse en etapas
o fases que deben realizar para culminar el estudio de simulación. Las etapas en las
cuales está organizado el desarrollo de un modelo computacional (ciclo de vida del
desarrollo de sistemas) los expertos coinciden en: Análisis, diseño, construcción,
implementación y mantenimiento.

7
Este enfoque para la construcción de un software, únicamente está enfocado al
sistema mismo, desde su formulación hasta su mantenimiento, pero no interviene la
parte operativa del mismo. En eso difiere de un modelo de simulación, el cual es
visualizado como un paquete que engloba desde su concepción hasta su operación.
Los pasos necesarios para realizar un estudio de simulación se requiere: 1) Definir el
sistema, 2) Formular el modelo, 3) Recopilar los datos, 4) Implementar el modelo en la
computadora, 5) Validar, 6)Experimentar, 7) Interpretar, y 8) Documentar.

Definir el sistema

Formular el modelo
D
o
c Recopilar datos
u
m
Implementar el modelo en la computadora
e
n
t Validar el modelo
a
r
Experimentar con el modelo

Interpretar los resultados del modelo

Figura 1.1.- Etapas de un proyecto de simulación

1.6.- ETAPAS DE UN PROYECTO DE SIMULACIÓN.

1.6.1.- DEFINIR EL SISTEMA.

Para definir exactamente el sistema que se requiere simular, se requiere de llevar a


cabo un análisis preliminar con el fin de determinar la interacción del sistema con
otros sistemas, las restricciones del sistema, las variables que interactúan dentro del
sistema y sus interrelaciones, las medidas de efectividad que se van a utilizar para
definir y estudiar el sistema y los resultados que se esperan obtener del estudio.

1.6.2.- FORMULAR EL MODELO.

Una vez definido los resultados que se esperan obtener del estudio, el siguiente paso
es definir y construir el modelo con el cual se obtendrán los resultados deseados. En la
formulación del modelo es necesario definir todas las variables que forman parte de él,

8
sus relaciones lógicas y los diagramas de flujo que describan en forma completa al
modelo.

1.6.3.- RECOPILAR LOS DATOS.

La facilidad o dificultad para obtener los datos, puede influir el desarrollo y la


formulación del modelo. Es importante definir con claridad y exactitud los datos que el
modelo requiere para la producción de los resultados deseados. Usualmente, los datos
requeridos se pueden obtener de registros históricos, de opiniones de expertos, o de la
experimentación.

1.6.4.- IMPLEMENTAR EL MODELO EN LA COMPUTADORA.

Con el modelo definido, el siguiente paso es decidir el lenguaje de programación a


utilizar ya sea uno de propósito general o un paquete de propósito específico, para
procesarlo en la computadora y obtener los resultados deseados.

1.6.5.- VALIDAR.

En esta etapa es posible detallar deficiencias en la formulación del modelo o en los


datos alimentados al modelo, siendo las formas mas comunes de validar el modelo las
siguientes:

1. La opinión de expertos sobre los resultados de la simulación.


2. La exactitud con que se predicen datos históricos.
3. La exactitud en la predicción del futuro.
4. La comprobación de falla del modelo de simulación al utilizar datos que hacen
fallar al sistema real.
5. La aceptación y confianza en el modelo de la persona que hará uso de los
resultados que arroje el experimento de simulación.

1.6.6.- EXPERIMENTAR.

La experimentación con el modelo se realiza después de que éste ha sido validado. La


experimentación consiste en generar los datos deseados y en realizar análisis de
sensibilidad de los índices requeridos.

1.6.7.- INTERPRETAR.

En esta etapa se interpretan los resultados que arroja la simulación, y en base a estos
se toma una decisión. Obviamente estos resultados obtenidos de la simulación ayudan
a soportar decisiones del tipo semi-estructurado, es decir, la computadora en sí no
toma la decisión, sino que la información que aporta ayuda a tomar mejores
decisiones, y sistemáticamente obtener mejores resultados.

9
1.6.8.- DOCUMENTAR.

Son requeridos dos tipos de documentación para hacer un mejor uso del modelo de
simulación. La primera es la documentación técnica y la segunda documentación es el
manual del usuario para facilitar la interacción y el uso del modelo desarrollado.

1.7.- ELEMENTOS BÁSICOS DE UN SIMULADOR DE EVENTOS DISCRETOS.

Los eventos discretos son las acciones o resultados de experimentos que tienen como
resultado un número entero. Los productos defectuosos en un embarque, las
personas que entran a un banco, o los estudiantes que aprueban una determinada
asignatura, son algunos ejemplos de los mismos. Estos eventos discretos son simulados
haciendo uso de distribuciones de probabilidad con parámetros dados previamente.
Estos parámetros son recopilados en el proceso de experimentación, y la distribución
de probabilidad es seleccionada dependiendo del tipo de comportamiento de las
muestras analizadas.

Los eventos continuos son números reales (parte entera y parte fraccionaria) que son
usualmente son características físicas tales como: peso, altura, tiempo, temperatura,
presión.

La simulación de eventos discretos es parte del modelo computacional que representa


la transformación de la entrada en salidas mediante una función de probabilidad
(proceso).

La simulación de un evento discreto describe en forma directa o indirecta la llegada de


un cliente, la espera para su atención, y el servicio proporcionado por el servidor para
después salir del sistema.

Este modelo computacional cuenta con tres elementos primordiales que son: entrada,
proceso y salida. En este análisis del modelo computacional, la entrada se representa
por una variable de tipo discreto (valores enteros). La salida está formada por un grupo
de valores que representan la información resultante del proceso de simulación, la
cual es utilizada para la toma de decisiones en el problema real. El proceso es el
elemento en el cual está representada la manera de transformar las entradas en
salidas. En este proceso está especificado el diseño de lógica del proceso, en el cual
interviene una o varias funciones de probabilidad.

10
2
Números pseudoaleatorios

El mundo real es muy raro que sea determinístico, al estudiar un sistema y sus
influencias externas como la llegada de clientes a un banco y el comportamiento del
sistema como el tiempo de servicio bancario tienen un comportamiento aleatorio o
probabilístico. En la construcción de un modelo de simulación bancario es necesario
reproducir los efectos aleatorios del sistema, por lo cual es necesario incursionar en la
generación de números aleatorios o pseudo aleatorios, como también la manera de
poderlos generar y probar que dichos números tengan la aleatoriedad deseada.

El tiempo de servicio bancario varía dependiendo del tipo de transacciones que el


cliente realice. Los datos históricos obtenidos en un banco tan sólo se puede recopilar
una muestra de una población desconocida, siendo estos datos limitados debido al
tiempo y los costos que se requieren, En ocasiones no existe realmente el sistema (un
banco que desea abrir una nueva sucursal) o la imposibilidad de obtener datos reales,
o la obtención de grandes volúmenes de datos que originan un procesamiento lento o
vuelve complejo el modelo a construir.

La obtención artificial de los datos del tiempo de servicio viene a simplificar el modelo,
partiendo de una muestra significativa. A continuación se incursiona en el estudio de la
aleatoriedad y las pruebas estadísticas para garantizar que se cuenta con un generador
confiable.

Un número aleatorio es el resultado de una variable al azar especificada por una


función de probabilidad. Cuando no se especifica una función de probabilidad, se
supone que sigue una distribución uniforme en el intervalo entre cero y uno.

Existen números aleatorios no uniformes los cuales pueden ser generados a partir de
números aleatorios uniformes. Por lo cual es importante enfocarse primero a la
generación de números aleatorios uniformes, para luego profundizar en la generación
de números aleatorios no uniformes.

Los números aleatorios uniformes son utilizados ampliamente en el proceso de


simulación para representar eventos tales como llegadas de clientes o servicio
proporcionado.

11
Existen tres maneras ampliamente conocidas: 1) Provisión externa, 2) la generación
interna basada en un proceso físico, y 3) la generación interna basada en una relación
de recurrencia.

1. Provisión Externa. Se usan tablas de números previamente calculados, se


requiere el almacenamiento de dichos números, un ejemplo son las Tablas
RAND. El Proyecto RAND inició después de la II Guerra Mundial por la Iniciativa
de la Compañía de Aviación Douglas ubicada en Santa Mónica California, con el
propósito de continuar las investigaciones de los científicos reclutados durante
la guerra. Las investigaciones fueron para la Fuerza Aérea de Estados Unidos de
Norteamérica y enfocadas exclusivamente a la seguridad nacional. A partir de
1948 el proyecto RAND se separó de La Compañía de aviación Douglas y se
convirtió en Rand Corporation, siendo por más de seis décadas una
organización sin fines de lucro dedicada a promover la ciencia y la educación
realizando análisis científico para hacer un mundo más seguro, saludable y más
próspero.
2. Generación interna basada en un proceso físico. En esta generación se requiere
conectar un dispositivo especializado a una computadora, ya que por medio de
este dispositivo pueda proporcionar los números aleatorios. Esta técnica de
generación es utilizada en simulaciones que requieren observar el ambiente
físico y usualmente se utilizan interfaz analógica - digital las cual requieren de
inversiones más costosas y tardan más tiempo en implementarse.
3. Generación interna basada en una relación de recurrencia. Es la generación
más utilizada en los procesos de simulación. Una relación de recurrencia es una
ecuación que define una secuencia recursiva donde cada término de la
secuencia es definida como una función de los términos anteriores. Las
relaciones de recurrencia son ampliamente utilizadas en la teoría de la
probabilidad.

GENERACIÓN DE NÚMEROS UNIFORMES

Provisión externa Generación interna basada en Generación interna basada en


un proceso físico una relación de recurrencia

Figura 2.1.- Maneras de generar números pseudo aleatorios uniformes

12
Para la generación de números aleatorios es necesario que tenga las siguientes
características:

• Que sean uniformemente distribuidos.


• Estadísticamente independientes.
• Reproducibles.
• Periodo Largo.
• Generados de manera rápida.
• Que no requiera gran capacidad de almacenamiento.

Por lo que es común utilizar la relación de recurrencia la cual cumple con estos
requisitos, aunque algunos autores han observado que dichos números son pseudo
aleatorios (no son puramente aleatorios) por haber sido generados por relaciones de
recurrencia apoyadas en reglas deterministas. A continuación se muestran varios
métodos de generación de números pseudo aleatorios uniformes.

2.1.- MÉTODOS DE GENERACIÓN DE NÚMEROS PSEUDOALEATORIOS.

Para generar números pseudo aleatorios basado en una relación de recurrencia


existen varios esquemas, siendo el de Derrick Henry Lehmer uno de los más utilizados
en las computadoras. En el año de 1940 Lehmer desarrolló el primer generador de
números pseudo aleatorios denominado “congruencial lineal”. Este matemático de la
Universidad de Berkeley en California dedicó gran parte de su vida al desarrollo
computacional del análisis numérico.

El generador congruencial lineal genera una secuencia de números pseudo aleatorios


en la cual el próximo número pseudo aleatorio es calculado a partir del último número
pseudo aleatorio generado. Es decir Xn+1 se deriva del número Xn.

Los generadores congruenciales lineales más populares son el congruencial mixto y el


congruencial multiplicativo.

2.1.1.- GENERADOR CONGRUENCIAL MIXTO.

El generador congruencial mixto utiliza la siguiente relación de recurrencia:

 =  +


Donde:

X0 = La semilla (X0 es mayor que cero)

a = el multiplicador (a es mayor que cero)

c = constante aditiva (c es mayor que cero)

13
m= módulo (m mayor que X0, m mayor que a, y m mayor que c)

Dado un valor inicial de X0, se calcula el valor X1, el cual es resultado de obtener el
residuo de dividir aX0 + c entre m. Siendo X1 un valor entre cero y m-1. Generalizado
entonces tenemos que m representa el número de valores posibles diferentes a ser
generados. Y así sucesivamente se generan X2 a partir de X1, y X3 a partir de X2, y así
hasta realizar la generación de los números requeridos. Pero no necesariamente una m
grande garantiza un periodo largo.

La secuencia de números generados tiene la particularidad de que son generados


considerando los valores dados de a, c, y m. Dependiendo de éstos valores el periodo
de la secuencia pudiera ser largo o corto.

El periodo de la secuencia de números generados, es crucial para considerarlos útiles


en una simulación. Si el periodo es muy corto, por ejemplo 4, la secuencia se repetirá
cada 4 números por ejemplo: 7,6,9,0,7,6,9,0,7,6,9,0,………,6,9,0,7 es la secuencia
generada con X0=7, a=7, c=7 y m=10.

Elección de los parámetros a,c,m y X0.

El Dr. Donald Knuth en los 60s propuso la regla para la selección de a, c, y m y X0, lo
cual arroja una buena secuencia de números. Hoy en día los generadores más
eficientes tienen m = 232 para computadoras de 32 bits y m= 264 para computadoras de
64 bits, debido a que es el valor máximo para calcular la operación de módulo debido a
truncamiento. La siguiente tabla muestra los parámetros utilizados por las funciones
rand() predefinidas en los principales compiladores comerciales.

Fuente m A c
Numerical recipes 232 1,664,525 1,013,904,223
Borland C/C++ 232 22,695,477 1
Glibc (Gcc) 231 1,103,515,245 12,345
Ansi C 231 1,103,515,245 12,345
32
Borland Delphi 2 134,775,813 1
32
Microsoft Visual/Quick 2 214013 (343FD16) 2531011
C/C++ (269EC316)
48
Java's java.util.Random 2 25,214,903,917 11

Tabla 2.1.- Parámetros de recurrencia usados por compiladores comerciales

14
Regla de Knuth para la selección de m, a, c, y X0.

Selección de m.

Seleccionar m de modo que sea el número primo más grande posible y que a su vez
sea menor que p, donde: p es la base del sistema binario y d es el número de bits de la
palabra de la computadora. Por ejemplo 231.

Selección de a.

Seleccionar a de tal manera que: (a-1) mod 4 = 0, si 4 es un factor de m y (a-1) mod b =


0, si b es un factor primo de m. Usualmente, el valor de a se toma como a = 2k +1
donde k>=2.

Selección de c.

Es recomendable elegir el valor de c tal que c mod 8 = 5

Selección de X0.

La selección de X0 es irrelevante.

Ejemplo.

Dado los valores de a=5, c=7, m=8 y X0=4 construir una secuencia de números pseudo
aleatorios, y determinar el periodo que tiene esta secuencia.

n Xn (5Xn + 7 )mod 8 Xn+1 Número pseudo aleatorio


0 4 (5(4)+7) mod 8 = 27 mod 8 = 3 3 3/8
1 3 (5(3)+7) mod 8 = 22 mod 8 = 6 6 6/8
2 6 (5(6)+7) mod 8 = 37 mod 8 = 1 5 5/8
3 5 (5(5)+7) mod 8 = 32 mod 8 = 0 0 0/8 = 0
4 0 (5(0)+7) mod 8 = 7 mod 8 = 7 7 7/8
5 7 (5(7)+7) mod 8 = 42 mod 8 = 2 2 2/8
6 2 (5(2)+7) mod 8 = 17 mod 8 = 1 1 1/8
7 1 (5(1)+7) mod 8 = 12 mod 8 = 4 4 4/8
8 4 (5(4)+7) mod 8 = 27 mod 8 = 3 3 3/8
9 3 (5(3)+7) mod 8 = 22 mod 8 = 6 6 6/8

En este ejemplo se muestra que el generador cuenta con un periodo muy corto, ya que
X0 = 4, y vuelve a aparecer en X8 = 4, por lo que la secuencia tiene un periodo= 8.

15
2.1.2.- GENERADOR CONGRUENCIAL MULTIPLICATIVO.

Este generador determina el siguiente número pseudo aleatorio a partir de la siguiente


recurrencia:

 = 


Donde:

X0 = La semilla (X0 es mayor que cero)

a = el multiplicador (a es mayor que cero)

m= módulo (m mayor que X0, m mayor que a, y m mayor que c)

2.2.- PRUEBAS ESTADÍSTICAS.

Las pruebas estadísticas son utilizadas para asegurar la aleatoriedad de los números
pseudo aleatorios generados. La hipótesis de rechazar o no un generador es el objetivo
de estas pruebas estadísticas. Garantizar que se cuenta con un generador confiable, es
un requisito inicial que se debe examinar. Existen una gran cantidad de pruebas
estadísticas las cuales parten de la idea de analizar estadísticamente los números
pseudo aleatorios los cuales se presume tienen un comportamiento uniforme. Existe
una gran gamma de pruebas de aleatoriedad, algunas simples de implementar
computacionalmente, otras más complejas.

PRUEBAS DE ALEATORIEDAD

De uniformidad De aleatoriedad De independencia

Chi-Cuadrada. Corridas arriba y debajo de Autocorrelación


la media.
Kolmogorov-Smirnov. Prueba de huecos
Longitud de corridas.
Prueba de póquer

Prueba de Yule

Figura 2.2.- Pruebas estadísticas de aleatoriedad

Al contar con un paquete de pruebas ya implementadas computacionalmente, es útil


formar un paquete de pruebas que tenga que pasar un generador determinado. Knuth

16
expresó que si una sucesión se comporta como aleatoria para las pruebas P1, P2, .., P3,
no se asegura en general que para Pn+1 no se encuentre una falla.

2.2.1.- DE UNIFORMIDAD. (CHI-CUADRADA, KOLMOGOROV-SMIRNOV).

2.2.1.1.- La prueba Chi-Cuadrada.

La prueba chi-cuadrada también conocida como la prueba de Pearson o la prueba de


frecuencias es una prueba de bondad de ajuste que establece si difiere o no la
frecuencia observada de una distribución teórica. El inglés Karl Pearson desarrolló a
principios del siglo XX esta prueba , y hasta la fecha tiene muchas aplicaciones en el
campo estadístico.

La prueba chi-cuadrada es una de las pruebas más útiles y ampliamente utilizadas en la


estadística. La distribución Chi-Cuadrada es en teoría una distribución matemática que
se aplica ampliamente en el trabajo estadístico. El término Chi-cuadrada proviene del
uso de la letra griega χ el cual se pronuncia ji o chi y es el que define a esta
distribución. La hipótesis nula y alternativa son las siguientes:

 :  = 

 :  ≠ 

Esta prueba es utilizada para determinar que tan significativa es la diferencia entre las
frecuencias observadas y esperadas de uno o más categorías (subintervalos). La
diferencia entre las frecuencias esperadas y observadas son consideradas como el
error muestral. Las frecuencias observadas son calculadas a partir de un conteo de los
números que coinciden en un subintervalo determinado, y las frecuencias esperadas
están en función a una distribución de probabilidad teórica.

Para una secuencia de 100 números, y 5 subintervalos tenemos que: N=100, n=5, la FEi
= N/n = 100/5 = 20 para cualquier i. y la frecuencia observada es la cantidad de
números que coinciden en cada subintervalo.

0<0.20 0.20<0.40 0.40<0.60 0.60<0.80 0.80<1


1 2 3 4 5
Frecuencia FE1 = 100/5 FE2 = 100/5 FE3 = 100/5 FE4 = 100/5 FE5 = 100/5
Esperada FE1 = N/n
Frecuencia FO1 FO2 FO3 FO4 FO5
Observada

Tabla 2.2.- Frecuencia esperada y observada para 5 subintervalos.

La hipótesis de que todas las frecuencias son iguales en cada subintervalo se basa en
dividir el intervalo (0;1) en n subintervalos para luego realizar las comparaciones en
cada subintervalo entre la frecuencia esperada contra la frecuencia observada. Si son

17
estadístico que se utiliza es  el cual hace uso de la letra griega ji (CHI), el cual es
parecidas entonces se dice que la muestra proviene de una distribución uniforme. El

obtenido de la siguiente expresión:



 − 

 =



Donde: N = Tamaño de la muestra, n=cantidad de subintervalos, FOi=frecuencia


observada en el subintervalo i, FEi=frecuencia esperada en el subintervalo i.

Una vez obtenido el estadístico de la muestra  se compara con el estadístico teórico
de la población ,

para rechazar o no la hipótesis que la secuencia de números
proviene de una distribución uniforme.

  < ,



" #$ %$ ℎ' ( ℎ )ó+$# # $( ) %+ $,+ -, . % $

Donde:

,

es el estadístico teórico chi-cuadrada que proviene de la tabla Chi-Cuadrada
mostrada en el apéndice A, con un nivel de significancia α y n-1 grados de libertad.

0.64138 0.55837 0.81593 0.04994 0.61265 0.06787 0.30465 0.54264 0.81159 0.61163
0.47681 0.52127 0.69239 0.92006 0.37913 0.32035 0.37248 0.57836 0.19180 0.28920
0.79302 0.08124 0.53401 0.48201 0.03268 0.38087 0.68054 0.69251 0.60284 0.69351
0.64264 0.22409 0.80242 0.58071 0.31629 0.03585 0.46034 0.57039 0.15096 0.15523
0.64388 0.83371 0.04198 0.49796 0.16087 0.68317 0.39974 0.48571 0.93409 0.90760
0.59867 0.10238 0.57576 0.20976 0.25934 0.27937 0.74035 0.26204 0.06659 0.75064
0.08396 0.14600 0.07700 0.76808 0.90808 0.19125 0.71868 0.31794 0.81621 0.47948
0.93661 0.72871 0.96122 0.52904 0.18658 0.81139 0.71166 0.92589 0.23092 0.92253
0.81515 0.91642 0.93912 0.59072 0.38699 0.22783 0.54638 0.59725 0.30204 0.63166
0.07339 0.65144 0.81809 0.01614 0.86034 0.05137 0.50878 0.98290 0.41824 0.97056

Tabla 2.3.- Tabla con 100 números pseudoaleatorios para realizar pruebas de aleatoriedad

Ejemplo

Se desea realizar la prueba de chi-cuadrada a una secuencia de 100 números pseudo


aleatorios (Tabla 2.3)

Solución

Paso 1.- Determinar N, y n. Se cuenta con 100 números por lo que N=100, y se
determina arbitrariamente 5 subintervalos (n=5).

Paso 2.- Se calcula la frecuencia esperada y observada.

FE = 100/5 = 20, por lo que la FE1= FE2= FE3= FE4=FE5=20.

Se contabiliza las frecuencias observadas en cada uno de los 5 subintervalos, y se


obtiene:

18
i Subintervalo FOi FEi
1 [0, 0.20) 20 20
2 [0.20, 0.40) 18 20
3 [0.40, 0.60) 21 20
4 [0.60, 0.80) 20 20
5 [0.80, 1.00) 21 20

Paso 3.- Calcular el estadístico muestral:


/
 − 

 =



20 − 20
 + 18 − 20
 + 21 − 20
 + 20 − 20
 + 21 − 20
 6
 = = = 0.3
20 20

Paso 4.- Buscar el estadístico teórico de la tabla de chi-cuadrada en el apéndice A,


tomando como alfa=5%=0.05 y 5-1 grados de libertad se obtiene:

,

= ./ ,7

= 9.49

Paso 5.- Comparar los estadísticos para decidir si se rechaza o no la hipótesis.

8  = 0.3 9 ,



= 9.49 ,  < ,

" #$ %$ ℎ'

19
2.2.1.2.- La prueba Kolmogorov-Smirnov.

La prueba de Kolmogorov-Smirnov también conocida como la prueba K-S, trata de


determinar sí dos conjuntos de datos difieren significativamente. La prueba K-S tiene la
ventaja de no asumir acerca de la distribución de los datos, aunque esto tiene un costo
no documentado.

La prueba K-S se realiza basado en la hipótesis de que la distribución acumulada de


una variable aleatoria x es F0(x). Para llevar a cabo esta hipótesis, se requiere de una
muestra de tamaño n obtenida de una distribución continua F(x), para luego
determinar la distribución acumulada de la muestra referida como Fn(x),
posteriormente se compara con la distribución acumulada hipotética F0(x). Si Fn(x)
difiere de F0(x), entonces es evidencia de que Fn(x) no es igual a Fn(x).

La prueba K-S compara la función de distribución (probabilidad acumulada) teórica con


la observada, y calcula un valor de discrepancia, representado habitualmente como d,
que corresponde a la discrepancia máxima en valor absoluto entre la distribución
observada y la distribución teórica, proporcionando asimismo un valor de probabilidad
P, que corresponde, si estamos verificando un ajuste a la distribución normal, a la
probabilidad de obtener una distribución que discrepe tanto como la observada si
verdaderamente se hubiera obtenido una muestra aleatoria, de tamaño n, de una
distribución normal.

Si esa probabilidad es grande no habrá por tanto razones estadísticas para suponer
que nuestros datos no proceden de una distribución, mientras que si es muy pequeña,
no será aceptable suponer ese modelo probabilístico para los datos.

El procedimiento para realizar la prueba K-S es el siguiente:

1. Se seleccionan los números pseudo aleatorios que se desean probar.


2. Se crea un vector X[i] con los números pseudo aleatorios ordenados
ascendentemente.
3. Se calcula la función acumulada usando el vector F[i] = i/n

5. Se calcula <, = Mayor número contenido en el vector DIF[i]


4. Se calcula el vector DIF[i] = | F[i] – X[i] |

6. Si <, ≤ ∝, $,+ , $# , #$ %$ ℎ' ( )%-$?

20
Ejemplo:

Se desea realizar la prueba K-S a una secuencia de 30 números pseudo aleatorios


tomados de la Tabla 2.3

Paso 1.- Se seleccionan los primeros 30 números pseudoaleatorios


0.64138 0.55837 0.81593 0.04994 0.61265 0.06787 0.30465 0.54264 0.81159 0.61163
0.47681 0.52127 0.69239 0.92006 0.37913 0.32035 0.37248 0.57836 0.19180 0.28920
0.79302 0.08124 0.53401 0.48201 0.03268 0.38087 0.68054 0.69251 0.60284 0.69351

Paso 2.- Se ordenan ascendentemente los 30 números pseudoaleatorios. (Vector X[i])


0.03268 0.04994 0.06787 0.08124 0.19180 0.28920 0.30465 0.32035 0.37248 0.37913
0.38087 0.47681 0.48201 0.52127 0.53401 0.54264 0.55837 0.57836 0.60284 0.61163
0.61265 0.64138 0.68054 0.69239 0.69251 0.69351 0.79302 0.81159 0.81593 0.92006

Paso 3.- Se calcula El Vector F[i] = i /n


0.03333 0.06667 0.10000 0.13333 0.16667 0.20000 0.23333 0.26667 0.30000 0.33333
0.36667 0.40000 0.43333 0.46667 0.50000 0.53333 0.56667 0.60000 0.63333 0.66667
0.70000 0.73333 0.76667 0.80000 0.83333 0.86667 0.90000 0.93333 0.96667 1.00000

Paso 4.- Se calcula el vector DIF[i] =| F[i] – X[i] |


0.00065 0.01673 0.03213 0.05209 0.02513 0.08920 0.07132 0.05368 0.07248 0.04580
0.01420 0.07681 0.04868 0.05460 0.03401 0.00931 0.00830 0.02164 0.03049 0.05504
0.08735 0.09195 0.08613 0.10761 0.14082 0.17316 0.10698 0.12174 0.15074 0.07994

Paso 5.- Calcular el estadístico <,.

Se localiza la posición de la mayor número en el vector DIF (la mayor diferencia),


siendo el valor 0.17316 que se ubica en i=26, consiguiendo así el estadístico Dn

Por lo que:

DIF[26]=0.17316

X[26]=0.69351

F[26]=0.86667

Encontrando que <, = DIF[26]= 0.17316 = |F[26]-X[26]|

Paso 6.- Probar si se rechaza o no la prueba K-S.

Seleccionado α=0.05, entonces ./,@ = 0.242 ver tabla k-s en el apéndice A.

Como < ≤ ./,@ entonces no se tienen elementos para rechazar la hipótesis de


que estos 30 números tienen un comportamiento uniforme.

21
2.2.2.- DE ALEATORIEDAD. (CORRIDAS ARRIBA Y DEBAJO DE LA MEDIA Y LONGITUD
DE CORRIDAS).

La prueba de corridas es una variante de la prueba de distancia la cual determina si


una serie de eventos ocurren aleatoriamente. Esta prueba es una variante de la prueba
de distancia en la cual el intervalo 0 ≤a1≤a2≤1 está fijado a 0≤0≤0.5≤1 es decir a1=0, y
a2=0.5. Dada una secuencia de N números pseudo aleatorios Xi es necesario
transformarla a una secuencia de números binarios (Bi es cero o uno), en donde se
utiliza el siguiente criterio de conversión:

0 #  < 0.5E
A = B
1 #  > 0.5

Una corrida es una sucesión del mismo evento escrita una o más veces, por ejemplo
una secuencia 0001100100 contiene 5 corridas es decir R=5, en donde: la primera
corrida es 000, la segunda 11, la tercera 00, la cuarta 1, y la quinta 00. Una vez
determinada el número de corridas se calcula el estadístico Z0 y se utiliza la
distribución normal para obtener la región critica. Para calcular el Z0 se utilizan las
siguientes fórmulas:

2, ,
FG = +1
, + ,

Donde FH es el valor promedio de las corridas, n1 es el número de veces que el primer
evento ha ocurrido, y n2 es el número de veces que el segundo evento ha ocurrido.

2, , 2, , − , − ,

G = I
, + ,
 , + , − 1

Donde G̅ es la desviación estándar de las corridas.

L + ℎ − FG
K =
G̅

Donde Z0 es el estadístico para la aproximación normal de los datos, R es el número de


corridas y h es la corrección para continuidad, ±0.5 (5% nivel de significancia), donde:

2, ,
ℎ = +0.5 # L <  + 1

, + ,

2, ,
ℎ = −0.5 # L >  + 1

, + ,

22
 − 1.96 ≤ K ≤ 1.96 $,+ , $# , #$ %$ ℎ' ( )%-$?

Ejemplo:

Se desea realizar la prueba de corridas a una secuencia de 30 números pseudo


aleatorios tomados de la Tabla 2.3

Paso 1.- Se seleccionan los primeros 30 números pseudoaleatorios


0.64138 0.55837 0.81593 0.04994 0.61265 0.06787 0.30465 0.54264 0.81159 0.61163
0.47681 0.52127 0.69239 0.92006 0.37913 0.32035 0.37248 0.57836 0.19180 0.28920
0.79302 0.08124 0.53401 0.48201 0.03268 0.38087 0.68054 0.69251 0.60284 0.69351

Paso 2.- Se construye la secuencia B


1 1 1 0 1 0 0 1 1 1
0 1 1 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1 1 1

Paso 3.- Se Calculan las corridas de la secuencia (leer B de izquierda a derecha y de


arriba hacia abajo).
1 1 1 0 1 0 0 1 1 1
0 1 1 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1 1 1

Esta secuencia contiene 16 corridas, es decir R=16.

Paso 4.- Se Calcula N1, N2, XR, SR, y Z0.

N1 = cantidad de ceros en la secuencia = 13

N2 = cantidad de unos en la secuencia = 17

2, ,
FG = +1
, + ,

23
213
17
442
FG = +1= + 1 = 15.73
13 + 17
30

2, , 2, , − , − ,

G = I
, + ,
 , + , − 1

213
17
213
17
− 13 − 17

G = I
13 + 17
 13 + 17 − 1

442
442 − 30
182104 182104
G = I =I =I = √6.977 = 2.641
30
29

 900
29
26100

2, ,
<$+$% ,% ℎ $)$, $, $( O( % $  + 1

, + ,

213
17
442
P + 1Q = + 1 = 15.73
13 + 17
30

2, ,
ℎ = −0.5  R-$ L >  + 1

, + ,

L + ℎ − FG
K =
G̅

16 − 0.5 − 15.73 −0.23


K = = = −0.0870
2.641 2.641

Paso 5.- Comparar los estadísticos para decidir si se rechaza o no la hipótesis.

Buscar el estadístico Z en la tabla Z en el apéndice A, tomando como alfa=5%, entonces Se


calcula 100% - 5% = 95% dividido entre dos es igual a 47.5%, por lo tanto se busca el número
0.475 dentro de la tabla, en donde coincide con el 1.96

K/ = K./ = 1.96




8 − 1.96 ≤ −0.0870 ≤ 1.96 $,+ , $# , #$ %$ ℎ' ( )%-$?

24
2.2.3.- DE INDEPENDENCIA. (AUTOCORRELACIÓN, PRUEBA DE HUECOS, PRUEBA DE
PÓQUER, PRUEBA DE YULE).

Las pruebas de independencia son utilizadas para demostrar que los números pseudo
aleatorios son estadísticamente independientes entre sí. Estas pruebas se basan en la
siguiente hipótesis:

H0 : Xi es independiente

H1: Xi es dependiente

Para probar la independencia a continuación se presentan Las siguientes pruebas:


Autocorrelación, huecos, póquer y la prueba de Yule.

2.2.3.1.- Prueba de Autocorrelación.

Para la detectar la autocorrelación en una secuencia de números pseudo aleatorios, se


utilizan distintos instrumentos estadísticos y gráficos. En la práctica no se conoce un
proceso adecuado que determine la existencia de la autocorrelación.

La prueba de autocorrelación verifica la correlación entre los números


pseudoaleatorios, y los compara con la deseable autocorrelación de cero.

La correlación es una relación recíproca entre dos o más elementos en una secuencia.
La secuencia de números pseudo aleatorios aparentemente son aleatorios, pero
pudiera existir una relación entre ciertos números a partir de un número específico.

Existen varios métodos como el propuesto por Durbin y Watson, el de Breusch y


Godfrey, como también el estadístico de Box y Pierce.

2.2.3.2.- Prueba de huecos.

La prueba de huecos, mejor conocida como prueba de distancia o prueba Gap


determina la independencia de la secuencia de números pseudo aleatorios. Para iniciar
la prueba es necesario determinar un subintervalo tal que 0 ≤ a1 ≤ a2 ≤ 1 La secuencia
de N números pseudo aleatorios Xi es es necesario transformarla a una secuencia de
números binarios (Bi es cero o uno), en donde se utiliza el siguiente criterio de
conversión:

0 # 0 ≤ 1 ≤  ≤ 2 ≤ 1
A = T 1 $, # ,+%% E

Una corrida es una sucesión del mismo evento escrita una o más veces, por ejemplo
una secuencia 0001100100 contiene 5 corridas es decir R=5, en donde: la primera
corrida es 000, la segunda 11, la tercera 00, la cuarta 1, y la quinta 00. Una vez
determinada el número de corridas se calcula el estadístico Z0 y se utiliza la

25
distribución normal para obtener la región crítica. Para calcular el Z0 se utilizan las
siguientes fórmulas:

2, ,
FG = +1
, + ,

Donde FH es el valor promedio de las corridas, n1 es el número de veces que el primer
evento ha ocurrido, y n2 es el número de veces que el segundo evento ha ocurrido.

2, , 2, , − , − ,

G = I
, + ,
 , + , − 1

Donde G̅ es la desviación estándar de las corridas.

L + ℎ − FG
K =
G̅

Donde Z0 es el estadístico para la aproximación normal de los datos, R es el número de


corridas y h es la corrección para continuidad, ±0.5 (5% nivel de significancia), donde:

2, ,
ℎ = +0.5 # L <  + 1

, + ,

2, ,
ℎ = −0.5 # L >  + 1

, + ,

 − 1.96 ≤ K ≤ 1.96 $,+ , $# , #$ %$ ℎ' ( )%-$?

Ejemplo:

Se desea realizar la prueba de corridas a una secuencia de 30 números pseudo


aleatorios tomados de la Tabla 3.1

Paso 1.- Se seleccionan los primeros 30 números pseudoaleatorios


0.64138 0.55837 0.81593 0.04994 0.61265 0.06787 0.30465 0.54264 0.81159 0.61163
0.47681 0.52127 0.69239 0.92006 0.37913 0.32035 0.37248 0.57836 0.19180 0.28920
0.79302 0.08124 0.53401 0.48201 0.03268 0.38087 0.68054 0.69251 0.60284 0.69351

Paso 2.- Se construye la secuencia B utilizando como subintervalo a1=0.0 y a2=0.5


1 1 1 0 1 0 0 1 1 1
0 1 1 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1 1 1

26
Paso 3.- Se Calculan las corridas de la secuencia (leer B de izquierda a derecha y de
arriba hacia abajo).
1 1 1 0 1 0 0 1 1 1
0 1 1 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1 1 1

Esta secuencia contiene 16 corridas, es decir R=16.

Paso 4.- Se Calcula N1, N2, XR, SR, y Z0.

N1 = cantidad de ceros en la secuencia = 13

N2 = cantidad de unos en la secuencia = 17

2, ,
FG = +1
, + ,

213
17
442
FG = +1= + 1 = 15.73
13 + 17
30

2, , 2, , − , − ,

G = I
, + ,
 , + , − 1

213
17
213
17
− 13 − 17

G = I
13 + 17
 13 + 17 − 1

442
442 − 30
182104 182104
G = I =I =I = √6.977 = 2.641
30
29

 900
29
26100

2, ,
<$+$% ,% ℎ $)$, $, $( O( % $  + 1

, + ,

213
17
442
P + 1Q = + 1 = 15.73
13 + 17
30

27
2, ,
ℎ = −0.5  R-$ L >  + 1

, + ,

L + ℎ − FG
K =
G̅

16 − 0.5 − 15.73 −0.23


K = = = −0.0870
2.641 2.641

Paso 5.- Comparar los estadísticos para decidir si se rechaza o no la hipótesis.

Buscar el estadístico Z en la tabla Z en el apéndice A, tomando como alfa=5%, entonces Se


calcula 100% - 5% = 95% dividido entre dos es igual a 47.5%, por lo tanto se busca el número
0.475 dentro de la tabla, en donde coincide con el 1.96

K/ = K./ = 1.96




8 − 1.96 ≤ −0.0870 ≤ 1.96 $,+ , $# , #$ %$ ℎ' ( )%-$?

2.2.3.3.- Prueba de Póquer.

La prueba de póquer está inspirada en el popular juego de cartas en la que los


jugadores apuestan, y el total de la apuesta es ganada por aquellos jugadores que
tengan la mejor combinación de cartas. La baraja es un conjunto de naipes o cartas.

La prueba estadística de póquer plantea La hipótesis nula que los números pseudo
aleatorios son independientes entre sí, siendo:

 :  = ,$)$, $,+$

 :  ≠ ,$)$, $,+$

La baraja diseñada para esta prueba, está formada por 50 naipes

0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

28
Un número pseudoaleatorio (con máximo 5 digitos significativos) se representa como
una jugada:

X1 = 0.23123 se representa:

2 3 1 2 3

En donde un número pseudo aleatorio por ejemplo el 0.2312340, se toman los 5


dígitos más significativos (0.23123), donde cada digito se representa por una carta. Se
analiza y se encuentra la combinación de carta en este caso son dos pares, de una lista
de siete posibles. Se anota la combinación, y se selecciona el siguiente número pseudo
aleatorio.

La lista de combinaciones existentes son: todas diferentes, un par, dos pares, tercia,
full, póquer, quintilla.

La idea principal de la prueba es contabilizar la frecuencia observada de cada mano, y a


frecuencia esperada de cada mano se obtiene de la probabilidad esperada en cada una
de las manos posibles. Se utiliza el estadístico chi-cuadrado para rechazar o no la
hipótesis de independencia.

El procedimiento a seguir en esta prueba, es el siguiente:

Paso 1.- Calcular la frecuencia esperada.

Las manos de póquer posibles a considerar son todas diferentes, un par, dos pares,
tercia, full, póquer y quintilla, las cuales servirán de criterio al momento de analizar
cada uno de los N números pseudo aleatorios. A continuación se muestra una tabla en
la cual se indica la probabilidad esperada de que cada una de las i manos, la cual se
utiliza para el cálculo de la frecuencia esperada (FEi).

i Mano de Póquer Probabilidadi FEi = N x Probabilidadi


1 Todos diferentes 0.30240 FE1 = N x 0.30240
2 Un par 0.50400 FE2 = N x 0.50400
3 Dos Pares 0.10800 FE3 = N x 0.10800
4 Tercia 0.07200+0.00900+0.00450+0.00010 FE4 = N x 0.08560
Full = 0.0856
Póquer
Quintilla

29
Paso 2.- Calcular la frecuencia observada.

Se selecciona cada uno de los números pseudo aleatorios, y se examina en forma


individual eligiendo los 5 dígitos más significativos, para ser utilizados cada uno como
una carta de la baraja. La mano que se forme con las 5 barajas se contabilizará en las i
manos observadas, y se acumulará a la FOi correspondiente.

i Mano de Póquer FOi


1 Todos diferentes FE1 = Total de números pseudoaleatorios que resultaron en
todas diferentes.
2 Un par FE2 = Total de números pseudoaleatorios que resultaron con
un par.
3 Dos Pares FE3 = Total de números pseudo aleatorios que resultaron con
dos pares.
4 Tercia FE4 = Total de números pseudo aleatorios que resultaron con
Full tercia ó full ó póquer ó quintilla.
Póquer
Quintilla

Paso 3.- Calcular el estadístico dfe


7
 − 

 = 



Una vez obtenido el estadístico de la muestra  se compara con el estadístico teórico
de la población ,@

para rechazar o no la hipótesis que la secuencia de números
proviene de una distribución uniforme.

  < ,@



" #$ %$ ℎ' ( ℎ )ó+$# # $ ,$)$,$, 

Donde:

,@

es el estadístico teórico chi-cuadrada que proviene de la tabla Chi-Cuadrada
mostrada en el apéndice A, con un nivel de significancia α y 3 grados de libertad.

2.2.3.4.- Prueba de Yule.

El estadístico escocés George Udny Yule propone un estudio de medida de asociación


por medio de cuadros estadísticos que denominan tablas de contigencia. El coeficiente
de contingencia Q de Yule es una medida del grado de relación (asociación) existente
entre dos variables (atributos). El coeficiente de asociación de Yule debe ser utilizado
únicamente en tablas de 2x2. Los datos deben ser agrupados en tablas de contingencia
de 2x3. Este coeficiente es aplicable en casos como pruebas de señales en donde se
requiere emparejar una muestra independendiente. El cálculo de este coeficiente
considera a A y B como dos atributos los cuales están clasificados en N y M grupos
respectivamente. El primer paso es organizar los datos dentro de una tabla de M x N.

30
B/A A1 A2 … An Subtotal
B1 A1B1 A2B2 … AnB1 B1
B2 A1B2 A2B2 AnB2 B2

Bm A1Bm A2Bm … AnBm Bm
A= A1 A2 An N

El coeficiente de contingencia se estima con la siguiente expresión:


8 = I
" + 

El coeficiente de asociación debe ser aplicado a una tabla de 2x2 usando la expresión:

×−?×
g =
×+ ×?

En donde a y b son producto de la siguiente tabla:

Clases A Α
B a b
β c d

2.3.- MÉTODO DE MONTE CARLO.

Algunos problemas complejos han sido abordados para su solución práctica haciendo
uso de varias técnicas de probabilidad y muestreo, Las cuales se han agrupado bajo el
nombre de Monte Carlo el cual emplea un procedimiento antiguo que utiliza el
muestreo aleatorio que permite simular experimentos.

El método Monte Carlo lo define el Dr. Householder como el estudio de modelos


estocásticos artificiales de procesos matemáticos o físicos. El método Monte Carlo
engloba diversos métodos de simulación para conocer el comportamiento de los
modelos de simulación basados en resolver ensayos independientes, donde los
resultados de un experimento no afecten lo que ocurre con los resultados de los
siguientes experimentos.

El método Monte Carlo es una técnica que está basada en la utilización de números
aleatorios y probabilidad para la investigación de problemas. Es empleado en una gran
variedad de campos incluyendo economía, finanzas, física, química, e ingeniería. Cada
campo utiliza el método de diferentes maneras, pero en esencia utiliza números
aleatorios para examinar algunos problemas y aproximar soluciones. Esta técnica se

31
emplea en sistemas complejos en las cuales otras técnicas son difíciles o imposibles de
aplicar.

El método de Monte Carlo es utilizado para aproximar expresiones matemáticas


complejas y costosas de evaluar con exactitud. Este método tiene su nombre en honor
al Casino de Monte Carlo ubicado en Mónaco el cual se le conoce como la capital del
juego de azar. El desarrollo de este método inicia en 1944 y se ha ido mejorando con el
paso del tiempo y el uso de las computadoras.

Como herramienta de investigación tuvo su debut en el laboratorio de Los Álamos en


Estados Unidos de Norteamérica en el desarrollo de la bomba atómica durante la
segunda guerra mundial.

También es una herramienta de investigación y planteamiento, que utiliza el muestreo


artificial para la operación numérica de sistemas complejos que contienen elementos
aleatorios o determinísticos en condiciones de incertidumbre. En la Investigación de
Operaciones se utiliza para fines de experimentación para la elaboración de modelos y
ajuste de parámetros para el estudio de los resultados posibles.

Monte Carlo agrupa una serie de procedimientos que analizan distribuciones de


variables aleatorias usando la simulación de números aleatorios. Este método
proporciona la solución a una gran gama de problemas matemáticos haciendo uso de
experimentos con muestreos estadísticos computacionales. La aplicación del método
puede realizarse en modelos estocásticos o determinísticos. Los primeros usos del
método fue la solución de integrales que no se podían resolver analíticamente.
Posteriormente fue implementado este método en aquellos problemas en los cuales
intervenía números aleatorios y variables aleatorias con distribución de probabilidad
conocidas.

Este método puede ser utilizado para describir cualquier técnica que aproxime
soluciones a problemas cuantitativos mediante el uso del muestreo estadístico.

2.3.1.- CARACTERÍSTICAS.

Las principales características del Método de Monte Carlo son:

• El sistema debe estar formulado considerando una o más funciones de


distribución de probabilidad.
• Debe contar con un generador de números pseudo aleatorios.
• EL establecimiento de límites y reglas de muestreo para las funciones de
probabilidad.
• La estimación del error.
• Las técnicas de reducción de varianza.
• El uso del multiprocesamiento.

32
2.3.2.- APLICACIONES.

Criptografía Cromo dinámica cuántica


Densidad y flujo de tráfico Diseño de reactores nucleares
Diseño de VLSI Ecología
Econometría Evolución estelar
Física de materiales Modelos cuantitativos
Programas de computadora Pronósticos
Explotación petrolera Radioterapia
Líneas de espera Inventarios
Bolsa de valores

2.3.3.- SOLUCIÓN DE PROBLEMAS.

2.3.3.1.- Valor de una integral definida.

Se desea obtener la integral de la función Y=X2 al resolverlo analíticamente en los límites de -1


≤ x ≤ 1 se obtiene como resultado 2/3.

Considerando que el área del rectángulo es de 2, se efectúa la división entre el resultado de la


integral (2/3) dando como resultado 1/3 = 0.333.

Utilizando el método de Monte Carlo para encontrar la solución, se utiliza la tabla de números
aleatorios formando parejas de dos dígitos (un valor para la abscisa y otra para la ordenada). Al
simular 200 puntos, se contabilizan aquellos puntos que se sitúan bajo la curva de la función.
Al terminar el proceso el conteo obtiene 69 que están ubicados bajo la curva, por lo que se
calcula
la la proporción 69/200 la cual da un resultado de 0.345 el cual es muy cercano a 0.333,
con un error de 0.012.

33
2.3.3.2.- Área Militar.

El mayor desarrollo del método de Monte Carlo se ha dado en el área militar, resolviendo los
siguientes tipos de problemas:

• Número de aviones que no cumplen con la misión.


• Número de aviones derribados por el enemigo, en el camino hacia el objetivo.
• Número de aviones extraviados por errores de navegación.
• Número de aviones derribados por el enemigo que defiende el objetivo.
• Lugar donde las bombas hacen impacto.
• Daños esperados.

2.3.3.3.- Análisis de Riesgo.

El análisis de riesgo es el proceso de predecir un resultado en condiciones de incertidumbre.

La determinación de la producción ante una demanda cambiante es un problema que


enfrentan los productores. La intención del productor es obtener las máximas ganancias. Se
cuenta con variables determinísticas y estocásticas. En la medida que el modelo de producción
se vuelve más complejo es difícil encontrar una solución analítica, siendo el método de Monte
Carlo una herramienta que brinda una opción para encontrar la solución.

2.3.3.4.- Inventarios.

El inventario son bienes que son almacenados por una organización para ser utilizados en el
futuro. Casi todas las empresas cuentan con inventarios, los cuales representan gran cantidad
de dinero invertido. Minimizar los inventarios es una tarea crítica de cualquier administración
por lo que ha sido objeto de estudio durante muchos años, para minimizar los costos de
mantenimiento de un artículo en el inventario. Los costos de inventarios más representativos
son: conservación, pedido, faltante, y de adquisición.

Los costos de conservar o mantener un artículo están asociados a la tenencia física, en los
cuales se engloban los de almacenaje, seguros, robo, obsolescencia y el costo de capital sin
movimiento. El costo de conservación es uno de los costos más representativos del inventario.

El costo de pedido involucra los gastos asociados en el proceso de administrar las requisiciones
y órdenes de compra, envíos y transporte.

El costo de faltante es aquel que se incurre cuando el artículo requerido no está disponible.
Aquí se engloba la ganancia perdida y el costo de paro de la producción. Este costo es uno de
los más difíciles de estimar debido a su complejidad.

Los costos de adquisición son los costos derivados de adquirir el artículo.

EL problema de inventario se vuelve complejo debido a que el costo de conservación y el costo


de pedido se mueven en direcciones opuestas. La minimización de los costos de inventarios
depende de ¿Cuánto y cuando pedir?. Esta es un área de oportunidad para el desarrollo de

34
método de Monte Carlo para la realización de una aproximación numérica al problema del
inventario.

35
PROBLEMAS

2.1.- Determine el periodo de los siguientes generadores congruenciales mixtos:

 = 9 + 13
 4 9   = 4

 = 9 + 13
 8 9   = 4

 = 9 + 13
 16 9   = 4

2.2.- Genere los primeros 50 números pseudoaleatorios utilizando el generador

 = 7 + 21
 64 9   = 7

2.3.- Aplique la prueba de Chi Cuadrada a la siguiente secuencia de números:

0.234 0.456 0.678 0.789 0.982 0.123 0.345 0.456 0.479 0.895
0.907 0.002 0.345 0.789 0.897 0.951 0.234 0.380 0.404 0.678
0.800 0.963 0.255 0.607 0.045 0.783 0.405 0.899 0.277 0.341

2.4.- Aplique la prueba K-S a la siguiente secuencia de números:

0.456 0.234 0.214 0.897 0.234 0.567 0.787 0.342 0.455 0.657
0.989 0.001 0.998 0.343 0.456 0.651 0.725 0.543 0.739 0.346
0.881 0.101 0.305 0.232 0.777 0.238 0.223 0.534 0.446 0.650

2.5.- Aplique la prueba de póquer a la siguiente secuencia de números:

0.34877 0.23905 0.21098 0.13451 0.99103


0.37880 0.45067 0.12105 0.57694 0.20473
0.10145 0.33030 0.13052 0.99101 0.30597
0.49413 0.50684 0.44968 0.49184 0.49951

2.6.- Simule el tiempo de proceso de 200 piezas considerando que el tiempo de proceso de
una pieza sigue la función de probabilidad:
i
# 0 ≤ i ≤ 5
50 E
.i
= j10 − i
# 10 ≤ i ≤ 30
50

36
3
Generación de variables aleatorias

3.1.- CONCEPTOS BÁSICOS.

La generación de variables aleatorias es un proceso que enfrenta la simulación debido


a que cuenta con variables con un comportamiento probabilístico. En donde dicha
variabilidad se pudiera clasificar dentro de alguna distribución de probabilidad
conocida.

Las distribuciones de probabilidad pueden ser discretas o continuas, en donde las


distribuciones discretas, la aleatoriedad de la variable sólo puede tomar valores
enteros. Las distribuciones más utilizadas son: Bernoulli, uniforme, binomial, Poisson, y
geométrica. En cambio las distribuciones continuas modelan la aleatoriedad en
eventos en los cuales los valores de las variables pueden estar dentro de un rango de
valores reales. Las funciones continuas más utilizadas son: uniforme, exponencial,
Weibull, triangular, y la normal.

Para la generación de las variables aleatorias discretas o continuas, es necesario contar


con la información específica de la distribución deseada, la aplicación de un método
para la generación de la variable aleatoria, y la implementación computacional para
usarse en la simulación.

3.2.- VARIABLES ALEATORIAS DISCRETAS.

Una variable aleatoria es una variable cuyo valor depende del resultado de un
experimento aleatorio. Las variables aleatorias discretas toman un conjunto de valores
finitos de valores, los cuales son enteros no negativos (usualmente utilizados para
conteo).

La distribución de probabilidad es un conjunto de probabilidades para los posibles


distintos sucesos o eventos que pueden darse en un experimento aleatorio. Es decir
nos proporciona cómo distribuir la probabilidad entre los sucesos que pueden
producirse.

Existe un gran número de distribuciones de probabilidad para variables aleatorias que


únicamente tiene valores enteros no negativos. Las distribuciones discretas de
probabilidad son útiles cuando se usan procesos de conteo en muestras aleatorias. Las

37
distribuciones discretas generalmente se utilizan en la práctica como resultado de
redondear medidas continuas basada en una escala discreta.

3.2.1.- DISTRIBUCIÓN GEOMÉTRICA.

La distribución geométrica está descrita por la siguiente función de probabilidad:

.i
= )1 − )
k

Donde p es la probabilidad de éxito y q= (1-p) la probabilidad de fracaso.

La distribución acumulada se define por:


k

 i
=  )1 − )



Con media igual a:

1 − )

 = μ =
)

Y varianza igual a:

1 − )

m = n  = =
) )

Al aplicar el método de la transformada inversa para encontrar la variable aleatoria


geométrica se obtiene que:

% = 1 − )
k

Al despejar x tenemos lo siguiente:

o,%

i =
o,1 − )

Como 1-p es la probabilidad de fracaso, se describe la variable aleatoria en esos


términos:

o,%

m% ?($ ($+ %  p$ é+  i =


o,R

En donde el valor de x, se debe redondear enteros, truncando los decimales.

38
/* Genera una variable aleatoria geometrica con parámetro q (probabilidad de fracaso) */

int geometrica(double q) {

double r;

int x ;

r=rand();

x=(int)Math.floor( Math.log( r ) / Math.log(q ) );

return(x);

Tabla 3.1.- Pseudocódigo para variable aleatoria geométrica.

3.2.2.- DISTRIBUCIÓN BINOMIAL NEGATIVA.

La función de probabilidad está dada por:

s+i−1 u
.i
= r t ) 1 − )
k
i

Donde k es el número total de éxitos en una sucesión de k + x ensayos, con x el


número fallas que ocurren antes de obtener k éxitos.

La distribución geométrica es un caso especial de la distribución binomial negativa con


k = 1.

La distribución binomial negativa también se le conoce como la distribución Pascal, la


cual está definida

Con media igual a:

s1 − )

 = μ =
)

Y varianza igual a:

s1 − )

m = n  = =
)  )

Despejando los párametros p y k se obtiene que:

39

)=
m

)  

s= = m =
1 − )
1 − 
m − 
m
Si k es un entero y q = (1-p) entonces la variable aleatoria binomial negativa está dada
por:

∑u o,%
o,∏u %

O% ?($ ($+ %  ? , ( ,$p+ O i = =


o,R
ln R

La x se redondea al menor entero más próximo.

/* Genera una variable aleatoria binomial negativa con parámetros q (probabilidad de fracaso) y k (total de éxitos) */

int binomialnegativa( double q, int k) {

double r, tr;

int x, i ;

tr=1.0;

for(i=1;i<=k;i++) {

r=rand();

tr = tr * r;

x = (int)round( (Math.log(tr) / Math.log(q)));

return(x);

Tabla 3.2.- Pseudocódigo para variable aleatoria binomial negativa.

3.2.3.- DISTRIBUCIÓN BINOMIAL.

La función de probabilidad para la distribución binomial se expresa:


,
. i
= y z ) k 1 − )
k
i
Con media igual a:

 = μ = ,)

Y varianza igual a:

40
m = n  = ,)1 − )

Los valores de n y p se obtienen de la media y varianza:



,=
 − m

 − m
)=

Para generar la variable aleatoria binomial se aplica el método de rechazo en el cual se
inicia con los valores conocidos de p y n, y realiza un conteo de los n números
pseudoaleatorios, que sean menores o iguales a p.

i = 1 # % ≤ )E E
O% ?($ ($+ %  ? , ( i =  i { B 
i = 0 # % > )


/* Genera una variable aleatoria binomial con parámetro p (probabilidad de éxito ) y n */

int binomial( double p, int n) {

double r ;

int x, i ;

x=0;

for(i=1;i<=n;i++) {

r=rand();

if (r <= p) x=x+1;

return(x);

Tabla 3.3.- Pseudocódigo para variable aleatoria binomial.

41
3.2.4.- DISTRIBUCIÓN HIPERGEOMÉTRICA.

La función de probabilidad hipergeométrica está descrita por:

|}~ |}~

. i
= k k
|}

Donde:

0 ≤ i ≤ ")

0 ≤ , − i ≤ "1 − )

Siendo x, n, y N números enteros, N es el número de elementos de la población, Np es


el número de elementos que pertenecen a la clase I, y N(1-p) es el número de
elementos pertenecientes a la clase II.

Si se considera a n como una muestra de la población N, utilizando la política de no


reemplazo, entonces el número de elementos que pertenecen a la clase I (Np) siguen
una distribución hipergeométrica.

La distribución hipergeométrica tiene

Una media igual a:

 = μ = ,)

Y la varianza igual a:

"−,
m = n  = ,)1 − )
r t
"−1

A medida que se extrae un elemento de una muestra de n elementos, se reduce el


valor de N=N0, de acuerdo a la siguiente expresión:

" = " − 1

Y el valor de p=p0 también es transformado por la siguiente fórmula:

" ) − 
) =
" − 1

El valor de S tiene el valor de 1 cuando el elemento extraído pertenece a la clase I, y el


valor de cero en caso que pertenezca a la clase II.

42
Se aplica el método de rechazo en la generación de la variable aleatoria
hipergeométrica, que involucra un proceso de n iteraciones, realizando un conteo de
los elementos pertenecientes a la clase I. En cada iteración determina a que clase
pertenece el elemento, para luego calcular la probabilidad que se utilizará en la
siguiente iteración. A continuación se presenta la lógica utilizada para el cálculo de la
variable aleatoria hipergeométrica.

/* Genera una variable aleatoria hipergeometrica con parámetros tn, ns, y p (probabilidad de éxito ) */

int hipergeometrica(int tn, int ns, double p) {

double r;

int x, s;

x=0;

for(i=1;i<=ns;i++) {

r = rand();

if (r <= p) { s=1; x=x+1; }

else s=0;

p=(tn * p – s)/(tn – 1);

tn = tn – 1;

return(x);

Tabla 3.4.- Pseudocódigo para variable aleatoria hipergeométrica.

3.2.5.- DISTRIBUCIÓN POISSON.

La distribución Poisson está definida por:

k
. i
= $ €
i!
Donde x=0,1,2,… y  >0

La distribución acumulada se define con:


ƒk„

 i
= $ € 
!


Donde x ≥ 0

Una media igual a:

43
 = μ = 

Y la varianza igual a:

m = n  = 

La variable aleatoria Poisson se obtiene mediante la siguiente desigualdad:


k k

 + ≤  <  +  ,$ i $# -, $,+$% , ,$p+ O


 

Y el valor + = −o,%

Para simplificar los cálculos computacionales es posible reformular la desigualdad


anterior para obtener la variable aleatoria Poisson con la desigualdad:
k k

O% ?($ ($+ %  … ## , † % ≥ $ €


> † %
 

/* Genera una variable aleatoria poisson con parámetro lambda */

int poisson( double lambda) {

double r, a,b;

int x, i ;

a=Math.exp(-lambda);

b=1.0D;

x=0;

do {

b = b * rand();

if (b < a) { return x; }

x = x + 1;

while (true);

Tabla 3.5.- Pseudocódigo para variable aleatoria Poisson.

44
3.3.- Variables aleatorias continuas.

3.3.1.- DISTRIBUCIÓN UNIFORME.

La distribución uniforme o también conocida como la distribución rectangular es el


modelo continuo más simple. Corresponde al caso de una variable aleatoria que sólo
puede tomar valores comprendidos entre dos extremos a y b, de manera que todos los
intervalos de una misma longitud (dentro de (a, b)) tienen la misma probabilidad.
También puede expresarse como el modelo probabilístico correspondiente a tomar un
número al azar dentro de un intervalo (a, b).

La función de densidad f(x) se define como:

1
. i
= T ? −  #  ≤ i ≤ ? E
0 #  > i > ?

La distribución acumulada F(x) está definida como:


k
1 i−
 i
= ˆ + = #  ≤ i ≤ ?
‰ ?− ?−

Con media igual a:

+?
 = μ =
2
Y varianza igual a:

? − 

m = n  =
12
La variable aleatoria uniforme es obtenida al aplicar el método de la transformada
inversa dando como resultado:
i−
i
= =%
?−
Despejando x se obtiene la variable aleatoria uniforme:

O% ?($ ($+ %  -, . % $ i =  + ? − 


%  ,$ 0 ≤ % ≤ 1

45
Esta variable aleatoria uniforme es una función que es dependiente de los valores a,b,
y r, donde a corresponde al límite inferior, b el límite superior, y r es un número
pseudoaleatorio entre 0 y 1, y la variable x corresponde a un número real que tiene un
comportamiento uniforme, que puede ser implementado computacionalmente para la
simulación de números uniformes.

A continuación se presenta el pseudocódigo del generador de números uniformes.

/* Genera una variable aleatoria uniforme con parámetros a (limite inferior), y b (límite superior) */

double uniforme(double a, double b) {

double r,x;

r = rand();

x = a + (b –a)*r;

return(x);

Tabla 3.6.- Pseudocódigo para variable aleatoria uniforme.

3.3.2.- DISTRIBUCIÓN EXPONENCIAL.

Si es muy pequeña la probabilidad de que ocurra un evento en un intervalo corto, y si


la ocurrencia de tal evento es, estadísticamente independiente respecto a la
ocurrencia de otros eventos, entonces el intervalo de tiempo entre ocurrencia de
eventos de este tipo estará distribuido en forma exponencial.

La función de densidad de una distribución exponencial tiene la forma:

. i
= $ €k

Donde:  > 0 9 i ≥ 0.

La distribución acumulada F(x) está definida como:


k
 i
= ˆ $ €k + = 1 − $ €k


Con media igual a:


Š
1
 = μ = ˆ i$ €k i =
 

Y varianza igual a:

46
1 Š
1
m = n = ˆ i −
 $ €k i =  = 


  

El parámetro lambda () es posible expresarlo de la siguiente manera:

1
=

Aplicando la transformada inversa se tiene lo siguiente:

#  i
= 1 − $ €k

$,+ , $# ∶ 1 −  i
= $ €k

Igualando a r se obtiene:

% = $ €k

Despejando x es posible obtener la variable aleatoria exponencial:

1
O% ?($ ($+ %  $i) ,$, ( i = − r t o, %
= −o, %

/* Genera una variable aleatoria exponencial con parámetro ex (media) */

double exponencial(double ex) {

double r,x;

r = rand();

x = -ex * Math.log(r) ;

return(x);

Tabla 3.7.- Pseudocódigo para variable aleatoria exponencial.

47
3.3.3.- DISTRIBUCIÓN GAMMA.

La función gamma está definida con la siguiente función de densidad:

u i u
$ €k
. i
=
 s − 1
!

Donde:  > 0, k > 0, y x ≥ 0

Debido a que la distribución acumulada F(x) no existe de manera explícita, Pearson


encontró una forma tabular de la función gamma incompleta.

Con media igual a:

s
 = μ =

Y varianza igual a:

s
m = n  =


Se obtienen los valores de k y .

s s
 = = I , $#)$Œ, s #$ ?+ $,$:
 m



s=
m


s 
 = = m =
  m

Para generar la variable aleatoria gamma es necesario aplicar el método de


convolución, basado en la suma de k valores de variable aleatoria exponencial con
media igual a 1/, expresando la variable aleatoria x de la siguiente manera:
u u u
1 1
O% ?($ ($+ %  p  i =  i = −  o,%
= − o,† %

 
  

Con la restricción de generar variables aleatorias con valores de k que no sean enteros.

48
/* Genera una variable aleatoria gamma con parámetros lambda y k */

double gamma(double lambda, int k) {

double r,x, tr;

int i;

tr=1.0D;

for(i=1;i<=k; i++) {

r = rand();

tr = tr * r;

x = (-1/lambda)* Math.log(tr);

return(x);

Tabla 3.8.- Pseudocódigo para variable aleatoria gamma.

3.3.4.- DISTRIBUCIÓN NORMAL.

La distribución normal es una de las distribuciones conocidas más utilizadas. Su


popularidad se debe a sus propiedades generales, debido a que está basada en el
teorema del límite central que postula que la distribución de probabilidad de la suma
de N valores de variable aleatoria xi independientes, pero idénticamente distribuidos,
se aproximan asintóticamente a una distribución normal a medida que N se hace muy
grande, y dicha distribución tiene como media y varianza:
}

μ =  μ


n =  n




Tiene la siguiente función de densidad:

1 Žy
k ’
. i
= P Q $

z
‘
nk √2п

Donde: -∞<x<∞

49
μk = 0, 9 nk = 1,
La función de densidad de una distribución normal estandarizada tiene como valores a

1 “’
.'
= $ 
√2п

Donde: -∞<z<∞

Para convertir una distribución normal a una estandarizada se utiliza el valor de z que
es igual a:
i − μk
' =
nk

La distribución acumulativa F(x) o F(z) no existe de manera explícita, pero se encuentra


tabulada en cualquier libro de estadística.

Con media igual a:

 = μ = μk

Y varianza igual a:

m = n  = nk

La variable aleatoria normal es obtenida utilizando el método de convolución,


expresada de la siguiente manera:

i = μ + n % − 6



50
/* Genera una variable aleatoria normal con parámetros media y desviacion) */

double normal(double media, double desviacion) {

double r,x, tr;

int i;

int k=12;

tr = 1.0D;

for (i=1;i<=k;i++) {

r = rand();

tr = tr * r;

x = media + desviacion*(tr – 6.0D);

return(x);

Tabla 3.9.- Pseudocódigo para variable aleatoria normal.

3.4.- MÉTODOS PARA GENERAR VARIABLES ALEATORIAS.

Un modelo de simulación involucra variables aleatorias, las cuales siguen


distribuciones de probabilidad teóricas o empíricas. Estas variables usualmente tienen
un comportamiento no uniforme, por lo que es necesario simular estas variables
mediante generadores que utilizan variables uniformes y una función de
transformación a la distribución de probabilidad deseada. Existen varios
procedimientos para lograrlo, entre ellos están el método de la transformada inversa,
el método de convolución, método de aceptación y rechazo, y el método directo.

3.4.1.- MÉTODO DE LA TRANSFORMADA INVERSA.

La transformada inversa en un método que usa la distribución acumulada F(x) de la


distribución que se desea simular. La función F(x) se encuentra en el intervalo de cero
a uno, y es posible generar un número pseudoaleatorio R y tratar de determinar el
valor de la variable aleatoria para la cual su distribución acumulada es igual a R. Se
determina al resolver la siguiente ecuación:

i
= L

i =   L

51
La dificultad en este método radica en que en algunas ocasiones es muy difícil
encontrar la transformada inversa debido a que no es posible integrarse
analíticamente (ej. distribución normal o gama). Cuando se presenta este caso se
puede intentar el uso de propiedades estadísticas como el límite central o la propiedad
de convolución, como alternativas matemáticas exploratorias.

3.4.2.- MÉTODO DE CONVOLUCIÓN.

Este método permite la generación de variables aleatorias en función de una


combinación lineal ponderada de otras variables aleatorias. Es decir requiere que la
variable a generar se pueda expresar como una suma lineal ponderada de otras
variables aleatorias. Las variables aleatorias normal, binomial, Poisson, gamma y Erlang
son un ejemplo de la aplicación de éste método.

Este método es posible aplicarse siempre y cuando la variable aleatoria x se pueda


expresar como una combinación lineal de k variables aleatorias:

i = ? i + ⋯ ?u i u

Donde i $# -, O% ?($ ($+ %  R-$ #$ + $,$ $. ,  )%$O  $,+$.

3.4.3.- MÉTODO DE COMPOSICIÓN.

Cuando la función de distribución puede ser expresada como una combinación


convexa de otras funciones de distribución, el método de composición es una
alternativa que simplifica la generación de variables aleatorias. En éste método se
expresa a f(x) como una mezcla probabilística de las funciones de densidad fi(x). La
función de distribución tiene la siguiente forma:
Š

.i
=  ) . i



 ,$ ) ≥ 0 9  ) = 1


Para seleccionar las . i


que son componentes de la fi
se debe contemplar
principalmente las consideraciones relativas a la geometría de la distribución y la
minimización de los tiempos esperados del cálculo computacional.

52
Ejemplo.

Generar la variable aleatoria para la siguiente distribución:

1 + i, − 1 ≤ i < 0E
.i
= •
1 − i, 0 ≤ i ≤ 1

Solución:
k
1 + i

i
= ˆ1 + i
i =
2


 k
1 − i

 i
= ˆ1 + i
i + ˆ1 − i
i = 1 −
2
 

Aplicando la transformada inversa:

1 + i

% =  i
=
2
Despejando x se obtiene que:

i = √2% − 1

Para x=-1, se obtiene r = 0

Para x=0, se obtiene r = ½

Sujeta a las siguientes restricciones:

0 ≤ % ≤ 1Ž2

−1 ≤ i ≤ 0

Aplicando la transformada inversa:

1 − i

% =  i
= 1 −
2
Despejando x se obtiene que:

i = 1 − –21 − %

Para x=0, se obtiene r=½

Para x=1, se obtiene r=1

53
Sujeta a las restricciones siguientes:

1Ž ≤ % ≤ 1
2
0≤i≤1

Formulando entonces la variable aleatoria:

√2% − 1, 0 ≤ % ≤ 1Ž2
i=T E
1 − –21 − %
, 1Ž ≤ % ≤ 1
2

3.5.- PROCEDIMIENTOS ESPECIALES.

Existen casos en que se requiere la aplicación de algunas propiedades estadísticas


como el teorema del límite central que permiten generar una distribución deseada.

El teorema del límite central indica que, en condiciones generales, si  es la suma de n


variables aleatorias independientes  … 
, entonces la función de distribución de
 se aproxima a una distribución normal. Este teorema asegura que ocurre cuando n
es lo suficientemente grande.

3.6.- PRUEBAS ESTADÍSTICAS (PRUEBAS DE BONDAD DE AJUSTE).

Al construir el modelo de simulación un punto importante es decidir si el conjunto de


datos se ajusta apropiadamente a una distribución específica de probabilidad. El
proceso de análisis para conocer el comportamiento de los datos, se requiere
formularlos mediante tablas de frecuencias, para así aplicar la prueba de bondad de
ajuste (chi-cuadrada) y la prueba de Kolmogorov-Smirnov, descritas anteriormente en
la sección 2.21, con la variante de que el cálculo de las frecuencias esperadas será de
acuerdo a la función propuesta f(x), para luego obtener mediante integración la F(x)
obteniendo la frecuencia esperada en el intervalo i con la siguientes expresiones:
˜í™š› œ~›žŸž

 i
= ˆ . i
i
˜í™š›  ›žŸž

 =  i
∗ "

Donde f(x) es la función de probabilidad propuesta, los límites superior e inferior será
de acuerdo al intervalo calculado y la N es la cantidad total de datos analizados.

54
4
Lenguajes de Simulación

4.1.- LENGUAJES DE SIMULACIÓN Y SIMULADORES.

Una vez realizada el análisis del sistema a simular, es necesario describir las
especificaciones del modelo en términos de relaciones lógicas. Para el diseño de la
arquitectura del modelo se debe tomar la decisión de desarrollar el sistema mediante
un lenguaje de programación, o bien utilizar un simulador ya existente.

4.1.1.- LENGUAJES DE PROGRAMACIÓN DE PROPÓSITO GENERAL.

Los lenguajes de programación tienen sus inicios en los años cincuentas, los primeros
lenguajes de programación fueron desarrollados para propósito general, pero
enfocados a diferentes nichos de oportunidad. El lenguaje Fortran fue utilizado
ampliamente por científicos y matemáticos por su facilidad de implementar
expresiones matemáticas, en cambio, el lenguaje Cobol, tuvo su aceptación en la
administración, debido a su facilidad para el manejo de grandes volúmenes de datos.

Al paso del tiempo fueron emergiendo otros lenguajes de programación de propósito


general, en los años setentas surge el lenguaje Basic en las primeras
microcomputadoras, y con el advenimiento de la programación estructurada, el
lenguaje Pascal, y el lenguaje C presentan nuevas estructuras de control que permiten
al programador escribir un código más legible, limitando el uso de los saltos
incondicionales utilizados en Fortran y Cobol.

En los ochentas y noventas con el enfoque orientado a objetos, y los nuevos


requerimientos en la presentación gráfica surgen nuevos lenguajes, y se adaptan los
conocidos, con una nueva cara, los “lenguajes visuales” que han sido populares hasta
la fecha, los cuales cuentan con poderosos entornos gráficos, librerías que permiten
fácilmente el desarrollo. La compañía Microsoft líder en los lenguajes de
programación para computadoras personales presenta el kit de desarrollo VisualStudio
que en la última década lo ha ido transformado para incluir las nuevas tecnologías NET,
soportando las redes, programación web, y programación móvil.

55
4.1.2.- LENGUAJES DE PROGRAMACIÓN DE PROPÓSITO ESPECÍFICO.

A mediados de los años cincuentas,


ncuentas, se construyen los primeros simuladores utilizando
lenguajes de programación de propósito general. Las dificultades presentadas en su
construcción, dan luz a proyectos encaminados a desarrollar nuevos lenguajes
lenguaje de
programación que sean específico
específicos para construir simuladores.

Estos lenguajes de simulación tienen como finalidad reducir la tarea de programación,


definiendo claramente el sistema a simular, que sea fácil mantener el código debido a
los continuos cambios que surgen en el proceso de experimentación,
experimentación, y una definición
de las entidades a utilizar que permita relacionar las entidades dentro del sistema.

Las características con las cuales debe contar un lenguaje de simulación es


es:

• Proporcionar
roporcionar instrucciones para la generación de variables aleatorias uniformes
y no uniformes.
• Incluir instrucciones para el manejo de reloj
reloj.
• La elaboración de un informe de resultados de la simulación.
• Reportar los errores de lógica e inconsistencias encontradas.

4.1.3.- LENGUAJES DE SIMULACIÓN.

4.1.3.1.- GPSS
SS (General Purpose Simulation System).

El lenguaje fue creado por Geoffrey Gordon a finales de la década de los cincuentas, y
tiene como objetivo principal la modelación de sistemas discretos. El sistema a simular
se debe describir utilizando una secuencia de bloques que representan las actividades,
Un grupo de transacciones fluye por esa secuencia descrita por los bloques. Es decir
transacciones y bloques son dos elementos básicos. Por ejemplo en un sistema
bancario a simular, las transacciones son las personas que acuden al banco, y van
fluyendo por todas las instalaciones, y los bloques representan una operación, tal es el
caso de la entrada o salida, la atención del cajero, o la espera.

La empresa
presa Minuteman Software (www.minutemansoftware.com)
( por más de veinte
años proporciona software para simulaci
simulación. Actualmente distribuye el producto GPSS
World™ versión 5.2.2 comercialmente y también presenta una versión académica.
académica

56
4.1.3.2.- SIMSCRIPT.

SIMSCRIPT es un lenguaje que fue desarrollado en 1962 por Harry Markowitz y su


equipo para soportar el proyecto Air Force Rand. Al paso de los años se ha
transformado este lenguaje para cumplir con las nuevas demandas computacionales y
del mercado.

CACI (www.simscript.com) es una empresa ubicada en San Diego California, que es


propietaria de SIMSCRIPT, y cuenta con casi cincuenta años de experiencia en
productos para
ra construir simuladores
simuladores.

SIMSCRIPT III™ es la nueva versión liberada por CACI en 2007 incorporando la


tecnología orientada a objetos y los nuevos procesadores de 32 y 64 bits. Contiene un
entorno de desarrollo e interfases para construir gráficos en dos y tres dimensiones
basados en Java. Es utilizado en áreas tales como: telecomunicaciones, simulación de
procesos de fabricación, logística en aeropuertos, entrenamientos militares, unidades
militares animadas, formación de vuelos, embarques, etc. Es compatible
compa con
plataformas Windows, Unix y Linux.

4.1.3.3.- SIMULA.

El lenguaje de simulación SIMULA fue diseñado por Ole-Johan


Ole Johan Dahl y Kristen Nygaard
en el Centro Noruego de C Computación en Oslo Noruega entre 1962 y 1967. Fue
originalmente diseñado e implementado
implementado como un lenguaje de simulación de eventos
discretos. Este lenguaje fue el primer lenguaje de programación orientado a objetos,
objetos
que tuvo gran influencia para la introducción de conceptos importantes conocidos
como el enfoque orientado a objetos objetos. Desafortunadamente hoy en día no se
encuentra un compilador soportado, dejando un gran trabajo como herencia a las
futuras generaciones.

4.1.3.4.- PROMODEL.

ProModel™ es un paquete de simulación que no requiere de programación, pero sí lo


permite. Se ejecuta en plataforma Windows, es fácil de utilizar y tiene gran flexibilidad
al construir complejas aplicaciones.

Permite
ermite simular mediante animaciones cualquier tipo de sistemas:
s Manufactura,
anufactura,
logística, manejo de materiales, bandas de transporte, grúas viajeras, ensamble, corte,
talleres, logística, etc.

Una vez creado el modelo, se puede optimizar mediante el módulo de optimización a


diferencia del procedimiento tradicion
tradicional de prueba y error.

57
La empresa comercial ProModel Corporation ((www.promodel.com.mx) Promueve Prom la
utilización de la Simulación y Optimización como una respuesta rápida a los problemas
de decisión en las empresas,, generando ahorros sustanciales, a través de la simulación.

4.1.3.5.- ARENA.

Arena™ es un software para realizar simulación de eventos discretos. Desarrollado por


Systems Modeling y adquirido por Rockwell Automation ((www.arenasimulation.com
www.arenasimulation.com)
libera la versión 14 en junio del 2012. Arena proporciona una interfase visual para la
construcción del modelo basado en módulos que representan la lógica del proceso
relativas a las entidades, flujo y tiempo
tiempo; y presenta los resultados de la simulación con
reportes de los datos estadísti
estadísticos.

El lenguaje de programación VisualBasic


VisualBasic™ de Microsoft está integrado en Arena™,
Arena
como parte de un servicio opcional, para el desarrollo de algoritmos específicos.

Cuenta con ediciones comerciales: Professional, Enterprise, Estándar, Basic, y


ediciones académicas: Academic Lab, Research , y Student.

4.2.- APRENDIZAJE Y USO DE LENGUAJE DE SIMULACIÓN O UN SIMULADOR.

Al incursionar en la construcción del modelo de simulación, es innegable que los


conocimientos computacionales, matemáticos y de la teoría de la probabilidad juegan
un papel importante en el éxito de esta tarea. El conocimiento de un lenguaje de
simulación o el uso de un simulador es parte esencial para iniciar con la construcc
construcción
del modelo. El tipo y la complejidad del modelo forman parte del criterio de selección
del lenguaje de simulación o simulador, siendo la experiencia en el desarrollo de
sistemas computacionales una gran ayuda para incursionar en la construcción de
simuladores.

El lenguaje de simulación GPSS es de gran ayuda para iniciar con esta actividad, un
lenguaje que a pesar de surgir en los años cincuentas está todavía vigente con muy
pocas modificaciones, y ha sido fuente de inspiración para otros simuladores tales
tal
como: Promodel y Arena que proporcionan ambientes más robustos y ayu ayudas
das visuales
que sustituyen la programación.

4.2.1.- LENGUAJE GPSS.

GPSS World™ es un software de la empresa Minuteman Software que se ejecuta en un


computadoras con sistemas operativos Windows. Para construir el modelo de
simulación es necesario describir mediante un diagrama de bloques que
posteriormente se codifica en el lenguaje GPSS.

58
Este software está basado en el lenguaje GPSS que fue desarrollado por Geoffrey
Gordon en los años sesentas, y ha contribuido con importantes conceptos que hoy en
día están presentes en los principales software de simulación comerciales.

GPSS World™ está diseñado para entregar respuestas rápidas y confiables con el
menor esfuerzo. La mayoría de los sistemas pueden ser modelados de varias maneras
utilizando GPSS World™. A menudo se utiliza un subconjunto de instrucciones.

4.2.1.1.- ESTRUCTURA DEL LENGUAJE GPSS.

Las instrucciones dentro del lenguaje GPSS se pueden clasificar como:

• Instrucciones para definir variables.


• Instrucciones para la lógica del programa.
• Instrucciones para el control de la simulación.

Cada una de estas instrucciones de GPSS están descritas en el apéndice B.

Instrucciones para definir variables.

Instrucción Descripción
FUNCTION Definición de funciones.
STORAGE Definición de número de servidores.
MATRIX Definición de matrices.
EQU Asignación numérica a variables.
INITIAL Inicialización de variables.
TABLE Definición de histogramas.
VARIABLE Definición de operaciones.
FVARIABLE

Tabla 4.1..- Instrucciones de GPSS para definición de variables.

59
Instrucciones para la lógica del programa.

Instrucción Descripción
SEIZE Simulación de inicio de proceso y captura del servidor.
ENTER
PREEMPT
RELEASE Simulación de fin de proceso y liberación del servidor.
LEAVE
RETURN
QUEUE Simulación de entrada de transacciones a un almacén.
ENTER
LINK
DEPART Simulación de salida de transacciones de un almacén.
ENTER
UNLINK
GENERATE Simulación de entrada de transacciones al sistema.
SPLIT
TERMINATE Simulación de salida de transacciones del sistema.
ADVANCE Simulación de diversos tipos de proceso.
ASSEMBLE
MATCH
GATHER
TRANSFER Simulación de control de flujo de transacciones
TEST
GATE
LOGIC
SELECT
LOOP
BUFFER
SAVEVALUE Bloques de operaciones aritméticas.
MSAVEVALUE
ASSIGN
INDEX
PRIORITY
TABULATE Bloques de creación de estadísticas.
Tabla 4.2.- Instrucciones de GPSS para la lógica del programa.

Instrucciones para el control de la simulación.

Instrucción Descripción
END Control de la simulación
START
SIMULATE

Tabla 4.3.- Instrucciones de GPSS para el control de la simulación.

60
4.2.1.2.- DISEÑO Y CODIFICACIÓN DEL MODELO.

El modelo puede ser conceptualizado gráficamente como un sistema cerrado en el cual


las transacciones entran al sistema por una puerta representada por el bloque
GENERATE, y salen las transacciones del sistema por una o varias puertas de salida, las
cuales son representadas por el bloque TERMINATE. El bloque ADVANCE simula el
tiempo de servicio, siendo necesario describir secuencialmente dos bloques ADVANCE,
el primero para simular el servicio realizado por el proceso 1, y el segundo para
simular el proceso 2. El diagrama de bloques utilizado por GPSS utiliza una simbología,
que está definida en cada una de las instrucciones de bloques, la cual su interpretación
requiere de tiempo, por lo que en esta sección no se aplicará para facilitar la
comprensión.

Tiempo entre llegadas TE

Tiempo de Tiempo de
servicio TS1 servicio TS2

Proceso 1 Proceso 2

Figura 4.1.- Sistema con dos procesos en serie.

Las variables aleatorias utilizadas en este sistema son tres: el tiempo de entre llegadas
(TE), el tiempo de servicio del proceso 1 (TS1), y el tiempo de servicio del proceso 2
(TS2). La variables aleatorias uniformes y no uniformes pueden ser generadas en GPSS,
siendo las variables aleatorias no uniformes las que requieren una particular
especificación adicional. Para simplificar primero utilizaremos variables aleatorias
uniformes. La variable aleatoria del tiempo entre llegadas, es descrita dentro del
bloque GENERATE, y el tiempo de servicio de cada proceso es descrita en el bloque
ADVANCE.

Simulación de n transacciones.

Para simular un sistema que lleve a cabo n transacciones atendidas, se utiliza como
medida de control de la simulación a las instrucciones TERMINATE y START. En la
instrucción TERMINATE se utiliza el operando A, para representar la cantidad que se
tiene que decrementar del contador de finalización inicializado con la instrucción
START. EL siguiente ejemplo muestra la aplicación de este concepto, tomando como

61
base un modelo con características similares al visto en el anterior diagrama de
bloques.

Simulación de n automóviles atendidos en un lavado de autos.

Al iniciar el modelado en GPSS, las instrucciones GENERATE, TERMINATE y ADVANCE


tienen una importancia fundamental en la simulación. A continuación se presenta un
ejemplo en donde se detalla su funcionamiento.

Ejemplo: Se desea diseñar un modelo para simular el funcionamiento de un lavado de


automóviles en el cual se realizan dos procesos en serie: lavado exterior, y secado
exterior. El tiempo entre llegadas de los vehículos tiene un comportamiento uniforme
con una media de 15 ± 5 minutos. El tiempo de servicio de lavado exterior tiene un
comportamiento uniforme con una media de 5 ± 2 minutos, y el tiempo de secado
exterior es de 6 ± 3 minutos. Se desea simular 100 vehículos atendidos.

Solución: El modelo debe representar un lavado de automóviles, por lo cual las


transacciones serán los vehículos. Los tiempos ya están definidos como TE=u(15,5),
TS1=u(5,2), y TS2=u(6,3). Primeramente es necesario estandarizar la unidad de tiempo
que se va a utilizar en el modelo, siendo los minutos la unidad de tiempo seleccionada,
convirtiendo todos los parámetros a minutos.

Diagrama de bloques para un lavado de autos (100 vehiculos atendidos)

GENERATE 15,5 ADVANCE 5,2 ADVANCE 6,3 TERMINATE 1

Figura 4.2.- Diagrama de bloques para un lavado de autos.

Se describe el modelo haciendo uso de un diagrama de bloques, donde estos bloques


representan una instrucción en lenguaje GPSS (apéndice B). Inicia el diagrama con el
bloque GENERATE 15,5 el cual genera vehículos cada 15 ± 5 minutos, las cuales entran
al sistema. Las flechas determinan el flujo de las transacciones. Los vehículos pasan al
bloque ADVANCE 5,2 que simula un proceso de retardo de 5 ± 2 minutos (lavado
exterior del vehículo). Posteriormente se procede al siguiente bloque que está
representado por ADVANCE 6,3 el cual simula el secado exterior con un tiempo de
retardo de 6 ± 3 minutos. Una vez terminado el secado, procede al último bloque
representado por el TERMINATE 1, simulando la salida del vehículo del sistema.

En este modelo considera que la capacidad de lavado y secado es infinita debido a que no se tiene definida la capacidad en el
servicio de lavado y secado, siendo atendidos los vehículos sin tener que hacer cola, debido a que existe un número infinito de
espacio y servidores para lavar y secar. El reporte de resultados de la simulación arroja información de una atención “ideal” como
una medida exploratoria inicial.

62
Para llevar a cabo la simulación de 100 vehículos atendidos es necesario el uso de la
instrucción de control START 100. El operando 100 inicializa el contador de finalización
en 100, el cual se irá decrementando en 1 cada vez que una transacción pase por el
bloque TERMINATE 1.

Código GPSS.

GENERATE 15,5 ; Genera vehículos con tiempo entre llegadas U(15,5)

ADVANCE 5,2 ; Simula el proceso de lavado exterior con un tiempo de servicio de U(5,2)

ADVANCE 6,3 ;Simula el proceso de secado exterior con un tiempo de servicio de U(6,3)

TERMINATE 1 ;Abandona el vehículo del sistema

START 100 ;Inicia el proceso de simulación de 100 vehículos atendidos iniciando el contador de finalización igual a 100.

Tabla 4.4.- Código GPSS para simular lavado y secado.

Al ejecutar el código (corrida) mostrará un reporte de resultados con las estadísticas


producto de la simulación efectuada. Este reporte de resultados de la simulación tiene
una información estructurada descrita más adelante.

Simulación de n automóviles atendidos en un lavado de autos (múltiples servidores).

Ejemplo: Diseñar un modelo para simular el funcionamiento de un lavado de


automóviles en el cual se realizan dos procesos en serie: lavado exterior, y secado
exterior. El tiempo entre llegadas de los vehículos tiene un comportamiento uniforme
con una media de 15 ± 5 minutos. El tiempo de servicio de lavado exterior tiene un
comportamiento uniforme con una media de 5 ± 2 minutos, y se tienen 2 espacios
para lavar de manera simultánea. El tiempo de secado exterior es de 6 ± 3 minutos, y
se cuentan con 6 espacios para secado de forma simultánea. Se desea simular 100
vehículos atendidos. No se cuenta con espacio entre el área de lavado y el área de
secado.

Solución: Para especificar en el modelo la capacidad instalada en el centro de lavado,


es necesario definir dos variables: LAVA Y SECA. Las cuales por medio de la instrucción
STORAGE, es posible determinar la capacidad máxima de servicio simultáneo.

63
Diagrama de bloques para un lavado de autos (100 vehiculos atendidos) Capacidad: 2 Lava, 6 Seca

GENERATE 15,5

ENTER ADVANCE 5,2


LAVA,1

ENTER LEAVE ADVANCE 6,3 LEAVE


SECA,2 LAVA,1 SECA,1

TERMINATE 1

Figura 4.3.- Diagrama de bloques para un lavado de autos. Incluye


servidores para realizar el lavado y secado.

En el diagrama de bloques se representa la captura del servidor por medio del bloque
ENTER, y la liberación del servidor con el bloque LEAVE. Es evidente que para liberar
un servidor (espacio) es necesario que exista previamente su captura del mismo por
medio del ENTER. Pero es conveniente subrayar, que cuando se termina de lavar un
vehículo, si existe un espacio disponible para ser secado se podrá mover, de lo
contrario seguirá esperando el tiempo necesario, hasta que exista un espacio
disponible para el secado (como se muestra en la lógica), y mientras tanto el servidor
que lavó el vehículo estará de ocioso.

64
Código GPSS.

LAVA STORAGE 2 ;capacidad máxima de lavado=2

SECA STORAGE 6 ;capacidad máxima de secado = 6

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

ENTER LAVA,1 ;Captura un espacio para el lavado

ADVANCE 5,2 ; Simula el proceso de lavado exterior con un tiempo de servicio de U(5,2)

ENTER SECA,1 ;Captura un espacio para secado

LEAVE LAVA,1 ;Libera un espacio de lavado

ADVANCE 6,3 ;Simula el proceso de secado exterior con un tiempo de servicio de U(6,3)

LEAVE SECA,1 ;Libera un espacio de secado

TERMINATE 1 ;Abandona el vehiculo del sistema

START 100 ;Inicia el proceso de simulación de 100 vehiculos atendidos iniciando el contador de finalización igual a 100.

Tabla 4.5.- Código GPSS para el diagrama de bloques de la Figura 4.3

Simulación por un periodo de tiempo en un lavado de autos.

En algunos modelos es necesario llevar a cabo la simulación por un período dado de


tiempo. Para diseñar un modelo con estas características es necesario incluir un reloj
que contabilice el tiempo de la simulación. Para simular este reloj se requiere incluir
una secuencia de instrucciones que controlan el tiempo de la simulación.

Ejemplo: Diseñar un modelo para simular el funcionamiento de un lavado de


automóviles en el cual se realizan dos procesos en serie: lavado exterior, y secado
exterior. El tiempo entre llegadas de los vehículos tiene un comportamiento uniforme
con una media de 15 ± 5 minutos. El tiempo de servicio de lavado exterior tiene un
comportamiento uniforme con una media de 5 ± 2 minutos, y se tienen 2 espacios
para lavar de manera simultánea. El tiempo de secado exterior es de 6 ± 3 minutos, y
se cuentan con 6 espacios para secado de forma simultánea. Se desea simular una
jornada de 8 horas de trabajo continuo. No se cuenta con espacio entre el área de
lavado y el área de secado.

Solución: Para modelar este sistema es preciso determinar dos secuencias de bloques,
la primera designada para simular los vehículos, y la segunda para simular el
funcionamiento de un reloj para controlar el periodo simulado.

65
Diagrama de bloques de un lavado de autos (jornada de 8 horas) Capacidad: 2 Lava, 6 Seca

GENERATE 15,5

ENTER ADVANCE 5,2


LAVA,1

ENTER LEAVE ADVANCE 6,3 LEAVE


SECA,2 LAVA,1 SECA,1

TERMINATE

GENERATE 480 TERMINATE 1

Figura 4.4.- Diagrama de bloques para un lavado de autos. Simula jornada de 8 horas

En la primera secuencia de bloques, es similar al mostrado en el ejercicio anterior,


salvo que en el bloque TERMINATE no se establece el operando A, debido a que el
contador de finalización que controla la simulación no dependerá de los vehículos
atendidos.

La segunda secuencia de bloques, representa un reloj que simula el tiempo de la


simulación solicitado. El primer bloque GENERATE 480 genera una transacción cada
480 unidades de tiempo (8 horas), para luego esa transacción sacarla del sistema por el
bloque TERMINATE 1, siendo el operando 1, la unidad a decrementar al contador de
finalización de GPSS. Es necesario utilizar como complemento una instrucción de
control de simulación START 1, la cual inicializa el contador de finalización a 1, una vez
que la transacción llega al bloque TERMINATE 1, finalizando en ese preciso momento la
simulación.

66
Código GPSS.

LAVA STORAGE 2 ;capacidad máxima de lavado=2

SECA STORAGE 6 ;capacidad máxima de secado = 6

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

ENTER LAVA,1 ;Captura un espacio para el lavado

ADVANCE 5,2 ; Simula el proceso de lavado exterior con un tiempo de servicio de U(5,2)

ENTER SECA,1 ;Captura un espacio para secado

LEAVE LAVA,1 ;Libera un espacio de lavado

ADVANCE 6,3 ;Simula el proceso de secado exterior con un tiempo de servicio de U(6,3)

LEAVE SECA,1 ;Libera un espacio de secado

TERMINATE ;Abandona el vehiculo del sistema

GENERATE 480 ;Genera 1 transacción (jornada de 8 horas) cada 480 minutos

TERMINATE 1 ;Abandona la transacción del sistema (finaliza la jornada)

START 1 ;Inicia el proceso de simulación de 1 jornada de trabajo de 8 horas (480 minutos).

Tabla 4.6.- Código GPSS para el diagrama de la figura 4.4

Una vez realizada la simulación, arroja un reporte de resultados con estadísticas para
conocer el comportamiento del modelo.

4.3.- CASOS PRÁCTICOS DE SIMULACIÓN.

4.3.1.- PROBLEMAS CON LÍNEAS DE ESPERA.

Una línea de espera se forma cuando la demanda de un servicio supera la capacidad


instalada para proporcionar dicho servicio. Estos servidores como cajeros, máquinas,
grúas, taxis, etc, están instalados para proporcionar un servicio a las transacciones que
pueden ser clientes, piezas, autos, etc. El tiempo de servicio y el tiempo de entre
llegadas están en función de variables aleatorias, y el estudio de estos modelos
permite conocer su comportamiento. La simulación de estos sistemas es una
herramienta útil para optimizar los recursos.

4.3.1.1.- USO DE QUEUE Y DEPART.

Una línea de espera, también conocida usualmente como una cola, es modelada en
GPSS por dos instrucciones: QUEUE y DEPART para la delimitación física de la cola.
Estas instrucciones únicamente generan una estadística del comportamiento de la

67
línea de espera, y no participan en la modificación de su comportamiento. El reporte
de resultados presenta una estadística de las colas definidas, proporcionado datos
tales como:

• Número máximo de transacciones en espera en el periodo de simulación.


• Cantidad de transacciones en espera al finalizar el periodo de simulación.
• Número de transacciones que realizaron una espera.
• Número de transacciones que no tuvieron que esperar.
• Tiempo promedio de espera de una transacción.
• Tiempo promedio de espera de una transacción (sin contabilizar las
transacciones que no tuvieron que esperar.

Estos datos sirven para detectar los tiempos de un proceso, cuellos de botella al
proporcionar un servicio, y ayuda en la formulación de experimentos para la
optimización de los servicios.

Una transacción al fluir por el sistema tendrá que esperar cuando tenga que hacer
frente a un servicio limitado. Estos servicios simulados por las instrucciones ENTER y
LEAVE, o las instrucciones SEIZE y RELEASE, se ven detenidas formando una línea de
espera, que el diseñador del modelo debe de representar para conocer a fondo lo que
está sucediendo en este trayecto. Conocer los tiempos de recorrido de las
transacciones por una parte del sistema también se pueden modelar con el QUEUE y
DEPART.

4.3.1.2.- DATOS ESTADÍSTICOS DE LAS COLAS, EN EL REPORTE DE RESULTADOS.

A continuación se diseña un modelo, en el cual se requiere conocer información de


todo el proceso que involucra el lavado de autos. Este simple ejemplo muestra la
ubicación de los bloques QUEUE Y DEPART para recabar datos estadísticos del
comportamiento de una línea de espera denominada “ESTANCIA”, que simula una cola
desde el principio que llega el vehículo a las instalaciones, hasta que sale el vehículo de
las instalaciones.

Diagrama de bloques de un lavado de autos utilizando QUEUE y DEPART (100 AUTOS ATENDIDOS)

GENERATE 15,5 QUEUE TOTAL DEL DEPART TERMINATE 1


ESTANCIA,1 PROCESO ESTANCIA,1

Figura 4.6.- Diagrama de bloques para un lavado de autos. Incluye Queue y Depart.

68
CÓDIGO GPSS.

GENERATE 15,5

QUEUE 15,5

……(Lógica de todo el proceso)

DEPART ESTANCIA,1

TERMINATE 1

START 100

Tabla 4.7.- Código GPSS para el diagrama de la figura 4.6


Pseudocódigo para variable aleatoria normal.

La ubicación de los bloques QUEUE y DEPART están en función de conocer datos


estadísticos de una parte o todo el proceso. En el diagrama arriba mostrado se
visualiza que la ubicación de los bloques para conocer datos estadísticos de todo el
proceso que se lleva a cabo en el lavado de autos. La cola identificada como
“ESTANCIA” nos permite conocer datos estadísticos de las transacciones que entran al
bloque QUEUE y/o salen por el bloque DEPART. Una información relevante en este
ejemplo es el tiempo estimado que dura un vehículo en el lavado de autos, la cantidad
promedio de vehículos que esperan dentro de las instalaciones, la cantidad de
vehículos que no tuvieron que esperar para ser atendidos, al momento de finalizar la
simulación cuantos vehículos se encuentran dentro de las instalaciones.

Al realizar la corrida del programa GPSS, se obtiene un reporte de resultados en el cual


se destaca una sección de datos estadísticos de las colas definidas con las instrucciones
QUEUE y DEPART.

La sección “QUEUE” proporciona los datos estadísticos de todas las colas definidas en
el modelo, presentando esta información en una matriz, en la cual los renglones son
las colas definidas en el programa, y las columnas son los datos estadísticos
recopilados en la simulación efectuada al momento de realizar la corrida.

Datos estadísticos.
# Columna Significado
(inglés)
1 QUEUE Nombre o número de la cola (definida con las instrucciones QUEUE y DEPART).
2 MAX Contenido máximo de la cola durante el periodo de simulación.
3 CONT Contenido de la cola al finalizar la simulación.
4 ENTRY Contador TOTAL de transacciones que pasaron por la cola.
5 ENTRY(0) Contador de transacciones que no tuvieron que hacer cola.
6 AVE. CONT. Transacciones promedio que tuvieron que esperar en la cola.
7 AVE. TIME Tiempo promedio que las transacciones tuvieron que esperar en la cola.
8 AVE (-0) Tiempo promedio que las transacciones tuvieron que esperar en la cola, no se consideran aquellas
transacciones que no tuvieron que esperar.
9 RETRY Número de transacciones que esperan a que se cumpla una condición específica.

Tabla 4.8.- Sección Queue en el reporte de resultados.

69
Ejemplo: Diseñar un modelo para simular el funcionamiento de un lavado de
automóviles en el cual se realizan dos procesos en serie: lavado exterior, y secado
exterior. El tiempo entre llegadas de los vehículos tiene un comportamiento uniforme
con una media de 15 ± 5 minutos. El tiempo de servicio de lavado exterior tiene un
comportamiento uniforme con una media de 5 ± 2 minutos, y se tienen 2 espacios
para lavar de manera simultánea. El tiempo de secado exterior es de 6 ± 3 minutos, y
se cuentan con 6 espacios para secado de forma simultánea. Se desea simular una
jornada de 8 horas de trabajo continuo. No se cuenta con espacio entre el área de
lavado y el área de secado. Se desea conocer la cantidad de espacios promedio en
espera para entrar a la sección de lavado, y el tiempo promedio que un vehículo tarda
en todo el proceso.

Solución: Se le incorporan dos pares de instrucciones para recopilar la información


estadística del comportamiento de dos colas (ESTANCIA y ELAVAR). La cola ESTANCIA
proporciona datos estadísticos de toda la estancia del vehículo desde que llega, hasta
que se va. La segunda cola ELAVAR proporciona datos estadísticos de la espera que el
vehículo realiza desde que llega, hasta que inicia el proceso de lavado. Nótese que el
DEPART ELAVAR,1 está ubicado posteriormente que captura al servidor de lavado, y no
antes, debido a que se mueve de la cola, hasta que el servidor le indica que mueva el
auto para ponerlo en la sección de lavado.

70
Diagrama de bloques de un lavado de autos (jornada de 8 horas) Capacidad: 2 Lava, 6 Seca

GENERATE 15,5
QUEUE ESTANCIA,1

QUEUE ELAVAR,1

ENTER LAVA,1 Incluye


colas:
ESTANCIA y
ELAVAR
DEPART ELAVAR,1

ADVANCE 5,2 Figura 4.7.- Diagrama de bloques para lavado de autos.


Incluye las colas: ESTANCIA y ELAVAR

ENTER
SECA,2

LEAVE ADVANCE 6,3 LEAVE SECA,1


LAVA,1

DEPART ESTANCIA,1

GENERATE 480 TERMINATE 1


TERMINATE

Código GPSS.

LAVA STORAGE 2 ;capacidad máxima de lavado=2

SECA STORAGE ,6 ;capacidad máxima de secado = 6

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

QUEUE ESTANCIA,1 ; entra al lavado de autos

QUEUE ELAVAR,1 ; espera a entrar al proceso de lavado

ENTER LAVA,1 ;Captura un espacio para el lavado

DEPART ELAVAR,1 ;sale de la espera para lavar

ADVANCE 5,2 ; Simula el proceso de lavado exterior con un tiempo de servicio de U(5,2)

ENTER SECA,1 ;Captura un espacio para secado

71
LEAVE LAVA,1 ;Libera un espacio de lavado

ADVANCE 6,3 ;Simula el proceso de secado exterior con un tiempo de servicio de U(6,3)

LEAVE SECA,1 ;Libera un espacio de secado

DEPART ESTANCIA,1 ;Sale de la espera de lavado y secado (finaliza los dos procesos)

TERMINATE ;Abandona el vehiculo del sistema

GENERATE 480 ;Genera 1 transacción (jornada de 8 horas) cada 480 minutos

TERMINATE 1 ;Abandona la transacción del sistema (finaliza la jornada)

START 1 ;Inicia el proceso de simulación de 1 jornada de trabajo de 8 horas (480 minutos).

Tabla 4.9.- Código GPSS para el diagrama de la figura 4.7

4.3.1.3.- TIEMPO DE SERVICIO DE LAVADO Y SECADO.

En el modelo se realizan dos servicios (lavado y secado). Cada servicio tiene su


capacidad instalada definida por la instrucción STORAGE. Para conocer los datos
estadísticos resultado de la simulación, el reporte de resultados proporciona una
sección denominada “STORAGES”, mediante una matriz, en la cual los renglones son
los servicios, y las columnas los datos estadísticos.

Datos estadísticos.
# Columna Significado
(inglés)
1 STORAGE Nombre del servicio.
2 CAP Capacidad máxima del servicio. (definida con la instrucción STORAGE).
3 REM Número de servidores disponibles al finalizar la simulación.
4 MIN Número mínimo de servidores utilizados en toda la simulación.
5 MAX Número máximo de servidores utilizados en toda la simulación.
6 ENTRIES Total de transacciones atendidas por los servidores durante toda la simulación.
7 AVL Disponibilidad del servicio al finalizar la simulación (1-disponible, 0-no disponible).
8 AVE.C Tiempo promedio de servicio.
9 UTIL Porcentaje de utilización del servicio durante toda la simulación.
10 RETRY Transacciones en espera de una condición específica.
11 DELAY Transacciones en espera.

Tabla 4.10.- Sección STORAGE en el reporte de resultados.

Estos datos estadísticos son utilizados para tomar decisiones relativas a la capacidad
instalada y sus efectos colaterales en la formación de líneas de espera. El estudio de
diversos escenarios con distintas capacidades, obligan a la experimentación cuyos
resultados permiten al analista la determinación de la cantidad óptima de servidores,
sujeta a las restricciones propias del modelo.

72
Al ejecutar la primera simulación del modelo, el reporte de resultados muestra al inicio
la información del tiempo de la simulación. Iniciando con el reloj en cero, y finalizando
el reloj en 480 (480 minutos). También indica la cantidad de instrucciones tipo bloque
(no contabiliza las definiciones, ni las instrucciones de control. La cantidad definidas de
instalaciones (no se utiliza ninguna) y por último la cantidad de servicios simultáneos
(storage).

Tabla 4.11.- Sección inicial en el reporte de resultados.

La sección “QUEUE” muestra los datos estadísticos de las dos líneas de espera
definidas (ESTANCIA y ELAVAR). La cola ESTANCIA proporciona la información de la
estancia en las instalaciones. Se muestra que el tiempo promedio de esa estancia es de
casi 11 minutos. La cola ELAVAR muestra que ningún vehículo tuvo que esperar para
entrar al proceso de lavado. También se muestra que entraron 31 vehículos al sistema.

Tabla 4.12.-Sección QUEUE en el reporte de resultados.

La sección “STORAGE” proporciona los datos estadísticos concernientes a los servicios


proporcionados (LAVA y SECA). En el servicio de lavado con una capacidad instalada de
2, se aprecia un porcentaje de utilización de 15.6% y con un máximo de servidores
utilizados de 1, pudiendo ahorrar costos, disminuyendo en uno al servicio de lavado.
También muestra que entraron 31 vehículos al lavado, pero sólo entraron 30 vehículos
al proceso de secado. Es de suponerse que el vehículo faltante al momento de finalizar
la simulación quedó en el proceso de lavado.

En el servicio de secado que cuenta con una capacidad de seis de manera simultánea,
también los datos muestran una capacidad excedente, debido a que únicamente la
utilización fue de 6.2%, y máximo estuvo ocupado 1 a la vez.

Tabla 4.13.-Sección STORAGE en el reporte de resultados.

Esta primera corrida del modelo, pone de manifiesto la situación en la que trabaja este
sistema, viendo claramente que se puede optimizar, modificando la cantidad de
servidores, ahorrando así costos, o bien abre la posibilidad de nuevos servicios que

73
puede proporcionar con la misma cantidad de trabajadores. Si se modifica la capacidad
instalada. (lava=1, seca = 1) en las instrucciones STORAGE, al ejecutar el modelo, se
muestran los resultados siguientes:

En la sección “QUEUE” indica que el tiempo promedio en el servicio completo es de


casi 11 minutos, (no afectó el disminuir la cantidad de servidores), y también muestra
que tampoco tuvieron que esperar para entrar al proceso de lavado.

La sección “STORAGE” presenta un 31.2% de utilización en el servicio de lavado, y un


37.2% en el servicio de secado.

Con dos corridas, la información para el tomador de decisiones es de gran ayuda, ya


que permite experimentar con diversos escenarios, permitiendo optimizar los servicios
cumpliendo con las exigencias de sus clientes.

4.3.1.4.- VARIABLES ALEATORIAS.

GPSS World proporciona una librería PLUS que contiene funciones prefinidas de las
principales distribuciones teóricas, ahorrando al programador la implementación de
estos generadores. El programador tendrá que implementar aquellos generadores
para distribuciones empíricas haciendo uso de la instrucción FUNCTION.

74
Generadores disponibles en la librería PLUS de GPSS.
Distribución Sintaxis
Beta REAL=BETA(STREAM,MIN,MAX,SHAPE1,SHAPE2)
Binomial ENTERO=BINOMIAL(STREAM,TRIALCOUNT,PROBABILITY).
Binomial Negativa ENTERO=NEGBINOM(STREAM,SUCCESSCOUNT,PROBABILITY).
Exponencial REAL=EXPONENTIAL(STREAM,LOCATE,SCALE).
Gamma REAL=GAMMA(STREAM,LOCATE,SCALE,SHAPE).
Geométrica ENTERO=GEOMETRIC(STREAM,PROBABILITY).
Laplace REAL=LAPLACE(STREAM,LOCATE,SCALE).
LogLaplace REAL=LOGLAPLACE(STREAM,LOCATE,SCALE,SHAPE).
LogLogistica REAL=LOGLOGIS(STREAM,LOCATE,SCALE,SHAPE).
Logistica REAL=LOGISTIC(STREAM,LOCATE,SCALE).
LogNormal REAL=LOGNORMAL(STREAM,LOCATE,SCALE,SHAPE).
Normal REAL=NORMAL(STREAM,MEAN,STDDEV).
Normal inversa REAL=INVGAUSS(STREAM,LOCATE,SCALE,SHAPE).
Pareto REAL=PARETO(STREAM,LOCATE,SCALE).
Pearson tipo V REAL=PEARSON5(STREAM,LOCATE,SCALE,SHAPE).
Pearson tipo VI REAL=PEARSON6(STREAM,LOCATE,SCALE,SHAPE1,SHAPE2).
Poisson ENTERO=POISSON(STREAM,MEAN).
Triangular REAL=TRIANGULAR(STREAM,MIN,MAX,MODE).
Uniforme REAL=UNIFORM(STREAM,MIN,MAX).
Uniforme Discreta ENTERO=DUNIFORM(STREAM,MIN,MAX).
Valor extremo A REAL=EXTVALA(STREAM,LOCATE,SCALE).
Valor extremo B REAL=EXTVALB(STREAM,LOCATE,SCALE).
Weibull REAL=WEIBULL(STREAM,LOCATE,SCALE,SHAPE).
Weibull inversa REAL=INVWEIBULL(gen,LOCATE,SCALE,SHAPE).

Tabla 4.14.-Librería PLUS de GPSS que contiene generadores de variables aleatorias

Los argumentos señalados en esta lista de distribuciones son tratados a profundidad


en el manual de referencia que proporciona GPSS WORLD.

4.3.1.5.- USO DE FUNCIONES PREDEFINIDAS.

Uso de la función NORMAL (GPSS plus).

Para simular el tiempo de servicio que tarda un proceso, el cual tiene un

minutos ¢ = " % ( 24,4


. Se simula haciendo uso de la instrucción ADVANCE.
comportamiento normal con una media de 24 minutos, y una desviación estándar de 4

ADVANCE Normal1,24,4

El tiempo de servicio es calculado utilizando la función predefinida NORMAL la cual


utiliza 3 argumentos: STREAM (El número de generador uniforme a utilizar), MEDIA (la
media), y STDDEV (la desviación estándar).

Uso de la función EXPONENCIAL (GPSS plus).

Para simular el tiempo entre llegadas de componentes a ser manufacturados que tiene

¢ = i) ,$, ( 30


. Se simula haciendo uso de la instrucción GENERATE.
un comportamiento exponencial con una media de 30 minutos

GENERATE Exponential1,0,30

75
El tiempo entre llegadas es calculado utilizando la función predefinida EXPONENTIAL la
cual utiliza 3 argumentos: STREAM (El número de generador uniforme a utilizar),
LOCATE (desplazamiento), y SCALE (expande o contrae la distribución).

Uso de la función de usuario para implementar una distribución empírica.

Uso de la instrucción FUNCTION (GPSS).

Para simular el tiempo de servicio de un proceso que tiene una distribución dada por:
Frecuencia 0.05 0.13 0.16 0.22 0.29 0.15
Tiempo en 10 14 21 32 38 45
minutos

Partiendo de la distribución de frecuencias dadas, se calcula la distribución acumulada


siguiente:
Frecuencia 0 0.05 0.18 0.34 0.56 0.85 1.0
acumulada
Tiempo en 0 10 14 21 32 38 45
minutos

La función a definir tiene la siguiente forma:

PROCESO FUNCTION RN1,D7 0,0/.05,10/.18,14/.34,21/.56,32/.85,38/1.0,45

Donde la función se denomina PROCESO en la cual el operando A describe el


generador uniforme y el operando B describe una función discreta con 7 pares de
datos, los cuales son delimitados por una diagonal.

Una vez definida la función se puede utilizar desde la lógica del programa haciendo uso
de la instrucción ADVANCE.

ADVANCE FN$PROCESO

Cada vez que llegue una transacción a este bloque se calculará un tiempo de servicio
basado en la función PROCESO, y realizará el retardo correspondiente al tiempo
calculado. Para hacer referencia a la función se utiliza en el parámetro A de advance el
prefijo FN$ seguido del nombre de la función definida (PROCESO).

4.3.1.6.- FLUJO DE LAS TRANSACCIONES.

Las transacciones siguen un flujo determinado por la lógica del programa. Esta lógica
hasta el momento en los ejemplos vistos, ha sido secuencial, pero en ocasiones es
necesario diseñar flujos diferentes dependiendo de ciertas condiciones. Para cambiar
el flujo dentro del programa existen instrucciones que transfieren las transacciones a
puntos específicos, uno de ellos es la instrucción TRANSFER.

76
La inspección como pieza clave en el aseguramiento de la calidad.

El aseguramiento de la calidad consiste en tener y seguir un conjunto de acciones


planificadas y sistemáticas, implementadas dentro del sistema de calidad de la
empresa. Estas acciones deben ser demostrables para proporcionar la confianza
adecuada de que se cumplen los requisitos del sistema de calidad.

La inspección es una actividad que consiste en examinar y medir las características de


calidad de un producto o servicio. Es una actividad que detecta productos o servicios
no conformes con las especificaciones esperadas. El objetivo básico de la inspección
es evitar que los productos defectuosos lleguen al cliente. Este procedimiento
establece las especificaciones de calidad del producto, que deben comprobarse de
forma sistemática para verificar la conformidad del producto final y separar los
productos defectuosos para su desecho o reproceso.

La inspección se realiza después de que un proceso es realizado, y se determina el


curso de acción de ese producto.

Uso de la instrucción TRANSFER (GPSS).

Se utiliza para cambiar el flujo que siguen las transacciones dada una condición
determinada. Esta instrucción de bloque cuenta con nueve modos diferentes de
operación (incondicional, fraccional, both, all, pick, función, parámetro, subrutina,
simultáneo).

Modo INCONDICIONAL. Es utilizado cuando todas las transacciones que lleguen a este
bloque son transferidas incondicionalmente a otra parte del programa. Para utilizarlo
se utiliza únicamente el operando B para especificar la etiqueta hacia donde se deben
dirigir todas las transacciones.

….

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

….

TRANSFER,SALIR ; Transfiere las transacciones a la salida

SALIR TERMINATE ;Abandona el vehiculo del sistema

Tabla 4.15.-Código GPSS que muestra el TRANSFER incondicional.

El operando B en la instrucción TRANSFER, declara cual es el punto dentro del


programa hacia donde deben dirigirse las transacciones (en este caso todas las que
lleguen a la instrucción TRANSFER), y ese punto identificado con la etiqueta SALIR es
puesto en la instrucción TERMINATE.

77
Modo FRACCIONAL. Se utiliza en casos de que se conozca que un porcentaje de
transacciones sigue un camino y el resto sigue otro camino.

Suponer que el sistema de lavado de autos implementa un sistema de calidad,


inspeccionando todos los vehículos al final de proceso, y por experiencia se conoce
que un 10% de los autos no cumplen con las especificaciones mínimas, y por lo tanto
deben ser vueltos a lavar y secar.

….

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

REGRESAR QUEUE ESTANCIA,1 ; entra al lavado de autos

….

TRANSFER 0.10,SALIR,REGRESAR ; Transfiere el 10% de las transacciones al inicio, y el resto a salida

SALIR TERMINATE ;Abandona el vehiculo del sistema

Tabla 4.16.-Código GPSS que muestra el TRANSFER fraccional.

Modo BOTH. Considerando dos destinos diferentes la transacción activa permite


evaluar cuál de ellos está desocupado y la transfiere. Si los dos están ocupados, la
transacción esperará a que alguno de ellos se desocupe. Este modo es utilizado cuando
el operando A contiene la palabra BOTH, teniendo como operando B y C las etiquetas
hacia dónde fluyen las transacciones activas. Primero probará la posibilidad de
transferir la transacción hacia la instrucción etiquetada con el operando A, si es
rechazada entonces probará con la instrucción etiquetada con el operando B. si es
rechazada. Si la transacción no puede entrar en ninguno de los bloques se quedará
hasta que uno de ellos la acepte. Simular un servicio adicional en el cual se realiza una
limpieza interior del vehículo, la cual puede ser realizada por hombres o mujeres. El
cliente decide utilizar aquel que esté desocupado, no importando el sexo.

….

GENERATE 15,5 ; Genera vehiculos con tiempo entre llegadas U(15,5)

REGRESAR QUEUE ESTANCIA,1 ; entra al lavado de autos

….

TRANSFER BOTH, OPCION1,OPCION2 ; Transfiere a la opción desocupada

OPCION1 ENTER LIMPIAH,1 ; Servicio de limpieza interior realizada por hombres.

78

OPCION2 ENTER LIMPIAM,2 ;Servicio de limpieza interior realizada por mujeres.

SALIR TERMINATE ;Abandona el vehiculo del sistema

Tabla 4.17.-Código GPSS que muestra el TRANSFER both.

Modo ALL. Este modo es la generalización del modo BOTH, en el cual se permiten la
especificación de más de 2 destinos, con la restricción que estos destinos estén
espaciados de manera idéntica en el modelo. El operando A se escribe la palabra ALL,
en el operando B se describe el primer destino a probar, si es rechazado, calcula con el
operando D, cada D instrucciones a partir del bloque B, hasta llegar al bloque C. Es
decir primero prueba el bloque B si es rechazado prueba el bloque B+D, si es
rechazado prueba el bloque B+2D y asi sucesivamente hasta llegar al bloque C.

Ejemplo:

Simule el funcionamiento de 3 operarios que realizan operaciones idénticas las cuales


tardan 5 ± 2 minutos, los componentes son enviados aquel operario que esté
desocupado.

….

TRANSFER ALL,OP1,OP3,4 ; TRANSFIERE A LA OPCION DESOCUPADA INICIANDO EN OP1 FINALIZANDO EN OP3

OP1 SEIZE OPERA1 ;inicia la op1 capturando al operador 1

ADVANCE 5,2

RELEASE OPERA1

TRANSFER,FIN

OP2 SEIZE OPERA2 ;inicia la op2 capturando al operador 2

ADVANCE 5,2

RELEASE OPERA2

TRANSFER,FIN

OP3 SEIZE OPERA3 ;inicia la op3 capturando al operador 3

ADVANCE 5,2

RELEASE OPERA3

TRANSFER,FIN

FIN TERMINATE

Tabla 4.18.-Código GPSS que muestra el TRANSFER all.

79
Modo PICK. Este modo es utilizado cuando se desea enviar la transacción activa a un
bloque seleccionado de manera aleatoria, dado un rango de bloques. En el operando A
se escribe la palabra PICK, y el operando B y C son usados para especificar el rango de
los bloques a ser candidatos para su selección.

….

TRANSFER PICK, PRIMERO,ULTIMO ; TRANSFIERE A UN BLOQUE ENTRE PRIMERO Y ULTIMO

PRIMERO ADVANCE 5,2

ADVANCE 3,1

ADVANCE 4,1

ULTIMO ADVANCE 3,1

….

Tabla 4.19.-Código GPSS que muestra el TRANSFER pick.

En este ejemplo se describen cuatro bloques ADVANCE que son candidatos a ser
seleccionados cuando la transacción activa llegue al bloque TRANSFER. Si
aleatoriamente se selecciona al segundo bloque, se transfiere la transacción y ejecuta
del segundo bloque en adelante. Si aleatoriamente selecciona el primero, pues
ejecutará posteriormente las siguientes instrucciones.

Modo FUNCIÓN. El destino de la transacción activa se calcula por medio de una


función definida y un incremento dado. Para utilizar este modo, el operando A
contiene la palabra FN, el operando B el nombre de la función, y el operando C el
incremento utilizado en el cálculo.

LUGAR FUNCTION ….. ; Define función UTILIZADA POR EL TRANSFER FN

TRANSFER FN,LUGAR,3 ;TRANSFIERE LA TRANSACCION HACIA EL NO. DE BLOQUE DADO POR : LUGAR()+3

Tabla 4.20.-Código GPSS que muestra el TRANSFER función.

En este ejemplo el punto hacia donde se transfiere la transacción, es calculado y por lo


tanto es un número que le corresponde a una instrucción de bloque. Es recomendable
asegurarse que el número de la instrucción seleccionada está en el rango de las
instrucciones de control del programa.

80
Modo PARÁMETRO. El destino de la transacción activa se calcula utilizando un
parámetro y un incremento dado. Para usar este modo el operando A debe contener la
letra P, el operando B especifica el parámetro a utilizarse, y el operando C describe el
incremento utilizado en el cálculo (opcional).

ASSIGN PAR1,43 ;Asigna el valor de 43 al parámetro denominado PAR1

TRANSFER P,PAR1,2 ;TRANSFIERE LA TRANSACCION HACIA EL NO. DE BLOQUE DADO POR : PAR1 +2

Tabla 4.21.-Código GPSS que muestra el TRANSFER parámetro.

Modo SUBRUTINA. Una subrutina es un conjunto de instrucciones que realizan una


tarea específica. Es formulada para poder ejecutarse desde diferentes partes de un
programa, centralizando así la tarea y evitando duplicar código en diferentes partes del
programa. Este modo es utilizado para simular el llamado de una subrutina, la cual se
ejecuta y una vez finalizado regresa el control desde donde fue llamada. Este modo
simula la ejecución de un fragmento ubicado en otra parte del programa, y
únicamente está basada en dos datos: el bloque destino, y un parámetro que es
utilizado para almacenar el número del bloque hacia donde debe retornar una vez
finalizada la subrutina. Para simular el llamado similar a la subrutina es necesario que
en el fragmento del programa, inicie con una etiqueta (es el operando B), y al finalizar
el fragmento se debe incluir una instrucción TRANSFER con modo parámetro.

Para el uso de este modo, es necesario que el operando A contenga la palabra SBR, el
operando B describe la etiqueta del bloque destino, y el operando C es un parámetro
en el cual se almacenará el número del bloque de retorno (este operando es opcional).

TRANSFER SBR,SUBR1,PARAM ; Transfiere las transacciones a la subrutina sbr1 y guarda este bloque en PARAM

SBR1 QUEUE PROCN ; INICIA LA SUBRUTINA SBR1

….

TRANSFER P,PARAM ; FINALIZA LA SUBRUTINA SBR1, Y regresa la transacción al sgte bloque de PARAM

Tabla 4.22.-Código GPSS que muestra el TRANSFER subrutina.

81
Modo SIMULTÁNEO. El modo simultáneo transfiere la transacción activa hacia uno de
dos destinos especificados en los operandos B y C, seleccionando el destino por medio
del contenido de un indicador de retraso especificado en el operando D. En el
operando A se escribe la palabra SIM.

El indicador de retraso tiene dos valores posibles prendido (set) o apagado (reset). El
indicador de retraso de una transacción es prendido cuando una transacción es
rechazada por un bloque; y se quedará prendido hasta que la transacción entre al
modo simultáneo del transfer. Después del transfer el indicador de retraso se apagará.

Si el indicador de retraso está prendido, la transacción activa se transfiere al bloque


destino especificado por el operando C, de lo contrario la transacción es transferida al
bloque destino especificado por el operando B.

TRANSFER SIM,NORET,RET ; Transfiere las transacciones a los bloques destino NORET O RET…

NORET ENTER SERV1,1 ;Captura al servidor 1

….

RET ENTER SERV2,1 ; I ;Captura al servidor 2

Tabla 4.23.-Código GPSS que muestra el TRANSFER simultáneo.

Uso de la instrucción GATE (GPSS).

La instrucción GATE permite controlar el flujo de las transacciones basado en


condiciones de las entidades (servidores únicos, servidores simultáneos, lógicas).

La sintaxis de la instrucción es:

GATE 0 A,B

En el operando A se especifica la entidad a analizar, y el operando B es utilizado para


describir el bloque destino si no se cumple la condición especifica en el operador O.

Operaciones permitidas.

Condicionado a servidores únicos (instalaciones). Los servidores únicos declarados


con las instrucciones SEIZE y RELEASE, dependiendo de su estado se puede realizar una
lógica que cambie el flujo de las transacciones.

Tiene dos formas de operación:

• U (ocupada),
• NU (desocupada).

82
Condicionado a servidores simultáneos (almacenamientos). Los servidores
simultáneos declarados con la instrucción STORAGE y en combinación con las
instrucciones ENTER y LEAVE permite analizar su estado:

Tiene cuatro formas de operación:

• SF (¿está lleno?).
• SNF (¿no está lleno?).
• SE (¿está vacío?).
• SNE (¿no está vacío?).

Condicionado a un valor lógico. Permite el control del flujo de las transacciones dado
ciertas condiciones independientes de las entidades, es decir políticas establecidas
para permitir o negar el acceso. Para usarse se debe apoyar en otra instrucción LOGIC
que abrirá o cerrará el acceso.

Tiene dos formas de operación:

• LS (¿está prendido?),
• LR (¿está apagado?).

83
4.3.2.- PROBLEMAS CON SISTEMAS DE INVENTARIO.

El inventario es el conjunto de artículos o mercancías que una empresa tiene en su


poder con un propósito específico. La materia prima, el producto en proceso y el
producto terminado son ejemplos de inventarios que a menudo se presentan y genera
una necesidad de administración. Los sistemas de inventarios implementados en una
organización determinan las cantidades a ordenar y los puntos de re-orden. Los costos
asociados impactan de tal manera que obliga a un estudio exhaustivo para la
optimización de los mismos. La teoría existente que estudia el comportamiento de los
inventarios según la demanda se clasifica en modelos determinísticos y probabilísticos.

Figura 4.8.- Modelos para el control de inventarios.

4.3.2.1.- TIPOS DE MODELOS DE INVENTARIO.

Una demanda deterministica es aquella que se conoce con certeza, , y la probabilística


es la que está sujeta a una variabilidad (modelos estocásticos). El estudio teórico del
comportamiento de los inventarios ha desarrollado modelos clásicos para el control de
inventarios destacando los modelos: EOQ deterministico, LEP deterministico y el EOQ
probabilístico. La simulación y el modelo heurístico abordan el estudio de los modelos
probabilísticos con más profundidad, incorporando variables aleatorias y elementos
complejos que difícilmente pueden ser incluidos en los modelos básicos.

84
Modelo I.- EOQ (Economic Order Quantity).-
Quantity). Determina el tamaño óptimo de pedido,
considerando costos incurridos. Presenta 2 variantes: Con faltantes y sin faltantes.
faltantes

El modelo EOQ (Economic order quantity) también conocido como el modelo de


Harris-Wilson
Wilson es el de mayor uso y popularidad por su simplicidad. Este modelo fue
desarrollado por el ingeniero Ford Whitman Harris en 1913 y popularizado por el
consultor R. H. Wilson en 1934. El principio de este modelo
modelo está basado en encontrar
el punto en que son iguales el costo de ordenar y el costo de mantener.

Figura 4.9.- Modelo EOQ no permite faltantes.

Figura 4.10.- Modelo EOQ si permite faltantes.

Modelo Ia- EOQ no permite faltantes


faltantes.

Ell modelo EOQ que no permite faltantes parte de los supuestos siguientes: Demanda
constante (d), no permite faltantes, costo de mantener el inventario (Cm), costo de
pedir (Cp), costo de adquisición (Cu) tiempo de entrega igual a cero (no existe
demoras). Laa ecuación del costo en un periodo (t1) es:

+ ®

= 8- ∗ ® + 8) + 8 ∗
8®
2
El número total del períodos
odos y el tiempo t están en función de la demanda (D) y la
cantidad de inventario (Q).

<
"ú $%
$% + +( $ )$%  # " =
®

®
¢ $ ) + =
<
Calculando el costo total por unidad de tiempo se tiene que:

8 #+ + +( ) %
) % -,  $ + $ ) 8¢®
= " ∗ 8®

85
®
< y< z ∗ ®
8¢®
= °8- ∗ ® + 8) + 8 ∗ ±
® 2

< ®
8¢®
= 8- ∗ < + 8) ∗ r t + 8 ∗ r t
® 2

Para encontrar el Q óptimo será necesario minimizar el costo total, haciendo uso del
cálculo diferencial

 8¢®

=0

< 1
−8) r  t + r t 8 = 0
® 2

Despejando Q se obtiene que:

2 ∗ < ∗ 8)
® = I
8

Modelo Ib. EOQ si permite faltantes.

En el modelo EOQ que si permite faltantes, la ecuación del costo de un periodo está en
función de Q (cantidad a pedir) y S (Faltante permitido), incorporando el costo por
faltantes (Cf).

+ ²™‰k + 
8®, 
= 8- ∗ ® + 8) + 8 ∗ r t + 8. ∗ r t
2 2

Donde t es el periodo compuesto por t1 (tiempo con existencias) y t2 (tiempo sin


existencias), y Cf es el costo por tener faltantes, siendo Imax el máximo inventario.

Por medio de semejanza de triángulos se encuentran los valores de Imax, t1, t2.

²™‰k = ® − 

®−
+ =
<

+ =
<

86
Sustituyendo en C(Q,S), los valores encontrados la ecuación del costo de un periodo
queda de la siguiente forma:

® − 
 
8®, 
= 8- ∗ ® + 8) + 8 ∗ P Q + 8. ∗ P Q
2< 2<

Calculando el costo total por unidad de tiempo se tiene que:

<
8 #+ + +( ) % -,  $ + $ ) 8¢®, 
= r t ∗ 8®, 

< ® − 
 


8¢ ®,  = r t ³8- ∗ ® + 8) + 8 ∗ P Q + 8. ∗ P Q´
® 2< 2<

< ® − 
 
8¢®, 
= ³8- ∗ < + 8) r t + 8 ∗ P Q + 8. ∗ P Q´
® 2® 2®

Una vez obtenida la ecuación se calcula el mínimo costo, es posible derivar con
respecto a Q, y con respecto a S, obteniendo dos ecuaciones:

8¢®, 

=0

−2 ∗ < ∗ 8) + 8 ∗ ®  − 8 ∗   + 8. ∗   = 0

8¢®, 

=0

−8 ∗ ® + 8 ∗  + 8. ∗  = 0

Por medio de sustitución se obtienen los valores óptimos de Q y S siguientes:

2 ∗ < ∗ 8)8. + 8

®∗ = I
8. ∗ 8

2 ∗ < ∗ 8) ∗ 8
∗ = I
8. ∗ 8. + 8

87
Modelo II.- LEP (Lot Economic Production).-
Production). También conocido como el modelo EPQ
(Economic Production Quantity) fue desarrollado por E. W. Taft en 1918, para conocer
la cantidad óptima de producción, la cual minimiza los costos asociados
asociados.. Este modelo
es utilizado
tilizado cuando la producción de los productos está a cargo de la misma empresa,
produciendo hasta llegar a un nivel máximo de inventarios, suspende la producción
hasta que la demanda agote las existencias,
existencias inicia de nuevo la producción.

Este modelo presenta


resenta 2 variantes: No permite faltantes, y Si permite faltantes.

Figura 4.12.- Modelo LEP si permite faltantes.

Figura 4.11.- Modelo LEP no permite faltantes.

IIa- LEP No permite faltantes.

Los supuestos de esta variante es que la demanda es constante y conocida, no permite


faltantes, se tienen costos de producir (Cu), costos de mantener el inventario (Cm),
costos de operación (Co), Y la tasa de producción (R) es mayor que la tasa de la
demanda (d).

+ $ )
$ ) + +( $( )$%  + = + + +

Donde:

+ = + $ ) $ )% -
)% - ó,, ℎ#+ (($p% ( ²™‰k

+ = + $ ) R-$ +%,# -%%$


+%,# -%%$ $#$ $( ²™‰k ℎ#+ $% .

La ecuación del costo en un periodo es dado por:

+ + +
∗ ²™‰k
8 ®
= 8- ∗ ® + 8 + 8 ∗ r t
2

Encontrando los tiempos y el nivel máximo de inventario tenemos que:

<
²™‰k = ® ∗ r1 − t
L
®
+ + + = r t
<

88
Sustituyendo en C(Q) se tiene:

® <
y< z ∗ P® ∗ y1 − L zQ
· º
8 ®
= 8- ∗ ® + 8 + 8 ∗ ¶ ¹
2
µ ¸

Calculando el costo total por unidad de tiempo :

<
8 #+ + +( ) % -,  $ + $ ) 8¢®
= r t ∗ 8®

<
P® ∗ y1 − L zQ
< · º
8¢®
= 8- ∗ < + 8 ∗ r t + 8 ∗ ¶ ¹
® 2
µ ¸

Para encontrar el valor óptimo de Q se calcula la derivada con respecto a Q.

8¢®

=0

−8 ∗ < 8 <
+ r t ∗ r1 − t = 0
®  2 L

Despejando Q se tiene que:

2 ∗ < ∗ 8

®∗ = I
<
8 ∗ 1 − L

89
IIb- LEP Si permite faltantes.

Los supuestos de esta variante es que la demanda es constante y conocida, no permite


faltantes, se tienen costos de producir (Cu), costos de mantener el inventario (Cm),
costos de operación (Co), Y la tasa de producción (R) es mayor que la tasa de la
demanda (d).

+ $ ) + +( $( )$%  + = + + + + +@ + +7

Donde:

+ = + $ ) $ )% - ó,, $#)-$# $ , O$(%#$ ( # )% - + # .(+,+$#

+ = + $ ) R-$ +%,# -%%$ $#$ $( ²™‰k ℎ#+ $%

+@ = + $ ) $, R-$ #$  - -(, .(+,+$#

+7 = + $ ) $, R-$ #$ )% - $ ( # )% - + # .(+,+$#

La ecuación del costo en un periodo es dado por:

+ + +
∗ ²™‰k +@ + +7
∗ 
8 ®, 
= 8- ∗ ® + 8 + 8 ∗ r t + 8. ∗ P Q
2 2

Encontrando los tiempos y el nivel máximo de inventario tenemos que:

<
²™‰k = r® ∗ r1 − t − t
L

+ = G¾

» ²™‰k  
+ = +@ = +7 =
¼½

< < L − <

1 1
+ + + = ²™‰k ∗ r + t
< L − <

< 1 1
+ + + = r® ∗ r1 − t − t ∗ r + t
L < L − <

1 1
+@ + +7 =  ∗ r + t
< L − <

90
El costo de mantener el inventario es:

+ + +
∗ ²™‰k 8 1 1
8 ∗ r t = r t ∗ ³²™‰k ∗ r + t´ ∗ ²™‰k
2 2 < L − <

8 1 1
= r t ∗ ²™‰k

∗r + t
2 < L − <

8 < 1 1
=r t ∗ r® ∗ r1 − t − t  ∗ r + t
2 L < L − <

Y el costo de faltante de inventario es:

1 1
 ∗ r +
+@ + +7
∗  < L − <
t
8. ∗ P Q = 8. ∗ ¿ À
2 2

8. ∗   1 1
= P Q∗r + t
2 < L − <

Sustituyendo en C(Q,S) y simplificando se tiene que:

8 < 1 1
8®, 
= 8- ∗ ® + 8 + r t ∗ r® ∗ r1 − t − t  ∗ r + t +
2 L < L − <

8. ∗   1 1
P Q∗r + t
2 < L − <

La ecuación del costo total se expresa:

<
8¢®, 
= r t ∗ 8®, 

< 8 < 
1
8¢®, 
= 8- ∗ < + 8 ∗ r t + r t ∗ r® ∗ r1 − t − t ∗ ° ±
® 2∗® L <
1−L

8. ∗   1
+P Q∗° ±
2∗® <
1−L

Para encontrar el valor óptimo de Q se calcula la derivada con respecto a Q.

8¢®, 

=0

91
−8 ∗ < 8 < 8 ∗   1 8. ∗   1
+ r t ∗ r1 − t − P Q ∗ ° ± − P Q ∗ ° ±=0
® 2 L 2 ∗ ® < 2 ∗ ® <
1−L 1−L

Obteniendo el valor óptimo de Q siguiente:

2 ∗ 8 ∗ < 8 + 8.
®∗ = I I
< 8.
8 ∗ 1 − L

Para encontrar el valor óptimo de S se calcula la derivada con respecto a S.

8¢®, 

=0

8 ∗  8. ∗ 
−8 + + =0
< <
® ∗ 1 − L
® ∗ 1 − L

Obteniendo el valor óptimo de S siguiente:

2 ∗ 8 ∗ < < 8
∗ = I I1 −
I
8. L 8 + 8.

Modelo III.- Probabilístico (EOQ con demanda variable).- Este modelo está basado en
una demanda variable que tiene un comportamiento normal. El modelo es una
adaptación del modelo EOQ, en la cual la Demanda (D) está dada por los parámetros
estadísticos media (µ) y desviación estándar (σ) que siguen una distribución normal :

< = " % (μ, n

La cantidad a pedir Q se calcula en base a la media:

92
2 ∗ μ ∗ 8)
8,+   )$ % ® = I
8

El nivel de significancia alfa (α) se calcula:

1
Á=
<
y® z

El punto de orden se calcula con la expresión siguiente:

…-,+ $ L$ %$, % = μ + K/ n

Modelo IV.- Modelo heurístico. La heurística es una técnica o procedimiento práctico


o informal para resolver problemas. La heurística está basada en la experiencia que se
usa como ayuda para resolver problemas, mediante el uso de heurísticas, es posible
resolver más rápidamente problemas conocidos o similares a otros conocidos.

Un modelo heurístico está construido mediante un conjunto de reglas racionales para


obtener una buena solución. Son utilizados cuando no es posible obtener valores
óptimos, es decir cuando no es posible aplicar los otros modelos. Existen varios
enfoques heurísticos entre los cuales se destacan: Silver-Meal (SM), Lote a lote (L4L),
Costo mínimo unitario (CUM), Balanceo de periodo fragmentado (BPF).

Modelo V.- Simulación.

Los modelos probabilísticos de inventarios usualmente son implementados mediante


la simulación. En el modelado de un sistema con demanda probabilística intervienen
variables aleatorias las cuales permiten cuantificar la demanda, y es posible conocer el
comportamiento del inventario, experimentando así con el modelo, hasta encontrar la
información para la buena toma de decisiones. A continuación se presenta un ejemplo
de un modelo de inventarios basado en un punto de re orden.

93
4.3.2.2.- EJEMPLO DE SIMULACIÓN DE UN MODELO DE INVENTARIO BASADO EN
PUNTO DE RE ORDEN.

Se desea simular un sistema de inventario por un periodo de 100 dias. Este sistema
tiene una política con un punto de reorden igual a 600 unidades y una cantidad a
ordenar de 500 unidades. El inventario inicial es de 700 unidades. Se tiene una
demanda diaria con un comportamiento uniformemente distribuido entre 40 y 63
unidades. El tiempo de entrega de la orden es de una semana (5 dias).

Solución:

La modelación del sistema debe simular las actividades de:

• Realizar los pedidos,


• Recibir los pedidos (entrada al almacén) y actualizar el inventario.
• Demanda diaria (salida del almacén) y actualizar el inventario.

Las variables que son utilizadas deben definirse previamente, las cuales deben
almacenar los siguientes datos:

• Inventario. (Stock)
• Demanda diaria. (Demanda)
• Punto de reorden. (Point)
• Cantidad a ordenar. (EOQ)

Uso de la instrucción INITIAL (GPSS).

La instrucción INITIAL se utiliza para inicializar variables que serán utilizadas dentro de
la lógica del programa. Es utilizado para definir variables globales, las cuales se utilizan
en combinación con las instrucciones SAVEVALUE (actualiza la variable), y la
instrucción TEST (Compara el valor de variables).

INITIAL X$STOCK,700 ; Se inicializa el inventario = 700 unidades.

INITIAL X$POINT,600 ; Se inicializa el punto de reorden = 600 unidades.

INITIAL X$EOQ,500 ; Se inicializa la cantidad a ordenar = 500 unidades.

INITIAL X$DEMANDA,0 ; Se inicializa la demanda diaria = 0 unidades. (se calculará cada dia en el proceso)

Tabla 4.24.-Código GPSS que muestra la instrucción INITIAL.

En el operando A se define el nombre de la referencia haciendo uso de un prefijo que


define el tipo de dato. Los siguientes prefijos están disponibles: LS$ para valores
lógicos, X$ para enteros positivos, o MX$ para matrices. El operando B es utilizado
para establecer el valor inicial.

94
OPERACIONES ARITMÉTICAS REALIZADAS EN LA LÓGICA DEL PROGRAMA.

Uso de la instrucción SAVEVALUE (GPSS).

La instrucción SAVEVALUE proporciona un método simple para realizar cálculos cuyo


resultado será almacenado en una variable de usuario. En el operando A se especifica
el nombre de la variable en la cual se almacena el resultado del cálculo declarado en el
operando B.

Cálculo de la demanda diaria.

Para calcular la demanda diaria es posible realizarse utilizando la siguiente instrucción.

SAVEVALUE DEMANDA, (DUNIFORM(1,40,63)) ; Demanda = DUNIFORME(1,40,63)

Tabla 4.25.-Código GPSS que muestra la instrucción SAVEVALUE para el cálculo de la demanda .

Al momento que la transacción llega a esta instrucción, obliga a que se evalúe la


expresión que calcula la demanda diaria basada en un generador y el resultado lo
almacena en la variable de usuario DEMANDA, La cual será utilizada posteriormente
para disminuir el inventario existente.

Cálculo de la disminución del inventario existente.

Una vez que se tiene el valor de la demanda diaria se debe disminuir el inventario
existente, utilizando la siguiente instrucción:

SAVEVALUE STOCK-,X$DEMANDA ; STOCK = STOCK - DEMANDA

Tabla 4.26.-Código GPSS que muestra la instrucción SAVEVALUE para disminuir el stock .

En el operando A se declara la referencia a la variable global STOCK sin el prefijo X$ y


utiliza un sufijo de disminuir (-). En el operando B refiere a la variable de usuario
DEMANDA con el prefijo X$ para declarar que es una variable global.

Cálculo del aumento del inventario existente.

Del mismo modo al momento que el pedido realizado llegue, es necesario actualizar el
inventario existente, haciendo de la instrucción siguiente:

SAVEVALUE STOCK+,X$EOQ ;STOCK = STOCK + EOQ

Tabla 4.27.-Código GPSS que muestra la instrucción SAVEVALUE para incrementar el stock .

Describiendo en el operando A la referencia a la variable global STOCK sin el prefijo X$


y utiliza el sufijo de incrementar (+). En el operando B contiene la referencia a la
variable EOQ con el prefijo X$ que identifica que fue declarada como global.

95
Condicionante para disminuir el inventario existente.

Cuando la demanda diaria excede al inventario existente, se ocasiona un faltante, la


cual debe incorporarse una política para enfrentarla. Una puede ser, que al momento
que llegue el pedido, se cubra ese faltante, o la otra, que espere a que llegue el pedido.

SI la política es de espera, se puede simular haciendo uso de una instrucción TEST para
asegurarse de esa espera.

Uso de la instrucción TEST (GPSS).

La instrucción TEST funciona de manera similar al IF..THEN..ELSE que se utilizan en los


lenguajes de alto nivel. Esta instrucción para realizar comparaciones, cuyo resultado es
utilizado para tomar acciones hacia donde irá la transacción. El operador relacional
debe ser E (igual), G (mayor) , GE (mayor o igual), L (menor), LE (menor o igual), o NE
(diferente). El operando A es el valor a probar, el operando B es el valor de referencia,
y el operando C es el bloque destino (opcional).

Cuando no se define el operando C, la transacción esperará en este bloque hasta que


se cumpla la condición:

OPERANDO A OPERADOR OPERANDO B

Si se cumple la condición la transacción fluirá al siguiente bloque.

Si se especifica el operando C, la transacción irá al bloque destino únicamente cuando


no se cumpla la condición.

TEST GE X$STOCK,X$DEMANDA

SAVEVALUE STOCK-,X$DEMANDA ; STOCK = STOCK - DEMANDA

Tabla 4.28.-Código GPSS que muestra la instrucción TEST para comparar el stock vs demanda.

El operador GE (Mayor o igual) realiza la comparación de STOCK >= DEMANDA si es


verdadera, entonces la transacción pasa a la siguiente instrucción, de otra manera
quedará detenida la transacción hasta que se cumpla esta condicionante. (esperará a
que se incremente el inventario).

96
MODELADO DEL SISTEMA DE INVENTARIOS.

Para realizar el modelado de las actividades para realizar pedidos, recibirlos y


actualizar el inventario se simulan haciéndose cargo una sola transacción. De manera
paralela se simulan los días transcurridos, hasta completar cien días, simulando la
demanda diaria, reduciendo el inventario existente.

Simulación de un sistema de inventarios

GENERATE ,,,1 GENERATE 1

DEMANDA = DUNIFORM(1,40,63)
STOCK < POINT F

F
v STOCK >=
DEMANDA
ADVANCE 5

STOCK = STOCK - DEMANDA


STOCK =
STOCK + EOQ

TERMINATE 1
TERMINATE

Simula pedidos Simula demanda diaria

Tabla 4.13.-Diagrama de bloque para un sistema de control de inventarios.

Código GPSS.

INITIAL X$STOCK,700 ; Se inicializa el inventario = 700 unidades.

INITIAL X$POINT,600 ; Se inicializa el punto de reorden = 600 unidades.

INITIAL X$EOQ,500 ; Se inicializa la cantidad a ordenar = 500 unidades.

INITIAL X$DEMANDA,0 ; Se inicializa la demanda = 0 unidades. (se calcula diariamente)

GENERATE ,,,1 ; Genera una sola transacción

OTRA TEST L X$STOCK,X$POINT ; Si el STOCK < POINT Entonces avanza, de lo contrario espera a que se cumpla la condición

ADVANCE 5 ;Realiza el pedido y espera 5 días para recibirlo

SAVEVALUE STOCK+,X$EOQ ;Recibe el pedido y actualiza el inventario existente STOCK = STOCK + EOQ

97
TRANSFER ,OTRA ;Repite el ciclo (se transfiere la transacción al bloque etiquetado con OTRA

TERMINATE

GENERATE 1 ;Inicia el día

SAVEVALUE DEMANDA, (DUNIFORM(1,40,63)) ; DEMANDA = DUNIFORME(1,40,63)

TEST GE X$STOCK,X$DEMANDA ;Si el STOCK > DEMANDA Entonces avanza, de lo contrario espera a que se cumpla

SAVEVALUE STOCK-,X$DEMANDA ;Entrega y actualiza el inventario existente STOCK = STOCK - DEMANDA

TERMINATE 1 ;Finaliza el día

START 100 ;Simula 100 días

Tabla 4.29.-Código GPSS para el diagrama de bloques descrito en la figura 4.13.

El reporte de resultados de la simulación contiene los valores finales de la simulación


de las variables globales presentando la siguiente información:

Figura 4.14.- Sección SAVEVALUE en el reporte de resultados.

Al finalizar los 100 dias simulados se tiene un inventario final de 614 unidades, y la
última demanda diaria (la del día 100) fue de 50 unidades.

Para conocer el comportamiento del inventario y de la demanda durante ese periodo


de simulación, GPSS proporciona instrucciones para tabular estos datos (Histograma).

Uso de la instrucción TABLE (GPSS).

Esta instrucción permite definir e inicializar una tabla para almacenar una distribución
de frecuencias (histograma). Esta instrucción tiene la siguiente sintaxis:

NOMBRE TABLE A,B,C,D

La tabla a definir requiere de un nombre para hacer referencia a ella, y


especificaciones de la tabla a construir.

INVENTARIO TABLE X$STOCK,0,50,20 ; TABLA de niveles de inventario

Tabla 4.30.-Código GPSS para definir la tabla INVENTARIO usando la instrucción TABLE.

98
El nombre de la tabla es INVENTARIO, en el operando A se especifica el dato a tabular,
el operando B es el límite superior del primer intervalo, el operando C es el tamaño del
intervalo, y el operando D es la cantidad de intervalos.

De igual manera se define una tabla con el nombre de VENTAS, en el operando A se


especifica el dato a tabular (DEMANDA), En el operando B se especifica el límite
superior del primer intervalo (30), el operando C define el tamaño del intervalo (2), y el
operando D es utilizado para definir la cantidad de intervalos (20).

VENTAS TABLE XP$DEMANDA,38,2,20 ;TABLA DE niveles de ventas

Tabla 4.31.-Código GPSS para definir la tabla VENTAS usando la instrucción TABLE.

Uso de la instrucción TABULATE (GPSS).

Una vez definida la tabla haciendo uso de la instrucción TABLE, es posible con la
instrucción TABULATE registrar los datos. La instrucción TABULATE tiene la siguiente
sintaxis:

TABULATE A,B

En el operando A se especifica el nombre de la tabla en el cual se tabulará el valor


especificado en la misma tabla. El operando B se utiliza opcionalmente para darle un
factor de peso.

TABULATE INVENTARIO ; Tabula en la tabla INVENTARIO el valor almacenado en la variable STOCK

Tabla 4.32.-Código GPSS para tabular datos en la tabla INVENTARIO definida previamente.

Haciendo lo mismo para la tabla VENTAS, queda de la siguiente manera:

TABULATE VENTAS ; Tabula en la tabla VENTAS el valor almacenado en la variable DEMANDA

Tabla 4.33.-Código GPSS para tabular datos en la tabla VENTAS definida previamente.

Una vez, que se tienen preparadas estas instrucciones se incluyen en el modelo.

99
Código GPSS (incluye histogramas).

INITIAL X$STOCK,700 ; Se inicializa el inventario = 700 unidades.

INITIAL X$POINT,600 ; Se inicializa el punto de reorden = 600 unidades.

INITIAL X$EOQ,500 ; Se inicializa la cantidad a ordenar = 500 unidades.

INITIAL X$DEMANDA,0 ; Se inicializa la demanda = 0 unidades. (se calcula diariamente)

INVENTARIO TABLE X$STOCK,0,50,20 ; TABLA de niveles de inventario

VENTAS TABLE X$DEMANDA,38,2,20 ;TABLA DE niveles de ventas

GENERATE ,,,1 ; Genera una sola transacción

OTRA TEST L X$STOCK,X$POINT ; Si el STOCK < POINT Entonces avanza, de lo contrario espera a que se cumpla la condición

ADVANCE 5 ;Realiza el pedido y espera 5 días para recibirlo

SAVEVALUE STOCK+,X$EOQ ;Recibe el pedido y actualiza el inventario existente STOCK = STOCK + EOQ

TRANSFER ,OTRA ;Repite el ciclo (se transfiere la transacción al bloque etiquetado con OTRA

TERMINATE

GENERATE 1 ;Inicia el día

SAVEVALUE DEMANDA, (DUNIFORM(1,40,63)) ; DEMANDA = DUNIFORME(1,40,63)

TABULATE INVENTARIO ; Tabula en la tabla INVENTARIO el valor almacenado en la variable STOCK

TEST GE X$STOCK,X$DEMANDA ;Si el STOCK > DEMANDA Entonces avanza, de lo contrario espera a que se cumpla

SAVEVALUE STOCK-,X$DEMANDA ;Entrega y actualiza el inventario existente STOCK = STOCK – DEMANDA

TABULATE VENTAS ; Tabula en la tabla VENTAS el valor almacenado en la variable DEMANDA

TERMINATE 1 ;Finaliza el día

START 100 ;Simula 100 días

Tabla 4.34.-Código GPSS para el diagrama de la figura 4.13 (incluye histogramas).

100
En el reporte de resultados aparece una sección en la cual presenta las dos tablas
definidas: INVENTARIO y VENTAS con su datos respectivos.

Figura 4.15.- Sección TABLE del reporte de resultados.

La distribución de frecuencias (histograma) del inventario, muestra que tiene una


media de 616 unidades, con una desviación estándar de 147 unidades. También
presenta 12 intervalos en la cual detalla las frecuencias respectivas de las 100
observaciones realizadas.

La distribución de frecuencias (histograma) de la demanda diaria (VENTAS), tiene una


media de 51 unidades, con una desviación estándar de 7 unidades. Proporciona los
datos de los 9 intervalos detallando sus frecuencias de las 100 observaciones
realizadas.

101
4.4.- VALIDACIÓN DE UN SIMULADOR.

El modelo de simulación como cualquier otro modelo es una representación del


mundo real. Esta representación es una simplificación del sistema real que contiene los
elementos significativos reduciendo así la complejidad. Esta simplificación y la
abstracción de procesos asumida contribuye a incrementar las condiciones de
incertidumbre que da origen a la necesidad de validar el modelo.

La validación del modelo fue estudiada por Charles F. Hermann proponiendo el


enfoque Hermann que resalta tres perspectivas a considerar: Propósito de la
construcción, los criterios utilizados, y el personal que interviene en la construcción.

La validación siempre se realiza en un determinado grado en cada una de las


perspectivas señaladas, que no deben ser apartadas de su propósito validando los
criterios razonablemente en la medida que se requieran. El personal seleccionado para
la construcción y operación tiene un impacto significativo en los procedimientos
requeridos para la validación.

Enfoque Hermann para validar

Propósito del modelo Criterios Utilizados

Crear Escenarios Validación interna

Predecir resultados Validación superficial

Entrenar Validación var-par

Explicar Validación de eventos

Sistema no existente Validación de hipótesis

Personal involucrado

Figura 4.16.- Enfoque Hermann para realizar la validación del modelo.

102
Propósitos Descripción
Escenarios Crea alternativas de acción para conocer sus consecuencias.
Predictivos Predice resultados que serán comparados con otros métodos
predictivos.
Entrenamiento Transmite conocimientos en un ambiente controlado.
Hipótesis y teorías Generan hipótesis y explicaciones a ideas surgidas en la
experimentación.
Universos inexistentes Estudio de sistemas que no existen en la realidad.

Figura 4.17.- Propósitos del modelo.

Criterios Descripción
Validación interna Establece una estabilidad y consistencia entre las corridas del
modelo.
Validación superficial Impresiones subjetivas de aspectos relevantes de la realidad.
Validación variable-parámetro Análisis de sensibilidad realizando comparaciones con valores
de las variables-parámetros.
Validación de eventos Establece similitudes de eventos.
Validación de hipótesis Realiza pruebas de hipótesis .

Figura 4.18.- Criterios de validación.

VERIFICACIÓN Y VALIDACIÓN DEL MODELO.

Los modelos de simulación son imitaciones aproximadas de sistemas del mundo real y
deben ser validados para asegurar la confiabilidad.

La verificación y la validación del modelo de simulación, inicia después que las


especificaciones han sido documentadas y el desarrollo inicial del modelo ha sido
finalizado. La verificación y la validación es un proceso iterativo que forma parte del
desarrollo del modelo. Para tener credibilidad en el simulador construido, es necesario
validar el modelo y los resultados del modelo. La validación proporciona al tomador de
decisiones los elementos necesarios para confiar en los resultados. La validación que
se lleva a cabo en modelos computacionales es similar a la de un simulador, aunque
existen diferencias específicas por la naturaleza de sus datos. En un modelo de
simulación intervienen tres clases de variables que describen el comportamiento del
sistema: entrada, proceso y salida.

Las variables de entrada son datos que se alimentan al modelo, son predeterminadas y
proporcionadas independientemente del sistema que se modela. Las variables de
proceso. son variables utilizadas para realizar el proceso, describen el estado del
sistema en cualquier instante. Pueden estar relacionadas con otras variables. Las
variables de salida son las variables que intenta predecir el modelo, representan los
resultados de la simulación.

Si hay datos del sistema actual, estos se pueden utilizar para compararlos con los
resultados del modelo. Es lo que se conoce como validación de resultados. Los

103
resultados se deben revisar para verificar su coherencia y consistencia de acuerdo con
el funcionamiento esperado del sistema.

El análisis de sensibilidad debe realizarse para detectar que factor tiene un efecto
mayor sobre los resultados del modelo para mejorar su representación si fuera
necesario.

La validación del modelo requiere sobre todo, la experiencia en el análisis de


resultados y en métodos estadísticos.

La verificación.

La verificación del modelo es un proceso para confirmar que ha sido implementado


correctamente con respecto al modelo conceptual. Durante la verificación, el modelo
es probado para encontrar y corregir los errores dentro de la implementación del
modelo. Varios procesos y técnicas se utilizan para asegurar que el modelo cumpla con
las especificaciones y supuestos con respecto al modelo conceptual. EL objetivo de la
verificación es asegurar una correcta implementación del modelo.

Existen varias técnicas para verificar el modelo, verificar por un experto, examinar la
lógica de los diagramas de flujo, examinar las salidas que estén dentro de rangos
razonables, prueba con varios conjuntos de datos de entrada, y todas las técnicas que
propone la ingeniería de software son aplicables en el modelo de simulación.

La verificación proporciona la evidencia de que el modelo computacional es construido


de manera correcta y exacta.

El proceso de verificación comúnmente se divide en dos tipos: La verificación del


código, y la verificación de la solución. En la verificación del código se realizan
actividades para encontrar y eliminar errores en el código fuente, en los algoritmos y el
mejoramiento del software aplicando prácticas de aseguramiento de la calidad. En la
verificación de la solución involucra actividades tendientes a asegurar la exactitud de
los datos de entrada, la estimación del error en la solución, y el aseguramiento que los
datos de salida sean precisos.

La validación.

La validación es un proceso para la determinación del grado en que el modelo


representa al sistema real. La validación proporciona la evidencia de que el modelo
matemático está exactamente relacionado con las medidas experimentales.

La validación asegura mediante una serie de pruebas que el modelo construido


representa al sistema real. Esta serie de pruebas objetivas y subjetivas determinan la
validez del modelo.

104
Las metas que persigue la validación se visualizan como tácticas y estratégicas. Las
metas tácticas realizan una caracterización y minimización de la incertidumbre y los
errores dentro del modelo computacional; y las estratégicas buscan incrementar la
confianza en la capacidad cuantitativa predictiva.

Dificultades asociadas a los datos.

Los datos asociados que utiliza el modelo de simulación dificultan el proceso de


validación debido a varias razones, en las cuales se pueden enumerar en orden de
prioridad las siguientes:

1. Mediciones incompletas en los variables de entrada. Las condiciones iniciales y


de acotamiento del espacio de soluciones formulan una geometría imperfecta
de espacios no convexos que ocasiona indeterminaciones.
2. Mediciones limitadas en las variables de salida. Usualmente se miden las
variables globales que contienen cantidades de alto nivel.
3. Estimadores de incertidumbre limitados. Errores aleatorios, errores de sesgo,
variabilidades en las etapas de estados transitorios.

Características de una validación.

La validación debe ser diseñada y conducida por personal experto en las ciencias
computacionales y experimentadores del área de estudio, estableciendo un fuerte lazo
desde la concepción del modelo, hasta la etapa de la documentación, seguido de un
análisis de fortalezas y debilidades.

La validación debe estar diseñada para captar los aspectos físicos relevantes, las
condiciones iniciales, y las condiciones de acotamiento y los datos auxiliares tales
como supuestos y la medición de los datos de entrada, y en lo posible la incorporación
de las características de las imperfecciones.

La validación debe usar la sinergia entre el experimento y el enfoque computacional


para analizar las fortalezas y debilidades desde el punto de vista computacional y
experimental, permitiendo la utilización de simulaciones con alto nivel de confianza
para calibrar y mejorar.

La independencia entre los resultados experimentales y computacionales debe ser


mantenida hasta donde sea posible. Una comparación ciega en la alimentación de
datos que no proporcionan datos de salida. La simulación debe ser predictiva y no
calibrativa.

Realizar una jerarquía de las medidas experimentales que presentan un alto nivel de
dificultad computacional.

105
Procedimientos de análisis de incertidumbre para estimar la aleatoriedad y errores de
sesgo correlacionados. El uso de métodos modernos estadísticos para estimar la
aleatoriedad y errores de sesgo en las variables de entrada y de salida. Y en lo posible
conducir experimentos utilizando técnicas de diagnóstico.

Métricas de validación.

Una métrica de validación es una medida de acuerdo entre los resultados


computacionales y las medidas experimentales para las cantidades de interés de
respuesta del sistema.

Pasos requeridos para evaluar una métrica de validación.

1. Selección de una cantidad de respuesta del sistema.


2. Medir experimentalmente todas las cantidades de entrada necesarias para el
código.
3. Medir experimentalmente las respuestas del sistema y su estimado de
incertidumbre.
4. Utilizar el código y las cantidades de entrada del experimento, y calcular la
cantidad de respuesta del sistema.
5. La diferencia entre lo calculado y la medida experimental, usualmente se
estima la media estimada de la respuesta del sistema y los resultados
computacionales.

La formulación de la métrica de validación hace uso de la estadística destacando: la


inferencia Bayesiana, las pruebas de hipótesis, y los intervalos de confianza.

La inferencia bayesiana es un tipo de inferencia estadística en la que las evidencias u


observaciones son empleadas para actualizar o inferir la probabilidad de que una
hipótesis pueda ser cierta.

Características de una métrica de validación.

La métrica de validación debe contar con las siguientes características:

• Se debe incluir un estimado de error numérico.


• Se debe incluir un estimado de errores aleatorios experimentales, y si es
posible errores de sesgo correlacionados.
• Se debe incluir un asesoramiento preciso del modelo computacional el cual
incluya todos los supuestos.
• Se debe excluir una medida de acuerdo entre los resultados computacionales y
los resultados experimentales.
• Se debe depender de un número de réplicas de experimentos dada una
cantidad experimental.

106
• Se debe depender de la incertidumbre debido a la falta de mediciones
experimentales de cantidades computacionales necesarias y la propia
incertidumbre de los parámetros experimentales.

Inferencias típicas.

A continuación se presentan tres casos que muestran las inferencias típicas


relacionadas de los dominios de la aplicación (el modelo de simulación) y el dominio de
la validación del modelo. En el eje de las abscisas se muestra el sistema y sus
parámetros que definen el entorno, y en el eje de las ordenadas representa la
complejidad geométrica y física.
En la inferencia tradicional ingenieril se
Caso I.- Inferencia tradicional ingenieril- Interpolación superpone los dominios de la aplicación y de
validación. La predicción se realiza
interpolando dentro de los puntos de la
C validación. Los errores en el modelo pueden
o ser ignorados debido al incremento en el
m factor de seguridad. El modelo es corregido
p utilizando errores de sesgo determinados en
Dominio de el experimento.
l aplicación
e
j
i
d
Dominio de validación
a
d

Sistema

En la inferencia bien fundamentada se


Caso II.- Inferencia bien fundamentada -Extrapolación superpone parcialmente los dominios de la
aplicación y de validación. La extrapolación
ocurre en términos de varios tipos de
C direcciones de las coordenadas debido a: los
o datos de entrada, parámetros del sistema y
m condiciones de acotamiento.
p Dominio de aplicación
l
e
j
i
d
Dominio de validación
a
d

Sistema

107
En la inferencia débil no se superponen los
Caso III.- Inferencia débil – Gran extrapolación dominios de aplicación y validación. Se realiza
una gran extrapolación en términos de
direcciones de las meta-coordenadas debido
C a: Cambios recientes en la complejidad física,
o Dominio de introducción de nuevos acoplamientos físicos,
m o la introducción de acoplamientos entre
aplicación
p subsistemas o componentes del sistema.
l Extrapolación
e
j
i
d
Dominio de validación
a
d

Sistema

Figura 4.19.- Inferencias típicas (tradicional, bien fundamentada, débil).

4.4.1.- PRUEBAS PARAMÉTRICAS (VALIDACIÓN DEL MODELO, PRUEBAS DE HIPÓTESIS


Y PRUEBAS DE ESTIMACIÓN.

Un parámetro es una característica de la población de interés, que deseamos estimar


ya sea real o desconocido. Para validar un modelo de simulación existen los criterios
de Hermann entre los cuales se destacan variable-parámetro, y de hipótesis. Las
pruebas paramétricas son pruebas de hipótesis estadísticas que asumen cierto
comportamiento de:

• Muestras obtenidas aleatoriamente.


• Distribución normal de las observaciones.
• Existe un parámetro de interés que buscamos estimar.

Estas pruebas paramétricas se basan en la suposición de una forma determinada de la


distribución de valores, generalmente la distribución normal, en la población de la que
se obtiene la muestra experimental. Una hipótesis estadística es una proposición o
supuesto sobre los parámetros de una o más poblaciones. Las hipótesis siempre son
proposiciones sobre la población o distribución bajo estudio, no proposiciones sobre la
muestra. Por lo general, el valor del parámetro de la población especificado en la
hipótesis nula se determina en una de tres maneras diferentes:

1. Puede ser resultado de la experiencia o del conocimiento del proceso, entonces


el objetivo de la prueba de hipótesis usualmente es determinar su ha cambiado
el valor del parámetro.
2. Puede obtenerse a partir de alguna teoría o modelo que se relaciona con el
proceso bajo estudio. En este caso, el objetivo de la prueba de hipótesis es
verificar la teoría o modelo.

108
3. Cuando el valor del parámetro proviene de consideraciones externas, tales
como especificaciones de diseño o ingeniería. En esta situación, el objetivo
usual de la prueba de hipótesis es probar el cumplimiento de las
especificaciones.

PRUEBAS DE HIPÓTESIS.

La hipótesis nula, representada por H0, es la afirmación sobre una o más características
de poblaciones que al inicio se supone cierta (es decir, la creencia a priori).

La hipótesis alternativa, representada por H1, es la afirmación contradictoria a H0, y


ésta es la hipótesis del investigador.

La prueba de hipótesis estadística o también llamada contraste de hipótesis se utiliza


para estimar un parámetro o proponer hipotéticamente un valor o valores para ese
parámetro, basado en la experiencia o en el supuesto teórico de la investigación. Esta
prueba sirve para decidir si se considera ese supuesto o se rechaza basado en las
muestras aleatorias obtenidas.

Si se conoce la distribución de probabilidad se utilizan las pruebas estadísticas


específicas, de lo contrario se aplican las pruebas de hipótesis estadísticas
paramétricas.

Con los resultados de la validación de la hipótesis se decide si rechazar o no el


supuesto. En condiciones de incertidumbre se emplea la probabilidad como una
medida para tomar una decisión equivocada.

A partir de una muestra aleatoria extraída de una población se realiza un proceso de


prueba para decidir si se mantiene el supuesto o se rechaza; con cierta probabilidad de
error.

Para la población se plantea un supuesto para el parámetro, de ésta se extrae una


muestra aleatoria, los datos recolectados de ella se usan para generalizarlo en toda la
población, mediante el proceso de la prueba de hipótesis.

109
Proceso de la prueba de hipótesis estadística

Población

Muestreo
Muestra aleatoria

Hipótesis: Supuesto para el


parámetro
(validar)
Inferencia estadística

Figura 4.20.- Proceso de la prueba de hipótesis estadística.

Una hipótesis estadística es una conjetura que el investigador plantea para el


parámetro, que puede o no ser verdadera, relativa a una o más poblaciones. Las
hipótesis estadísticas pueden ser simples o compuestas, también nulas o alternativas.

Una hipótesis simple es una hipótesis que especifica completamente la distribución,


especificando la forma funcional y los valores de todos los parámetros. De lo contrario
se conoce como una hipótesis compuesta.

La hipótesis nula conocida como H0 es el supuesto que indica que el valor del
parámetro es constante y que no sufre cambios. Es planteada generalmente con la
intención de rechazarla.

La hipótesis alternativa también conocida como H1, es el supuesto relacionado con la


teoría a demostrar.

Para tomar la decisión de rechazar o no la hipótesis es necesario recopilar una muestra


de la población, para luego realizar un cálculo estadístico que sirve de base para la
toma de decisión. Este procedimiento divide los posibles valores estadísticos en dos
subconjuntos: La región de no rechazo, y la región de rechazo.

La hipótesis es unilateral si la hipótesis alternativa indica un cambio en una sola


dirección (menor que, mayor que) con respecto a la hipótesis nula, de lo contrario se
dice que la hipótesis es bilateral.

110
Errores de Tipo I y II.

Los errores que se pueden cometer al realizar una prueba de hipótesis son los
siguientes:

Decisión Estado real


H0 es verdadera H0 es falsa
Rechazar Ho Error de tipo I OK
No rechazar H0 OK Error de tipo II

Tabla 4.35.-Errores al realizar la prueba de hipótesis.

Estos errores son contabilizados con las siguientes probabilidades condicionales:

…L$ ℎ'% Ÿ | $# O$%$%


= Á

… " %$ ℎ'% Ÿ | $# .(#


= Ã

Una buena prueba estadística es aquella prueba en que permite tomar una decisión
con un error mínimo de error. Es decir que los valores α y β tiene valores mínimos.
Mostrando la decisiones en términos de esos errores tenemos que:

Decisión Estado real


H0 es verdadera H0 es falsa
Rechazar Ho α (1-β)
No rechazar H0 (1-α) β

Tabla 4.36.- Valores α y β para medir los errores.

Al rechazar una hipótesis nula verdadera se incurre en el error de tipo I, mientras que
no rechazar la hipótesis nula cuando es falsa se incurre en el error de tipo II. El error de
tipo I (α) está bajo control del investigador y es establecido antes de realizar la prueba,
también se le conoce como el nivel de significancia, y el (1-α) es conocido como el nivel
de confianza o la probabilidad de que el parámetro esté dentro de este intervalo de
confianza.

El error de tipo II (β) varía con respecto a α, debido a varias causas entre las cuales se
destaca el tamaño de la muestra, la prueba estadística, el diseño elegido y la magnitud
del efecto. A (1-β) se le conoce también como la potencia, es decir la probabilidad de
no cometer el error de tipo II.

Nivel de significancia (α).

La probabilidad α es el nivel de significancia de la prueba, asumida voluntariamente


por el investigador para equivocarse al rechazar H0 cuando es verdadera. Usualmente
se utilizan los valores de 0.01 (1%), 0.05 (5%) y 0.10 (10%). Cuando es rechazada una
hipótesis nula se dice que tiene una significancia estadística, pero cuando no se
rechaza significa que no se tienen los elementos suficientes para rechazarse.

111
Estadístico de prueba.

Para decidir si se rechaza o no la hipótesis nula se toma una muestra de la población,


para luego calcular los estadísticos de prueba que indican el grado de discrepancia
entre la hipótesis nula y los datos muestrales. Cuando es grande esta diferencia se
rechaza la hipótesis nula en caso contrario no se rechaza.

Al conjunto de valores de la estadística de prueba para los que la hipótesis nula se


rechaza se llama “región de rechazo o región crítica”. El establecimiento de la región
de rechazo depende de la distribución de probabilidad de la estadística de prueba, el
punto de corte (punto o valor que divide a la región crítica de la no crítica) se llama
también “valor crítico o punto crítico”, cuyo su valor depende de la distribución de
probabilidad de la estadística de prueba.

Región de rechazo.

La región de rechazo o región crítica es aquella en que contiene valores del estadístico
de prueba en que la hipótesis nula es rechazada. Esta región depende de la
distribución de probabilidad del estadístico de prueba utilizado. El punto crítico es el
que divide la región crítica de la no crítica, y depende su valor de la distribución de
probabilidad utilizada.

Figura 4.21.- Región de rechazo.

112
PROCEDIMIENTO PARA REALIZAR LAPRUEBA DE HIPÓTESIS.

Paso 1.- Plantear adecuadamente la hipótesis nula y la alternativa.

Paso 2.- Elegir el nivel de significancia (α).

Paso 3.- Elegir el estadístico para la prueba.

Paso 4.- Definir la región de rechazo, en base a la hipótesis alternativa.

Paso 5.- Calcular el estadístico seleccionado para realizar la prueba de hipótesis.

Paso 6.- Comparar el valor del estadístico de prueba y el valor crítico, para decidir si se
rechaza o no la hipótesis nula.

La prueba de hipótesis es paramétrica debido a que se aplica únicamente a las


muestras aleatorias que provienen de poblaciones que tienen una distribución de
probabilidad conocida, la cual generalmente es la distribución de probabilidad normal.

A continuación se muestran diversas pruebas de hipótesis, las cuales muestran el


estadístico a utilizar, y la política de rechazo.

Prueba de hipótesis para µ de una población normal cuando σ2 es conocida.

Prueba de hipótesis Estadístico utilizado Rechazar Ho si

i̅ − μ
Ho:µ≤µ0 Z > Zα
K= n
Ž ,
H1:µ>µ0

Ho:µ≥µ0 Z > -Zα
H1:µ<µ0
Ho:µ=µ0 Z < -Zα/2 ó Z > Zα/2
H1:µ≠µ0

Prueba de hipótesis para µ de una población normal cuando σ2 es desconocida.

Prueba de hipótesis Estadístico utilizado Rechazar Ho si

i̅ − μ
Ho:µ≤µ0 T > tα,n-1
¢= #
Ž ,
H1:µ>µ0


Ho:µ≥µ0 T < -tα,n-1
H1:µ<µ0
Ho:µ=µ0 T < -tα/2,n-1 ó T > tα/2,n-1
H1:µ≠µ0

113
Prueba de hipótesis para σ2 de una población normal.

  > ,

Prueba de hipótesis Estadístico utilizado Rechazar Ho si

, − 1
# 
2 2
Ho:σ ≤ σ 0
 =
σ   < ,
2 2


H 1: σ > σ 0
Ho: σ ≥ σ20
2

  <  , ó


H1: σ2< σ20


 > ,
2 2


H o: σ = σ 0
2 2
H 1: σ ≠ σ 0 

Prueba de hipótesis para π de una población binomial.

K > K
Prueba de hipótesis Estadístico utilizado Rechazar Ho si

) − Å
K=
Ho: π ≤ π0

ÆÅ 1 − Å
K < -K
H1: π > π0

n
Ho: π ≥ π0

K < -K/ ó K > K/


H1: π < π0
Ho: π = π0
H1: π ≠ π0

Prueba de hipótesis para µ1−µ2 cuando ÇfÈ É Çff son conocidas.

K > K
Prueba de hipótesis Estadístico utilizado Rechazar Ho si

i̅ − i̅
− μ
Ho: µ1−µ2 ≤ µ0
K=
K < -K
H1: µ1−µ2 > µ0

n n
I
, + ,
Ho: µ1−µ2 ≥ µ0

K < -K/ ó K > K/


H1: µ1−µ2 < µ0
Ho: µ1−µ2 = µ0
H1: µ1−µ2 ≠ µ0

Prueba de hipótesis para µ1−µ2 cuando ÇfÈ É Çff son desconocidas e iguales.

¢ > ¢,
Prueba de hipótesis Estadístico utilizado Rechazar Ho si

i̅ − i̅
− μ
Ho: µ1−µ2 ≤ µ0
¢=
1 1 ¢ < -¢,
H1: µ1−µ2 > µ0
~ Æ, + ,
Ho: µ1−µ2 ≥ µ0
 
¢ < -¢/, ó ¢ > ¢/,
H1: µ1−µ2 < µ0
Ho: µ1−µ2 = µ0 Donde:

~ =
Ê 
œÊ’ ’ 
œ’’
H1: µ1−µ2 ≠ µ0
Ê ’ 

, = , + , − 2

114
Prueba de hipótesis para µ1−µ2 cuando ÇfÈ É Çff son desconocidas y diferentes.

¢ > ¢,
Prueba de hipótesis Estadístico utilizado Rechazar Ho si

i̅ − i̅
− μ
Ho: µ1−µ2 ≤ µ0
¢=
¢ < -¢,
H1: µ1−µ2 > µ0

# #
I +
Ho: µ1−µ2 ≥ µ0
, ,
¢ < -¢/. ó ¢ > ¢/,
H1: µ1−µ2 < µ0
Ho: µ1−µ2 = µ0
H1: µ1−µ2 ≠ µ0

# #
Donde:
, + ,

,=  
# #
 
r t r t
, ,
·  +  º
, − 1 , − 1
µ ¸

Prueba de hipótesis para µ1−µ2 = µd para muestras relacionadas.

¢ > ¢,
Prueba de hipótesis Estadístico utilizado Rechazar Ho si


H o : µd ≤ 0
¢=
Ë √,
¢ < -¢,
H 1: µ d > 0
H o : µd ≥ 0

¢ < -¢Ì. ó ¢ > ¢Ì,


H 1 : µd < 0
’ ’
H o : µd = 0 Donde:

1

H 1 : µd ≠ 0

̅ = 
i − 9

,


∑

i − 9 − ̅

Ë = I
,−1

Prueba de hipótesis para cuando ÇfÈ É Çff son conocidas.

Ho: n ≤ n  > ,‰,Í

Prueba de hipótesis Estadístico utilizado Rechazar Ho si

H1: n > n #


=
Ho: n ≥ n #  < 
,‰,Í

H1: n < n


Ho: n = n < ÊÎÌ,‰,Í
ó  > yÌz,‰,Í

Donde:

H1: n ≠ n  = , − 1 ’ ’

? = , − 1

115
Prueba de hipótesis para π −π de poblaciones binomiales.

Ho: Å −Å ≤ Å K > K


Prueba de hipótesis Estadístico utilizado Rechazar Ho si

H1: Å −Å > Å ) − )


K=
Ho: Å −Å ≥ Å 1 1 K < -K
p1 − p
yn + n z
H1: Å −Å < Å I  
Ho: Å −Å = Å K < -K/ ó K > K/
H1Å −Å ≠ Å
Donde:
P es la proporción poblacional
estimada de éxitos con respecto
a la muestra n=n1+n2

4.4.2.- PRUEBAS NO PARAMÉTRICAS.

Las pruebas no paramétricas son aquellas que no presuponen una distribución de


probabilidad para los datos, por ello se conocen también como de distribución libre.

En la mayor parte de ellas los resultados estadísticos se derivan únicamente a partir de


procedimientos de ordenación y recuento, por lo que su base lógica es de fácil
comprensión.

PRUEBA DE MANN-WHITNEY PARA MUESTRAS INDEPENDIENTES.

Si tenemos dos series de valores de una variable continua obtenidas en dos muestras
independientes: X1, X2,..Xn, Y1, Y2, …., Ym, procedemos a ordenar conjuntamente todos
los valores en sentido creciente, asignándoles su rango, corrigiendo con el rango
medio los empates. Calculamos luego la suma de rangos para las observaciones de la
primera muestra SX, y la suma de rangos de la segunda muestra SY. Si los valores de la
población de la que se extrajo la muestra aleatoria de X se localizan por debajo de loa
valores de Y, entonces la muestra de X tendrá probablemente rangos más bajos, lo que
se reflejará en un valor menor de Sx del teóricamente probable.

PRUEBA DE WILCOXON DE LOS RANGOS CON SIGNO.

Esta prueba nos permite comparar nuestros datos con una mediana teórica (por
ejemplo un valor publicado en un artículo). Para efectuar esta prueba se calculan las
diferencias en valor absoluto |Xi-M0| y se ordenan de menor a mayor, asignándoles su
rango (número de orden). Si hubiera dos o más diferencias con igual valor (empates),
se les asigna el rango medio (es decir que si tenemos un empate en las posiciones 2 y 3
se les asigna el valor 2.5 a ambas).

116
5
Proyecto integrador

5.1.- ANÁLISIS, MODELADO Y SIMULACIÓN DE UN SISTEMA O SUBSISTEMA SE


SERVICIOS O PRODUCTIVOS DE UNA EMPRESA PARA DETECTAR LAS MEJORAS
POSIBLES A REALIZAR.

Al llevar a cabo un estudio de simulación es necesario contar con una guía que define
las actividades a desarrollar. En el capítulo 1 se señalaron las 8 etapas que el ingeniero
debe seguir para conseguir este propósito. Si se compara con las etapas del desarrollo
de un sistema computacional, es notorio que existen actividades que en el estudio de
simulación se deben realizar una vez concluido el modelo computacional, es decir que
son actividades que un usuario realiza al momento de utilizarlo, tal como la
experimentación y la interpretación de los resultados.

Estudio de Simulación Desarrollo de un Sistema computacional


1.- Definir el sistema Análisis
2.- Formular el modelo
3.- Recopilar datos
4.- Implementar el modelo en la Diseño
computadora Codificación
Pruebas
Implementación
Mantenimiento
5.- Validar
6.- Experimentar
7.- Interpretar
8.- Documentar Documentación
Figura 4.22.- Comparativo entre estudio de simulación y desarrollo tradicional de un sistema computacional.

A continuación se presentan varios proyectos que fueron desarrollados en todas sus


etapas con el fin de mostrar al lector, las actividades desarrolladas en cada etapa, y las
estrategias utilizadas para la búsqueda de soluciones para realizar mejoras en el
sistema de estudio, por medio de la simulación.

117
5.1.1.- SIMULACIÓN DE MANUFACTURA DE RELOJES ELECTRÓNICOS.

Una empresa manufacturera se encarga de manufacturar relojes electrónicos, sus


clientes realizan pedidos los cuales tiene que atender de acuerdo a su capacidad
instalada. Desea realizar un estudio de simulación que le permite mejorar sus procesos
con el fin de poder atender la demanda.

5.1.1.1.- DEFINIR EL SISTEMA.


Para definir exactamente el sistema que se requiere simular, se requiere de llevar a cabo un análisis preliminar con el fin de
determinar la interacción del sistema con otros sistemas, las restricciones del sistema, las variables que interactúan dentro del
sistema y sus interrelaciones, las medidas de efectividad que se van a utilizar para definir y estudiar el sistema y los resultados que
se esperan obtener del estudio.

La primera etapa consiste en definir el sistema que se desea simular, para realizarlo es
necesario realizar un análisis preliminar. Este análisis exploratorio tradicionalmente se
lleva a cabo realizando un recorrido por toda la empresa. Este recorrido nos muestra
todos los procesos que se realizan, y las problemáticas que se enfrentan diariamente
para realizar sus actividades operativas. La estructura organizacional es un buen inicio
para identificar al personal clave que cuenta con información valiosa para incluir en el
modelo de simulación.

Organigrama de empresa manufacturera

Gerente

Mantenimiento Producción Administración

Figura 5.1.- Organigrama de empresa manufacturera.

Las entrevistas a este personal, es pieza fundamental para definir el sistema y sus
interacciones con otros sistemas, y los resultados que se esperan obtener del estudio
de simulación.

Para la definición del sistema, se puede seguir con una técnica enfocada a identificar lo
siguiente:

118
Proceso Salidas
Entradas

2 1

Figura 5.2.- Análisis del sistema.

Identificar las salidas del sistema.

AL realizar un análisis preliminar en la empresa manufacturera primero nos


enfocaremos a descubrir los resultados que se esperan obtener del estudio, es decir
determinar las salidas del sistema. Entrevistando a los gerentes de la planta cada uno
expone la problemática desde su perspectiva, entre las cuales se destacan los
problemas siguientes:

• Cantidad de órdenes pendientes de empacar.


• Cantidad de relojes despachados.
• Existen otras salidas que en este momento el gerente no considera
significativas, pero son dejadas como pendientes, para no elevar el grado de
complejidad del simulador.

Identificar las entradas del sistema.

Las entradas del sistema, están en función de las salidas identificadas del sistema. Es
decir los datos requeridos que serán procesados para proporcionar las salidas del
sistema. Las entrevistas y los recorridos muestran que todo inicia cuando el cliente
realiza una orden. Las órdenes llegan durante el transcurso del día, las cuales pasan
directamente a manufactura, y luego se empacan y son enviadas al cliente.
Identificando como variables de entrada: las los tiempos entre llegadas de las órdenes,
tamaño de la orden, los tiempos de manufactura, y los tiempos de empacado.

Identificar el proceso del sistema.

Al entrevistar al encargado de la producción muestra el proceso que siguen las órdenes


de los clientes, las cuales son recibidas, manufacturadas, empacadas y enviadas a los
clientes.

119
almacén

Recibe Manufactura Empaque Entrega


orden orden

Figura 5.3.- Proceso del sistema .

5.1.1.2.- FORMULAR EL MODELO.


Una vez definido los resultados que se esperan obtener del estudio, el siguiente paso es definir y construir el modelo con el cual se
obtendrán los resultados deseados. En la formulación del modelo es necesario definir todas las variables que forman parte de él,
sus relaciones lógicas y los diagramas de flujo que describan en forma completa al modelo.

Tiempo entre
llegadas de las
Ordenes
órdenes
pendientes de
Almacén
empacar
Cantidad de
relojes por orden
Ordenes
entregadas
Manufactura Empacado
Tiempo de
manufactura

Proceso de simulación
Tiempo de
empacado

Figura 5.4.- Formulación del modelo.

120
5.1.1.3.- RECOPILAR LOS DATOS.
La facilidad o dificultad para obtener los datos, puede influir el desarrollo y la formulación del modelo. Es importante definir con
claridad y exactitud los datos que el modelo requiere para la producción de los resultados deseados. Usualmente, los datos
requeridos se pueden obtener de registros históricos, de opiniones de expertos, o de la experimentación.

Tiempo entre llegadas de las órdenes. Una estadística realizada con datos históricos de
6 meses, muestra que tiene un promedio entre llegadas de 15 minutos con un
comportamiento exponencial.

Cantidad de relojes por orden.- El tamaño de la orden tiene la siguiente distribución de


frecuencias:
Frecuencia 0.10 0.25 0.30 0.15 0.12 0.05 0.03
Tamaño de 6 12 18 24 30 36 48
la orden

Tiempo de manufactura.- El proceso de manufactura se realiza por lotes de 60 relojes


tardando un promedio de 45 ±5 minutos por lote.

Tiempo de empacado.- El proceso de empacado de una orden está en función de la


cantidad de relojes a empacar, teniendo un tiempo por cada orden de 15 minutos más
10 segundos por cada reloj empacado.

Capacidad del almacén. Se cuenta con un almacén para almacenar los relojes
producidos en manufactura, el cual tiene una capacidad de 4000 relojes, y deberá con
contar con un inventario mínimo de 1000 relojes al iniciar el funcionamiento de la
empresa.

121
5.1.1.4.- IMPLEMENTAR EL MODELO EN LA COMPUTADORA.
Con el modelo definido, el siguiente paso es decidir el lenguaje de programación a utilizar ya sea uno de propósito general o un
paquete de propósito específico, para procesarlo en la computadora y obtener los resultados deseados.

Se utiliza el lenguaje GPSS para construir el modelo de simulación.

Para simplificar la implementación del modelo, primero nos concentraremos en la


manufactura de relojes, y luego posteriormente se implementará el proceso de
atención de las órdenes de los clientes.

IMPLEMENTACIÓN DE MANUFACTURA, CARGA INICIAL DE INVENTARIO Y DÍAS


TRANSCURRIDOS.

Los relojes que son manufacturados son enviados al almacén que tiene una capacidad
de 4000 relojes, y el proceso inicia con un inventario inicial en el almacén de 1000
relojes.

El modelo está compuesto por tres segmentos, el primero se encarga de simular la


producción del departamento de manufactura que envía todo el producto a un
almacén con capacidad de 4000 relojes, el segundo se encarga de simular los días
transcurridos, y el tercero simula la carga de inventario inicial de 1000 relojes al
almacén.

122
Modelo.

GENERATE ,,,1,10

GENERATE 0.75,0.08334,1

ENTER ALMACEN,1000
ENTER ALMACEN,60

TERMINATE
TERMINATE

Simula carga de inv.


Simula manufactura y almacenaje
inicial

GENERATE 8

TERMINATE 1

Figura 5.5.- Diagrama de bloques. (1 de 2) Simula días


transcurridos

Código GPSS.

ALMACEN STORAGE 4000 ;Capacidad máxima del almacen = 4000 relojes.

GENERATE 0.75,0.08334,1 ;Genera un lote cada 40 ± 5 minutos

ENTER ALMACEN,60 ;Almacena el lote de 60 relojes

TERMINATE

;--------------------------------------------------------------------------------------------------------------------------------------------

GENERATE ,,,1,10 ;Genera una transacción que realiza la carga de inventario inicial

ENTER ALMACEN,1000 ;Almacena un lote inicial de 1000 relojes

TERMINATE

;--------------------------------------------------------------------------------------------------------------------------------------------------

GENERATE 8 ;Genera un día de 8 horas de trabajo

TERMINATE 1 ; Finaliza el día

START 5 ;Simula 5 dias de trabajo

Tabla 5.1.- Código GPSS para el diagrama de bloques de la figura 5.5.

Reporte de resultados.

123
Figura 5.6.- Reporte de resultados.

El tiempo de la simulación fue de 40 horas (8 horas x 5 dias). La capacidad del almacén


es de 4000 relojes, y al finalizar la simulación está a su máxima capacidad. Se
almacenaron 50 lotes (50 lotes x 60 relojes = 3000 relojes), y quedaron 3 pendientes
debido a que el almacén ya estaba lleno. Se generó la carga inicial de 1000 relojes al
almacén.

IMPLEMENTACIÓN DE ÓRDENES ATENDIDAS.

Una vez que se ha verificado el buen funcionamiento de estos tres segmentos, ahora
nos concentraremos en la simulación de las órdenes atendidas.

Las órdenes tienen un tiempo entre llegadas que sigue una distribución exponencial
con media de 15 minutos, y el tamaño de la orden viene dada por una distribución de
frecuencias:
Frecuencia 0.10 0.25 0.30 0.15 0.12 0.05 0.03
RELATIVA
Tamaño de 6 12 18 24 30 36 48
la orden

124
Para crear una variable aleatoria TAMANO es necesario primero calcular la distribución
de frecuencias acumulada obteniendo la siguiente tabla:
Frecuencia 0.10 0.35 0.65 0.80 0.92 0.97 1.0
ACUMULADA
Tamaño de 6 12 18 24 30 36 48
la orden

Para realizar el empacado, los relojes se tienen que retirar del almacén, si no se
encuentran en existencia entonces la orden no es atendida. El tiempo de empacado es
calculado por la variable TIEMPO que está en función de la cantidad de relojes a
empacar. TIEMPO = 0.0034 + (P1*0.0028).

125
Modelo.

GENERATE (EXPONENTIAL(1,0,0.25))

ASSIGN 1,1,TAMANO

S$ALMACEN ≥ P1

F
V

LEAVE ALMACEN,P1

Simula órdenes SEIZE EMPACADORA

atendidas
ADVANCE V$TIEMPO

Figura 5.7.- Diagrama de bloques. (2 de 2) RELEASE EMPACADORA

TERMINATE

Código GPSS (incluye todo el modelo).

TAMANO FUNCTION RN1,D7 ;

.10,6/.35,12/.65,18/.80,24/.92,30/.97,36/1.0,48

TIEMPO VARIABLE 0.0028#P1+0.0334 ;Tiempo de empacado= 0.0334 + P1*0.0028

ALMACEN STORAGE 4000 ;Capacidad máxima del almacen = 4000 relojes.

GENERATE (EXPONENTIAL(1,0, 0.25)) ; Genera un pedido cada 15 minutos disribuidos exponencialmente

ASSIGN 1,1,TAMANO ; Calcula el tamaño de la orden y lo almacena en P1

TEST GE S$ALMACEN,P1,NOHAY ; Si hay en el almacen lo surte, de lo contrario lo pierde

LEAVE ALMACEN,P1 ;Retira los P1 relojes del almacen

QUEUE ESPERA ;Entra la cola de espera

SEIZE EMPACADORA ;Captura a la maquina empacadora

DEPART ESPERA ;Sale de la cola de espera

ADVANCE V$TIEMPO ;Realiza el empacado con tiempo= V$TIEMPO

RELEASE EMPACADORA ;Libera la maquina empacadora

TERMINATE ;Entrega la orden

126
NOHAY TERMINATE ;La orden no es posible atenderse debido a que hay faltantes

GENERATE 0.75,0.08334,1 ;Genera un lote cada 40 ± 5 minutos

ENTER ALMACEN,60 ;Almacena el lote de 60 relojes

TERMINATE

GENERATE 8 ;Genera un día de 8 horas de trabajo

TERMINATE 1 ; Finaliza el día

GENERATE ,,,1,10 ;Carga inicial del inventario

ENTER ALMACEN,1000 ;Inicia el inventario con 1000 relojes

TERMINATE

START 5 ;Simula 5 dias de trabajo

Tabla 5.2.- Código GPSS para el diagrama de bloques de la figura 5.5 y 5.7

Reporte de resultados.

127
C

Figura 5.8.- Reporte de resultados .

Interpretación de los resultados para verificación.

A.- El tiempo de la simulación fue de 40 horas (8 horas x 5 dias).

B.- Llegaron 169 órdenes, de las cuales 168 fueron procesadas y enviadas a los clientes,
y 1 orden quedó en el proceso de empacado.

C.- La máquina de empacado tuvo un 36.4% de utilización, con un tiempo promedio de


empacado de 0.086 horas (0.086 horas x 60 minutos=5.16 minutos), y al finalizar la
simulación la máquina empacadora se encontraba ocupada (avail=1).

D.- La línea de espera para el proceso de empacado, durante toda la simulación tuvo
máximo 3 ordenes en espera, de las 169 ordenes que llegaron al proceso de empaque
103 ordenes no tuvieron que esperar, y las ordenes que esperaron tuvieron un tiempo
de espera promedio de 0.070 horas (0.070 horas x 60 minutos=4.2 minutos).

E.- La capacidad del almacén es de 4000 relojes, y al finalizar la simulación tiene en


inventario de 898 relojes (CAP-REM =4000-3102=898). El inventario máximo alcanzado
en toda la simulación fue de 1300 relojes, teniendo un porcentaje de utilización en el
inventario de 27.4%

F.- El proceso de manufactura en toda la simulación produjo 52 lotes de 60 relojes


cada uno, y todos ellos fueron enviados al almacén.

128
5.1.1.5.- VALIDAR EL MODELO.
En esta etapa es posible detallar deficiencias en la formulación del modelo o en los datos alimentados al modelo, siendo las
formas más comunes de validar el modelo las siguientes:

1. La opinión de expertos sobre los resultados de la simulación.

2. La exactitud con que se predicen datos históricos.

3. La exactitud en la predicción del futuro.

4. La comprobación de falla del modelo de simulación al utilizar datos que hacen fallar al sistema real.

5. La aceptación y confianza en el modelo de la persona que hará uso de los resultados que arroje el experimento de
simulación.

Los modelos de simulación son imitaciones aproximadas de sistemas del mundo real y
deben ser validados para asegurar la confiabilidad.

El gerente de producción al revisar el modelo computacional detecta que la política


que sigue el departamento de empacado cuando no tiene existencia en el inventario,
está en base a criterios que no han sido especificados claramente, en ocasiones, se
suspende el empacado hasta que exista la cantidad de la orden, en otras ocasiones esa
orden la deja pendiente y se procede a empacar otras órdenes que tienen menor
cantidad, en raras ocasiones las ordenes no se surten, debido a faltantes. La
especificación de esta política debe ser clara y precisa para lograr un modelado que se
asemeje a la realidad, y se pone en manifiesto al estudiar los casos específicos. La
simulación efectuada no presenta esta característica, debido a que ninguna orden es
enviada al bloque 11 (TERMINATE), pero independientemente del resultado debe ser
aclarada, esta falta de información.

Otras observaciones del ingeniero de manufactura, es la oportunidad de contar con un


simulador que le permita optimizar los niveles de inventario.

En lo relativo a la exactitud con que se predicen las variables aleatorias, como los
tiempos entre llegadas de las ordenes, los tiempos de producción, y los tiempos de
empaque, las variables aleatorias utilizadas deben ser revisadas debido a ajustes en
las maquinarias y mejoras en los instructivos de trabajo que impactan
significativamente con respecto a los datos históricos con los cuales se contaba en ese
momento.

Los problemas existentes en la práctica están encaminados al proceso de manufactura,


que en últimas fechas se enfrentan a una gran rotación de personal, y se han
incrementado los mantenimientos en las maquinarias debido a falta de
entrenamiento.

129
El gerente general propone incluir en el modelo, variables aleatorias relacionadas a los
procesos de mantenimiento de maquinaria, actualizar las variables aleatorias
utilizadas, con los comportamientos actuales, y una política de control de inventarios.

Una vez incluidas estas mejoras en el modelo, se procederá a experimentar con el


mismo. Esto nos obliga a realizar otra iteración regresando de nuevo a la definición del
sistema, para incluir las necesidades que surgen en esta revisión. Es clásico que un
modelo no se realice a la primera, debido a que es un proceso iterativo que irá
afinando poco a poco el modelo, en la medida que vayan surgiendo variables
significativas.

5.1.1.6.- EXPERIMENTAR CON EL MODELO.


La experimentación con el modelo se realiza después de que éste ha sido validado. La experimentación consiste en generar los
datos deseados y en realizar análisis de sensibilidad de los índices requeridos.

La experimentación es un proceso en el cual, se realizan corridas de simulación que


reporta los resultados deseados. Una vez obtenidos se realiza un análisis de
sensibilidad para ver la relación entre las variables, y su impacto dentro del mismo.

5.1.1.7.- INTERPRETAR LOS RESULTADOS.


En esta etapa se interpretan los resultados que arroja la simulación, y en base a estos se toma una decisión. Obviamente estos
resultados obtenidos de la simulación ayudan a soportar decisiones del tipo semi-estructurado, es decir, la computadora en sí no
toma la decisión, sino que la información que aporta ayuda a tomar mejores decisiones, y sistemáticamente obtener mejores
resultados.

El objetivo de la simulación es contar con información para la buena toma de


decisiones. El reporte de resultados que arroja el modelo debe ser interpretado y
puesto en términos que el tomador de decisiones pueda comprender, y en base a ellos
fundamentar sus decisiones. Las mejoras a cualquier sistema parten de un proceso
iterativo en que se incluyen nuevas variables con el fin de obtener información
desconocida que logre comprender el comportamiento del sistema y sus
repercusiones al momento de incluir o actualizar algún proceso.

5.1.1.8.- DOCUMENTAR.
Son requeridos dos tipos de documentación para hacer un mejor uso del modelo de simulación. La primera es la documentación
técnica y la segunda documentación es el manual del usuario para facilitar la interacción y el uso del modelo desarrollado.

La documentación es vital para asegurar que se pueda llevar a cabo el mantenimiento


y la operación del sistema construido. La documentación del usuario es aquella que le
permite al usuario conocer el simulador, y poder hacer uso de él. Por otro lado la
documentación técnica está relacionada con todos los aspectos técnicos desde su

130
concepción hasta su implementación, que permiten asegurar un mantenimiento para
que el sistema computacional para incluir y modificaciones que surgen a través del
tiempo.

131
5.1.2.- SIMULACIÓN DE UN SISTEMA DE CONTROL DE CALIDAD.

Una maquiladora manufactura un componente automotriz, la manufactura de estos


componentes es realiza por una secuencia de tres procesos principales. Al final de cada
proceso está instalada una estación de inspección que asegura la calidad de los
componentes, rechazando aquellos que no cumplan con las normas mínimas
establecidas. Para algunos componentes rechazados tienen la oportunidad de ser re-
trabajados, algunos otros son considerados como desperdicio. La intención del estudio
de simulación es conocer el comportamiento del sistema de control de calidad, para
realizar mejoras en el sistema.

5.1.2.1.- DEFINIR EL SISTEMA.


Para definir exactamente el sistema que se requiere simular, se requiere de llevar a cabo un análisis preliminar con el fin de
determinar la interacción del sistema con otros sistemas, las restricciones del sistema, las variables que interactúan dentro del
sistema y sus interrelaciones, las medidas de efectividad que se van a utilizar para definir y estudiar el sistema y los resultados que
se esperan obtener del estudio.

La primera etapa consiste en definir el sistema que se desea simular, para realizarlo es
necesario realizar un análisis preliminar. Este análisis exploratorio tradicionalmente se
lleva a cabo realizando un recorrido por toda la empresa. Este recorrido nos muestra
todos los procesos que se realizan, y las problemáticas que se enfrentan diariamente
para realizar sus actividades operativas. La estructura organizacional es un buen inicio
para identificar al personal clave que cuenta con información valiosa para incluir en el
modelo de simulación.

Organigrama de la empresa

Gerente

Administración Producción Calidad

Figura 5.9.- Organigrama de la empresa.

Las entrevistas a este personal, es pieza fundamental para definir el sistema y sus
interacciones con otros sistemas, y los resultados que se esperan obtener del estudio
de simulación.

Para la definición del sistema, se puede seguir con una técnica enfocada a identificar lo
siguiente:

132
Identificar las salidas del sistema.

AL realizar un análisis preliminar primero nos enfocaremos a descubrir los resultados


que se esperan obtener del estudio, es decir determinar las salidas del sistema.
Entrevistando a los gerentes de la planta cada uno expone la problemática desde su
perspectiva, entre las cuales se destacan los problemas siguientes:

• Maximizar la producción.
• Minimizar productos defectuosos.
• Minimizar el desperdicio.

Identificar las entradas del sistema.

Las entradas del sistema, están en función de las salidas identificadas del sistema. Es
decir los datos requeridos que serán procesados para proporcionar las salidas del
sistema. Las entrevistas y los recorridos muestran el proceso de fabricación, el cual
está sujeta a la llegada de las órdenes durante el transcurso del día, las cuales pasan
directamente a manufactura basada en tres procesos principales, al final de cada
proceso se realiza una inspección que asegura el retiro de la línea los componentes no
conformes. Una proporción de componentes no conforme tiene la oportunidad de ser
re trabajados en el mismo proceso que lo rechazó, pero la otra proporción es enviada
directamente al desperdicio.

Identificando como variables de entrada: los tiempos entre llegadas de las órdenes,
los tiempos de manufactura, y las estadísticas de las inspecciones.

Identificar el proceso del sistema.

Al entrevistar al encargado de la producción muestra el proceso que siguen las órdenes


de los clientes, las cuales son recibidas, manufacturadas, inspeccionadas y enviadas a
los clientes.

133
Recibe Proceso 1
orden
V

F
Inspección ok Retrabajo

V
F

Proceso 2

V
F
Scrap
F
Inspección ok Retrabajo

Proceso 3

V
F
F
Inspección ok Retrabajo

Envia orden

Figura 5.10.- Proceso del sistema.

134
5.1.2.2.- FORMULAR EL MODELO.
Una vez definido los resultados que se esperan obtener del estudio, el siguiente paso es definir y construir el modelo con el cual se
obtendrán los resultados deseados. En la formulación del modelo es necesario definir todas las variables que forman parte de él,
sus relaciones lógicas y los diagramas de flujo que describan en forma completa al modelo.

Tiempo entre
llegadas de las
Producción
órdenes

Proceso 1 Inspección
Tiempo de
manufactura
Productos
defectuosos
s
Tiempo de c
Proceso 2 Inspección
inspección r
a
p Desperdicios

Parámetros de
inspección
Proceso 3 Inspección

Producto
terminado

Proceso de simulación

Figura 5.11.- Formulación del modelo.

5.1.2.3.-RECOPILAR LOS DATOS.


La facilidad o dificultad para obtener los datos, puede influir el desarrollo y la formulación del modelo. Es importante definir con
claridad y exactitud los datos que el modelo requiere para la producción de los resultados deseados. Usualmente, los datos
requeridos se pueden obtener de registros históricos, de opiniones de expertos, o de la experimentación.

Un componente es manufacturado realizando una secuencia de tres procesos. Al


terminar cada proceso se realiza una inspección rápida que tarda dos minutos. Los
resultados de estas inspecciones permiten detectar aquellos componentes que no
cumplen con la calidad deseada, y es necesario repetir el proceso.

Proceso Componentes a retrabajar


Uno 20%
Dos 15%
Tres 5%

135
El 60% de los componentes enviados a retrabajar no es posible retrabajarlos dado sus
características, por lo tanto son reenviados directamente al desperdicio (scrap) y
únicamente el 40% restante es posible aplicarle el re-trabajo.

Las órdenes tienen un tiempo entre llegadas de 30 minutos y tiene un


comportamiento exponencial.

EL tiempo del primer proceso tiene la siguiente distribución de frecuencias:

Frecuencia 0.05 0.13 0.16 0.22 0.29 0.15


Tiempo 10 14 21 32 38 45
Proceso

El tiempo del segundo proceso tarda 15 ± 6 minutos.

El tiempo del tercer proceso sigue una distribución normal con media de 24 minutos y
una desviación estándar de 4 minutos.

136
5.1.2.4.- IMPLEMENTAR EL MODELO EN LA COMPUTADORA.
Con el modelo definido, el siguiente paso es decidir el lenguaje de programación a utilizar ya sea uno de propósito general o un
paquete de propósito específico, para procesarlo en la computadora y obtener los resultados deseados.

Se utiliza el lenguaje GPSS para construir el modelo de simulación.

GENERATE Simula manufactura e inspección


(EXPONENTIAL(1,0,30))

SEIZE PROCESO1 SEIZE PROCESO2 SEIZE PROCESO3

ADVANCE ADVANCE 15,6 ADVANCE


FN$TIEMPO1 (NORMAL(1,24,4))

RELEASE PROCESO1 RELEASE PROCESO2 RELEASE PROCESO3

ADVANCE 2 ADVANCE 2 ADVANCE 2

85% 95%
80%
% %
conforme? conforme? conforme? TERMINATE 1

0.2,,RET1 0.2,,RET1 0.2,,RET1

20% 15% 5%
40% % 40%
% 40%

Scrap? Scrap? Scrap?

0.2,,RET1 0.2,,RET1 0.2,,RET1


60% 60% 60%

TERMINATE TERMINATE TERMINATE

Figura 5.12.- Diagrama de bloques.

137
Código GPSS.

TIEMPO1 FUNCTION RN1,D7

0,0/.05,10/.18,14/.34,21/.56,32/.85,38/1.0,45

GENERATE (EXPONENTIAL(1,0,30)) ;TIEMPO ENTRE LLEGADAS EXPONENCIAL 30 MINUTOS

ETAPA1 SEIZE PROCESO1 ;CAPTURA LA MAQUINA

ADVANCE FN$TIEMPO1 ;REALIZA EL PROCESO NO. 1

RELEASE PROCESO1 ;LIBERA LA MAQUINA

ADVANCE 2 ;INPECCION RAPIDA (2MIN)

TRANSFER 0.20,ETAPA2,RETRB1 ;EL 20% VA A RETRABAJO (RETRB1), EL RESTO PASA A LA ETAPA2

ETAPA2 SEIZE PROCESO2 ;CAPTURA LA MAQUINA

ADVANCE 15,6 ;REALIZA EL PROCESO NO. 2

RELEASE PROCESO2 ;LIBERA LA MAQUINA

ADVANCE 2 ;INSPECCION RAPIDA (2MIN)

TRANSFER 0.15,ETAPA3,RETRB2 ;EL 15% VA A RETRABAJO (RETRB2), EL RESTO PASA A LA ETAPA3

ETAPA3 SEIZE PROCESO3 ;CAPTURA LA MAQUINA

ADVANCE (NORMAL(1,24,4)) ;REALIZA EL PROCESO NO. 2

RELEASE PROCESO3 ;LIBERA LA MAQUINA

ADVANCE 2 ;INSPECCION RAPIDA (2MIN)

TRANSFER 0.05,FINAL,RETRB3 ;EL 5% VA A RETRABAJO (RETRB3), EL RESTO FINALIZA

RETRB1 TRANSFER 0.40,,ETAPA1 ;EL 40% ES ENVIADO A LA ETAPA1

TERMINATE ;TERMINA COMO SCRAP

RETRB2 TRANSFER 0.40,,ETAPA2 ;EL 40% ES ENVIADO A LA ETAPA2

TERMINATE ;TERMINA COMO SCRAP

RETRB3 TRANSFER 0.50,,ETAPA3 ;EL 40% ES ENVIADO A LA ETAPA3

TERMINATE ;TERMINA COMO SCRAP

FINAL TERMINATE 1 ;TERMINA COMO PRODUCTO CONFORME

START 100 ;SIMULA 100 PRODUCTOS CONFORMES (TERMINADOS)

Tabla 5.3.- Código GPSS para el diagrama de bloques de la figura 5.12.

138
Reporte de resultados

Figura 5.13.- Reporte de resultados .

139
Interpretación de los resultados para verificación.

La simulación de la producción de un lote de 100 productos terminados, tardó 4763.5 minutos


(79.39 horas).

Descripción Cantidad
Producto terminado 100
Scrap 38
En espera para realizar el proceso 1 26
Realizando el proceso 1 1
En espera para realizar el retrabajo en el proceso 1 2
Realizando el proceso 2 1
Total generados 168

Scrap generado

Descripción Cantidad
Scrap del proceso 1 23
Scrap del proceso 2 15
Scrap del proceso 3 0
Total generado 38

Estadística de los procesos realizados.

Descripción Proceso 1 Proceso 2 Proceso 3


% utilización 96.7% 36.9% 52.1%
Tiempo prom (min) 30.904 14.423 24.349
Componentes 149 122 102

5.1.2.5.- VALIDAR EL MODELO.


En esta etapa es posible detallar deficiencias en la formulación del modelo o en los datos alimentados al modelo, siendo las
formas más comunes de validar el modelo las siguientes:

1. La opinión de expertos sobre los resultados de la simulación.

2. La exactitud con que se predicen datos históricos.

3. La exactitud en la predicción del futuro.

4. La comprobación de falla del modelo de simulación al utilizar datos que hacen fallar al sistema real.

5. La aceptación y confianza en el modelo de la persona que hará uso de los resultados que arroje el experimento de
simulación.

El gerente al revisar el modelo computacional se percata que los parámetros de


inspección seleccionados, son una medida inicial para cuantificar los productos
conformes y no conformes, y sugiere realizar experimentaciones con diferentes
parámetros para presentar escenarios que le permiten prepararse para una
eventualidad.

140
Una vez incluidas estos ajustes en el modelo, se procederá a experimentar con el
mismo, agregando el grado de complejidad del sistema incorporando un sistema de
inspección que le permita detectar variables significativas que repercuten en la calidad
de los productos. Esto nos obliga a realizar otra iteración regresando de nuevo a la
definición del sistema, para incluir las necesidades que surgen en esta revisión. Es
clásico que un modelo no se realice a la primera, debido a que es un proceso iterativo
que irá afinando poco a poco el modelo, en la medida que vayan surgiendo variables
significativas.

5.1.2.6.- EXPERIMENTAR CON EL MODELO.


La experimentación con el modelo se realiza después de que éste ha sido validado. La experimentación consiste en generar los
datos deseados y en realizar análisis de sensibilidad de los índices requeridos.

La experimentación es un proceso en el cual, se realizan corridas de simulación que


reporta los resultados deseados. Una vez obtenidos se realiza un análisis de
sensibilidad para ver la relación entre las variables, y su impacto dentro del mismo.

5.1.2.7.- INTERPRETAR LOS RESULTADOS.


En esta etapa se interpretan los resultados que arroja la simulación, y en base a estos se toma una decisión. Obviamente estos
resultados obtenidos de la simulación ayudan a soportar decisiones del tipo semi-estructurado, es decir, la computadora en sí no
toma la decisión, sino que la información que aporta ayuda a tomar mejores decisiones, y sistemáticamente obtener mejores
resultados.

El objetivo de la simulación es contar con información para la buena toma de


decisiones. El reporte de resultados que arroja el modelo debe ser interpretado y
puesto en términos que el tomador de decisiones pueda comprender, y en base a ellos
fundamentar sus decisiones. Las mejoras a cualquier sistema parten de un proceso
iterativo en que se incluyen nuevas variables con el fin de obtener información
desconocida que logre comprender el comportamiento del sistema y sus
repercusiones al momento de incluir o actualizar algún proceso.

5.1.2.8.- DOCUMENTAR.
Son requeridos dos tipos de documentación para hacer un mejor uso del modelo de simulación. La primera es la documentación
técnica y la segunda documentación es el manual del usuario para facilitar la interacción y el uso del modelo desarrollado.

La documentación es vital para asegurar que se pueda llevar a cabo el mantenimiento


y la operación del sistema construido. La documentación del usuario es aquella que le
permite al usuario conocer el simulador, y poder hacer uso de él. Por otro lado la
documentación técnica está relacionada con todos los aspectos técnicos desde su
concepción hasta su implementación, que permiten asegurar un mantenimiento para
que el sistema computacional para incluir y modificaciones que surgen a través del
tiempo.

141
5.1.3.- SIMULACIÓN DE UN SUPERMERCADO.

Un supermercado con el fin de mejorar su servicio a sus clientes, se ha propuesto


mejorar en todos sus ámbitos. En el último semestre no han cumplido con sus metas
propuestas, y desean a través de un estudio de simulación conocer el comportamiento
de su sistema, para establecer políticas que brinden un servicio de calidad a sus
clientes.

5.1.3.1.- DEFINIR EL SISTEMA.


Para definir exactamente el sistema que se requiere simular, se requiere de llevar a cabo un análisis preliminar con el fin de
determinar la interacción del sistema con otros sistemas, las restricciones del sistema, las variables que interactúan dentro del
sistema y sus interrelaciones, las medidas de efectividad que se van a utilizar para definir y estudiar el sistema y los resultados que
se esperan obtener del estudio.

La primera etapa consiste en definir el sistema que se desea simular, para realizarlo es
necesario realizar un análisis preliminar. Este análisis exploratorio tradicionalmente se
lleva a cabo realizando un recorrido por toda la empresa. Este recorrido nos muestra
todos los procesos que se realizan, y las problemáticas que se enfrentan diariamente
para realizar sus actividades operativas. La estructura organizacional es un buen inicio
para identificar al personal clave que cuenta con información valiosa para incluir en el
modelo de simulación.

Organigrama de Supermercado

Gerente

Ventas Operaciones Administración

Figura 5.14.- Organigrama de supermercado.

Las entrevistas a este personal, es pieza fundamental para definir el sistema y sus
interacciones con otros sistemas, y los resultados que se esperan obtener del estudio
de simulación.

Para la definición del sistema, se puede seguir con una técnica enfocada a identificar lo
siguiente:

142
Identificar las salidas del sistema.

AL realizar un análisis preliminar en el supermercado primero nos enfocaremos a


descubrir los resultados que se esperan obtener del estudio , es decir determinar las
salidas del sistema. Entrevistando a los gerentes de la planta cada uno expone la
problemática desde su perspectiva, entre las cuales se destacan los problemas
siguientes:

• Utilización de servicios: estacionamiento, carritos, cestas, cajas.


• Tiempo promedio de compras.
• Flujo de clientes en el supermercado.

Identificar las entradas del sistema.

Las entradas del sistema, están en función de las salidas identificadas del sistema. Es
decir los datos requeridos que serán procesados para proporcionar las salidas del
sistema. Las entrevistas y los recorridos muestran el proceso que siguen los clientes
desde que llegan, compran y se retiran. Identificando como variables de entrada: los
tiempos entre llegadas de las clientes, los tiempos para entrar y salir del
supermercado, los tiempos de selección de artículos, la cantidad de artículos
seleccionados, los tiempos requeridos para el pago de los artículos, el tamaño del
estacionamiento, la cantidad de carritos y cestas, y la cantidad de cajas disponibles
para realizar el pago respectivo.

143
Identificar el proceso del sistema.

Al entrevistar al gerente de operaciones muestra el proceso normal del supermercado.

Llega cliente

No
Hay donde Se retira el
estacionarse cliente

Si

Se estaciona Figura 5.15.- Proceso del sistema.

Camina al super

No

Artículos>10 Selecciona Selecciona Paga en caja Deja cesta


cesta artículos rápida

Si

Camina al auto
Selecciona carrito Selecciona artículos

Paga en caja normal

Deja carrito Se retira el


Camina al auto
cliente

El supermercado cuenta con un estacionamiento. Si llega un cliente y no encuentra


estacionamiento se retira del supermercado sin comprar. Los clientes que logran
estacionarse caminan desde el estacionamiento hasta la tienda. Dependiendo de la
cantidad de artículos los clientes, utilizan una cesta o un carrito. El tiempo de la
compra depende de la cantidad de artículos comprados. Los clientes seleccionan los
artículos y se forman en una de las líneas de espera para pagar en la caja elegida
(usualmente la que tiene menor fila). Los clientes que compran menos de 10 artículos
pueden seleccionar una caja rápida. El tiempo de pago está en función de los artículos
y de la forma de pago. El cliente después de pagar camina hacia su auto estacionado,

144
carga sus artículos al auto y abandona el estacionamiento. Se cuenta con la política de
no permitir que salgan las cestas del supermercado.

5.1.3.2.- FORMULAR EL MODELO.


Una vez definido los resultados que se esperan obtener del estudio, el siguiente paso es definir y construir el modelo con el cual se
obtendrán los resultados deseados. En la formulación del modelo es necesario definir todas las variables que forman parte de él,
sus relaciones lógicas y los diagramas de flujo que describan en forma completa al modelo.

Tiempo entre
llegadas de los
clientes

Capacidad en
estacionamiento Se estaciona
Utilización de
servicios
Entra al super
Tiempo de entrar
y salir del super
Sel carrito o
cesta Tiempo prom de
compra

Capacidad de Sel artículos


cestas y carritos

Paga en caja Flujo de clientes

Sel de art y tiempo


transcurrido
Sale del super

Capacidad de
cajas y tiempo

Proceso de simulación

Figura 5.16.- Formulación del modelo.

5.1.3.3.- RECOPILAR LOS DATOS.


La facilidad o dificultad para obtener los datos, puede influir el desarrollo y la formulación del modelo. Es importante definir con
claridad y exactitud los datos que el modelo requiere para la producción de los resultados deseados. Usualmente, los datos
requeridos se pueden obtener de registros históricos, de opiniones de expertos, o de la experimentación.

El supermercado cuenta con estadísticas resultado de estudios realizados


previamente, los cuales se muestran a continuación:

Tiempo entre llegadas de los clientes. El tiempo entre llegadas de los clientes tiene un
comportamiento exponencialmente distribuido. La primera media hora (0-30 min)
tiene una tasa de 600 clientes x hora, la siguiente hora (30-90 min) arriban 900 clientes

145
, la siguiente hora (90-150) arriban 450 y después (150-adelante) se mantiene una tasa
de 300 clientes x hora.

Definiendo la variable aleatoria utilizando los datos mencionados anteriormente, y


calculando con unidades de tiempo en décimas de segundo (36000 decimas de
segundo= 1 hora).
Tiempo Cálculo Variable aleatoria
0 -30 minutos 36000 /600=60 Exponencial(0,60)
30-90 minutos 36000/900=40 Exponencial(0,40)
90-150 minutos 36000/450=80 Exponencial(0,80)
150 minutos-en adelante 36000/300=120 Exponencial(0,120)

Estacionamiento. El estacionamiento tiene una capacidad de 650 lugares para


estacionarse. Aquellos clientes que no consiguen estacionarse, se retiran sin realizar
compra alguna.

Tiempos para entrar y salir del supermercado. El cliente una vez que se estaciona tarda
un promedio de 60 segundos para entrar al supermercado, y cuando sale del
supermercado tarda un tiempo de 60 segundos para llegar al auto. Aquellos clientes
que salen con carrito, lo dejan abandonado el carrito en el estacionamiento.

Cantidad de artículos a comprar. El cliente que entra al supermercado usualmente


compra entre 5 y 100 artículos distribuidos uniformemente.

Selección del carrito o cesta. El cliente al entrar al supermercado dependiendo de la


cantidad a comprar selecciona una cesta o un carrito. Si compran más de 10 artículos
seleccionan un carrito, de lo contrario seleccionan una cesta. Se cuenta con una
capacidad de 650 carritos y 70 cestas.

Tiempo de selección de los artículos a comprar. El cliente tarda aproximadamente 10


segundos en la selección de un artículo.

Tiempo para el pago de los artículos (cajas). El cliente una vez que finaliza la selección
de los artículos a comprar se forma en la fila que contiene el menor número de
personas para realiza el pago en las cajas destinadas a ello. Se cuenta con una caja
rápida para aquellos que traen 10 o menos artículos, pero también existen 17 cajas
normales. El tiempo para realizar el pago está en función de la cantidad de artículos y
la forma de pago correspondiente. Se tarda dos segundos por cada artículo y
dependiendo de la forma de pago se tarda 25 segundos (efectivo), 30 (cheque), o 35
segundos para pago con tarjeta de crédito.

146
5.1.3.4.- IMPLEMENTAR EL MODELO EN LA COMPUTADORA.
Con el modelo definido, el siguiente paso es decidir el lenguaje de programación a utilizar ya sea uno de propósito general o un
paquete de propósito específico, para procesarlo en la computadora y obtener los resultados deseados.

Se utiliza el lenguaje GPSS para construir el modelo de simulación.

GENERATE (EXPONENTIAL(1,0,60)),,,300

GENERATE
(EXPONENTIAL(1,0,40)),,18000,900 TRANSFER
BOTH,,BYE TERMINATE

GENERATE
(EXPONENTIAL(1,0,80)),,54000,450

GENERATE
(EXPONENTIAL(1,0,120)),,90000

V
ENTER PARK
ARTS <= 10
QUEUE QCESTA
ADVANCE 600

F ENTER CESTA
SAVEVALUE CLTES+,1
QUEUE QCARRITO
DEPART QCESTA
ASSIGN ARTS,V$QTY
ENTER CARRITO
ASSIGN CARGA,
ASSIGN FPAGO,V$FORMA CESTA
DEPART QCARRITO

ASSIGN
CARGA,CARRITO A

Figura 5.17.- Diagrama de bloques 1/2.

147
A B

ASSIGN ARTS,V$QTY ASSIGN ARTS,V$QTY

ADVANCE V$TSELE ADVANCE V$TSELE

QUEUE QRAPIDA SELECT MIN NORMAL,CINICIAL,CFINAL,,Q

SEIZE CRAPIDA QUEUE P$CNORMAL

DEPART QRAPIDA SEIZE P$CNORMAL

ASSIGN FPAGO,V$FORMA DEPART P$CNORMAL

ASSIGN FPAGO,V$FORMA
ADVANCE V$TPAGO

ADVANCE V$TPAGO
RELEASE CRAPIDA
GENERATE 600
LEAVE P$CARGA RELEASE P$CNORMAL

TABULATE HCLTES
TABULATE HARTS TABULATE HARTS

TABULATE HTIME TABULATE HTIME TERMINATE 1

SAVEVALUE CLTES-,1 SAVEVALUE CLTES-,1

ADVANCE 600 ADVANCE 600

LEAVE PARK LEAVE P$CARGA Figura 5.18.- Diagrama de bloques 2/2.

TERMINATE LEAVE PARK

TERMINATE

148
Código GPSS.

PARK STORAGE 650 ;Estacionamiento con capacidad de 650 lugares

CESTA STORAGE 70 ;Capacidad de cestas=70

CARRITO STORAGE 650 ;Capacidad de carritos=650

QTY VARIABLE (RN1@96+5) ;Genera cantidad de artículos a comprar por el cliente

TSELE VARIABLE P$ARTS #100 ;Genera tiempo de selección = ARTS * 100

FORMA VARIABLE (RN1@3+1) # 50+200 ;Genera forma de pago

TPAGO VARIABLE (P$ARTS)#20+P$FPAGO ;Genera tiempo de pago

HCLTES TABLE X$CLTES,100,50,12 ;Histograma de clientes

HARTS TABLE P$ARTS,10,10,10 ;Histograma de artículos comprados

HTIME TABLE M1,10000,10000,7 ;Histograma de tiempo transcurrido x clte

INITIAL X$CLTES,0

CINICIAL EQU 1

CFINAL EQU 17

GENERATE (EXPONENTIAL(1,0,60)),,,300

TRANSFER,INICIO

GENERATE (EXPONENTIAL(1,0,40)),,18000,900

TRANSFER,INICIO

GENERATE (EXPONENTIAL(1,0,80)),,54000,450

TRANSFER,INICIO

GENERATE (EXPONENTIAL(1,0,120)),,90000

TRANSFER,INICIO

INICIO TRANSFER BOTH,,BYEF

ENTER PARK

SAVEVALUE CLTES+,1 ;CLTES=CLTES + 1

ASSIGN ARTS,V$QTY ;ARTS=QTY()

TEST LE P$ARTS,10,MASD10

QUEUE QCESTA

ENTER CESTA ;Utiliza cesta

DEPART QCESTA

ASSIGN CARGA,CESTA ;CARGA=CESTA

ADVANCE V$TSELE ;Selecciona los artículos

149
QUEUE QRAPIDA

SEIZE CRAPIDA

DEPART QRAPIDA

ASSIGN FPAGO,V$FORMA ;FPAGO=FORMA()

ADVANCE V$TPAGO

RELEASE CRAPIDA

LEAVE P$CARGA

TABULATE HARTS

TABULATE HTIME

SAVEVALUE CLTES-,1

ADVANCE 600

LEAVE PARK

TRANSFER,BYER

MASD10 QUEUE QCARRITO

ENTER CARRITO ;Utiliza carrito

DEPART QCARRITO

ASSIGN CARGA,CARRITO ;CARGA=CARRITO

ASSIGN ARTS,V$QTY ;ARTS=QTY()

ADVANCE V$TSELE ;Selecciona los articulos

PNORMAL SELECT MIN CNORMAL,CINICIAL,CFINAL,,Q

QUEUE P$CNORMAL

SEIZE P$CNORMAL

DEPART P$CNORMAL

ASSIGN FPAGO,V$FORMA ;FPAGO=FORMA()

ADVANCE V$TPAGO

RELEASE P$CNORMAL

TABULATE HARTS

TABULATE HTIME

SAVEVALUE CLTES-,1

ADVANCE 600

LEAVE P$CARGA

LEAVE PARK

BYEN TERMINATE

150
BYER TERMINATE

BYEF TERMINATE

GENERATE 600

TABULATE HCLTES

TERMINATE 1

START 180

Tabla 5.4.- Código GPSS para el diagrama de bloques de la figura 5.17 y 5.18

Reporte de resultados.

151
152
Figura 5.19.- Reporte de resultados.

153
Interpretación de los resultados para verificación.

La simulación del funcionamiento del supermercado se realizó para las primeras tres horas de
operación. (108000 décimas de segundo). Llegaron 1812 clientes (300+900+450+162) de los
cuales todos encontraron lugar para estacionar su vehículo. En esas tres horas, compraron
1400 clientes (1280 clientes ≥10 artículos, y 120 clientes < 10 artículos). En promedio se tuvo
356.8 clientes en el supermercado, seleccionando un promedio de 46.72 artículos y tardando
un promedio de compra de 35 minutos (21158.8 décimas de segundo).

Al momento de finalizar la simulación se encontraban 42 clientes (41+1) seleccionando


artículos y 346 clientes se encontraban haciendo filas en las cajas normales, y 18 clientes
pagando (17 clientes ≥10 artículos, y 1 clientes < 10 artículos). 7 clientes saliendo de la tienda
(6 clientes ≥10 artículos, y 1 cliente < 10 artículos).

El comportamiento de las cajas normales (de la 1 a la 17) muestran un promedio de 15


personas en cada fila, esperando para pagar, con un pico máximo de 25 personas, y sólo el 1%
han logrado pagar sin hacer fila. La caja que tiene el mayor promedio de espera es de 30
minutos (18321 décimas de segundo), y las demás tienen un comportamiento parecido.

El comportamiento en la caja rápida muestra un promedio de 0.5 personas esperando para


pagar, con un pico máximo de 5 personas, y más del 39% han logrado pagar sin hacer fila. La
caja tiene un promedio de espera de menos de un minuto (475.55 décimas de segundo).

Para utilizar las cestas y los carritos no tuvieron que hacer fila los clientes, el máximo número
de cestas utilizadas fue de 8 de las 70 disponibles. El máximo número de carritos utilizados fue
de 516 de los 650 disponibles. El porcentaje de utilización de las cestas fue de 2.7% y el
porcentaje de utilización de los carritos fue de 55.5%.

El estacionamiento que tiene capacidad para 650 vehículos, el máximo número de lugares
utilizados fue de 522, teniendo un porcentaje de utilización de 55.9%.

Es notorio que la problemática se centra en el servicio de las cajas normales. Para analizar su
comportamiento, se realizaron corridas modificando la cantidad de cajas normales disponibles,
presentando los resultados siguientes:

# Cajas Max clientes Clientes En espera al final Tiempo aproximado en la caja


disponibles en la fila Prom en fila de la simulación
17 25 15 346 30 min (18321 décimas de segundo)
18 16 13.1 271 26.67 min (16004 décimas de segundo)
19 18 10 150 23.14 min (13885 décimas de segundo)
20 17 9.2 108 20.75 min (12452 décimas de segundo)
21 14 7.1 49 15.99 min (9599 décimas de segundo)
22 11 5.2 11 13.08 min (7850 décimas de segundo)
23 9 3.9 11 9.96 min (5981 décimas de segundo)
24 8 3 10 8.49 min (5094 décimas de segundo)
25 7 2.4 5 7.13 min (4282 décimas de segundo)

154
5.1.3.5.- VALIDAR EL MODELO.
En esta etapa es posible detallar deficiencias en la formulación del modelo o en los datos alimentados al modelo, siendo las
formas más comunes de validar el modelo las siguientes:

1. La opinión de expertos sobre los resultados de la simulación.

2. La exactitud con que se predicen datos históricos.

3. La exactitud en la predicción del futuro.

4. La comprobación de falla del modelo de simulación al utilizar datos que hacen fallar al sistema real.

5. La aceptación y confianza en el modelo de la persona que hará uso de los resultados que arroje el experimento de
simulación.

El gerente al validar el modelo computacional basado en su experiencia hace notar que


en la realidad se presentan problemas con la disponibilidad de los carritos, y el modelo
carece de una política de retorno para aquellos carritos que dejan en el
estacionamiento. También hace hincapié en la política que siguen los clientes al llegar
a la tienda, en donde muchos de ellos abandonan al ver grandes filas en las cajas.
Propone actualizar el modelo incorporando estas políticas para que el modelo se
acerque más a la realidad que se vive en el supermercado. Mejorar el servicio de cajas,
es una tarea que presenta conflictos debido a los costos asumidos, propone realizar un
estudio para minimizar estos costos y logrando la satisfacción del cliente.

Una vez incluidas estos ajustes en el modelo, se procederá a experimentar con el


mismo, agregando el grado de complejidad del sistema incorporando una política de
retorno de carritos, una política de abandono por parte del cliente cuando existen
grandes filas en las cajas, y sobre todo buscar minimizar los costos en el área de cajas.
El estudio de simulación es un proceso iterativo que irá afinando poco a poco el
modelo, en la medida que vayan surgiendo variables significativas.

5.1.3.6.- EXPERIMENTAR CON EL MODELO.


La experimentación con el modelo se realiza después de que éste ha sido validado. La experimentación consiste en generar los
datos deseados y en realizar análisis de sensibilidad de los índices requeridos.

La experimentación es un proceso en el cual, se realizan corridas de simulación que


reporta los resultados deseados. Una vez obtenidos se realiza un análisis de
sensibilidad para ver la relación entre las variables, y su impacto dentro del mismo.

5.1.3.7.- INTERPRETAR LOS RESULTADOS.


En esta etapa se interpretan los resultados que arroja la simulación, y en base a estos se toma una decisión. Obviamente estos
resultados obtenidos de la simulación ayudan a soportar decisiones del tipo semi-estructurado, es decir, la computadora en sí no
toma la decisión, sino que la información que aporta ayuda a tomar mejores decisiones, y sistemáticamente obtener mejores
resultados.

El objetivo de la simulación es contar con información para la buena toma de


decisiones. El reporte de resultados que arroja el modelo debe ser interpretado y

155
puesto en términos que el tomador de decisiones pueda comprender, y en base a ellos
fundamentar sus decisiones. Las mejoras a cualquier sistema parten de un proceso
iterativo en que se incluyen nuevas variables con el fin de obtener información
desconocida que logre comprender el comportamiento del sistema y sus
repercusiones al momento de incluir o actualizar algún proceso.

5.1.3.8.- DOCUMENTAR.
Son requeridos dos tipos de documentación para hacer un mejor uso del modelo de simulación. La primera es la documentación
técnica y la segunda documentación es el manual del usuario para facilitar la interacción y el uso del modelo desarrollado.

La documentación es vital para asegurar que se pueda llevar a cabo el mantenimiento


y la operación del sistema construido. La documentación del usuario es aquella que le
permite al usuario conocer el simulador, y poder hacer uso de él. Por otro lado la
documentación técnica está relacionada con todos los aspectos técnicos desde su
concepción hasta su implementación, que permiten asegurar un mantenimiento para
que el sistema computacional para incluir y modificaciones que surgen a través del
tiempo.

156
A
Apéndice

Distribución Normal (Z)

Z .00 .01 .02 .03 .04 .05 .06 .07 .08 .09
0.0 .0000 .0040 .0080 .0120 .0160 .0199 .0239 .0279 .0319 .0359
0.1 .0398 .0438 .0478 .0517 .0557 .0596 .0636 .0675 .0714 .0753
0.2 .0793 .0832 .0871 .0910 .0948 .0987 .1026 .1064 .1103 .1141
0.3 .1179 .1217 .1255 .1293 .1331 .1368 .1406 .1443 .1480 .1517
0.4 .1554 .1591 .1628 .1664 .1700 .1736 .1772 .1808 .1844 .1879

0.5 .1915 .1950 .1985 .2019 .2054 .2088 .2123 .2157 .2190 .2224
0.6 .2257 .2291 .2324 .2357 .2389 .2422 .2454 .2486 .2517 .2549
0.7 .2580 .2611 .2642 .2673 .2703 .2734 .2764 .2794 .2833 .2852
0.8 .2881 .2910 .2939 .2967 .2995 .3023 .3051 .3078 .3106 .3133
0.9 .3159 .3186 .3212 .3238 .3264 .3289 .3315 .3340 .3365 .3389

1.0 .3413 .3438 .3461 .3485 .3508 .3531 .3554 .3577 .3599 .3621
1.1 .3643 .3665 .3686 .3708 .3729 .3749 .3770 .3790 .3810 .3830
1.2 .3849 .3869 .3888 .3907 .3925 .3944 .3962 .3980 .3997 .4015
1.3 .4032 .4049 .4066 .4082 .4099 .4115 .4131 .4147 .4162 .4177
1.4 .4192 .4207 .4222 .4236 .4251 .4265 .4279 .4292 .4306 .4319

1.5 .4332 .4345 .4357 .4370 .4382 .4394 .4406 .4418 .4429 .4441
1.6 .4452 .4463 .4474 .4484 .4495 .4505 .4515 .4525 .4535 .4545
1.7 .4554 .4564 .4573 .4582 .4591 .4599 .4608 .4616 .4625 .4633
1.8 .4641 .4649 .4656 .4664 .4671 .4678 .4686 .4693 .4699 .4706
1.9 .4713 .4719 .4726 .4732 .4738 .4744 .4750 .4756 .4751 .4767

2.0 .4772 .4778 .4783 .4788 .4793 .4798 .4803 .4808 .4812 .4817
2.1 .4821 .4826 .4830 .4834 .4838 .4842 .4846 .4850 .4854 .4857
2.2 .4861 .4864 .4868 .4871 .4875 .4878 .4881 .4884 .4887 .4890
2.3 .4893 .4896 .4898 .4901 .4904 .4906 .4909 .4911 .4913 .4916
2.4 .4918 .4920 .4922 .4925 .4927 .4929 .4931 .4932 .4934 .4936

2.5 .4938 .4940 .4941 .4943 .4945 .4946 .4948 .4949 .4951 .4952
2.6 .4953 .4955 .4956 .5957 .4959 .4960 .4961 .4962 .4963 .4964
2.7 .4965 .4966 .4967 .4968 .4969 .4970 .4971 .4972 .4973 .4974
2.8 .4974 .4975 .4976 .4977 .4977 .4978 .4979 .4979 .4980 .4981
2.9 .4981 .4982 .4982 .4983 .4984 .4984 .4985 .4985 .4986 .4986

3.0 .4987 .4987 .4987 .4988 .4988 .4989 .4989 .4989 .4989 .4990

157
Distribución chi-cuadrada (df )

γ\α 0.995 0.990 0.975 0.950 0.500 0.050 0.25 0.010 0.005
1 0.00 0.00 0.00 0.00 0.45 3.84 5.02 6.63 7.88
2 0.01 0.02 0.05 0.10 1.39 5.99 7.38 9.21 10.60
3 0.07 0.11 0.22 0.35 2.37 7.81 9.35 11.34 12.84
4 0.21 0.30 0.48 0.71 3.36 9.49 11.14 13.28 14.86
5 0.41 0.55 0.83 1.15 4.35 11.07 12.83 15.09 16.75

6 0.68 0.87 1.24 1.64 5.35 12.59 14.45 16.81 18.55


7 0.99 1.24 1.69 2.17 6.35 14.07 16.01 18.48 20.28
8 1.34 1.65 2.18 2.73 7.34 15.51 17.53 20.09 21.96
9 1.73 2.09 2.70 3.33 8.34 16.92 19.02 21.67 23.59
10 2.16 2.56 3.25 3.94 9.34 18.31 20.48 23.21 25.19

11 2.60 3.05 3.82 4.57 10.34 19.68 21.92 24.72 26.76


12 3.07 3.57 4.40 5.23 11.34 21.03 23.34 26.22 28.30
13 3.57 4.11 5.01 5.89 12.34 22.36 24.74 27.69 29.82
14 4.07 4.66 5.63 6.57 13.34 23.68 26.12 29.14 31.32
15 4.60 5.23 6.27 7.26 14.34 25.00 27.49 30.58 32.80

16 5.14 5.81 6.91 7.96 15.34 26.30 28.85 32.00 34.27


17 5.70 6.41 7.56 8.67 16.34 27.59 30.19 33.41 35.72
18 6.26 7.01 8.23 9.39 17.34 28.87 31.53 34.81 37.16
19 6.84 7.63 8.91 10.12 18.34 30.14 32.85 36.19 38.58
20 7.43 8.26 9.59 10.85 19.34 31.41 34.17 37.57 40.00

25 10.52 11.52 13.12 14.61 24.34 37.65 40.65 44.31 46.93


30 13.79 14.95 16.79 18.49 20.34 43.77 46.98 50.89 53.67
40 20.71 22.16 24.43 26.51 39.34 55.76 59.34 63.69 66.67
50 27.99 29.71 32.36 34.76 49.33 67.50 71.42 76.15 79.49
60 35.53 37.48 40.48 43.19 59.33 79.08 83.30 88.38 91.95

70 43.28 45.44 48.76 51.74 69.33 90.53 95.02 100.42 104.22


80 51.17 53.54 57.15 60.39 79.33 101.88 106.63 112.33 116.32
90 59.20 61.75 65.65 69.13 89.33 113.14 118.14 124.12 128.30
100 67.33 70.06 74.22 77.93 99.33 124.34 129.56 135.81 140.17

158
Tabla K-S (ÐÑ,Ò

n\α 10% 5% 1%
1 0.950 0.975 0.995
2 0.776 0.842 0.929
3 0.642 0.708 0.829
4 0.564 0.624 0.734
5 0.510 0.563 0.669

6 0.470 0.521 0.618


7 0.438 0.486 0.577
8 0.411 0.457 0.543
9 0.388 0.432 0.514
10 0.368 0.409 0.486

11 0.352 0.391 0.468


12 0.338 0.375 0.450
13 0.352 0.361 0.433
14 0.314 0.349 0.418
15 0.304 0.338 0.404

16 0.295 0.328 0.392


17 0.286 0.318 0.381
18 0.278 0.309 0.371
19 0.272 0.301 0.363
20 0.264 0.294 0.352

25 0.240 0.264 0.317


30 0.220 0.242 0.290
35 0.210 0.230 0.270
40 0.210 0.252

50 0.118 0.226
60 0.172 0.207
70 0.160 0.192
80 0.150 0.180
90 0.141
100 0.134

n > 100 1.22/√, 1.36/√, 1.22/√,

159
B
Apéndice

El lenguaje GPSS, consiste de un conjunto de instrucciones que se describen a detalle


en este apéndice. Las instrucciones están clasificadas como instrucciones de definición
de variables, instrucciones para la lógica del programa, y las instrucciones para el
control de la simulación. Por último se muestra una descripción de la estructura del
reporte de resultados de la simulación, para su fácil comprensión.

B.1.- INSTRUCCIONES PARA LA DEFINICIÓN DE VARIABLES.

Instrucción Descripción
EQU Asignación numérica de variables.
FUNCTION Definición de funciones.
FVARIABLE Definición de operaciones.
INITIAL Inicialización de variables.
MATRIX Definición de matrices.
STORAGE Definición de número de servidores.
TABLE Definición de histogramas.
VARIABLE Definición de operaciones.

Instrucción EQU. Evalua una expresión y asigna el resultado a una variable.

Sintaxis.

NOMBRE EQU A

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Nombre de la variable. Se declara el nombre de la variable que almacena el valor de la expresión declarada
en el operando A. Es una etiqueta requerida.
A Es una expresión. Es un operando requerido, que debe ser una expresión.

160
Instrucción FUNCTION. Define las reglas de búsqueda de datos en una tabla. Existen varios tipos de funciones. La tipo C es un
caso especial que busca el valor en la tabla, seguida de una interpolación lineal. El uso de esta instrucción para definir
distribuciones de probabilidad ha sido reemplazada por una librería predefinida distribuciones de probabilidad.

Sintaxis.

NOMBRE FUNCTION A,B

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Es un nombre de la entidad a representar. Es una etiqueta que declara el nombre de la función. Es una
etiqueta requerida.
A Es un argumento de la función. Este operando requerido y debe ser un nombre, un número entero, string,
expresión, o SN.
B Función. Es un operando requerido el cual es declarada mediante el tipo de la función (una letra) , seguida
inmediatamente de pares de datos.

Tipos de funciones.

Letra Descripción
C Describe una función continua.
D Describe una función discreta.
E Describe una función discreta basada en atributos.
L Describe una función basada en una lista.
M Describe una función basada en una lista de atributos.

Instrucción FVARIABLE. Utilizada para definir variables que almacenan números reales (punto flotante), resultado de una
operación aritmética.

Sintaxis.

NOMBRE FVARIABLE A

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Es un nombre de la entidad a representar. Es requerido.
A Es una expresión aritmética. Es requerida.

Instrucción INITIAL. Inicializa entidades especiales (Matrix, Logicswith, Savevalue, un elemento de Matrix).

Sintaxis.

INITIAL A,B

Etiqueta/Operandos:

Etiqueta/Operando Descripción
A Es un Logicswitch, Savevalue o un elemento de Matrix expresado como SNA, o el nombre de la entidad
Matrix. El operando A debe tener la forma de una clase LS, X, o MZ. o el nombre de una matriz. Es
requerido, y el operando debe ser un nombre, un LSPosInteger, LS$Name, XPosInteger, X$Name,
MXPosInteger(m,n) or MX$Name(m,n). Coordinates (m,n) debe ser un nombre o un numero entero
positivo..
B Es el valor a ser asignado o puede ser omitido. Es un operando opcional con valor predeterminado de 1. El
operando debe ser nulo, número, string, nombre o no especificado.

161
Instrucción MATRIX. Define una entidad de tipo Matrix.

Sintaxis.

NOMBRE MATRIX A,B,C,D,E,F,G

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Nombre de la entidad. Es requerido. El operando debe ser un nombre.
A Operando no utilizado. Asegura la compatibilidad con versiones anteriores.
B Número elementos en la primera dimensión de la matriz (renglones). Es un operando requerido, y debe ser
un número entero positivo.
C Número de elementos de la segunda dimensión de la matriz (columnas). Es un operando requerido, y debe
ser un número entero positivo.
D Número de elementos en la tercera dimensión de la matriz. Es un operando opcional, y debe ser un número
entero positivo.
E Número de elementos en la cuarta dimensión de la matriz. Es un operando opcional, y debe ser un número
entero positivo.
F Número de elementos en la quinta dimensión de la matriz. Es un operando opcional, y debe ser un número
entero positivo.
G Número de elementos en la sexta dimensión de la matriz. Es un operando opcional, y debe ser un número
entero positivo.

Instrucción STORAGE. Define la cantidad máxima de servidores.

Sintaxis.

NOMBRE STORAGE A

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Es el nombre de la entidad servidor. Es un operando requerido, y debe ser el nombre de la entidad de
servicio.
A Capacidad máxima de servidores. Es un operando requerido, y debe ser un número entero positivo.

Instrucción TABLE. Inicializa una tabla de distribución de frecuencias (histograma).

Sintaxis.

NOMBRE TABLE A,B,C,D

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Es el nombre de la entidad histograma. Es una etiqueta requerida, y debe ser el nombre. Este nombre está
limitado a 32 caracteres.
A Es el argumento de la tabla. Es un operando opcional. Es el dato a ser tabulado en el histograma. Este
operando debe ser un nombre, número, string, expresión, o SNA. Es ignorado por ANOVA (análisis de
varianza), pero debe ser especificado cuando se utiliza el bloque TABULATE.
B Límite superior del primer intervalo. Es el argumento máximo que causa que el primer intervalo sea
actualizado. Este operando es requerido, y debe ser un número o un string.
C Tamaño del intervalo. Es la diferencia entre el límite superior y el límite inferior del intervalo. Es un
operando requerido. Este operando debe ser un número o un string.
D Número de intervalos. Es un operando requerido, y debe ser un número entero positivo.

162
Instrucción VARIABLE. Utilizada para definir variables, resultado de una operación aritmética.

Sintaxis.

NOMBRE VARIABLE A

Etiqueta/Operandos:

Etiqueta/Operando Descripción
NOMBRE Es el nombre de la variable. Es una etiqueta requerida, y debe ser el nombre
A Es una expresión. Es un operando requerido. Debe ser una expresión.

B.2.- Instrucciones para la lógica del programa.

Instrucción Descripción
ADVANCE Simula un tiempo de retardo en la transacción.
ASSEMBLE Espera y destruye las transacciones relacionadas.
ASSIGN Asigna o actualiza un parámetro de la transacción.
BUFFER Coloca a la transacción activa en una cadena de eventos actuales.
DEPART Simula la salida de un almacén.
ENTER Simula la captura de un servidor o servidores.
GATE Altera el flujo de la transacción en base un estado de la entidad.
GATHER Una transacción espera a una transacción relacionada.
GENERATE Simulación de entrada de transacciones al sistema.
INDEX Actualiza un parámetro de la transacción activa.
LEAVE Simula la desocupación de un servidor o servidores.
LINK Coloca la transacción activa en un lugar dentro una cadena de usuario usando PEPS
(primera entrada, primeras salida) , o UEPS (última entrada, primera salida).
LOGIC Actualiza el estado de una entidad tipo Logicswitch.
LOOP Modifica un parámetro y controla el destino de una transacción activa, basado en el
resultado.
MATCH Simula la espera de una transacción la llegada de otra transacción.
MSAVEVALUE Actualiza un elemento de una matriz.
PREEMPT Desplaza una transacción a diferentes servidores.
PRIORITY Asigna una prioridad a la transacción activa.
QUEUE Simula la entrada de un almacén.
RELEASE Libera un facilitador (servidor unitario).
RETURN Libera el facilitador que es propiedad de una transacción.
SAVEVALUE Actualiza el valor de la entidad Savevalue.
SEIZE Captura un facilitador (servidor unitario).
SELECT Selecciona una entidad y coloca un número de entidad dentro del parámetro de la
transacción activa.
SPLIT Reproduce transacciones, con las mismas características de la transacción padre.
TABULATE Tabula datos en un histograma.
TERMINATE Simula la salida de transacciones del sistema.
TEST Compara valores y controla el destino de la transacción activa.
TRANSFER Transfiere la transacción activa a otra parte del programa.
UNLINK Retira la transacciones de una cadena del usuario.

163
Instrucción ADVANCE. Simula un tiempo de retardo en la transacción. instrucción GENERATE crea transacciones que entran al
proceso de simulación. Se puede considerar a este bloque como una puerta a través de la cual entran las transacciones al sistema.
No existe restricción de la cantidad de bloques GENERATE que pueda contener un modelo de simulación.

Sintaxis.

ADVANCE A,B

Operandos.

Operando Descripción
A Tiempo promedio (media) de retardo.. Es un operando requerido. Este operando debe ser un nombre,
string, expresión, o número.
B Desviación con respecto a la media. Es un operando opcional. Este operando debe ser nombre, string,
expresión, número, SNA o nulo. El valor predeterminado es igual a 0.

Instrucción ASSEMBLE. Simula la espera y la destrucción de transacciones relacionadas.

Sintaxis.

ASSEMBLE A

Operandos.

Operando Descripción
A Contador de transacciones. Es un operando requerido. Este operando debe ser un nombre, entero positivo,
expresión, o SNA.

Instrucción ASSIGN. Asigna o actualiza un parámetro de la transacción.

Sintaxis.

ASSIGN A,B,C

Operandos.

Operando Descripción
A Número de parámetro de la transacción activa. Es un operando requerido. Este operando debe ser nombre,
entero positivo, expresión, SNA, o nulo.
B Valor. Es un operando requerido. Este operando debe ser nombre, número, string, expresión o SNA.
C Número de función. Es un operando opcional. Este operando debe ser nulo, nombre, entero positive,
expresión o SNA.

Instrucción BUFFER. Coloca a la transacción activa en una cadena de eventos actuales.

Sintaxis.

BUFFER

Operandos.

Sin operandos.

164
Instrucción DEPART. Simula la salida de un almacén. Este bloque registra estadísticas que indican la salida del almacén (cola). Este
es el punto de finalización para la toma de estadísticas de las colas que se formaron. El bloque DEPART se utiliza como
complemento del bloque QUEUE (entrada al almacén).

Sintaxis.

DEPART A,B

Operandos.

Operando Descripción
A El nombre del cola (almacén). Es un operando requerido. Este operando debe ser un nombre, un entero
positivo, expresión o SNA.
B Número de unidades a salir de la cola (almacén). Es un operando opcional. De forma predeterminada tiene
asignado el valor de 1. Este operando debe ser nulo, nombre, entero positivo, string, expression, o SNA.

Instrucción ENTER. Simula la captura de un servidor o servidores. La transacción deberá esperar en este bloque hasta que un
servidor esté disponible para que la transacción sea atendida capturando la atención del servidor. La instrucción LEAVE se utiliza
complemento para liberar el servidor ocupado. Estos servidores deben ser definidos utilizando la instrucción STORAGE.

Sintaxis.

ENTER A,B

Operandos.

Operando Descripción
A Nombre del servidor. Es un operando requerido. Este operando debe ser un nombre, número entero
positivo, expresión, o un SNA.
B Número de servidores a ocupar. El operando es opcional, con un valor predeterminado de 1. Este operando
debe ser nulo, nombre, numero entero positivo, expresión o un SNA.

Instrucción GATE. Altera el flujo de la transacción en base un estado de la entidad.

Sintaxis.

GATE O A,B

Operandos.

Operando Descripción
O Es un operador condicional. Es la condición requerida de la entidad para ser probada como una prueba
exitosa. Es un operador requerido, y debe ser FNV, FV, I, LS, LR, M, NI, NM, NU, SE, SF, SNE, SNF, SNV, SV, o
U.
A El nombre o número de la entidad a ser probada. El tipo de entidad es implicada por el operador
condicional. Este operando debe ser nombre, número entero positivo, expresión, o SNA.
B Número de bloque destino cuando la prueba no es exitosa. El operando es opcional, y este operando debe
ser nulo, nombre, entero positivo, expresión o SNA.

Operadores condicionales.

Operador Descripción
FNV Servidor descrito en el operando A no se encuentra disponible. (Facility not available).
FV Servidor descrito en el operando A se encuentra disponible (Facility available).
I El servidor descrito en el operando A debe ser interrumpido. (Interrupt).
LS El logicswitch descrito en el operando A es puesto en estado set. (Logic set).
LR El logicswitch descrito en el operando A es puesto en estado reset. (Logic reset).
M El bloque match descrito en el operando A, tiene una transacción en espera condicional. (Match).
NI Servidor descrito en el operando A no debe ser interrumpido. (Not interrupt).
NM EL bloque match descrito en el operando A, no tiene una transacción en espera condicional. (Not match).
NU El servidor descrito en el operando A no debe ser utilizado para la prueba.
SE El almacenamiento descrito en el operando A debe estar vacio. (Storage empty).

165
SF El almacenamiento descrito en el operando A debe estar lleno. (Storage full).
SNE El almacenamiento descrito en el operando A no debe estar vacio. (Storage not empty).
SNF El almacenamiento descrito en el operando A no debe estar lleno. (Storage not full).
SNV El almacenamiento descrito en el operando A no está disponible (Storage not available).
SV El almacenamiento descrito en el operando A está disponible (Storage available).
U El servidor descrito en el operando A está en uso (Use).

Instrucción GATHER. Una transacción espera a una transacción relacionada. Se encarga de sincronizar las transacciones
pertenecientes al mismo conjunto de ensamble.

Sintaxis.

GATHER A

Operandos.

Operando Descripción
A Contador de transacciones.- Operando requerido que debe ser nombre, número entero positivo, expresión
o SNA.

Instrucción GENERATE. La instrucción GENERATE crea transacciones que entran al proceso de simulación. Se puede considerar a
este bloque como una puerta a través de la cual entran las transacciones al sistema. No existe restricción de la cantidad de
bloques GENERATE que pueda contener un modelo de simulación. La instrucción GENERATE se utiliza con su complemento
TERMINATE.

Sintaxis.

GENERATE A,B,C,D,E

Operandos.

Operando Descripción
A Tiempo promedio (media) entre llegadas. Es un operando opcional. Este operando debe ser un nombre,
string, expresión, número, SNA o nulo. El valor predeterminado es igual a 0.
B Desviación con respecto a la media. Es un operando opcional. Este operando debe ser nombre, string,
expresión, número, SNA o nulo. El valor predeterminado es igual a 0.
C Tiempo en que se generará la primera transacción. Es un operando opcional. Este operando debe ser
nombre, string, expresión, número, SNA o nulo. El valor predeterminado es igual al operando A.
D Límite de generación de transacciones. Es un operando opcional. Este operando debe ser nombre, string,
expresión, número entero positivo, SNA o nulo. El valor predeterminado es igual a infinito.
E Nivel de prioridad. Es un operando opcional. Este operando debe ser nombre, string, expresión, número
entero, SNA o nulo. El valor predeterminado es igual a 0.

Instrucción INDEX. Actualiza un parámetro de la transacción activa.

Sintaxis.

INDEX A,B

Operandos.

Operando Descripción
A Número del parámetro. Es un parámetro con un valor. Este operando es requerido, y debe ser nombre,
número entero positivo, expresión o SNA.
B Valor numérico. Es un número que será agregado al contenido del parámetro. Este operando debe ser
nombre, número, expresión o SNA.

166
Instrucción LEAVE. Simula la desocupación de un servidor o servidores.

Sintaxis.

LEAVE A,B

Operandos.

Operando Descripción
A Nombre del servidor. Es un operand requerido, y debe ser nombre, número entero positivo, expresión o
SNA.
B Número de servidores a desocupar. Es un operando opcional, con un valor predeterminado de 1. Este
operando debe ser nulo, nombre, número entero positivo, expresión o SNA.

Instrucción LINK. Coloca la transacción activa en un lugar dentro la cadena usando FIFO (primera entrada, primeras salida) , o LIFO
(última entrada, primera salida).

Sintaxis.

LINK A,B,C

Operandos.

Operando Descripción
A Número de la cadena de usuario. Es la entidad cadena la cual recibe la transacción entrante. Es un operando
requerido, y debe ser un nombre, número entero positivo, expresión, o SNA.
B Orden de la cadena. Es la política para agregar transacciones a la cadena. Este operando es requerido y
debe ser LIFO (Última entrada, primera salida), FIFO (Primera entrada, primera salida).
C Localización del próximo bloque. Es la instrucción bloque destino para que las transacciones que sean
encontradas con el indicador Link de la cadena dentro del estado apagado (reset). Este operando es
opcional, y debe ser nulo, nombre, número entero positivo, expresión o SNA.

Instrucción LOGIC. Actualiza el estado de una entidad tipo Logicswitch.

Sintaxis.

LOGIC O A

Operandos.

Operando Descripción
O Operador lógico. Es un operador requerido, y debe ser S (Set), R (Reset), o I (Inverted).
A Entidad logicswitch. Es un operando requerido que debe ser nombre, número entero positivo, expresión, o
SNA.

167
Instrucción LOOP. Modifica un parámetro y controla el destino de una transacción activa, basado en el resultado.

Sintaxis.

LOOP A,B

Operandos.

Operando Descripción
A Párametro que contiene el contador. Es un operando requerido, y debe ser nombre, número entero
positivo, expresión o SNA.
B Etiqueta del bloque a transferir la transacción. Decrementa en 1 al contador, si es diferente de cero irá al
bloque especificado en este operando; de lo contrario procede la transacción al siguiente bloque. Este
operando es opcional, y debe ser nulo, nombre, número entero positivo, expresión o SNA.

Instrucción MATCH. Simula la espera de una transacción la llegada de otra transacción. Un par de bloques MATCH provoca que las
transacciones del mismo conjunto de ensamble se esperen una a la otra.

Sintaxis.

MATCH A,B,C,D

Operandos.

Operando Descripción
A Etiqueta de bloque a transferir la transacción. Conjuga comparando con el conjunto de ensamble. Es un
operando requerido y debe ser nombre, número entero positive, expresión o SNA.

Instrucción MSAVEVALUE. Actualiza un elemento de una matriz.

Sintaxis.

MSAVEVALUE A,B,C,D

Operandos.

Operando Descripción
A Nombre de la matriz seguido opcionalmente por un + (Incrementa), o – (decrementa). Es un operando
rquerido que debe ser nombre, número entero positivo, expresión o SNA.
B Número de renglón de la matriz. Es un operando requerido que debe ser nombre, número entero positivo,
expresión o SNA.
C Número de columna de la matriz. Es un operando requerido que debe ser nombre, número entero positivo,
expresión o SNA.
D Valor a actualizar. Es un operando requerido que debe ser nombre, número entero positivo, expresión o
SNA.

168
Instrucción PREEMPT. Desplaza una transacción a diferentes servidores.

Sintaxis.

PREEMPT A,B,C,D,E

Operandos.

Operando Descripción
A Nombre o número del servidor. Es un operando requerido que debe ser nombre, número entero positive,
expresión o SNA.
B Modo de prioridad. Es un operando opcional. PR es utilizado para la modalidad de prioridad. Si no se
declara funciona com el modo de interrupción.
C Nombre o número de bloque. Es el nuevo destino de la transacción que actualmente es dueña del servidor.
Es un operando opcional, y debe ser nulo, nombre, número entero positivo, expresión o SNA.
D Número de parámetro. Es el parámetro de la transacción removida para recibir el tiempo residual si la
transacción es removida de FEC. Es un operando opcional, y debe ser nulo, nombre, número entero
positivo, expresión o SNA.
E Modo de remover. Remueve la transacción del contenedor del servidor. Es un operand opcional, y debe ser
RE o nulo. Si se especifica RE se debe especificar el destino en el operando C.

Instrucción PRIORITY. Asigna una prioridad a la transacción activa.

Sintaxis.

PRIORITY A,B

Operandos.

Operando Descripción
A Valor de la prioridad. Es un operando requerido, y debe ser nombre, entero, string, expresión o SNA.
B Opción de buffer. Es un operando opcional. Este operando debe ser BU.

Instrucción QUEUE. Simula la entrada de un almacén. Para cada bloque QUEUE, se requiere un bloque DEPART (simula la salida
del almacén). Este bloque se utiliza para obtener estadísticas en el reporte de resultados que permiten ilustrar el tiempo de espera
que realizan las transacciones para capturar la atención de un servidor. Este bloque QUEUE se debe complementar con el bloque
DEPART. Se puede visualizar al bloque QUEUE como el punto de inicio de la línea de espera (Cola) para la toma de datos
estadísticos.

Sintaxis.

QUEUE A,B

Operandos.

Operando Descripción
A Nombre o número de la cola (almacén). Es un operando requerido, que debe ser nombre, número entero
positivo, expresión o SNA.
B Número de unidades que entran a la cola (almacén). El valor predeterminado es 1. Es un operand opcional
que debe ser nulo, nombre, número entero positive, expresión, o SNA.

169
Instrucción RELEASE. Libera un facilitador (servidor unitario). Permite simular la liberación del servidor, proceso o instalación que
había sido capturado anteriormente con el bloque SEIZE.

Sintaxis.

RELEASE A

Operandos.

Operando Descripción
A Nombre o número del facilitador (Servidor unitario). Es un operando requerido. Este operando debe ser
nombre, número entero positivo, expresión o SNA.

Instrucción RETURN. Libera el facilitador que es propiedad de una transacción.

Sintaxis.

RETURN A

Operandos.

Operando Descripción
A Nombre o número del facilitador (Servidor unitario). Es un operando requerido. Este operando debe ser
nombre, número entero positivo, expresión o SNA.

Instrucción SAVEVALUE. Actualiza el valor de la entidad Savevalue.

Sintaxis.

SAVEVALUE A,B

Operandos.

Operando Descripción
A Nombre del Savevalue opcionalmente Seguido de + (incrementar) o – (decrementar). Es un operando
requerido, y debe ser nombre, número entero positivo, expresión o SNA.
B Es el valor a almacenar, incrementar o decrementar. Es un operando requerido, y debe ser nombre,
número, string, expression o SNA.

Instrucción SEIZE. Captura un facilitador (servidor unitario). Simula la captura de un servidor, proceso o instalación. Internamente
funciona con una variable interna lógica que determina si está ocupado o desocupado. Si una transacción llega a este bloque y el
facilitador está desocupado, lo pone en estado ocupado, y hasta que la transacción pase por el bloque RELEASE, pondrá de nuevo
al facilitador como desocupado. El bloque SEIZE trabaja en conjunto con el bloque RELEASE.

Sintaxis.

SEIZE A

Operandos.

Operando Descripción
A Nombre o número de la facilidad (servidor unitario). Es un operando requerido, que debe ser nombre,
número entero positivo, expresión o SNA.

170
Instrucción SELECT. Selecciona una alternativa (entidad) que satisface una condición determinada, colocando esta alternativa
como parámetro de la transacción activa.

Sintaxis.

SELECT O A,B,C,D,E,F

Operandos.

Operando Descripción
O Operador condicional o lógico. Es un operador requerido, siendo permitidos los siguientes: FNV, FV, I, LS, LR,
NI, NU, SE, SF, SNE, SNF, SNV, SV, U, E, G, GE, L, LE, MIN, MAX, or NE.
A Nombre o número de parámetro. Que recibe el número de la entidad seleccionada. Es un operando
requerido y debe ser nombre, número entero positive, expresión o SNA.
B El límite inferior de la alternativa (entidad). Es un operando requerido, y debe ser nombre, número entero
positivo, o SNA.
C El límite superior de la alternativa (entidad). Es un operando requerido y debe ser nombre, número entero
positivo, o SNA.
D El valor de referencia para el operando E cuando se encuentra en modo condicional. Es un operand opcional
que debe ser número, entero positive o SNA. No debe ser utilizado con MAX o MIN.
E Nombre de SNA por investigar. Especifica el atributo de la entidad en el modo condicional. El tipo de SNA
implica el tipo e entidad. No se debe especificar el operando E, ya que se realiza automáticamente la
búsqueda en el rango . Es un operando opcional que debe ser nulo o SNA.
F Ubicación a la cual entrará la transacción si se cumple la condición. Es un operando opcional que debe ser
nulo, nombre, número entero positivo, expresión o SNA.

Instrucción SPLIT. Reproduce transacciones, con las mismas características de la transacción padre.

Sintaxis.

SPLIT A,B,C

Operandos.

Operando Descripción
A Número de transacciones adicionales a crear. Número de transacciones relacionadas a ser creadas. Es un
operando requerido y debe ser nombre, número entero positivo, expresión o SNA.
B Bloque destino. Es el bloque destino de las transacciones a crear. Este operando es opcional y debe ser nulo,
nombre, número entero positivo, expresión o SNA.
C Parámetro que recibe el número de serie. Es un parámetro que recibirá el número de serie. Es un operando
opcional que debe ser nulo, nombre, número entero positivo, expresión o SNA.

Instrucción TABULATE. Tabula datos en un histograma . Este bloque se coloca para obtener una distribución de frecuencia de los
datos interesados. Este bloque hace referencia a una tabla que está definida con la instrucción TABLE la cual contiene los datos,
rangos y la amplitud de la distribución a generar. Todas las transacciones que pasan por este bloque son utilizadas para crear el
histograma cuyos datos están definidos con una tabla.

Sintaxis.

TABULATE A,B

Operandos.

Operando Descripción
A Nombe o número de una tabla. Es un operando requerido, y debe ser nombre, número entero positivo,
expresión o SNA.
B Factor de peso. Es un operando opcional, y debe ser nulo, nombre, número, expresión o SNA.

171
Instrucción para el bloque TERMINATE. Se utiliza para remover las transacciones activas del proceso de simulación. Se puede
considerar a este bloque como una puerta a través de la cual salen las transacciones del sistema. Esta instrucción hace lo
contrario al bloque GENERATE. Opcionalmente también puede reducir el contador de finalización de la simulación. No existe
restricción de la cantidad de bloques TERMINATE que pueda contener un modelo de simulación (El sistema puede tener varias
puertas de salida).

Sintaxis.

TERMINATE A

Operandos.

Operando Descripción
A Cantidad decremental del contador de finalización. Es un operando opcional. Este operando debe ser un
nombre, expresión, número entero positivo, SNA o nulo. El valor predeterminado es igual a 0.

Instrucción TEST. Compara valores y controla el destino de la transacción activa. El bloque TEST es utilizado para realizar
comparaciones con valores SNA, y controlar el destino de la transacción basado en el resultado de la comparación realizada. El
bloque TEST proporciona dos modos de operación (condicional e incondicional). En el condicional la transacción realiza una espera
hasta que una condición se cumpla. Cumpliendo esta condición la transacción fluye al siguiente bloque. En el modo incondicional
envía la transacción al bloque nombrado en el operando C si la condición no se cumple, o de lo contrario envía la transacción al
siguiente bloque.

Sintaxis.

TEST O A,B,C

Operandos.

Operando Descripción
O Operador relacional. Es un operador requerido, siendo uno de la siguiente lista: E (igual), G (mayor), GE
(mayor o igual), L (menor), LE (menor o igual) , o NE (diferente).
A Valor de prueba. Es un operando requerido, y debe ser un nombre, número, string, expresión o SNA.
B Valor de referencia. Es un operando requerido, y debe ser nombre, número, string, expresión o SNA.
C Bloque destino. Es operando opcional y debe ser nulo, nombre, número entero positivo, expresión o SNA.

Instrucción TRANSFER. Transfiere la transacción activa a otra parte del programa. La instrucción TRANSFER cambia el flujo de la
transacción activa a una ubicación determinada dentro de la lógica del programa.

Sintaxis.

TRANSFER A,B,C,D

Operandos.

Operando Descripción
A Modo de transferencia. Es un operand opcional y debe ser uno de la siguiente lista: BOTH, ALL, PICK, FN, P,
SBR, SIM, fracción, nombre, nulo o SNA.
B Número o ubicación del bloque. Es un operando opcional, que cuando el modo es P debe ser nombre o
número. Este operando en los demás casos debe ser nombre, nulo o SNA.
C Número o ubicación del bloque. Debe ser el valor de increment cuando está en modo P o FN. Este operando
debe ser nulo, nombre o SNA.
D Número del incremento del bloque cuando el modo es ALL. El valor predeterminado es 1. Este operando
debe ser nulo, nombre o número entero positivo, expresión, o SNA.

172
Instrucción UNLINK. Retira las transacciones de una cadena del usuario. Este bloque es utilizado en combinación con bloque LINK.

Sintaxis.

UNLINK O A,B,C,D,E,F

Operandos.

Operando Descripción
O Operador relacional. Es un operador opcional que relaciona al operando D y E para que ocurra el retiro. Este
operando debe ser nulo, E (igual), G (mayor), GE (mayor o igual), L (menor), LE (menor o igual) or NE
(diferente).
A Nombre de la cadena de usuario de donde se retirarán las transacciones. Es un operando requerido y debe
ser un nombre, número entero positivo, expresión o SNA.
B Bloque destino. Es un operando requerido en el cual se declara el bloque destino hacia donde se dirigirán
las transacciones retiradas. Este operando debe ser nombre, número entero positivo, expresión, o SNA.
C Número máximo de transacciones a retirar. Es un operando opcional, que tiene como valor predeterminado
ALL (todas). Este operando debe ser ALL, nulo, nombre, número entero positivo, o SNA.
D Valor de prueba. Este valor es un operando opcional utilizado para llevar a cabo la prueba, o si se utiliza
BACK retira iniciando desde el final de la cadena. Este operando debe ser nulo, nombre, número entero
positivo, expresión o SNA.
E Valor de referencia. Es un valor que utiliza el operando D para la comparación. Este operando es opcional y
debe ser nulo, nombre, número, string, expresión o SNA.
F Bloque destino. Es el destino para la transacción entrante si no existe ninguna transacción que retirar de la
cadena de usuario. Este operando es opcional y debe ser nulo, nombre, número entero positivo, expresión
o SNA.

173
Referencias bibliográficas

Azarang Mohamad A,García Dunna Eduardo, Simulación y análisis de modelos estocásticos, 1ª Edición, McGraw-Hill, Inc.,
México, 1996.
Badri Masood A., A simulation model for multi-product inventory control management, SAGE Publications, 1999.
Banks, J. & Carson, J.S., Discrete event system simulation, Prentice-Hall, Englewood Cliffs, N.J., 1984.
Box George E., Hunter J. Stuart, Hunter William G., Estadística para investigadores: diseño, innovación y descubrimiento, 2ª
Edición, Reverté, Barcelona,2008.
Chitale R. H., Random process, 1ª Edition, Technical Publications Pune, India ,2008.
Corder Gregory W., Foreman Dale I., Nonparametric statistics for Non-statisticians,Wiley & Sons,USA, 2009.
Corte González A., Inferencia estadística bayesiana,tesis de grado en matemáticas, España,2013.
Coss Bu,Raúl, Simulación un enfoque práctico,Limusa,México,2003.
Miller Irwin, Freund John E., Probabilidad y estadística para ingenieros, 1ª Edición, Reverté, México, 2004.
Hermann Charles F., Validation problems in games and simulations with special reference to models of international
politics,Behavioral Science volume 12,1967
Hillier F., Lieberman G., Introducción a la investigación de operaciones, 5ª Edición, McGraw-Hill, Inc.,México, 1991.
Hillier F., Lieberman G., Introducción a la investigación de operaciones, 9ª Edición, McGraw-Hill Inc., México, 2010.
Johnson L., Montgomery D., Operations research in production planning, scheduling and inventory control, Wiley, New
York,1974.
Kleijnen Jack P.C., Verification and validation of simulation models, European Journal of Operational Research, 1995.
Knuth Donald E., The art of computer programming Vol II, 2a Edition,Addison-Wesley, USA,1981.
Lujan Villarreal Gonzalo, Un entorno de aprendizaje y una propuesta de enseñanza de simulación de eventos discretos con
gpss, tesis de grado, Universidad Nacional de la Plata, Argentina,2013.
Mesa Páez L. F.,Rivera Lozano, Romero Dávila, Descripción general de la inferencia bayesiana y sus aplicaciones en los
procesos de gestión,2ª Edición, Universidad del Rosario,Colombia,2011.
Minuteman Software, GPSS Reference Manual, Minuteman Software, 2010.
Minuteman Software, GPSS Tutorial Manual, Minuteman Software, 2010.
Montgomery Douglas C., Runger George C., Applied statistics and probability for engineers, 5 ª Edition, Wiley, USA, 2011.
Montgomery Douglas C., Kowalsky Scott M., Design and Analysis of experiments, 7ª Edition, Wiley, USA, 2011.
Montgomery Douglas C., Statistical quality control, 7ª Edition, Wiley, USA, 2012.
Naylor,Balintfy,Burdick y Kong Shu, Técnicas de simulación en computadoras, Limusa, México, 1971.
Nolberto Sifuentes V. A., Ponce Aruneri M. E.,Estadística inferencial aplicada, 1ª Edición, Universidad Nacional Mayor de
San Marcos, Perú,2008.
Oberkampf William L., Verification and validation in computational simulation, 2004 Transport task force Meeting,Utah,
2004.
Posada Hernández G. J., Buitrago Cardona M. V., Estadística,1ª Edición, Fundación Universitaria Luis Amigó, Colombia,2008.
Raczynski,Stanislaw., Simulación por computadora, 1ª Edición, Megabyte, México, 1993.
Rice Stephen V,Markowitz,Marjanski,Bayley., The Simscript III programming languages for modular objected-orient
simulation, Proceedings of the 2005 winter simulation conference,2005.
Robinson Stewart, Simulation: The practice of model development and use,1 Edition, Willey, USA, 2004.
Ross, Sheldon M., Simulación, 2ª Edición, Prentice Hall, México, 1997.
Ross, Sheldon M., Simulation, 5ª Edition, Academic-Press,USA, 2013.
Schriber Thomas G., Simulation using GPSS, Wiley,USA,1974.
Shannon,Robert, E., Simulación de sistemas. Diseño, desarrollo e implantación, Trillas,México, 1988.
Shannon,Robert, E., Simulación de sistemas, Diseño, desarrollo e implantación, Trillas, México, 1992.
Singh V.P.,System modeling and simulation, 1ª edition, New-Age Intl,New Delhi, 2009.
Starr M., Miller D., Inventory control: theory and practice,Prentice-Hall,New Jersey,1962.
Taha Hamdy, A., Investigación de operaciones, 2ª Edición, Alfaomega, México,1991.
Walpole Ronald E., Myers, Myers, Probabilidad y estadística para ingenieros, 6ª Edición, Prentice-Hall,1999.

174

También podría gustarte