Instituto Tecnológico de Acapulco Ingeniería en Sistemas Computacionales Introducción 4

Anuncio
Instituto Tecnológico de Acapulco
Ingeniería en Sistemas Computacionales
Apuntes de
Simulación
Índice
Unidad I. Introducción a la simulación
Introducción 4
Proceso de la simulación 5
Actividades de presimulación 5
Actividades de desarrollo 7
Actividades de operación 8
Consideraciones relativas a la simulación 9
Variables exógenas 11
Variables de estado 12
Variables endógenas 12
Parámetros 12
Características de operación 12
Identidades 12
Métodos analíticos, numéricos y de simulación 14
Simulación de un sistema de inventarios 17
Unidad II. Generación de Números Pseudoaleatorios
Método de congruencias 25
Método multiplicativo 26
Computadoras binarias 27
Computadoras decimales 28
1
Pruebas estadísticas 29
Prueba de medias 31
Prueba de varianzas 34
Prueba de poker 35
Prueba de series 37
Apéndice 40
Definiciones 40
Teoremas 42
Unidad III. Generación de valores de variables aleatorias
Método de transformación inversa 44
Método de rechazo 47
Método de composición 50
Distribución de POISSON 51
Distribución ERLANG 53
Distribución binomial 53
Método de transformación inversa para distribuciones discretas 54
Unidad IV. Lenguaje de Simulación
Estructura del lenguaje 58
Lenguajes específicos de simulación 60
Características de los lenguajes de simulación 60
Clasificación de los lenguajes de simulación 61
Introducción a los bloques GPSS 62
Lenguaje GPSS 64
Tipos de bloques de GPSS 70
Símbolos de los diagramas de bloques de GPSS 71
Simulación de los sistemas discretos 83
2
Unidad V. Validación
Cálculo del número óptimo de simulación 90
Cálculo de número de réplicas 92
Reducción de varianza 93
Validación de resultados 95
Optimización 97
Sensibilidad y experimentación 98
Monitoreo 98
Bibliografía 99
UNIDAD I
Introducción A La Simulación
La simulación consiste básicamente en construir modelos informáticos que describen la parte esencial del
comportamiento de un sistema de interés, así como en diseñar y realizar experimentos con el modelo y extraer
conclusiones de sus resultados para apoyar la toma de decisiones. Típicamente, se utiliza en el análisis de
sistemas tan complejos que no es posible su tratamiento analítico o mediante métodos de análisis numéricos.
Sus orígenes están en los trabajos de Student para aproximar la distribución que lleva su nombre, y los
métodos que Von Neumann y Ulam introdujeron para resolver ecuaciones integrales. Desde entonces, la
Simulación ha crecido como una metodología de experimentación fundamental en campos tan diversos como
la Economía, la estadística, la Informática o la Física, y con enormes aplicaciones industriales y comerciales,
como los simuladores de vuelo, los juegos de simulación, o la predicción bursátil o meteorológica.
Existen diversas maneras para definir el término simulación. Sin embargo debido a que se considera a la
simulación como una extensión lógica y natural de los modelos analíticos y matemáticos, inherentes a la
Investigación de Operaciones, la siguiente definición es considerada como una de las más completas.
Simulación: Es una técnica numérica para conducir experimentos en un computador digital, la cual incluye
ciertos tipos de relaciones lógicas y matemáticas necesarias para describir la estructura y comportamiento de
un sistema complejo del mundo real sobre un periodo de tiempo.
También se considera a la simulación como un proceso para describir la esencia de la realidad, el cual
incluye la construcción, experimentación y manipulación de un modelo complejo en un computador.
El uso de la metodología de simulación ofrece ventajas y desventajas, entre las cuales podemos mencionar las
siguientes:
Ventajas:
• La simulación hace posible estudiar y experimentar con las interacciones complejas de un sistema dado (sin
importar cuál).
• A través de la simulación podemos estudiar el efecto de cambios ambientales, organizacionales de cierta
información, en la operación del sistema.
3
• La observación detallada del sistema simulado nos permite tener una mejor comprensión del mismo.
• La experiencia al diseñar un modelo de simulación para computadora es más valiosa que la simulación en
sí.
• La simulación nos permite experimentar con situaciones nuevas, para los cuales no se tiene o hay poca
información.
Desventajas:
• Los modelos de simulación para computadora son costosos y requiere tiempo para desarrollarse y validarse.
• Se requiere gran cantidad de corridas para encontrar soluciones óptimas.
• Es difícil aceptar los modelos de simulación.
• Los modelos de simulación no son de optimización directa (son modelos de análisis).
• Se pueden tener restricciones o limitaciones en la disponibilidad del software requerido.
Filosofía, Desarrollo E Implementación De Un Modelo De Simulación
La simulación es una de las herramientas más fáciles de usar en la ciencia administrativa, pero posiblemente
una de las más difíciles de aplicar apropiadamente.
El Proceso De La Simulación.
Es apropiado examinar el proceso completo para el cuál el análisis de simulación es planeado y ejecutado. El
diseño del modelo de simulación es en sí mismo una parte crítica de cualquier estudio.
El proceso comprende tres tipos de actividades:
• Actividades de presimulación.
• Actividades de desarrollo.
• Actividades de operación.
Actividades De Presimulación
La primera actividad es el reconocimiento del problema, este nos lleva al estudio y análisis del sistema y
culmina en el establecimiento de un objetivo dirigido a la solución del problema.
Estos objetivos se pueden categorizar en:
Caracterización del sistema a ejecutar esto nos lleva a:
• Selección de los parámetros de operación del sistema ya existente.
• Selección de los parámetros de operación de un sistema propuesto.
• Exploración del comportamiento del sistema.
Modificación De Un Sistema Existente
Diseño de un nuevo sistema.
En esta etapa del proceso el usuario debe evaluar las diferentes herramientas disponibles relacionadas con su
objetivo.
Ejemplos:
4
• EOQ: Modelo Tamaño de lote (control de inventarios) método de solución deductivo.
• SIMPLEX: Es una solución algorítmica.
La simulación es una técnica apropiada donde no es factible experimentar con el sistema mismo o donde las
técnicas analíticas directas no son disponibles.
Actividades De Desarrollo
Las primeras actividades de desarrollo son el diseño y la implementación del modelo de simulación. Después
que estas tareas son completadas la siguiente actividad es la verificación del modelo.
En el estudio del diseño de sistemas, el propósito es producir un sistema que satisfaga algunas
especificaciones. El diseñador puede elegir o planear determinados sistemas de componentes y
conceptualmente elige una combinación determinada de componentes para construir un sistema.
El sistema propuesto se modela y se predice su comportamiento. Un modelo validado es aquel que ha probado
comportarse tal como el diseñador lo intento. Fishman y Kiviat sugieren técnicas para verificación incluyendo
métodos estadísticos que nos llevan más allá de las prácticas usuales de simples análisis comparativos.
La validación y verificación de un modelo parecieran ser lo mismo, pero difieren conceptualmente de manera
sutil.
Un modelo validado, es aquel que ha probado ser una abstracción razonable del sistema del mundo real que
intenta representar.
La aproximación usual de validación es la corrida del modelo con datos históricos y comparar los resultados
del modelo con los resultados del sistema para los mismos datos. Tal comparación usualmente no es válida
debido a que el modelo puede ser de naturaleza experimental o predictivo.
El diseño estratégico se refiere a la actividad de planeación y diseño de la experimentación, incluye la
especificación de la información que va a ser determinada y la exactitud de esta información. Existen técnicas
apropiadas de diseño experimental, tales como factorial completo, fracción factorial, etc.
La experimentación al establecer un objetivo sirve para:
• Exploración del comportamiento del sistema
• Optimización de los parámetros del sistema
La exploración del comportamiento del sistema intenta explicar la relación entre los resultados de la
Simulación y los parámetros controlables.
La optimización es ejecutada para encontrar la combinación de los niveles de los parámetros los cuales
minimizan o maximizan los resultados de la simulación.
Actividades De Operación
En esta etapa el proceso de simulación, el modelo ha sido diseñado, implementado y ha sido planeado.
Las actividades posteriores son las de llevar a cabo la experimentación. Esta debe iniciar con el diseño táctico
de los experimentos que van a ser ejecutados. Estas actividades son: la determinación de número de corrida, y
la cantidad de datos a utilizar en cada corrida.
5
También incluye el establecimiento de las condiciones iniciales de las variables del modelo, la estimación de
los parámetros que alcanzan el estado de equilibrio del sistema. El usuario debe determinar como debe
reconocer el equilibrio.
Otras consideraciones son: el tamaño de la muestra requerido para los datos, las técnicas a utilizar en la
comparación del sistema alternativo, sí éste es el objeto de estudio.
Si el objetivo ha sido alcanzado, el estudio de simulación ha sido completado. No obstante, debido a que la
simulación es un proceso de prueba−error, con frecuencia el objetivo no se puede alcanzar, entonces optamos
por las dos alternativas generales disponibles.
• La primera es la de modificar el modelo.
• La segunda es la de utilizar el mismo modelo alternando el diseño del experimento, usando nuevas
técnicas.
Consideraciones Relativas A La Simulación
Los siguientes tópicos generalmente son cubiertos en textos de simulación:
• Control de tiempo
• Generación de números aleatorios
• Generación de V.V.A.A.
• Técnicas de reducción de varianzas
• Lenguajes de simulación
El objeto del modelo científico es permitir al analista la determinación de uno o más cambios en los aspectos
del sistema modelado que afectan otros aspectos del sistema e incluso la totalidad del mismo. Un modelo útil
debe necesariamente incorporar elementos de dos atributos en discrepancia: realismo y simplicidad.
Por un lado el modelo ha de ser una aproximación razonable del sistema real y por tanto incorporar la mayor
parte de los aspectos importantes de este; por otro lado, no es conveniente que un modelo resulte tan complejo
que se vuelva imposible entenderlo.
Los modelos matemáticos de sistemas económicos constan de 4 elementos bien definidos: los componentes,
las variables, los parámetros y las relaciones funcionales.
Las variables se usan para relacionar un componente con otro y se clasifican en:
• Variables Exógenas (Independientes o de entrada del modelo)
• Variables de Estado (Controlables o no controlables)
• Variables Endógenas (Dependientes o de salida del sistema)
Las variables que aparecen en los modelos económicos se emplean para relacionar un componente con otro y
se clasifican, convenientemente, como variables exógenas, variables de estado y variables endógenas.
Las variables exógenas son las independientes o de entrada del modelo y se supone que han sido
predeterminadas y proporcionadas independientemente del sistema que se modela.
Es posible clasificar las variables exógenas en controlables y no controlables. Las controlables son aquellas
variables o parámetros susceptibles de manipulación o control por quienes toman decisiones. Las no
controlables las genera el medio ambiente en el cual el sistema modelado existe y no el sistema en si o los
6
encargados de tomar decisiones.
Las variables de estado describen el estado de un sistema o uno de sus componentes, ya sea al comienzo, al
final o durante un período de tiempo.
El valor de una variable de estado, durante un período particular de tiempo, puede depender no solamente de
los valores de una o más variables exógenas en algún período precedente, sino también del valor de ciertas
variables de salida en períodos anteriores.
Las variables de estado de una empresa podrían incluir el efectivo, el inventario y el pasivo de un período
particular (de tiempo), así como también las ventas en algún período precedente y los gastos de propagandas
para algún período futuro.
Las variables endógenas son las dependientes o de salida del sistema y son generadas por la interacción de las
variables exógenas con las de estado, de acuerdo con las características de operación del último.
El hecho que una variable en particular este clasificado como exógena, de estado o endógena, depende del
propósito de la investigación.
Las variables exógenas se emplean en dos formas diferentes en experimentos de simulación: es posible
tratarlas como los parámetros dados, las cuales tienen, por supuesto, que estimarse con anterioridad y
almacenarse dentro de la computadora como datos de entrada; si son variables estocásticas, existe la
posibilidad de generarlas internamente en la computadora.
Hay dos relaciones funcionales que describen la interacción de las variables y los componentes de un modelo
económico: las identidades y las características de operación.
Las identidades tomaran la forma de definiciones o declaraciones tautológicas, relativas a los componentes
del modelo. Una característica de operación es una hipótesis, generalmente una ecuación matemática, que
relacionan las variables endógenas y de estado del sistema, con sus variables exógenas.
Para ilustrar el sistema de clasificación de elementos de los modelos matemáticos considérese el siguiente
ejemplo:
Se considera un modelo simple de un fenómeno de espera, de un solo canal y con estaciones múltiples para
una empresa. Los componentes de este modelo se ilustran en la figura 1. Y consiste de ordenes que llegan a la
empresa y procesos, a través de los cuales, una orden pasara antes de completarse.
El propósito del modelo es relacionar el tiempo total que requiere una orden para pasar a través de n procesos,
con la forma en que llegan las órdenes y el tiempo que consume cada uno de tales procesos.
El modelo contiene las siguientes variables, parámetros, características de operación e identidades.
Variables Exógenas.
ATi = El intervalo de tiempo entre la llegada de la i−ésima orden y la (i−1)−ésima orden, en donde
i=1,2,...,m.
STij = El tiempo de procesamiento para la i−ésima orden en el j−ésimo proceso en donde i=1,...,m y
j=1,2,...,n.
Variables De Estado.
7
WTij = el tiempo que la i−ésima orden espera para entrar al j−ésimo proceso, en donde i=1,...,m y j=1,...,n.
IDTij = el tiempo que el proceso j−ésimo permanece ocioso mientras que espera la llegada de la i−ésima
orden, en donde i=1,...,m y j=1,...n.
Tij = el tiempo total que la i−ésima orden esta en el j−ésimo proceso, donde i=1,...,m y j=1,...,n.
Variables Endógenas.
Ti = el tiempo total que la i−ésima orden esta en el sistema, es decir, el tiempo requerido para pasar a través
de los n procesos.
Parámetros
E (AT) = El intervalo de tiempo esperado entre las órdenes.
Var (AT) = La varianza del intervalo del tiempo entre las órdenes.
E (STij) = El tiempo esperado para el j−ésimo proceso donde j=1,2,...n.
Var (STij) = La varianza del tiempo para el j−ésimo proceso donde j=1,2,...n.
Características De Operación
f (ATi) = La función de densidad de probabilidad para el intervalo de tiempo entre las órdenes.
f (STij) = La función de densidad de probabilidad para el tiempo de procesamiento del j−ésimo proceso donde
j=1,...,n.
Identidades
Cuando la primera orden llega a la empresa, es decir, cuando i=1, se supone que las siguientes ecuaciones
describen el sistema de procesos múltiples:
Para órdenes subsiguientes, esto es, cuando i = 2,3,...,m, estas ecuaciones se modifican adecuadamente; las
ecuaciones de tiempo se convierten en:
Que el tiempo de espera o el tiempo de ocio, ocurra en un momento particular, depende del signo de las
diferencias siguientes, donde i = 2,. . .,m :
Si DIFj es positiva para el j−ésimo proceso, entonces el tiempo de ocio será nulo y el tiempo de espera puede
calcularse con:
Si DIFj es negativo para un proceso en particular, entonces el tiempo de espera será nulo y el tiempo de ocio
será igual a:
Si DIFj es igual a cero para un proceso en particular, entonces el tiempo de espera y el tiempo de ocio, serán
nulos para ese proceso.
Este modelo de una empresa con procesos múltiples, tiene varias aplicaciones posibles, por ejemplo,
supóngase que al comprar un equipo nuevo, la empresa reducirá, un 50% el tiempo esperado de
procesamiento, para un proceso en particular. El modelo servirá entonces para estimar el aumento esperado en
8
el número total de órdenes, que es posible procesar completamente durante un período particular de
planeación, para determinar sí la empresa esta justificada en la compra del nuevo equipo.
Métodos Analíticos, Numéricos Y De Simulación
Consideremos un ejemplo simplificado de un ordenador, compuesto por un sistema de entrada/salida (E/S) y
una unidad de proceso (CPU). El ordenador falla cuando lo hace alguno de los componentes. Expresado
matemáticamente, si X1 designa el fallo de E/S, X2 el tiempo hasta el fallo de la CPU, y T el tiempo hasta el
fallo del ordenador, tenemos T= min(X1, X2). Habitualmente, habrá incertidumbre sobre los tiempos
anteriores, por lo que consideramos que X1, X2 y T son variables aleatorias. Supongamos que estamos
interesados en calcular el tiempo esperado E(T) hasta el fallo, tal vez como parte de un estudio destinado a
mejorar la fiabilidad del ordenador. Para simplificar la exposición, supongamos que Xi es exponencial de
parámetro
, y ambas variables aleatorias son independientes. En este caso, tenemos que
Aproximación Analítica
Apelamos a resultados del Cálculo de Probabilidades, teniendo en cuenta la independencia y el tipo de
distribuciones. Resulta
Por lo tanto, T tiene distribución exponencial de parámetro
, con lo cual
. Por ejemplo, si
,
,
.
Observemos que para esta aproximación resulta esencial emplear hipótesis de independencia y
exponencialidad, de manera que el razonamiento empleado es poco robusto; si cambiamos alguna de esas dos
hipótesis, el cálculo exacto puede resultar mucho más complicado e, incluso, imposible de obtener mediante
un método analítico.
Aproximación Numérica.
Una posibilidad, en tal caso, es apelar a algún procedimiento de integración numérica. Típicamente, un paso
inicial será reparametrizar el problema, de manera que la región de integración sea acotada. Por ejemplo,
tenemos que, haciendo el cambio de variable
9
y podemos aplicar, por ejemplo, la regla del trapecio. En nuestro caso, con 15 nodos y, como antes,
,
, obtenemos el valor .317 como aproximación del tiempo esperado hasta el fallo.
Obsérvese que la estrategia numérica adoptada es más robusta, en el sentido de que si sustituimos alguna de
las dos hipótesis, somos aún capaces de utilizarla. El inconveniente estará en que al aumentar la dimensión de
la región de integración, la aproximación resultará cada vez más ineficaz.
Aproximación Basada en Simulación.
La aproximación basada en simulación consistirá en construir un programa que describa el comportamiento
del sistema y realizar experimentos con él. En este caso, podríamos utilizar
tiempofallo=0
desde i=1 hasta n
desde j=1 hasta 2
generar Uj uniforme en (0,1)
hacer
tiempofallo=tiempofallo + min(X1, X2)
esp(tiempofallo)=tiempofallo/n
Esencialmente, el programa simula tiempos de fallo X1, X2 y calcula el mínimo de ellos, repitiéndose el
proceso n veces, esto es, simulando n caídas del sistema.
El proceso de generar U1 y luego transformarla mediante
, nos permite simular tiempos hasta rotura del componente i−ésimo. Para la aplicación particular, supongamos
que tenemos acceso a la tabla 1.1 de números aleatorios. Por ejemplo, si decidimos que n=20, podemos
escoger los 20 primeros números para generar los U1
16 82 39 86 86 73 07 32 72 35 12 82 87 21 30 30 60 53 89 92
Y los últimos para generar U2.
38 63 63 30 36 25 66 30 53 98 49 78 40 92 80 97 67 46 38 34
Para ello, asociamos al número correspondiente el cociente resultante son 16 y 38, con lo cual U1=.16,
U2=.38, X1=.17, X2=.24 y min(X1, X2)=.17. Repitiendo el proceso, resulta la estimación .308.
16 82 39 86 86 73 07 32 72 35 12 82 87 21 30 30 60 53 89 92
99 77 85 43 72 34 52 99 30 86 81 40 18 61 20 16 92 39 34 44
01 48 69 32 37 05 99 27 23 55 88 47 38 48 53 79 41 08 73 95
08 34 04 83 42 92 64 49 51 23 44 62 75 43 09 22 55 51 38 18
10
09 22 76 47 23 99 48 66 26 73 95 53 37 47 00 43 66 80 44 18
64 18 83 13 90 95 64 21 97 09 86 59 99 70 20 73 35 11 81 57
77 67 94 40 00 12 26 45 77 54 21 51 91 91 28 74 47 00 53 95
73 01 20 47 86 40 71 03 13 36 98 50 48 45 30 23 40 85 76 63
72 67 37 77 52 79 93 67 57 78 77 07 58 19 48 32 72 94 66 11
58 96 79 92 08 88 46 62 58 96 75 18 57 89 21 17 26 92 26 63
41 69 24 18 81 29 14 06 67 15 23 70 27 89 40 77 31 98 71 15
16 45 84 78 49 17 84 92 51 12 08 78 30 35 63 84 34 68 97 10
92 09 48 47 40 81 30 44 03 98 19 38 33 07 00 55 70 65 24 19
26 92 58 75 64 61 49 58 68 45 09 32 76 03 29 08 73 11 33 79
17 33 86 83 91 26 51 12 57 73 21 12 09 58 24 64 91 53 24 92
91 41 97 06 57 45 39 16 64 92 66 18 78 71 55 99 29 18 02 56
52 00 40 81 14 06 94 03 71 39 09 33 74 08 42 15 85 08 35 30
10 07 82 40 99 00 91 31 44 73 51 42 08 28 31 35 20 07 85 96
70 70 14 24 43 71 60 86 17 85 61 05 65 10 68 73 03 31 45 23
96 50 32 72 89 62 28 76 60 00 52 94 67 16 32 08 88 27 01 94
20 89 41 95 46 28 45 92 21 97 51 15 02 82 11 95 65 27 50 08
30 99 84 95 47 72 38 22 55 44 50 61 71 58 86 49 25 60 69 17
94 53 29 42 38 74 90 06 18 71 99 27 84 88 03 43 07 53 96 02
50 61 25 57 55 50 92 14 39 77 29 17 73 75 83 38 40 02 06 47
38 63 63 30 36 25 66 30 53 98 49 78 40 92 80 97 67 46 38 34
Tabla 1.1 Números Aleatorios
Por supuesto, si escogemos otra muestra de la tabla, lo que correspondería a una nueva replicación del
experimento, obtendremos una estimación diferente.
Simulación De Un Sistema De Inventarios
La simulación es usada para comparar alternativas ordenando políticas para un sistema de inventarios.
Muchos de los elementos de modelos representativos son encontrados en sistemas de inventarios actuales.
11
Planteamiento del problema
Una compañía vende un producto en particular. Desea saber cuantos de estos productos se tendría en el
inventario para cada uno de los próximos n meses.
Los tiempos entre las demandas son variables aleatorias IID, con una media de 0.1 mes. Los tamaños de las
demandas D, son variables aleatorias IID, con
Al inicio de cada mes la compañía revisa el nivel del inventario y decide cuantos artículos ordenar de su
proveedor. Si la compañía ordena Z artículos, incurre en un costo de K+iZ, donde K = $32 que es el costo de
preparación e i = $3 que es el costo incremental por artículo ordenado. (si Z = 0, este costo no ocurre).
Cuando una orden es colocada, el tiempo requerido para que esta llegue (llamado periodo de entrega o
Leadtime) es una variable aleatoria que esta distribuida uniformemente entre 0.5 y 1 mes.
La compañía usa una política (s,S) para decidir cuanto ordenar, i.e.
S − I si I < s
Z=
0 si I " s
donde I es el nivel del inventario al inicio del mes.
Cuando una demanda ocurre, esta es satisfecha inmediatamente si el nivel del inventario es al menos tan
grande como la demanda. Si la demanda excede el nivel del inventario, el exceso sobre el suministro es
acumulado y satisfecho por futuras entregas. (En este caso, el nuevo nivel del inventario es igual al nivel del
inventario anterior menos el tamaño de la demanda, resultando en un nivel del inventario negativo). Cuando
una orden llega, primero es usada para eliminar cuando mucho tanto como sea posible las demandas
pendientes; el resto de la orden es agregada al inventario.
Hasta ahora, hemos discutido solamente un tipo de costo incurrido por el sistema de inventario, el costo de
ordenar. Sin embargo, en la mayoría de los sistemas reales también hay dos tipos de costos adicionales, costo
de mantenimiento y de escasez o déficit, los cuales discutiremos después de introducir algunas anotaciones
adicionales. Sea I(t) el nivel del inventario en el tiempo t[ note que I(t) podría ser positivo, negativo o cero];
sea I+(t)= max [I(t),0] el número de artículos físicamente disponibles en el inventario en el tiempo t[note que
I+(t)"0]; y I−(t)= max [−I(t),0] los pendientes en el tiempo t[I−(t)"0 también]. Una posible realización de I(t),
I+(t), I−(t) se muestra en la figura 1.41. Los puntos en el tiempo que I(t) decrece son los únicos en los cuales
la demanda ocurre.
I(t): Nivel del inventario en el tiempo t, siendo el valor de t positivo, negativo o cero.
I^+(t)=max {I(t),0}: Es el número de artículos físicamente disponibles en el tiempo t del inventario.
El tiempo de los puntos al cual I(t) decrece son los únicos puntos donde ocurre la demanda.
Para nuestro modelo, debemos asumir que la compañía incurre en un costo de mantenimiento de h=1 por
artículo por mes mantenido en el inventario. El costo de mantenimiento incluye tales costos como la renta del
almacén, seguros, impuestos, y mantenimiento también como el costo de oportunidad de tener el capital en el
inventario que invertir en otra parte.
Hemos ignorado en nuestra formulación el hecho de que algunos costos de mantenimiento ya incurrieron
12
cuando I+(t)=0. Sin embargo, dado que nuestro objetivo es comparar políticas de ordenar, ignorando este
factor, que después de todo es independiente de la política usada, no afectará en nuestra evaluación de qué
política es la mejor. Ahora dado que I+(t) es el número de artículos mantenidos en el inventario en el tiempo
t, el tiempo promedio (por mes) número de artículos mantenidos en el inventario por un periodo de n meses es
Que es semejante a la definición del número de tiempo promedio de clientes en la cola. Así el tiempo
promedio del costo de mantenimiento por mes es hI+
Similarmente, suponga que la compañía incurre un costo de déficit de "=$5 por artículo por mes en déficit;
esto cuenta para el registro de los costos extraguardado cuando existe un déficit, también la perdida de buenos
clientes. El número de promedio de veces de artículos en déficit esta dado por es
Así que el costo promedio de atrasos por mes es "I−.
Asuma que el nivel de inventario inicial es I(0)=60 y que no ordenar no es importante. Simulemos el sistema
de inventario para n = 120 meses y use el costo total promedio por mes (que es la suma del costo de ordenar
promedio por mes, el costo de mantenimiento promedio por mes y el costo de déficit promedio por mes) para
comparar las siguientes nueve políticas de inventario.
s
S
20
40
20
60
20
80
20
100
40
60
40
80
40
100
60
80
60
100
No discutiremos aquí el resultado de cómo estas políticas particulares fueron elegidas para su consideración,
técnicas estadísticas para hacer tal consideración serán discutidas más adelante.
Note que las variables de estado para un modelo de simulación de este sistema de inventario son el nivel de
inventario I(t), la cantidad de una orden prominente de la compañía al proveedor, y el tiempo del ultimo
evento.[el cual es necesaria para calcular las áreas bajo las funciones I+(t) e I−(t)]
ORGANIZACIÓN Y LÓGICA DEL PROGRAMA
El modelo de sistema de inventario usa los siguientes tipos de eventos.
Descripción del evento
Llegada de una orden a la compañía del proveedor
Demanda para el producto de un cliente
Termino de la simulación después de n−meses
Evaluación del inventario (al inicio de mes)
Tipo del evento
1
2
3
4
Hemos tenido que hacer el fin de la simulación, como un evento de tipo 3 en lugar del tipo 4, ambos eventos
fin−simulación y evaluación−inventario desde el tiempo 120 que serán eventualmente programar y querer
ejecutar el primer evento anterior en este tiempo. (Puesto que la simulación se hace después del tiempo 120,
no hay sentido en la evaluación del inventario y un posible ordenamiento, incurriendo en un costo de ordenar
por una orden que nunca llegará). La ejecución del evento tipo 3 antes del evento tipo 4 es garantizado por
que la rutina del tiempo da preferencia al mas bajo evento numerado, si dos o mas eventos son programados
para ocurrir al mismo tiempo. En general un modelo de simulación sería designado a procesar eventos en un
orden apropiado cuando un ciclo de tiempo ocurra.
13
La grafica de un evento aparece en la figura 1.42
Hay tres tipos de variables aleatorias que se necesitan para simular este sistema. Los tiempos indeterminados
son distribuidos exponencialmente, así que el mismo algoritmo (y código) como se desarrollo en la sección
1.4 pueden ser usados aquí.
El tamaño de demanda de la variable aleatoria D deberá ser discreta, como se describió anteriormente, y
puede ser generada como sigue. Primero se divide el intervalo unitario en subintervalos contiguos C1 [0, 1/6),
C2=[1/6, 1/2), C3=[1/2, 5/6), y C4=[5/6,1], y se obtiene una variable aleatoria uniformemente distribuida en el
intervalo U(0,1), si U cae en C1, regresa D=1; si U cae en C2, regresa D=2 ; y así sucesivamente.
Por tanto el ancho de C1 es 1/6−0=1/6 , y por tanto U (generador de Nº aleatorios) es uniformemente
distribuido sobre [0,1] , la probabilidad que U caiga en C1, (y así que regresamos D=1) es 1/6; esto concuerda
con la probabilidad deseada que D=1, similarmente regresamos a D=2, si U cae en C2 teniendo una
probabilidad igual al ancho de C2, ½ − 1/6= 1/3, como se deseó y así para los siguientes intervalos.
Los subprogramas para generar los tamaños de demandas todos usan estos principios y toman como entrada el
interruptor de puntos definiendo los subintervalos de llegada anterior los cuales son las probabilidades
acumuladas de la distribución de D.
Los atrasos en las entregas son uniformemente distribuidos pero no sobre el intervalo unitario [0,1]. En
general podemos generar una variable aleatoria uniformemente distribuida sobre cualquier intervalo [a,b]
generando un numero aleatorio U(0,1) y después regresar a
a+U(b − a).
De los cuatro eventos solamente 3 involucran verdaderamente el cambio de estado (el termino de eventos de
simulación es la excepción) por lo tanto su lógica, es un lenguaje independiente.
En el evento llegada − orden, se muestra en la figura 1.43 y debemos hacer los cambios necesarios cuando una
orden llegue del proveedor. El nivel del inventario es incrementado y desde su consideración del evento
llegada de una orden debe ser eliminada.
Evento de Orden de Llegada
El evento de la demanda está dado en la figura 1.44 y procesa los cambios necesarios para representar un caso
de demanda. Primero, el tamaño de la demanda es generada, y el inventario es decrementado por esta
cantidad. Finalmente el tiempo de la próxima demanda es programada en la lista de eventos. Note que esto
ocurre donde el nivel del inventario pueda ser negativo.
El evento evaluación del inventario tiene lugar en el comienzo de cada mes, su diagrama de flujo es el
siguiente. Fig. 1.45
Si el nivel del inventario I(t) en el tiempo de evaluación es al menos s, entonces ninguna orden se coloca, y no
se hace nada excepto la programación de la siguiente evaluación en la lista de eventos. En cambio, si I(t)<s,
colocamos una orden para S − I(t) artículos. Esto es hecho para almacenar la cantidad de ordenar [S −
I(t)]hasta la llegada de la orden, y programar su tiempo de llegada. En este caso también, queremos programar
el próximo evento evaluación del inventario.
Como en el modelo de colas de un solo servidor, es conveniente escribir una rutina para actualizar los
acumuladores de la estadística de tiempo continuo. Para este modelo, sin embargo, haciendo esto ligeramente
mas complicado, daremos al diagrama de flujo.
14
El principal punto es si necesitamos actualizar el área debajo de I−(t) o I+(t) (o ninguno). Si el nivel de
inventario ha sido negativo desde el ultimo evento, entonces tenemos un atraso, en el área debajo de I−(t) solo
estaríamos actualizando. En cambio si el nivel del inventario ha sido positivo necesitamos actualizar en el área
I+(t). Si el nivel de inventario ha sido cero no se necesita actualizar. El código en ambos lenguajes para esta
rutina también trae la variable de tiempo del último evento al tiempo presente. Esta rutina será invocada desde
el programa principal justo después de regresar de la rutina coordinada. Ignorando el tipo de evento o si le
nivel del inventario esta actualizado en los cambios en estos puntos. Esto proporciona una simple manera de
actualizar integrales para estadísticas de tiempos continuos.
UNIDAD II
Generación De Números Pseudoaleatorios
En principio definiremos la función de distribución acumulada para la distribución uniforme estandarizada
como:
En la práctica, se requieren sucesiones de números aleatorios para la generación de los datos de entrada para
el proceso de simulación.
Se tienen cuatro métodos alternativos para generar o proveer sucesiones de números aleatorios:
• Métodos manuales {lanzamiento de monedas, dados, cartas, ruleta, etc.}
• Tablas {corporación rand}
• Métodos analógicos de computación
• Métodos de computación digitales
Los métodos analógicos comprenden el uso de procesos físicos aleatorios (comportamiento de corriente
eléctrica), se considera que producen verdaderos números aleatorios.
En el caso de los métodos digitales hay 3 formas para proveerse de números aleatorios: provisión externa,
generación interna por medio de un proceso físico al azar, generación interna por medio de una relación de
recurrencia.
En el caso de provisión externa, lo que se hace es, grabar las tablas de números aleatorios en una cinta del
sistema de la computadora digital.
La segunda alternativa utiliza un aditamento de la computadora que puede registrar los resultados de algún
proceso aleatorio y que los traduzca a sucesiones de dígitos, tales procesos pueden ser el decaimiento
radiactivo, el ruido térmico, entre otros.
El defecto de estos procedimientos analógicos es el de que las sucesiones así generadas no pueden
reproducirse.
La generación interna por medio de una relación de recurrencia, comprende la generación por medio de una
transformación indefinidamente continuada aplicada a un grupo de números elegidos en forma arbitraria.
El primer método conocido para generar números aleatorios de manera recurrente se considera que es de los
cuadrados centrales, en el que cada número de la sucesión se obtiene tomando los dígitos centrales del
cuadrado del número precedente.
En la actualidad se prefiere el uso del método de congruencias para generar números aleatorios satisfactorios.
15
Cualquiera que sea el método para generar números aleatorios debe satisfacer las siguientes condiciones:
Deben ser:
• Uniformemente distribuidos
• Estadísticamente independientes
• Reproducibles
• Sin repetición dentro de una longitud determinada de la sucesión
• Generación a grandes velocidades
• Requerir el mínimo de capacidad de almacenamiento
Método De Congruencias:
Estos métodos se basan en una relación fundamental de congruencias que se expresa como:
Los términos de la sucesión {ni} forman una sucesión de residuos modulo m, es decir, ni < m " ni; a partir de
los números enteros de la sucesión {ni} se pueden obtener números racionales en el intervalo (0,1) con solo
formar la sucesión:
{ri} = {ni / m}
Respecto a la pregunta de que si existe un mínimo valor positivo para i, i=h tal que nh = n0 donde h es el
período de la sucesión {ni}; si h existe, cabe preguntarse que condiciones se pueden imponer sobre n0, a, c y
m de manera que el periodo de {ni} sea lo más largo posible.
Se tienen 3 versiones del método de congruencias para generar números pseudoaleatorios:
• Método Aditivo
Ni+1 = ni + ni−k (mod m)
Si k = 1 se tiene la sucesión de Fibonacci
• Método Multiplicativo
Produce una sucesión {ni} donde cada número es menor que m.
Ni+1 " ani (mod m)
Este método tiene buenos resultados estadísticos en relación con las pruebas de aleatoriedad e independencia.
• Método Mixto
Ni+1 " ani + c (mod m)
Método Multiplicativo
El modulo que emplea este método es m = pe donde p representa el número de guarismos del sistema
numérico que usa la computadora y e denota el número de dígitos en una palabra. En computadoras binarias
p=2; en computadoras decimales p=10.
La ecuación recursiva para generar residuos potenciales es:
16
ni+1 " ani (mod pe)
Computadoras Binarias
m = 2b
b = número de bits de palabra b >2
h = 2b−2 máximo período que se puede obtener
El problema se reduce a encontrar multiplicadores que tengan orden h=2b−2; a tiene que ser primo relativo de
m=2b y por lo tanto tiene que ser impar.
Los valores de a se encuentran en una clase residual que se representa por:
a " ± 3 (mod 8) ó a = 8t ± 3
t = 0, 1, 2, 3,..... entero positivo
Los valores de a próximos a 2b/2 minimizan la correlación en serie de primer orden. Con respecto al valor
inicial no, este debe ser primo relativo de m = 2b, entonces n0 puede ser cualquier número entero impar.
Procedimiento:
• Se escoge cualquier número impar como valor inicial n0
• Se elige un entero a = 8t ± 3
• Se calcula an0 usando aritmética entera de punto fijo. Este producto consta de 2b bits, de los cuales se
descartan los bits de orden superior, dejando para n1 los bits restantes.
• Se calcula r1 = n1 / 2b = n1 / 2b
• Cada número aleatorio sucesivo ni+1 se obtiene a partir de los bits de menor orden en el producto ani
Ejemplo:
Sea b = 4, m = 24 = 16 y h = 24−2 = 4
1.− n0 = 7 n0 = 0111
2.− a cerca de 2b/2 = 4 si t = 1, a puede ser 5 ó 3
si a = 5 a = 0101
3.− ano = (0101)(0111) = 00100011
n1 = 0011 r1 = 3/16 = 0.1875
4.− an1 = (0101)(0011) = 00001111
n2 = 1111 r2 = 15/16 = 0.9375
5.− an2 = (0101)(1111) = 01001011
n3 = 1011 r3 = 11/16 = 0.6875
17
6.− an3 = (0101)(1011) = 00110111
n4 = 0111 r4 = 7/16 = 0.4375
y así sucesivamente...
Computadoras Decimales
m = 10d = 2d 5d
d = número de dígitos decimales de la palabra. d>3
a = debe ser número primo relativo de 10d
El orden h de a (mod 10d) es: h = m.c.m. [2d−2,4 * 5d−1] = 5 * 10d−2
Los multiplicadores constantes con período 5 * 10d−2 se pueden ubicar en 32 clases residuales distintas mod
200, dado por:
a = ± (3, 11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67,69, 77, 83, 91) (mod 200)
ó también se puede expresar como:
a = 200t ± p t = 0, 1, 2, 3, ...
p = uno de los 32 números dados anteriormente.
De igual modo n0 debe ser primo relativo de m = 10d, lo cual implica que tiene que ser impar, no divisible
entre 5 para seleccionarse como valor inicial.
a " 10d/2
El procedimiento es semejante al caso binario:
• Selecciónese n0, un número impar no divisible entre 5.
• Selecciónese a = 200t ± p
a " 10d/2
• Calcular an0 utilizando aritmética entera de punto fijo.
• Calcular r1 = n1/10d
• Cada número aleatorio subsecuente ni+1 se obtiene a partir de los dígitos de menor orden del producto
ani.
Ejemplo:
Sea d = 4, m = 104 = 10,000, h = 5*104−2 = 500
1.− n0 = 5379
2.− a " 102 = 100
18
a = 200(0)+91 ó a = 200(1)−91
a = 91 ó a =109
3.− an0 = (0091)(5379) =00489489
n1 = 9489 r1 = 9489 = 0.9484
10000
y así sucesivamente...
Pruebas Estadísticas
Las propiedades estadísticas que deben poseer los números pseudoaleatorios generados por los métodos
congruenciales tiene que ver con independencia y aleatoriedad estadísticas.
La prueba de la frecuencia se usa para comprobar la uniformidad de una sucesión de N números
pseudoaleatorios. Para cada conjunto de N números pseudoaleatorios r1, r2,...rn, se divide el intervalo unitario
(0,1) en x subintervalos iguales; el número esperado de números pseudoaleatorios que se encontrarán en cada
subintervalo es N/x. Si fj (j=1, 2...x) denota el número que realmente se tiene de números pseudoaleatorios ri
(i=1,2,...N) en el subintervalo (j−1)/ x " ri < j/x entonces el estadístico:
tiene aproximadamente una distribución x2 con x−1 g.l
La hipótesis de que los números pseudoaleatorios en el de conjunto de N números pseudoaleatorios, son
verdaderos números pseudoaleatorios, debe rechazarse si x12 con x−1 g.l. excede su valor critico fijado por el
nivel de significancia deseado.
Ejercicio:
Verificar que el conjunto de 100 números aleatorios se distribuye uniformemente, con = 5%.
0.001213 0.898980 0.578800 0.676216 0.050106
0.499629 0.282693 0.730594 0.701195 0.182840
0.108501 0.386183 0.769105 0.683348 0.551702
0.557434 0.799824 0.456790 0.216310 0.876167
0.092645 0.589628 0.332164 0.031858 0.611683
0.762627 0.696237 0.170288 0.054759 0.915126
0.032722 0.299315 0.308614 0.833586 0.517813
19
0.352862 0.574100 0.265936 0.859031 0.433081
0.941875 0.240002 0.655595 0.385079 0.908297
0.199044 0.936553 0.888098 0.817720 0.369820
0.339548 0.543258 0.624006 0.091330 0.416789
0.155062 0.582447 0.858532 0.887525 0.337294
0.751033 0.239493 0.535597 0.333813 0.493837
0.634536 0.199621 0.650020 0.745759 0.791130
0.227241 0.191479 0.406443 0.081288 0.734352
0.721023 0.222878 0.072814 0.641837 0.442675
0.789616 0.052303 0.106994 0.558774 0.141519
0.760869 0.120791 0.277380 0.657266 0.792691
0.805180 0.826543 0.294530 0.208524 0.429894
0.585186 0.986111 0.344882 0.343580 0.115375
0 − 0.1
0.001213
0.092645
0.032722
0.052303
0.072814
0.031858
0.054759
0.091330
0.081128
0.050106
0.1 − 0.2
0.108501
0.199044
0.155062
0.199621
0.191479
0.120791
0.170288
0.106944
0.182840
0.141519
0.115375
0.2 − 0.3
0.227241
0.282693
0.299315
0.210002
0.239493
0.222878
0.265936
0.277380
0.294530
0.216310
0.208524
0.3 − 0.4
0.352862
0.339548
0.386183
0.332164
0.308614
0.344882
0.385079
0.333813
0.343580
0.369820
0.337294
0.4 − 0.5
0.499629
0.456790
0.406443
0.433081
0.416789
0.493837
0.442675
0.429894
0.5 − 0.6
0.557434
0.585186
0.589628
0.574100
0.543258
0.582447
0.578800
0.535597
0.558774
0.551502
0.517813
0.6 − 0.7
0.634536
0.696237
0.655595
0.624006
0.650020
0.676216
0.683348
0.641837
0.657266
0.611683
0.7 − 0.8
0.762627
0.751033
0.721023
0.789616
0.760869
0.799824
0.730594
0.779105
0.701195
0.745795
0.791130
0.734352
0.792691
0.8 − 0.9
0.805480
0.898980
0.826543
0.888098
0.858532
0.833586
0.859031
0.817720
0.887525
0.876167
0.9 − 1.0
0.941875
0.936553
0.986111
0.915126
0.908297
Fo 10 11 11 11 8 11 10 13 10 5
Para resolverlo se utiliza la siguiente ecuación:
Donde:
20
F.E. = Total de números aleatorios = 100 = 10
Números de subintervalos 10
F.O. = Total de números observados en cada subintervalo.
Nosotros especificamos arbitrariamente un valor de = 0.05 (esto significa un error del tipo I del 5%) el valor
obtenido de Ê = 4.2 así pues podemos compararlo con el valor crítico de:
X20.05(9) = 16.919
Puesto que X20.05(9) = 16.919 > Ê = 4.2, entonces podemos decir que la tabla de números aleatorios se
distribuye uniformemente.
Prueba De Medias
Consiste en verificar que los números generados tengan una media estadísticamente igual a 1/2, de este modo
la hipótesis planteada es:
Ho = hipótesis nula: = ½
H1 = hipótesis alternativa: " ½
Paso 1 Calcular la media de los n números generados
Paso 2 Calcular los límites superior e inferior de aceptación
Paso 3 Si el valor X se encuentra entre li y ls, aceptamos que los números tienen una media estadísticamente
igual a ½ con un nivel de aceptación 1−.
Ejemplo:
Realice la prueba de medias a los primeros 30 números aleatorios producidos con un generador congruencial
mixto, con un nivel de confianza del 95%.
Los números generados son:
21
0.03991 0.10461 0.93716 0.16894 0.98953 0.73231
0.25543 0.34565 0.02345 0.67347 0.10987 0.25678
0.71890 0.61234 0.86322 0.94134 0.99872 0.27657
0.82345 0.12387 0.05389 0.82474 0.59289 0.36782
0.72484 0.48999 0.50502 0.39528 0.36782 0.90234
2.56253 1.67646 2.38274 3.00377 3.05883 2.53582
= 15.22015
X = 15.22015/30 = 0.507338
X " 0.5000
Para buscar el valor de Z0.025 se resta 1 − 0.025 = 0.975 y se busca en la tabla
|Z0.025| = 1.96
lsx = 0.5298 lix " X " lsx
lix = 0.4701 !
Ho se acepta
Ejemplo: Generar números aleatorios dados por la siguiente función
n
1
2
3
4
5
6
7
8
9
Xn
29
87
61
83
49
47
41
23
69
rn
0.29
0.87
0.61
0.83
0.49
0.47
0.41
0.23
0.69
22
10
n
11
12
13
14
15
16
17
18
19
20
21
7
Xn
21
63
89
67
1
3
9
27
81
43
29
0.07
rn
0.21
0.63
0.89
0.67
0.01
0.03
0.09
0.27
0.81
0.43
0.29
Pruebas de frecuencias
Sub int
0 − 0.2
0.2 − 0.4
0.4 − 0.6
0.6 − 0.8
0.8 − 1
Fj
4
4
4
4
4
23
Pruebas de medias
Prueba De Varianza
Consiste en verificar si los números aleatorios generados tienen una variancia de 0.083, de tal forma que la
hipótesis queda expresada como:
Ho: V(x) = 1/12
Hi: V(x) " 1/12
Paso 1. Calcular la variancia de los n números generados V(x).
Paso 2. Calcular los límites superior e inferior de aceptación.
Paso 3. Si V(x) se encuentra entre los valores de liv(x) y lsv(x), aceptamos la hipótesis nula y los números
aleatorios tiene una variancia estadísticamente igual a 1/12.
Ejemplo:
Realice la prueba de variancia a los siguientes 30 números con un nivel de confianza del 95%.
.72484 .48999 .50502 .39528 .36728 .90234
.71890 .61234 .86322 .94134 .99872 .27657
.34565 .02345 .67347 .10987 .25678 .25593
24
.82345 .12387 .05389 .82474 .59289 .36782
.03991 .10461 .93716 .16894 .98953 .73231
x = 0.507337
Aplicando la ecuación del paso 1 se tiene V(x)= 0.104. Al calcular los límites de aceptación para muestras de
tamaño 30,
El valor se encuentra dentro de límites de aceptación por lo que se acepta que la variancia de la muestra es
estadísticamente igual a 1/12.
Prueba De Poker
Las pruebas de independencia consisten en demostrar que los números generados son estadísticamente
independientes entre sí, esto es, que no depende uno de otro.
Hay varios métodos, entre los cuales están:
• La prueba de Poker
• La prueba de corridas arriba y abajo
• La prueba de corridas arriba debajo de la media
• La prueba de la longitud de las corridas
• La prueba de series
La prueba de poker plantea la siguiente hipótesis:
Ho : ri " independiente
H1 : ri " dependiente
Paso 1. Calcular las probabilidades esperadas para un juego de poker con 5 cartas numeradas del 0 al 9 con
reemplazos. Se tienen 7 eventos con las siguientes probabilidades:
P (Pachuca) = 0.3024
P (par) = 0.5040
P (2 pares) = 0.1080
P (1 tercia) = 0.0720
P (Full) = 0.0090
P (Poker) = 0.0045
25
P (Quintilla) = 0.0001
Paso 2. Calcular la frecuencia esperada de cada uno de los eventos multiplicando la probabilidad de cada
evento por la cantidad de números aleatorios generados.
Paso 3. Para cada número aleatorio generado verificar si es Pachuca, 1 par, 2 pares, etc., tomando los
primeros 5 dígitos a la derecha del punto decimal. Con estos resultados se genera una tabla de frecuencias
observadas de cada uno de los eventos.
Paso 4. Calcular la estadística:
Paso 5. Si el valor de C2 no excede al estadístico de tablas i2 con 6 g.l. y una probabilidad de rechazo alfa
=, entonces se acepta que los datos son estadísticamente independientes entre sí.
Ejemplo:
Realice la prueba de Poker a los siguientes 30 números con un nivel de confianza del 95%. (" = 5%)
0.72484 0.48999 0.50502 0.39528 0.36782 0.90234
0.71890 0.61234 0.86322 0.94134 0.99872 0.27657
0.34565 0.02345 0.67347 0.10987 0.25678 0.25593
0.82345 0.12387 0.05389 0.82474 0.59289 0.36782
0.03991 0.10461 0.93716 0.16894 0.98953 0.73231
Pachuca
Un Par
Tercia
Dos Pares
Full
Poker
Quintilla
FO
14
14
1
1
0
0
0
PE
0.3024
0.5040
0.0720
0.1080
0.0090
0.0045
0.0001
FE
9.072
15.12
2.16
3.24
0.27
0.135
0.003
Ð.05, 6 = 12.6
" H0 se acepta
Prueba De Series
26
Ho : ri " independiente
H1 : ri " dependiente
Paso 1 Crear un histograma de dos dimensiones con m intervalos, clasificando cada pareja de números
consecutivos (ri, ri + 1) dentro de las casillas de dicho histograma de frecuencias. El número total de pares
ordenados en cada casilla formará la frecuencia observada: Foi.
Paso 2 Calcular la frecuencia esperada en cada casilla FE de acuerdo con FE=núm/m donde núm. es el
número total de parejas ordenadas.
Paso 3 Calcular el error Ê, con la ecuación:
Paso 4 Si el valor de Ê es menor o igual al estadístico de tablas Ê con m−1 grados de libertad y una
probabilidad de rechazo , entonces aceptamos que estadísticamente los números son independientes.
Ejemplo:
Realice la prueba de series a los siguientes 30 números con un nivel de confianza del 95%
0.72484 0.48999 0.50502 0.39528 0.36782 0.90234
0.71890 0.61234 0.86322 0.94134 0.99872 0.27657
0.34565 0.02345 0.67347 0.10987 0.25678 0.25593
0.82345 0.12387 0.05389 0.82474 0.59289 0.36782
0.03991 0.10461 0.93716 0.16894 0.98953 0.73231
Al formar parejas ordenadas se obtiene:
(.72484, .48999) (.48999, .50502) (.50502, .39528) ... (.98953, .73231)
La clasificación en una tabla de frecuencias de dos dimensiones de 4 x 4, (m=16), queda
ri+1 1
0.75
0.50
0.25
0
3
1
1
2
0.25
2
1
3
2
0.50
1
1
3
1
0.75
2
3
1
2
1
ri
Tomando en cuenta que se tienen 29 parejas ordenadas clasificadas uniformemente en 16 casillas, la
frecuencia esperada FE en cada una es 1.8125 y al calcular el error con la ecuación del paso 3, para cada una
de las 16 celdas o intervalos de la tabla anterior se tiene:
27
El valor de la tabla con un nivel de confianza del 95% y con 15 grados de libertad es igual a 25. Si se
compara Ê =5.75 con este valor, se acepta la independencia de la secuencia de números.
Por consiguiente Ho se acepta.
Ejemplo:
Realice la prueba de Poker y la prueba de series a los siguientes 30 números con un nivel de confianza de 95%
0.03991
0.38555
0.17546
0.32643
0.69572
0.24122
0.61196
0.30532
0.03788
0.48228
0.10461
0.95554
0.73704
0.52861
0.68777
0.66591
0.30231
0.21704
0.97599
0.63379
0.93716
0.32886
0.92052
0.95189
0.39510
0.27699
0.92962
0.10274
0.75867
0.85783
Prueba de poker
Evento
Pachuca
Par
Tercia
2 Pares
Full
Poker
Quintilla
PE
0.3024
0.5040
0.0720
0.1080
0.0090
0.0045
0.0001
FO
7
15
5
3
0
0
0
FE
9.072
15.12
2.16
3.24
0.27
0.135
0.003
Prueba de series
IIIIII
II
III
6
III
2
3
IIII
28
3
III
0
IIIII
4
III
3
5
3
Apéndice A
Elementos de la teoría de números
A fin de comprender totalmente y apreciar los métodos para generar números pseudoaleatorios que se
consideran, es requisito previo tener un conocimiento básico de los elementos de la teoría de los números. El
apéndice A contiene un conjunto básico de definiciones, ejemplos y teoremas de la teoría de números que
resultan pertinentes para la comprensión de los fundamentos racionales sobre los que se basan los métodos.
Definiciones
Definición 1. Para dos enteros a y b, con b " 0, existe un único par de enteros t y n, tal que a = bt + n 0 " n <
øbø, en donde t es el cociente n es el residuo.
Definición 2. Un entero a es divisible entre un entero b si existe un entero t tal que
Definición 3. Un entero p es un número primo si no es 0 ni ± 1 y si sus únicos divisores son ±1 y ± p. Por
ejemplo, los primeros primos positivos son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37.
Definición 4. Un entero g es el máximo común divisor (m.c.d.) de dos enteros a, b, si g es un divisor común
de a y b, además es un múltiplo de cualquier otro divisor común de a y b. Notación: m.c.d. (a,b) = g, o similar
a (a b) = g.
Definición 5. Un entero d es el mínimo común múltiplo (m.c.m.) de dos enteros a y b si d es un divisor de
cada múltiplo común de a y de b, y es a su vez un múltiplo común. Notación: m.c.m. [a, b] = d o [a, b] = d.
Definición 6. Se dice que los enteros a y b son primos relativos si (a, b) = 1.
Definición 7. Dos enteros a y b son congruentes módulo m si su diferencia es un múltiplo entero de m. La
relación de congruencia se expresa por la notación a " b (mod m), que se lee a es congruente con b módulo m,
esto también significa que:
• (a−b) es divisible entre m, y
29
• a y b dan el mismo residuo al ser divididos entre ømø.
Ejemplo: 5590 " 6 (mod 8) y 2327 " 27 (mod 102).
Definición 8. Para una a dada, el menor entero positivo n tal que a " n (mod m) recibe el nombre de residuo
módulo m. Existe m residuos distintos (mod m); 0, 1, 2, . . .,m − 1.
Definición 9. Una clase de enteros mutuamente congruentes para un módulo dado, forman una clase residual.
Existen m distintas clases residuales (mod m). Ejemplo: si m=2, las dos clases residuales distintas son: la
colección de todos los números impares y la de los números pares, respectivamente.
Definición 10. Para un módulo dado m, el conjunto de los m enteros congruentes en algún orden con los
residuos 0, 1, 2, . . ., m − 1, forman un sistema residual completo.
Definición 11. Un subconjunto de un sistema residual completo que contenga todos los enteros que sean
primos relativos de m, recibe el nombre de un sistema residual reducido.
Definición 12. El número de enteros positivos menores que m y primos relativos de m, se conoce como la
función Fi de Euler y se denota por (m). Un sistema residual reducido contiene (m) enteros. Si m = p, es
un número primo, entonces (p) = p − 1.
Definición 13. Los residuos potenciales son los residuos de las potencias sucesivas de un entero a módulo m.
Si el residuo de la i−ésima potencia de a (mod m) se denota por ni, entonces todos los residuos potenciales
satisfacen la relación de congruencia ni " ai (mod m) (i = 1, 2, 3, . .)
Definición 14. Si (a, m) = 1, el mínimo exponente positivo i = h, tal que ai " 1 (mod m), se dice que es el
orden de a (mod m). El mínimo exponente positivo h también recibe el nombre de multiplicador de m cuando
a se dice que pertenece a m. En este caso, h se denota por h = (m). El orden h de a (mod m) es igual al
número total de números distintos, esto es, la longitud de una sucesión que no se repite de residuos
potenciales de a, llamada el período de la sucesión {ni};
i = 1, 2, . . ., h (mod m).
Definición 15. Un entero a de orden h = (m) (mod m) es la raíz primitiva de m. Ejemplo: h = 3 " (31) para
a = 5 en el ejemplo (1) de la definición 13, pero h = 30 = (31) para a = 3 en el ejemplo (2);
consecuentemente 3 es la raíz primitiva de 31.
Ejemplos de residuos potenciales son:
• a = 5, m = 31, (m) = 30
i ai ni " ai (mod m)
155
2 25 25
3 125 1*
4 625 5
.......
30
• a = 3, m = 31, (m) = 30
i ai ni i ni i ni
1 3 3 11 13 21 15
2 9 9 12 8 22 14
3 27 27 13 24 23 11
4 81 19 14 10 24 2
5 243 26 15 30 25 6
6 729 16 16 28 26 18
7 2187 17 17 22 27 23
8 6561 20 18 4 28 7
9 19683 29 19 12 29 21
10 59049 25 20 5 30 1*
• La sucesión de los residuos potenciales se repite para potencias de orden superior.
Teoremas
Teorema 1. Si a " b(mod m) y x " y(mod m), entonces a ± x " b ± y(mod m), y ax " by(mod m).
Teorema 2. Si (d, m) " g, entonces dx " dy (mod m) implica que x " y (mod m/g).
Teorema 3. Si a " b (mod m) y d es un divisor de m, entonces a " b (mod d). Las demostraciones de los
teoremas 1, 2 y 3, resultan de la definición [2 p.24].
Teorema 4. Cualquier entero m (distinto de 0 ó ± 1) se puede factorizar de forma única en números primos,
esto es, m = piei, (i = 1, 2, 3, . . .), donde ei es una constante y denota al producto p1ei x p2e2 x p3e3. . .
La prueba de esto se debe a Euclides [2, p.21].
Teorema 5. Si (a, m) = 1, entonces a(m) " 1 (mod m), de lo cual se sigue que:
• El mayor orden posible de a es h = (m) cuando a es una raíz primitiva de m.
• Para n < m tales que (m, n) = 1, nah " n (mod m), donde h = (m). La prueba de esto se atribuye a Euler y se
obtiene de los teoremas 2 y 3.
Teorema 6. Para todas las potencias de un número primo p > 2 existen las raíces primitivas, i.e. existe un
número tal que (a, pe) = 1 y a(pe) " 1 (mod pe) donde h " (pe).
Teorema 7. Si m = piei, entonces (m) = (pi − 1)piei−1. La demostración se debe a Euler.
Teorema 8. Si m = pe y p es un primo impar entonces h = (m) = (p−1) pe−1 = (m) para valores de a que
son raíces primitivas de m.
31
Corolario: Si p = 2, i.e., h = (m) = 2e−2 para e > 2, entonces (m) " (m). La prueba se debe a Euler.
Teorema 9. Si m = piei para i = 1, 2, 3, . . ., s, entonces:
• (m) = m.c.m.[ (p1e1), (p2e2), . . ., (pses)].
• Existe valores de a cuyo orden es igual a (esto es, pertenece conjuntamente a) cada (piei). La
demostración está en [21, p.293] y se sigue del teorema chino del residuo debido a Sun−Tse [21, p.246].
Corolario: Si p1 = 2, entonces (m) = m.c.m. [(2e1), (p2e2), (p3e3), . . .].
Teorema 10. El menor entero positivo a tal que (ah − 1)/ (a − 1) " 0 (mod m) es h = m, si (1) a " 1 (mod p) si
p es un factor primo de m y (2) a " 1 (mod 4) si 4 es un factor de m. La prueba se debe a Hull y Dobell.
UNIDAD III
Generación De Valores De Variables Aleatorias
La generación de estadísticas simuladas o sea de valores de las variables aleatorias, es de naturaleza numérica
y debe configurarse mediante la aportación de números pseudoaleatorios.
Al querer reproducir algún proceso estocástico particular, se recurre al empleo de las distribuciones teóricas
convencionales y en su defecto a una distribución empírica.
Al considerar procesos estadísticos que involucran variables aleatorias continuas o discretas, se tiene que
definir F(x), ó función de densidad acumulada (fnDn).
Si la variable aleatoria es discreta, x tomará valores específicos y F(x) será una función escalonada. Si la
variable aleatoria es continua, x tomará valores en un rango especificado.
Si F(x) es continua en el dominio de x, entonces F(x) se podrá diferenciar, para lo cual se define
{Función de densidad de probabilidad}
Luego entonces:
f(t) representa el valor de la función de densidad de probabilidad de la variable aleatoria cuando x = t.
También tenemos que: 0 " r " 1 y F(x) = r.
Existen tres métodos para generar los valores de variables aleatorias a partir de distribuciones de probabilidad:
• Método de la transformación inversa
• Método de rechazo
• Método de composición (convolución)
Método De La Transformación Inversa
Se quiere generar valores de xi a partir de F(x). En primer lugar hay que obtener F(x).
32
Puesto que F(x) se define en el rango de 0 a 1 se pueden generar números aleatorios para sustituir a F(x)=r.
De manera unívoca cada valor de ri define un valor de F(x).
Al considerarla función inversa de F ó F−1(x) en caso de ser conocida, podemos hacer: x0 = F−1(r0).
Podemos de manera general establecer que:
Entonces
Ejemplo:
Genérese los valores x de variables aleatorias con una función de densidad f(x) = 2x 0 " x " 1
ó
Ejemplo:
Genérese los valores x de variables aleatorias con función de densidad
1° parte 2° parte
Al tomar la transformación inversa y resolviendo:
33
si
si
Para generar un valor de x se debe en primer lugar generar un valor de r; cuando r < ¼ el valor de x estará
determinado por x = 4r.
Si r > ¼ entonces x = 4/3 r + 2/3
Ejemplo:
Se desea simular una variable aleatoria con dn exponencial
Ejemplo:
Se desea simular n números aleatorios con dn uniforme entre (a,b):
Método De Rechazo
Este método requiere que f(x) sea una distribución de probabilidad acotada y con rango finito ó a a " x " b.
Los pasos requeridos son:
34
• Generar 2 números aleatorios r1 y r2
• Determinar el valor de la variable aleatoria X de acuerdo a la relación lineal de r1:
X = a + (b−a)r1
• Evaluar la función de probabilidad en x = a + (b−a)r1: [x = a+(b−a)r1]
• Determinar si se cumple:
r2 " [a+(b−a)r1]/M
M = es cota superior.
f(x)
M
abX
Si r2 > f(x)/M entonces r1 y r2 se descartan y se seleccionan otros valores de r1 y r2
Ejemplo: Se desea generar números aleatorios con la distribución.
2x 0 " x " 1
f(x)
0 en otra parte
En este caso:
a=0b=1M=2
• Generar R1 y R2
• Calcular x = r1
• f(x) = 2r1
• r2 " 2r1 = 2r1 r2 " r1 ! x = r1
M2
Ejemplo: Se desea generar variables aleatorias X para la siguiente densidad de probabilidad.
si a " x " b
si b " x " c
M=
35
Como la función se compone de 2 partes:
f(x)
M
abcX
Los pasos para simular esta distribución son:
• Generar r1 y r2
• Calcular x = a + (c − a)r1
• Es x < b si la respuesta es afirmativa
si la respuesta es negativa, entonces f(x) es :
• Es
Si la respuesta es afirmativa, entonces se considera como valor x = a + (c − a)r1 Simulada, en caso contrario
regresemos al paso 1.
Ejemplo.
Calculando la segunda parte de la función 1° parte
2° parte
Resolviendo la ecuación de segundo grado
mediante la fórmula general
36
Método De Composición
En esta técnica f(x), la función de densidad probabilidad de la distribución que se va simular, esta expresada
como una mezcla de probabilidad de funciones de densidad propiamente seleccionadas.
Este procedimiento está basado en la definición de probabilidad condicional o la ley de probabilidades
compuestas.
Matemáticamente sea g(x|y) una familia de funciones de densidad de un parámetro donde y es el parámetro
que identifica de manera única a g(x). Si un valor de y es ahora descrito de una función de distribución
acumulada H(y) y entonces si x es una muestra de g(x), para seleccionar y, la función de densidad para x será:
Usando este principio, distribuciones más complicadas pueden ser generadas de distribuciones más simples
las cuales son en sí mismas fácilmente generadas, por la técnica de la transformación inversa o la técnica de
rechazo.
Ejemplo: Generar una varianza aleatoria de
cuando (sea)
y
Una varianza es ahora obtenida desde una función de densidad cuya su función de distribución acumulativa es
H(y). Una vez que y es seleccionada, esta determina una particular g(x) = ye−yx. La varianza deseada de f(x)
es entonces una varianza simplemente generada de g(x) = ye−yx. Para continuar con las siguientes
instrucciones, genera dos varianzas uniformes R1 y R2, y cuando:
Entonces x es la varianza deseada de:
Esta técnica es apropiada cuando se desea generar distribuciones de tipo mas alto usando distribuciones La
dificultad recae en identificar la H(y) y g(xøy) la cuál se necesita para producir una f(x) dada dentro de la
relación.
Afortunadamente, las estadísticas matemáticas nos han provisto de varias relaciones funcionales llamadas
convoluciones que pueden ser usadas en la generación de ciertas desviaciones aleatorias. Los siguientes
ejemplos sirven para ilustrar el procedimiento.
La Distribución De Poisson
37
Si los intervalos de eventos similares están distribuidos exponencialmente, el número de eventos ocurridos en
un intervalo unitario de tiempo, tiene la distribución de Poisson.
Las aplicaciones de las variables aleatorias de Poisson incluyen tantas áreas tales como control de los
inventario, teoría de colas, control de calidad, flujo de tráfico y muchas otras áreas ciencias administrativas.
La función de densidad de probabilidad para la distribución de Poisson esta dada por:
donde es el número esperado de sucesos por unidad de tiempo. Esto implica que el tiempo entre eventos
esta distribuido exponencialmente con media de
Podemos utilizar esta relación entre la distribución Poisson y la exponencial para generar desviaciones de la
distribución de Poisson.
Una desviación x de Poisson puede ser definida de la siguiente manera:
donde y1, y2,....,yx+1 son desviaciones aleatorias de una distribución exponencial teniendo como media 1/ y
son generadas por (la técnica de transformada inversa)
donde Ri está dada por la distribución uniforme. En conclusión, las sumas acumulativas son generadas hasta
que se obtiene la desigualdad. Cuando esto ocurre, x es la desviación aleatoria de Poisson deseada.
Otra forma de este mismo procedimiento es definir la desviación x de Poisson cuando:
donde yi es otra vez las desviaciones de la distribución exponencial pero con media 1/, esto es:
Las 2 técnicas son esencialmente las mismas, pero la primera parece ser más apropiada con la definición de la
distribución exponencial donde las yi's tiene una media de
.
Ejemplo.
Sabemos que por la teoría de la probabilidad que si el número de eventos se puede describir a través del flujo
de Poisson, el tiempo entre la ocurrencia de eventos debe ser exponencial. En la distribución de Poisson el
38
resultado se expresa como el número de eventos n que ocurren en un determinado tiempo t. Por lo tanto para
muestrear la distribución exponencial con media
tantas veces como sea necesario hasta que la suma de las variables aleatorias generadas exceda a t por vez
primera. En este caso, el valor de Poisson muestreado n se toma igual al número de veces que se muestreo la
distribución exponencial −1.
Supóngase que se desea muestrear una distribución de Poisson
durante un periodo de 1.4 hrs.
n
rn
tn
1
0.058962
0.9436
2
0.673284
0.1318
3
0.479909
0.2447
4
0.948578
0.1075
5
0.61396
0.1624
0.9436
1.0754
1.3201
1.3376
1.5002
t = 1.4
Distribución Erlang
La distribución Erlang es una forma de la distribución gamma con K igual a un entero positivo. Estadísticos
Matemáticos han probado que esta distribución es solo la suma de las variables exponenciales de K, cada una
con un valor esperado 1/k.
Para generar una desviación Erlang, nosotros solo necesitamos la suma de las desviaciones exponenciales K,
cada una con el valor esperado 1/k. De esta manera la varianza x de Erlang es esperada como:
donde yi es una desviación exponencial generada por la técnica de la transformada inversa Ri es un número
aleatorio de la distribución uniforme.
Distribución Binomial
Una variable aleatoria x definida como el número de eventos exitosos en una secuencia de n tiradas o intentos
independientes de Bernoulli, cada una con probabilidad de éxito p, es conocida como una variable aleatoria
binomial. La distribución binomial es una de las más importantes en las distribuciones estadísticas usadas en
un área de ejemplificación y control de calidad. La función de densidad de probabilidad binomial está dada
por:
39
donde
p = probabilidad de éxito por tirada
q = 1−p
n = número de tiradas
x = número de éxitos, en entero
Para generar una desviación binomial con parámetros p y n el procedimiento es el siguiente:
• Generar n desviaciones aleatorias uniformes
• Contar el número de varianzas uniformes menor o igual a p
• El número encontrado en el paso 2 es igual al valor de la varianza binomial
Este procedimiento puede entonces ser repetido tantas veces como sea necesario para generar otras
desviaciones binomiales.
Otro procedimiento involucrado que usa la distribución normal como una aproximación a la binomial para
casos donde n " 20 y np " 10. Desde que la varianza binomial es un entero, la varianza normal usada como una
aproximación debe ser redondeada al valor entero más cercano. Este método es más rápido pero es solo una
aproximación.
Método De Transformación Inversa Para Distribuciones Discretas
Se utiliza cuando se desea simular variables aleatorias de tipo discreto, como la distribución de Bernoulli,
binomial, Poisson, discreta general, etc., El procedimiento es similar al continuo pero el valor de F(x) se
encuentra acumulando las probabilidades de los eventos individuales p(x). También en este caso, F(x) está
definida en el intervalo 0 a 1; se genera un número aleatorio ri y se determina el valor de la variable aleatoria
cuya distribución acumulada es igual a ri.
La figura nos muestra en forma gráfica el procedimiento anterior para una función cualquiera p(x) discreta.
La dificultad de este método radica en que no existe una expresión final sencilla, como en el caso de la
continua.
Metodología
Paso 1 Calcular todos los valores de p(x) para la distribución propuesta.
Paso 2 Calcular la probabilidad acumulada F(x) para cada valor de x.
Paso 3 Generar un valor ri. Verificar en F(x) a qué intervalo de x pertenece y ese será el número aleatorio
generado por la distribución propuesta.
Ejemplo.
40
Números aleatorios
UNIDAD IV
Lenguajes De Simulación
41
Introducción
El GPSS/TM! y el GPSS/H ! son aplicaciones nuevas e interactivas dentro del ambiente IBM del GPSS,
General Purpose Simulating System (en español, Simulación de Sistemas de propósito General) desarrollado a
principios de la década de los 60 por Geoffrey Gordon. El objetivo principal del GPSS es la modelación de
sistemas discretos.
Cualquier sistema por simular en este lenguaje se debe describir mediante un diagrama de bloques que
representan las actividades, unidos mediante líneas que representan la secuencia que seguirán un grupo de
transacciones, que a su vez se mueven a través de los bloques. Las transacciones dependen de la naturaleza del
sistema, por ejemplo un sistema de comunicaciones se refiere al movimiento de mensajes; un sistema de
transporte se refiere al vehículos motorizados; un sistema de producción, al movimiento de piezas.
La simulación mediante GPSS se realiza con dos elementos básicos conocidos como transacciones y bloques.
Una transacción es aquello que fluye a través del sistema de manufactura, y que puede ser: información,
piezas, órdenes de producción, fallas, operarios, mecánicos, etcétera, mientras que un bloque se define como
cualquier operación que realiza una transacción dentro de un sistema; algunas operaciones pueden ser las
siguientes: procesamiento, entrada a un almacén, salida de un almacén, inicio de proceso, fin de proceso,
salida del sistema, ensamble, desensamble, etcétera.
En un principio los lenguajes de simulación se elaboran utilizando algún lenguaje de propósito general como
FORTRAN, ALGOL, PL/1, etc. Esto requería un gran trabajo de programación; con el paso del tiempo se
fueron identificando diferentes situaciones, hasta llegar a estandarizarse ciertas instrucciones de programación
en rutinas bien definidas.
De este concepto nació el diseño de lenguaje específico para programas de simulación con los cuales se ha ido
facilitando al usuario la programación de sus modelos.
Estructura Del Lenguaje:
Para usar el GPSS se requiere tener conocimientos de los comandos más comunes del sistema DOS. Dentro de
un programa de GPSS se pueden distinguir cuatro tipos de instrucciones, cada una de las cuales se detalla a
continuación:
• Instrucciones de acceso al sistema GPSS. Estas instrucciones permiten al usuario el acceso al compilador
del GPSS y dependen de cada tipo de versión utilizada; en este punto se recomienda hacer referencia al
manual respectivo.
• Instrucciones de definición de variables. Son un tipo de instrucciones especiales de carácter opcional; su
inclusión depende del sistema a modelar. Estas instrucciones siempre se encuentran relacionadas con las
instrucciones de lógica del programa. Dentro de las instrucciones se encuentran las siguientes: definición de
las funciones a utilizar, definición de capacidad de los almacenes, definición del número de operarios o
maquinas por estación, inicialización de variables, definición de las operaciones matemáticas por utilizar,
etcétera. A continuación se muestra una lista de las definiciones más comunes utilizadas en GPSS:
• Instrucciones de Lógica del programa. Este tipo de instrucciones son las conocidas como bloques; son
las que se ejecutarán durante la simulación; la lógica dependerá de cada sistema que se desee simular.
Teniendo en cuenta la función que realizan, una clasificación de los bloques o instrucciones de lógica es la
siguiente:
Simulación de inicio de proceso y captura de máquina SEIZE
ENTER
42
PREEMPT
Simulación de fin de proceso y liberación de máquina RELEASE
LEAVE
RETURN
Simulación de entrada de transacciones a un almacén QUEUE
ENTER
LINK
Simulación de salida de transacciones de un almacén DEPART
ENTER
UNLINK
Simulación de entrada transacciones al sistema GENERATE
SPLIT
Simulación de la salida de transacciones del sistema TERMINATE
Simulación de diversos tipos de proceso ADVANCE
ASSEMBLE
MATCH
GATHER
Simulación del control de flujo de transacciones TRANSFER
TEST
GATE
LOGIC
SELECT
LOOP
BUFFER
Bloques de operaciones aritméticas SAVEVALUE
MSAVEVALUE
43
ASSIGN
INDEX
PRIORITY
Bloque de creación de estadísticas TABULATE
Las instrucciones de tipo b) y c) se codifican siguiendo un formato general, dentro del cual se pueden
distinguir los siguientes elementos:
2
Loc
8
Bloque
19
Operandos
31
Comentarios
Donde:
• Loc: Representa el nombre de una etiqueta o una dirección. La etiqueta es un campo opcional y su
existencia depende de la lógica del programa. Está localizado en la columna 2. Su función es similar a
las etiquetas en Fortran.
• Bloque: Es la instrucción específica por ejecutar. Representa la acción que va a llevar a cabo cada una
de las transacciones que cruza por allí. Se coloca en la columna 8.
• Operandos: Cada bloque representa la acción por ejecutar, sin embargo, es necesario incluir un
complemento, como puede ser la duración o el lugar de dicha acción. Los operandos son las
características individuales de cada bloque, y dependerán de la lógica del sistema. Se colocan en la
columna 19.
• Comentarios: Es el espacio donde el usuario puede colocar cualquier indicación o identificación de la
instrucción.
En algunas versiones del GPSS, como en la de GPSS/PC!, cada instrucción debe ir precedida de un número de
instrucción en forma ascendente de acuerdo con la lógica, pero se utiliza sólo como referencia para la edición
del programa.
• Instrucciones de control de la simulación. Estas instrucciones son las que controlan la ejecución, edición
y manejo de archivos en GPSS/PC!. Las principales son: END, START, SIMULATE.
Así, una vez dados los lineamientos generales, elementos y estructura del GPSS, a continuación se explican de
manera más detallada los principales bloques del GPSS, incluyendo algunos ejemplos ilustrativos.
Lenguajes Específicos De Simulación
Ventajas:
• El tiempo de desarrollo de la programación es muy corto porque se trata de lenguajes sintéticos basados en
programación por bloques o subrutinas, e incluso algunos de ellos están encaminados al usuario de tal
forma que ya no es indispensable programar.
• Permite realizar análisis de sensibilidad fácilmente y en un corto tiempo. Tiene alta flexibilidad para hacer
cambios.
• Integra funciones como generación de números aleatorios, análisis estadístico y gráficas.
• Tiene una alta fiabilidad que conduce a una validación de resultados sencilla y rápida.
44
• Permite definir y entender el sistema a simular gracias a que se tiene una visibilidad superior de la
estructura general del modelo y se aprecian más fácilmente las interrelaciones.
Desventajas
• Es necesario invertir en adquisición del software.
• Se requiere invertir tiempo y costo en la capacitación de los programadores del nuevo lenguaje.
• La computadora de la compañía y el software a adquirir deben ser compatibles.
Características De Los Lenguajes De Simulación
En la actualidad los lenguajes que existen en el mercado tienen una serie de características propias que los
distinguen de otros, entre esas características están las siguientes:
• El procedimiento utilizado para generar los números aleatorios uniformes y las variables no uniformes
conocidas.
• La forma de adelantar el reloj de simulación, que puede hacerse con incrementos de tiempo fijo como
DYNAMO o con incrementos al próximo evento como GPSS.
• Las estadísticas que se obtienen y el formato en que se representan los resultados.
• El lenguaje en que esta escrito, lo cual influye en la forma de detectar y reportar los errores de lógica.
• Su compatibilidad de comunicación con determinado tipo de computadoras, con otro lenguaje o
simplemente con el usuario.
Clasificación De Los Lenguajes De Simulación
Los lenguajes de simulación se pueden clasificar de la siguiente forma:
• Lenguajes de propósito general
♦ FORTRAN, ALGOL, ASEMBLER, PL/1, C, PASCAL, BASIC.
• Lenguajes de simulación discreta
♦ Enfoque de flujo de transacciones: GPSS, BOSS
♦ Enfoque de eventos: GASPII, SIMSCRIPT, SIMCOM, SIMPAC
♦ Enfoque de procesos: SIMULA, OPL, SOL, SIMULATE
♦ Enfoque de actividades: CSL, ESP, FORSIM−IV, MILITRAN
• Lenguajes de simulación discreta y continua
♦ GASP−IV, C−SIMSCRIPT, SLAM
• Lenguajes de simulación continua
♦ Ecuaciones discretas: DSL−190, MIMIC, GHSI, DYHYSYS
♦ Enfoque de bloques: MIDAS, DYNAMO, SCADS, MADBLOC, COBLOC
• Simuladores de aplicación especifica
♦ COMNET, NETWORK, PROMODEL. SIMFACTORY, WITNESS, XCELL
A continuación se presentan las características principales de los lenguajes de simulación más usados:
GPSS (General Purpose Simulation System)
Persona que lo desarrollo: Geoffrey Gordon.
45
Versiones más conocidas: GPSS I, GPSS II, GPSS III, GPSS/360, GPSS V.
Lenguaje del paquete: Asembler.
Reloj de la simulación: Incremento al próximo evento.
Computadoras compatibles: Generalmente se adapta a cualquier tipo de computadora.
SIMSCRIPT (No tiene ningún significado)
Personas que lo desarrollaron: H. M. Markowitz, H. W. Karr y B. Hausner.
Versiones más conocidas: Simscript I, Simscript I.5, Simscript II, Simscript II.5, C−Simscript.
Lenguajes del paquete: Fortran (las primeras versiones), Asembler (las últimas).
Reloj de la simulación: Incrementos al próximo evento para el caso discreto, e incrementos a tiempo fijo para
el caso continuo (C−Simscript).
Computadoras Compatibles: CDC 6000/7000, UNIVAC 1100, IBM 360/370, HONEYWELL.
GASP (General Activity Simulation Program)
Personas que lo desarrollaron: P.J. Kiviat y A. Colher.
Versiones más conocidas: GASP II, GASP IV, GASP−PLUS.
Lenguaje del paquete: Fortran, PL/1.
Reloj de la simulación: Incrementos al próximo evento para el caso discreto, e incrementos a tiempo fijo para
el caso continuo (GASP IV y PLUS).
Computadoras compatibles: Cualquier computadora con compilador de Fortran o PL/1.
SLAM (Simulation Languaje for Alternative Modeling)
Personas que los desarrollaron: A. Alam, B. Pritsker y Asociados.
Versiones más conocidas: SLAM fue el resultado de la fusión de varios lenguajes como GASP IV y QGERT.
Lenguaje del paquete: Fortran IV.
Reloj de la simulación: Incrementos al próximo evento para el caso discreto, e incrementos a tiempo fijo para
el caso continuo.
Computadoras compatibles: Cualquier computadora con compilador de Fortran.
Introducción A Los Bloques GPPS
Aquí se analizarán los bloques básicos del GPSS. Estos bloques forman lo que se podría llamar un elemento
básico de producción, el cual puede ser representado como una serie de actividades a través del tiempo. Por lo
general, este elemento básico de producción se repite varias veces dentro de los sistemas complejos de
46
manufactura o servicios. El elemento básico puede representarse de acuerdo con la figura 4.1 en la cual se
observan seis eventos y una actividad.
Llegada al elemento. Este evento ocurre en el momento en que una transacción hace su entrada al sistema.
Esta entrada puede realizarse en dos formas: la primera tiene lugar cuando las transacciones provienen de un
sistema que no se desea incluir dentro del modelo a simular; por tanto, la entrada de dichas transacciones debe
realizarse mediante el bloque GENERATE. La segunda ocurre cuando la transacción proviene de otro
elemento básico de producción; en este caso, el último bloque del elemento básico i será el bloque que simule
la llegada al elemento básico i+1.
Inicio de un retraso. Esta actividad no planeada se lleva a cabo, al llegar al elemento básico, una transacción
no puede iniciar con la actividad por la cual ha entrado a este elemento básico. Para empezar a medir este
retraso, se utiliza el bloque QUEUE.
Inicio de la actividad. Es el evento en el cual una transacción pasa de un estado de espera a uno de actividad.
Esta acción se llevará a cabo sólo si el recurso con el que se lleva a cabo la actividad está desocupado o
disponible. Los bloques elementales para representar este evento son el SEIZE y el ENTER.
Fin del retraso. Ocurre en el mismo tiempo que el evento anterior, y representa el punto en el que una
transacción termina su espera al haberse iniciado una actividad. Para dar por terminado el retraso, se hace uso
del bloque DEPART.
Actividad. Representa la acción primordial por la que una transacción entró al elemento básico de producción.
Esta actividad se mide en unidades de tiempo, y es el bloque que sirve para modelar tiempos de proceso o
transporte. El bloque ADVANCE se utiliza para este fin.
Fin de la actividad. El evento ocurre después de haber transcurrido el tiempo de proceso o transporte y su
función principal es dejar libre el recurso que se utilizó para realizar la actividad; este recurso puede ser una
máquina, un operario o una herramienta. Los bloques más simples para modelar este evento son el RELEASE
y el LEAVE.
Salida del elemento. Así como existen dos formas para entrar al elemento básico de producción, para salir
también es posible hacerlo de dos maneras: la primera representa un abandono total del sistema por parte de la
transacción y se realiza mediante el bloque TERMINATE; la segunda ocurre cuando existen dos elementos
básicos interconectados. En este último caso no hay bloque de salida sino una conexión lógica como la
mencionada en el párrafo correspondiente a llegada al elemento.
Objetivo. Es la descripción de la función general de la instrucción. Dentro de cada descripción se incluye un
diagrama que representa la forma de la instrucción en un diagrama de flujo.
Codificación y diagrama. Es el formato bajo el cual se debe teclear la instrucción. Las reglas que se dan en
cada instrucción son generales para cualquiera de las versiones del GPSS, sin embargo, algunas versiones dan
la facilidad de romper esas reglas sin que ocurra un error.
Operandos y su significado. Es la información que debe llevar cada instrucción, cada operando(identificando
con letras A, B, C, D, X) se acompaña de una breve información sobre su significado y los valores que toman
por default al no definir los operandos.
Atributos numéricos estándares (SNA). Durante una corrida de simulación el procesador de GPSS
automáticamente guarda y actualiza cierta información acerca de varias entidades utilizadas en el modelo.
Esta información puede imprimirse al final de la corrida de simulación. Muchas de estas propiedades también
pueden estar disponibles durante una corrida para verificar un valor deseado o para realizar algún cálculo en
47
particular. La información disponible durante la corrida acerca de instalaciones, colas almacenamientos,
etcétera, se llama atributos estándares (SNA).
Lenguaje GPSS
Generate Se puede pensar en un bloque GENERATE como una puerta a través de la cual entran las
transacciones. No existe ningún límite en cuanto a la cantidad de bloques GENERATE que puede contener un
modelo.
A: Tiempo medio entre llegadas. El operando tiene que ser nombre, número, SNA o nulo. No se pueden
utilizar parámetros. Default = 0 (opcional).
B: Desviación con respecto a la media (en caso de la distribución uniforme). El operando tiene que ser
nombre, número, SNA o nulo. No se pueden utilizar parámetros. Default = 0 (opcional).
C: Tiempo en que se generará la primera transacción. El operando tiene que ser Nombre, número, SNA o
nulo. No se pueden utilizar parámetros.
D: Límite total de transacciones
E: Nivel de prioridad. El operando tiene que ser nombre, número, SNA o nulo. No se pueden utilizar
parámetros. Default = 0 (opcional).
En GPSS, las distribuciones de tiempos entre llegadas están divididas en dos categorías:
• Distribución Uniforme.
• Todas las otras distribuciones.
En esta sección sólo se considera la generación de acuerdo con la distribución uniforme.
Para la distribución uniforme, el operando A del bloque GENERATE representa el tiempo medio entre
llegadas, es decir, el tiempo promedio entre llegadas consecutivas de transacciones. El operando B representa
la mitad del ancho del tiempo entre llegadas. El valor del operando B deberá ser menor que el valor del
operando A en todos los casos, de lo contrario ocurriría un error al intentar generar una transacción en el
tiempo negativo.
Por ejemplo, GENERATE 6, 4 significa que el tiempo entre llegadas se distribuye uniformemente en el rango
de 6 ± 4; GENERATE 8 significa que el tiempo entre llegadas se distribuye uniformemente en el rango de 8 ±
0. Es decir, las llegadas ocurrirán exactamente cada 8 unidades de tiempo. En este caso, los tiempos entre
llegadas son determinísticos, no aleatorios.
El operando C se utiliza cuando sólo se requiere fijar el tiempo de generación de la primera transacción. Las
transacciones subsecuentes se generarán de acuerdo con los operandos A y B. GENERATE 6, 4, 10 significa
que la primera transacción será generada al tiempo 10 y las transacciones subsecuentes cada 6 ± 4 a partir del
tiempo 10.
El operando D pone un límite al total de las transacciones que pueden entrar al modelo a través del bloque
GENERATE. Al generar el número de transacciones indicadas en el operando D, el bloque GENERATE se
vuelve inactivo.
GENERATE 6,4,,100 significa que se generaría un máximo de 100 transacciones que se distribuyen
uniformemente con el tiempo entre llegadas de 6 ± 4; GENERATE , , , 100 significa que se generarían las 100
48
transacciones juntas (sin ningún tiempo entre ellas) al inicio de la simulación (tiempo 0).
El operando E del bloque GENERATE permite dar prioridad a las transacciones generadas. Entre mayor sea
el valor del operando E, mayor es la prioridad. GENERATE 20,5,,,10 significaría que se generarían
transacciones cada 20 ± 5, uniformemente distribuidas y todas con una prioridad de 10.
Es importante considerar los siguientes puntos:
• Se requiere por lo menos un bloque GENERATE en un modelo de simulación.
• El tiempo mínimo para la creación de las transacciones es 1, a excepción de usar el operando D en ausencia
de los operandos A y B en cuyo caso las transacciones serán generadas en el tiempo 0.
SNA
No tiene SNA relacionados con él.
SEIZE
El objetivo del bloque SEIZE es simular la captura de un servidor, proceso o instalación. Este bloque actúa
como controlador del flujo de las transacciones y trabaja en conjunto con el bloque RELEASE. Su
funcionamiento general consiste en el manejo de una variable interna llamada F, la que puede tomar los
valores de 0 y 1; cuando una transacción llega a este bloque y trata de entrar, lo podrá hacer si el atributo
numérico estándar (SNA) F tiene un valor de 0 (ocioso) e inmediatamente cambiará al estado del atributo F a
1 (ocupado). Así una transacción será enviada a la cadena de eventos actuales en espera de que el valor de F
cambie de 1 a 0.
A: Identificador del servidor. Puede ser nombre, número, o SNA (requerido)
Una instalación puede ser capturada por una sola transacción en un momento dado. Las transacciones
restantes esperarían de acuerdo con la disciplina de primeras entradas primeras salidas para capturar la
instalación que con otras instrucciones o bloques cambie la disciplina de captura. Por ejemplo, SEIZE CAJA
significa que la transacción entrante capturará la instalación con el nombre de CAJA.
SNA
F: Estatus de la instalación (1=ocupado, 0=ocioso).
FC: Número de veces que la instalación fue capturada.
FL: Regresa el valor de 1 si la instalación ha sido prevaciada o en estado disponible, de otra manera regresa a
0.
FT: Tiempo promedio de utilización de la instalación.
FR: Utilización fraccional de la instalación.
RELEASE
El bloque RELEASE es la contraparte del bloque SEIZE, y permite simular la liberación del servidor, proceso
o instalación que había sido capturada. La función de este bloque es cambiar el valor del atributo numérico
estándar F de 1 (ocupado) a 0 (ocioso).
49
A: Identificación del servidor. Puede ser nombre, número, o SNA (requerido).
Cada SEIZE requiere acompañarse por un RELEASE, donde el operando A en ambos casos es idéntico. Una
transacción por medio de SEIZE captura una instalación y por medio de RELEASE suelta la misma
instalación al terminar el servicio deseado.
Al utilizar los bloques de SEIZE y RELEASE, saldrá un reporte con información relevante acerca de la
instalación. Este reporte incluye información tal como la utilización promedio del servidor, el tiempo
promedio de servicio por transacción y el número total de entradas al bloque SEIZE.
SNA
Son los mismos que para el bloque SEIZE.
QUEUE
El bloque QUEUE permite obtener estadísticas de colas que se forman al momento que las transacciones
esperan usar un servidor. El bloque QUEUE debe complementarse con el bloque DEPART. El bloque
QUEUE se puede visualizar como punto de inicio para la toma de datos estadísticos de las colas que se
pueden formar.
A: Identificador del servidor. Puede ser nombre, número, o SNA (requerido).
B: Número de unidades en que se incrementa el contenido de la entidad de cola.
Default = 1. El operando debe ser nombre, entero positivo o SNA (opcional).
En algunos problemas, una transacción puede representar una caja o pallet, en cuyo caso se puede usar el
operando B para representar número de partes que realmente existe en la cola. Por ejemplo, QUEUE COLA,
10 indica que cada transacción (caja) contiene 10 piezas esperando en COLA.
SNA
Q: Tamaño de la cola (contenido actual).
QA: Contenido promedio de la cola.
QC: Número total de entradas a la cola.
QT: Tiempo promedio por transacción en la cola (a base de QC).
QM: Contenido máximo de la cola.
QX: Tiempo promedio por transacción en la cola (a base de QZ).
QZ: Total de entradas con cero tiempo de espera en la cola.
DEPART
El bloque DEPART registra estadísticas que indican una reducción en el contenido de la entidad de cola. El
bloque DEPART puede visualizarse como punto de terminación para la toma de datos estadísticos de las colas
que se formaron.
50
A: Nombre o número de cola. El operando debe ser nombre, entero positivo SNA (requerido).
B: Número de unidades en que se decrementa el contenido de la entidad de cola.
Default = 1 (opcional). El operando debe ser nombre, entero positivo o SNA.
Al utilizar los bloques QUEUE y DEPART en el reporte aparece una serie de datos estadísticos en el reporte
que contienen la siguiente información:
• Número de entradas en la línea de espera (potencial).
• Contenido actual de la cola (número de transacciones esperando.
• Número de transacciones que no tuvieron que esperar en cola (con tiempo cero en fila).
• Contenido promedio de transacciones en cola.
• Tiempo promedio de espera por transacción.
SNA
Son los mismos que para el bloque QUEUE.
ADVANCE
El objetivo es simular retrasos en el flujo de las transacciones, de manera que puede visualizarse como el
tiempo de proceso, transporte o servicio. Desde un punto de vista de análisis de bloques, el ADVANCE
permite la entrada a toda transacción que llegue. En este bloque pueden existir en un mismo tiempo una o más
transacciones.
El funcionamiento de este bloque se lleva a cabo de la siguiente forma: cuando una transacción cruza por el
ADVANCE en el tiempo t1, se genera en un tiempo de proceso (TP) dado por las condiciones presentadas en
los operandos A,B, y se envía la transacción a la cadena de eventos futuros en espera de que el reloj de
simulación avance hasta el tiempo t2 = t1 + TP, tiempo en el cual la transacción abandona la cadena de
eventos futuros y continua su camino al siguiente bloque secuencial.
A: Es el tiempo medio de retardo de la actividad (servicio). El operando debe de ser nombre, entero positivo o
SNA (requerido).
B: Desviación con respecto a la media para la distribución uniforme. El operando debe ser nombre, entero
positivo o SNA (opcional).
Para la distribución uniforme, el operando A del bloque ADVANCE representa el tiempo medio de servicio.
El operando B representa la mitad del ancho del tiempo de servicio. En todos los casos, el valor del operando
B deberá ser menor que el valor del operando A, de lo contrario ocurriría un error al intentar generar una
transacción en un tiempo negativo.
TERMINATE
Solo remueve las transacciones activas que pasen por él, pero no controla el tiempo de corrida de simulación.
TERMINATE 1
START 100
En el momento en que una transacción cruza por el TERMINATE, es destruida y sale del sistema, pero
51
decrementa el valor START en una unidad; de esta manera, cuando 100 transacciones crucen por el
TERMINATE, el valor del START llegará a 0 y el proceso de simulación se detendrá.
TERMINATE 2
START 100
Cuando una transacción cruza por el TERMINATE, es destruida y sale del sistema, pero decrementa el valor
START en 2 unidades; de tal manera que cuando 50 transacciones crucen por el TERMINATE, el valor del
START llegará a 0 y el proceso de simulación se detendrá.
SNA
TG1: Contador de terminación
Tomando en cuenta los bloques vistos hasta el momento, es interesante manejarlos de una forma integral. Para
esto se presentan a continuación algunos ejemplos de sistemas que se desean modelar mediante GPSS.
TIPOS DE BLOQUES DE GPSS
Operación A B C D E F
ADVANCE Media Modificador
ASSIGN Param Núm. (±) Fuente
DEPART Cola Núm. (Unidades)
ENTER Almacenaje Núm. (Unidades)
GATE Artículo Núm. (Sigue bloque B)
GENERATE Media Modificador (Desplazamiento)
(Cuenta) (Prioridad) (Params)
LEAVE Almacenaje Núm. (Unidades)
LINK Cadena Núm. Orden (Siguiente bloque B)
R
LOGIC S Switch
I
MARK (Param. Núf.)
PRIORITY Prioridad
QUEUE Cola Núm. (Unidades)
52
RELEASE Facilidad Núm.
SAVEVALUE Reservar valor Núm. (±) SNA
SEIZE Núm. Facilidad
TABULATE Núm. Tabla (Unidades)
TERMINATE (Unidades)
TEST Arg. 1 Arg. 2 (Siguiente bloque B)
TRANSFER Factor selec. Siguiente bloque A Siguiente bloque B
UNLINK Núm. cadena Siguiente bloque A Cuenta
(Núm. Param.) (Arg.) (Siguiente bloque B
SÍMBOLOS DE LOS DIAGRAMAS DE BLOQUES DEL GPSS
Ejemplo:
Considere un torno manual que procesa piezas en 5 ± 2 minutos con distribución uniforme. El tiempo entre
llegadas de las piezas al torno sigue una distribución uniforme con parámetro 7 ± 3 minutos. Realice un
modelo en GPSS que simule el torneado de 500 piezas.
GENERATE 7,3
QUEUE ALMACEN
SEIZE TORNO
DEPART ALMACEN
ADVANCE 5,2
RELEASE TORNO
TERMINATE 1
*
START 500
53
END
En este ejemplo se tiene la unidad elemental de producción en la que entran las piezas al modelo por el bloque
GENERATE, cruzando el sistema y abandonándolo en el bloque TERMINATE. Cada vez que una pieza
abandona el modelo resta 1 del valor del START que detendrá la simulación cuando llegue a 0
Ejemplo:
Modifique el modelo anterior si desea simular además un rectificado de las piezas después del torneado en
otro torno en el que el tiempo de operación es de 6 ± 1 minuto con distribución uniforme.
SIMULATE
*
GENERATE 7.3
QUEUE ALMACEN
SEIZE TORNO
DEPART ALMACEN
ADVANCE 5,2
RELEASE TORNO
QUEUE WIP
SEIZE TORNO2
DEPART WIP
ADVANCE 6,1
RELEASE TORNO2
TERMINATE 1
*
START 500
END
El único cambio es la introducción de un nuevo elemento básico de producción que simula el rectificado entre
el torneado y la salida del sistema. En este caso, cada elemento básico tiene su propia máquina (TORNO y
TORNO2) y estadísticas de espera separadas o dos almacenes separados (ALMACEN y WIP). El
funcionamiento del TERMINATE y el START es similar al ejemplo anterior.
Ejemplo:
54
En un puerto se cuenta con una grúa destinada a la descarga de barcos. Existe dos tipos de barcos que entran
al puerto a descargar; los tiempos de descarga siguen una distribución uniforme con parámetros de 10 ± 2 y 17
± 5 horas para los barcos de tipo 1 y tipo 2, respectivamente. El tiempo entre llegadas entre los barcos sigue
una distribución uniforme con parámetros de 15 ± 2 y 24 ± 5 horas para los de tipo 1 y tipo 2,
respectivamente.
• Simule el sistema portuario hasta que se hayan descargado 90 barcos.
GENERATE 15,2
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 10,2
RELEASE GRUA
TERMINATE 1
*
GENERATE 24,5
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 17,5
RELEASE GRUA
TERMINATE 1
*
START 90
END
Al existir dos tipos de barcos o dos tipos de transacciones con diferentes condiciones de proceso, es necesario
crear dos elementos básicos para cada uno de ellos. Los barcos tipo 1 se introducen al modelo en el
GENERATE 15,2 y son destruidos en TERMINATE 1 de su propio elemento, con lo que se evita que entren
al segundo elemento. El otro tipo de barco entra al sistema en el GENERATE 24,5 y después de cruzar por el
segundo elemento es destruido en su respectivo TERMINATE. Los barcos nunca se cruzan dentro de los
segmentos sin embargo, comparten el recurso GRUA y las estadísticas de la espera también se encuentran
compartidas en el mismo MUELLE. Gracias a las cadenas de eventos, el GPSS logra unir internamente los
dos elementos y manejarlos en forma simultánea o paralela, de manera que se pueda pensar que se mezcla los
55
barcos internamente. Como se desea simular 90 barcos sin importar de que tipo son, el control de la
simulación debe ser llevado a cabo por los dos elementos; por eso, ambos TERMINATE se codifican con el
valor 1 para el operando A.
• Simule el sistema y finalice la simulación en el momento en que hayan sido descargados 40 barcos del
tipo 2.
GENERATE 15,2
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 10,2
RELEASE GRUA
TERMINATE
GENERATE 24,5
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 17,5
RELEASE GRUA
TERMINATE 1
START 40
END
En este inciso, lo único que se desea es detener la simulación mediante el conteo de uno de los tipos de
barcos; en este caso, al controlarlo con barcos tipo 2, se debe eliminar el valor del operando A del
TERMINATE de los barcos tipo 1 y mantener el valor en el TERMINATE de los barcos tipo 2.
• Simule el puerto durante una semana, dándole mayor prioridad en la descarga de los barcos tipo 1.
GENERATE 15,2,,,5
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
56
ADVANCE 10,2
RELEASE GRUA
TERMINATE
GENERATE 24,5
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 17,5
RELEASE GRUA
TERMINATE
GENERATE 168
TERMINATE 1
START 1
END
Los cambios que deben hacerse para el modelado de la nueva situación son: 1) dar mayor prioridad a los
barcos tipo 1 generados en el primer segmento utilizando el cuarto operando en donde se coloca una prioridad
mayor que los barcos tipo 2 del segundo segmento, 2) se elimina el control de la simulación mediante barcos
al colocar el TERMINATE con el valor por omisión (default) del operando A y 3) se agrega un nuevo
segmento, que genera transacciones cada 168, cruzará el TERMINATE y restará 1 del valor del START, que
al llegar a 0, dará por terminada la simulación.
ENTER
El bloque ENTER tiene dos funciones; en la primera se utiliza para simular la selección y captura de uno o
más servidores en paralelo; en la segunda se utiliza para simular la entrada, el inicio de estadísticas y la
ocupación de un espacio dentro de una fila de capacidad finita.
ENTER A,B
A: Nombre o número de almacenaje (storage) por utilizar. El operando debe ser nombre, entero positivo o
SNA (requerido)
B: Número de unidades por los que se decrementa la capacidad disponible de almacenaje (storage). Default =
1. El operando debe ser nombre, entero positivo o SNA (opcional)
El operando B se puede definir también como el número de servidores que captura por cada transacción que
entra al bloque ENTER. Para definir el número (capacidad) de servidores existentes en paralelo se requiere
utilizar la instrucción STORAGE.
57
La transacción que entra al bloque ENTER capturará cualquier servidor que esté disponible en ese momento.
En caso de no encontrar ningún servidor disponible (según la capacidad definida en STORAGE), la
transacción en espera será puesta a Delay Chain (cadena de espera).
SNA
R: Capacidad disponible del storage
S: Cantidad del storage que está en uso
SA: Número promedio de transacciones que están siendo atendidas (número de servidores ocupados)
SC: Número de transacciones que han entrado al almacenaje
SE: Regresa al valor 1 si el storage está vacío, y 0 de otra manera
SF: Regresa el valor 1si el storage está lleno, y 0 de otra manera
SR: Utilización de la capacidad del almacenaje
SV: Regresa 1 si el storage está en estado disponible, 0 de otra manera
Ejemplo:
Una máquina herramienta de un taller de fabricación produce piezas a razón de una por cada 5 minutos.
Conforme se terminan, las piezas van a un inspector que necesita
4+3 minutos para examinar cada una y rechaza aproximadamente 10% de las piezas. Cada pieza queda
representada por una operación y la unidad de tiempo elegida para el problema será de 1 minuto.
En la figura se muestra un diagrama de bloques que representa al sistema. La convención usual que se utiliza
en los diagramas de bloques es colocar la localización del bloque (en los casos necesarios) en la parte superior
del bloque; el tiempo de acción se indica en el centro en la forma T= a,b en que a es la media y b el
modificador; y el factor de selección se coloca en la parte inferior de cada bloque.
Se utiliza un bloque GENERATE para representar la salida de la máquina creando un transacción cada cinco
minutos de tiempo. Se utiliza un bloque ADVANCE con una media de 4 y modificador de 3 para representar
la inspección. En consecuencia, el tiempo que transcurre en la inspección será cualquiera de los valores
1,2,3,4,5,6 ó 7, dando igual probabilidad a cada valor.
Al completar la inspección, las transacciones van a un bloque TRANSFER con un factor de selección de 0.1
de manera que 90% de las piezas van a la siguiente localización (salida 1) llamada ACC para representar las
piezas aceptadas y 10% van a otra localización (salida 2) llamada REJ para representar los rechazos. Ya que
no se tiene interés adicional en seguir la historia de las piezas en esta simulación, ambas localizaciones a las
que se llega desde el bloque de TRANSFER son bloques de TERMINATE.
58
Descargar