Documentos de Académico
Documentos de Profesional
Documentos de Cultura
APUNTES DE
SIMULACION
1
UNIDAD I: INTRODUCCIÓN A LA SIMULACIÓN
PAG
INTRODUCCIÓN................................................................................................... 04
PROCESO DE LA SIMULACIÓN........................................................................ 06
ACTIVIDADES DE PRESIMULACIÓN.............................................................. 06
ACTIVIDADES DE DESARROLLO.................................................................... 08
ACTIVIDADES DE OPERACIÓN...................................................................... 09
CONSIDERACIONES RELATIVAS A LA SIMULACIÓN............................... 11
VARIABLES EXÓGENAS................................................................................... 13
VARIABLES DE ESTADO.................................................................................. 13
VARIABLES ENDÓGENAS................................................................................ 13
PARÁMETROS..................................................................................................... 13
CARACTERÍSTICAS DE OPERACIÓN............................................................. 14
IDENTIDADES..................................................................................................... 14
MÉTODOS ANALÍTICOS, NUMÉRICOS Y DE SIMULACIÓN……………. 15
SIMULACION DE UN SISTEMA DE INVENTARIOS………………………………….. 18
2
UNIDAD III: GENERACIÓN DE VALORES DE
VARIABLES ALEATORIAS
MÉTODO DE TRANSFORMACION INVERSA................................................. 43
MÉTODO DE RECHAZO...................................................................................... 45
MÉTODO DE COMPOSICIÓN.................................................................... 47
DISTRIBUCIÓN DE POISSON.................................................................... 48
DISTRIBUCIÓN ERLANG.......................................................................... 49
DISTRIBUCIÓN BINOMIAL................................................................................. 50
MÉTODO DE LA TRANSFORMADA INVERSA PARA DISTRIBUCIONES
DISCRETAS................................................................ 51
UNIDAD V: VALIDACIÓN
CÁLCULO DEL NÚMERO ÓPTIMO DE SIMULACIÓN.................................. 90
CÁLCULO DEL 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......................................................................................................... 99
BIBLIOGRAFÍA.....................................................................................................
3
UNIDAD I
INTRODUCCIÓN A LA SIMULACION
4
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.
Ventajas:
3. La observación detallada del sistema simulado nos permite tener una mejor comprensión del
mismo.
5. La simulación nos permite experimentar con situaciones nuevas, para los cuales no se tiene o
hay poca información.
Desventajas:
1. Los modelos de simulación para computadora son costosos y requiere tiempo para
desarrollarse y validarse.
5
Filosofía, desarrollo e implementación de un modelo de simulación
EL PROCESO DE LA SIMULACIÓN.
1. Actividades de presimulación.
2. Actividades de desarrollo.
3. Actividades de operación.
ACTIVIDADES DE PRESIMULACION
En esta etapa del proceso el usuario debe evaluar las diferentes herramientas disponibles
relacionadas con su objetivo.
6
ACTIVIDADES DE PRESIMULACION
RECONOCIMIENTO
DEL PROBLEMA
ANALISIS DEL
SISTEMA
ESTABLECIMIENTO
DEL OBJETIVO
SELECCIÓN
APROXIMAD
A
7
Ejemplos:
ACTIVIDADES DE DESARROLLO
Un modelo validado, es aquel que ha probado ser una “abstracción” razonable del sistema
del mundo real que intenta representar.
8
La experimentación al establecer un objetivo sirve para:
La exploración del comportamiento del sistema intenta explicar la relación entre los
resultados de la Simulación y los parámetros controlables.
ACTIVIDADES DE DISEÑO
VERIFICACION DEL
MODELO
VALIDACION DEL
MODELO
DISEÑO
ESTRATEGICO
DEL
EXPERIMENTAL
ACTIVIDADES DE OPERACIÓN
9
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.
ACTIVIDADES DE OPERACION
DISEÑO TÁCTICO
DE
EXPERIMENTACIÓ
N
¿EXPERIMENT
N
O COMPLETO? O
SI
ANALISIS DE DATOS
SIMULADOS MODELO EXPERIMENTO
SE CUMPLEN N MODIFICA
LOS O R
OBJETIVOS?
SI ALTO
10
CONSIDERACIONES RELATIVAS A LA 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
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.
Las variables se usan para relacionar un componente con otro y se clasifican en:
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.
11
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 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.
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.
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 ordenes y el tiempo que consume cada uno
de tales procesos.
12
El modelo contiene las siguientes variables, parámetros, características de operación e
identidades.
VARIABLES EXÓGENAS.
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.
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
13
CARACTERÍSTICAS DE OPERACIÓ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:
AT1 = 0
WT11 = 0, WT12 = 0,..., WT1n = 0 n-1
IDT11 = 0, IDT12 = ST11,..., IDT1n = STij
j=1
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:
14
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 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.
Aproximación Analítica
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.
15
Aproximación Numérica.
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.
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
16
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
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
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
17
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
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.
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
18
1 w.p 1/6
D= 2 w.p 1/3
3 w.p 1/3
4 w.p 1/6
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 uncosto 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
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
mestra 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.
19
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.
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 exisite un
déficit, también la perdida de buenos clientes. El número de promedio de veces de articulos en
déficit esta dado por es
20
Así que el costo promedio de atrasos por mes es I-.
s 20 20 20 20 40 40 40 60 60
S 40 60 80 100 60 80 100 80 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 en al capitulo
12.
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)]
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.
21
Orden de Evaluació
llegada Demanda n
Termino de
la simulación
Fig. 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 C 1, 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 C 1, (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).
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.
22
Evento de Orden de Llegada
Evento de
orden de
llegada
regreso
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
23
Evento evaluación
del inventario
Si
I(t)<s?
Return
24
UNIDAD II
0 x<0
F(X) = x 0<x<1
1 x>1
Se tienen cuatro métodos alternativos para generar o proveer sucesiones de 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.
25
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.
Cualquiera que sea el método para generar números aleatorios debe satisfacer las siguientes
condiciones:
Deben ser:
1. Uniformemente distribuidos
2. Estadísticamente independientes
3. Reproducibles
4. Sin repetición dentro de una longitud determinada de la sucesión
5. Generación a grandes velocidades
6. 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:
ni+1 a ni + c (mod m) → 1
donde:
ni, a, c y m : son enteros no negativos
para i= 0,1,2,... al desarrollar la ecuación
n1= a n0 + c (mod m)
n2= a n1 c= a(an0 + c) + c a2 n0 + (a +1)c (mod m)
n3= a3n0 (a2-a+1)c = a3n0 + c (a2-1) (mod m)
. (a-1)
.
.
ni= aino + c(ai-1) (mod m) → 2
(a-1)
n0 = constante inicial
c = constante aditiva
a = constante multiplicativa
26
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 n h = n0
donde h es el período de la sucesión {n i}; 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.
1) Método Aditivo
2) Método Multiplicativo
3) Método Mixto
MÉTODO MULTIPLICATIVO
El modulo que emplea este método es m = p e 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.
27
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=2 b-2; a tiene que ser
primo relativo de m=2b y por lo tanto tiene que ser impar.
a 3 (mod 8) ó a = 8t 3
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:
Ejemplo:
Sea b = 4, m = 24 = 16 y h = 24-2 = 4
1.- n0 = 7 n0 = 0111
28
n3 = 1011 r3 = 11/16 = 0.6875
y así sucesivamente...
COMPUTADORAS DECIMALES
m = 10d = 2d 5d
d = número de dígitos decimales de la palabra. d>3
d
a = debe ser número primo relativo de 10
El orden h de a (mod 10d) es: h = m.c.m. [2d-2,4 * 5d-1] = 5 * 10d-2
a = ± (3, 11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67,69, 77, 83, 91) (mod 200)
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 = 10 d, lo cual implica que tiene que ser
impar, no divisible entre 5 para seleccionarse como valor inicial.
a 10d/2
Ejemplo:
1.- n0 = 5379
29
2.- a 102 = 100
a = 200(0)+91 ó a = 200(1)-91
a = 91 ó a =109
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.
x
J12= x fj- N 2
j=1
N X
30
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
31
Donde:
C2 = (10 – 10)2 + (11 – 10)2 + (11 – 10)2 + (11 – 10)2 + (8 – 10)2 + (11 – 10)2 + (10 – 10)2
10 10 10 10 10 10 10
Nosotros especificamos arbitrariamente un valor de = 0.05 (esto significa un error del tipo
I del 5%) el valor obtenido de C2= 4.2 así pues podemos compararlo con el valor critico de:
X20.05(9) = 16.919
Puesto que X20.05(9) = 16.919 C2 = 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:
lsx = 1 + /2 1
12 √n
2
32
lix = 1- /2 1
2 12 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%.
33
Los números generados son:
X = 15.22015/30 = 0.507338
X 0.5000
Z0.025 = 1.96
lsx = 0.5298 li x X lsx
lix = 0.4701
Ho se acepta
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:
34
n
(ri - x )2
V(x) = i=1
n–1
lsV(x) = X2/2,n-1
12(n - 1)
liV(x) = X21-/2,n-1
12(n - 1)
Paso 3 Si V(x) se encuentra entre los valores de li v(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%
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,
35
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 dependen uno de otro.
- La prueba de Póker
- 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
Ho : ri independiente
H1 : ri dependiente
Paso 1. Calcular las probabilidades esperadas para un juego de póker 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 (Póker) = 0.0045
P (Quintilla) = 0.0001
36
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 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%)
37
FO PE FE
Pachuca 14 0.3024 9.072
Un Par 14 0.5040 15.12
Tercia 1 0.0720 2.16 FE = PE.n
Dos Pares 1 0.1080 3.24
Full 0 0.0090 0.27
Poker 0 0.0045 0.135
Quintilla 0 0.0001 0.003
C2 = (9.072 – 14)2 + (15.12 – 14)2 + (2.16 – 1)2 + (3.24 – 1)2 + 0.27 + 0.135 + 0.003 =
9.072 15.12 2.16 3.24
20.05, 6 = 12.6
C2 2 H0 se acepta C2 ≤ X20.05,6
PRUEBA DE SERIES
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.
38
Ejemplo:
Realice la prueba de series a los siguientes 30 números con un nivel de confianza del 95%
ri+1 1 3 2 1 2
0.75 1 1 1 3
0.50 1 3 3 1
0.25 2 2 1 2
0 0.25 0.50 0.75 1 ri
m 16
El valor de la tabla X2 con un nivel de confianza del 95% y con 15 grados de libertad es igual
a 25. Si se compara C =5.75 con este valor, se acepta la independencia de la secuencia de
números.
C2 ≤ X20.05,15
39
Por consiguiente Ho se acepta.
APÉNDICE A
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.
40
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 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 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).
41
(2) 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*
TEOREMAS:
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 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.
42
Corolario: Si p = 2, i.e., h = (m) = 2e-2 para e > 2, entonces (m) (m). La prueba se
debe a Euler.
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.
43
UNIDAD III
GENERACIÓN DE VALORES DE VARIABLES ALEATORIAS
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.
Existen tres métodos para generar los valores de variables aleatorias a partir de distribuciones
de probabilidad:
2) Método de rechazo
Se quiere generar valores de xi a partir de F(x). En primer lugar hay que obtener F(x).
44
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.
F(x)
1
r0
0 x0 X
Ejemplo:
Genérese los valores x de variables aleatorias con una función de densidad f(x) = 2x 0x1
x
r = F(x) = o 2tdt 0 x 1
r = F(x) = x2 ó x = r 0 r 1
Ejemplo:
Genérese los valores x de variables aleatorias con función de densidad
f(x) = 1 0 x 1 f(x) = 3 1 x 2
4 4
x
r = F(x) = 0 1/4 dt 0 x 1
r = F(x) = x = x 0x1
4x
r = F(x) = ¼ + 1 ¾ dt 1x2
r = F(x) = ¼ + [3/4x – ¾] = 3/4x –1/2
45
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.
Ejemplo:
Se desea simular una variable aleatoria con d n exponencial
f(x) = e -x
x0
x x
F(x) = 0 e dt = -0 be-t(-dt)
-t
Ejemplo:
Se desea simular n números aleatorios con d n uniforme entre (a,b):
f(x) = 1 axb
b-a
F(x) = xa = 1 dt = 1/b-a xadt
b-a
F(x) = 1 txa = 1 (x-a)
b-a b-a
x = a + r(b-a)
46
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.
r 2 a+(b-a)r1/M
M = es cota superior.
f(x)
a b X
2x 0x1
f(x)
0 en otra parte
En este caso :
a=0 b=1 M=2
47
1. Generar R1 y R2
2. Calcular x = r1
3. f(x) = 2r1
4. r2 2r1 = 2r1 r 2 r1 → x = r1
M 2
2 (x - a) si a xb
(c – a) (b – a)
f(x) =
-2 (x - c) si b xc
(c – a) (c – b)
M=
f(x)
a b c X
1. Generar r1 y r2
48
2. Calcular x = a + (c – a)r1
3. Es x < b si la respuesta es afirmativa
4. Es r2 f(x)(c-)
2
Si la respuesta es afirmativa, entonces se considera como valor x = a + (c – a)r 1
Simulada, en caso contrario regresemos al paso 1.
MÉTODO DE COMPOSICIÓN
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.
f(x) = n- y-n e-xy dy
Cuando ( sea )
49
dH(y) = n dy/y n+1 1 y , n 1
y
g(x) = ye -yx
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 R 1 y R2,
y cuando:
S1 = R1-1/n
X = 1 log R2
S1
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(xy) la cuál se necesita para
producir una f(x) dada dentro de la relación.
f(x) = - g(xy) dH(y)
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 1/.
50
Podemos utilizar esta relación entre la distribución Poisson y la exponencial para generar
desviaciones de la distribución de Poisson.
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)
yi = -1 ln Ri
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.
donde yi es otra vez las desviaciones de la distribución exponencial pero con media 1/, esto es:
yi = -ln Ri
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 1/.
DISTRIBUCIÓN ERLANG
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 :
k k
X = yi = - 1 ln Ri
i=1
i=1
donde yi es una desviación exponencial generada por la técnica de la transformada inversa R i es
un número aleatorio de la distribución uniforme.
51
DISTRIBUCIÓN BINOMIAL
Una variable aleatoria x definida como el número de eventos exitosos en una secuencia de n
triadas 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 esta dada por:
q = 1-p
n = número de tiradas
x = número de éxitos, en entero
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.
52
MÉTODO DE LA TRANSFORMADA INVERSA PARA DISTRIBUCIONES
DISCRETAS
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.
53
f(x) F(x)
0 x 0 Xi= F -1 (Ri) x
Metodología
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.
54
UNIDAD IV
LENGUAJES DE SIMULACIÓN
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.
De este concepto nació el diseño de lenguaje especifico para programas de simulación con los
cuales se ha ido facilitando al usuario la programación de sus modelos.
55
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:
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.
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:
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:
56
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
MSAVEVALU
E
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 8 19 31
Donde:
Loc
57
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
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.
VENTAJAS:
4. Tiene una alta fiabilidad que conduce a una validación de resultados sencilla y rápida.
58
5. 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
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:
4. El lenguaje en que esta escrito, lo cual influye en la forma de detectar y reportar los
errores de lógica.
59
CLASIFICACIÓN DE LOS LENGUAJES DE SIMULACIÓN
60
HONEYWELL.
61
INTRODUCCIÓN A LOS BLOQUES GPSS:
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 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.
Retraso 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
62
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.
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.
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.
63
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 limite en cuanto a la cantidad de bloques GENERATE que
puede contener un modelo.
A,B
C,D,E
GENERATE A, B, C, D, E
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:
1. Distribución Uniforme.
2. Todas las otras distribuciones.
64
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.
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.
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.
65
SEIZE
A
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
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).
RELEASE
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.
66
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
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
B
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
67
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”.
B A
DEPART A,B
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:
SNA
ADVANCE
68
El funcionamiento de este bloque se lleva a cabo de la siguiente forma: cuando una transacción
cruza por el ADVANCE en el tiempo t 1, 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,B
ADVANCE A,B
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 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
69
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
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
70
SÍMBOLOS DE LOS DIAGRAMAS DE BLOQUES DEL GPSS
A
A,B
C A
AVANZA ENLAZA B AGARRA
A,B
X A B
A
ASIGNA LOGICA TABULA
B A
A A
B A
X A
B COLA TRANSFIERE
COMPUERTA
A
A C
A,B D B F
C, D, E, F E
GENERA LIBERA DESENLAZA
A
B
A,B
ABANDONA RESERVA VALOR
Ejemplo:
Considere un torno manual que procesa piezas en 5 2 minutos con distribución uniforme . El
tiempo entre llegadas de la 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.
71
GENERATE 7,3
QUEUE ALMACEN
SEIZE TORNO
DEPART ALMACEN
ADVANCE 5,2
RELEASE TORNO
TERMINATE 1
*
START 500
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
72
separados (ALMACEN y WIP). El funcionamiento del TERMINATE y el START es similar al
ejemplo anterior.
Ejemplo:
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.
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 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.
73
b) 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.
c) 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
ADVANCE 10,2
RELEASE GRUA
TERMINATE
GENERATE 24,5
QUEUE MUELLE
SEIZE GRUA
DEPART MUELLE
ADVANCE 17,5
RELEASE GRUA
TERMINATE
74
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.
B
A
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.
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).
75
SNA
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.
76
GENERATE 5,0
ADVANCE
4,3
TRANSFER 0,1
REJ
ACC
acc
TERMINATE 1 1
Asociadas con el sistema que se simula hay muchas entidades permanentes tales como
artículos de equipo, que operan sobre las transacciones. En GPSS se definen dos tipos de entidades
permanentes para representar el equipo del sistema.
Se defina una facilidad como una entidad que puede utilizar una sola transacción a la vez.
Se define un almacenaje como una entidad que pueden ocupar muchas transacciones a la vez, hasta
cierto límite predeterminado. Puede haber muchas instancias de cada tipo de entidad hasta un
límite impuesto por el programa (generalmente 300). Las entidades individuales se identifican
mediante número; se utiliza una secuencia numeral distinta para cada tipo. El número 0 es ilegal
para éstas y las otras entidades del GPSS. El usuario puede asignar los números en cualquier orden
o puede utilizar nombres simbólicos y dejar que el programa ensamblador asigne los números.
Algunos ejemplos de cómo podrían interpretarse las entidades del sistema en distintos sistemas son:
77
Tipo de Sistema Transacción Facilidad Almacenaje
Una troncal significa un cable que consiste en muchos alambres cada uno de los cuales
puede transportar varios mensajes simultáneamente y por tanto se representa como un almacenaje.
En este caso se supone que un interruptor sólo pasa un mensaje a la vez, por lo que se representa
como una facilidad.
La figura muestra cuatro tipos de bloques SEIZE, RELEASE, ENTER Y LEAVE, que se
refieren a la utilización de facilidades y almacenajes. El campo A de cada caso indica la facilidad o
almacenaje de referencia y, generalmente la selección se marca en la bandera que se anexa a los
símbolos de los bloques. El bloque SEIZE permite que una transacción utilice una facilidad si está
disponible. El bloque RELEASE permite que la transacción libere la facilidad. En forma análoga
un bloque ENTER permite que una transacción ocupe espacio en un almacenaje, de estar
disponible el bloque LEAVE permite que ceda el espacio. Si está en blanco los campos B de los
bloques ENTER y LEAVE, el contenido del almacenaje se cambia en 1. Si hay un número (mayor
o igual que 1), se cambia el contenido en ese valor.
Se puede colocar cualquier cantidad de bloques entre los puntos en que se toma y libera una
facilidad para simular las acciones que se seguirán mientras una transacción tiene el control de una
facilidad. Se aplican arreglos semejantes para la utilización de los almacenajes.
78
GENERATE 5,0
SEIZE
1
ADVANCE 4,3
4.5554
,34ghj
g
RELEASE 1
TRANSFER
0,1
ACC REJ
TERMINATE 1 1
79
Ilustraremos el uso de modos de transferencia tanto condicional como incondicional del
bloque TRANSFER. De nuevo considere el caso de tres inspectores, pero suponga que las piezas
fabricadas se colocan en una banda transportadora, la que lleva las piezas frente a los inspectores
colocados a intervalos a lo largo de la misma banda. Una pieza tarda dos minutos en llegar al
primer inspector, si está libre cuando llega esa pieza, la toma para inspeccionarla, si está ocupado,
la pieza necesita dos minutos adicionales para llegar al segundo inspector, que la toma si está
desocupado. Las piezas que pasan al segundo inspector puede tomarlas el tercero que está a dos
minutos adicionales sobre la banda transportadora; en caso contrario se pierden. Para mantener
pequeño el modelo, se registrará todo el tiempo de tránsito de las piezas y se ignorará la
posibilidad de que los inspectores rechacen las mismas.
80
GENERATE 5,0
5,0
QUEUE 1
ENTER
1
DEPART
1
MARK
ADVANCE 12, 9
LEAVE 1
TABULATE
1
TRANSFER 0, 1
ACC REJ
1 1
81
SIMULACIÓN DE SISTEMAS DISCRETOS
Eventos discretos
Se pueden considerar dos puntos generales de vista acerca de cómo se identifiquen los
eventos discretos. En uno de los puntos de vista, al que se refiere como orientado a la partícula, o
basado en el material, la atención se centra en las entidades del sistema y se considera a la
simulación como la tarea de seguir los cambios que ocurren conforme a las actividades. En ese caso
se considera a los tiempos en que ocurren los cambios al sistema como atributos a las entidades. En
el otro punto de vista, que se refiere como orientado al evento o basado en la máquina, la atención
se centra en las actividades y la simulación sigue la historia de las actividades conforme se aplican a
distintas entidades. En ese caso se considera a los tiempos en que ocurren los cambios al sistema
como característicos de las actividades.
La ejecución de una simulación se mantiene igual sin importar el punto de vista que se
tome. Es necesario llevar registros de todas las actividades que desarrollan y de las entidades
involucradas, y se deben de cambiar periódicamente para reflejar la secuencia de eventos en el
sistema. Para hacerlo es necesario llevar registros de los tiempos de eventos y los cálculos deben
computar los tiempos de eventos futuros conforme se desarrolla la simulación.
El paso del tiempo se registra mediante un número al que se conoce como tiempo del reloj.
Generalmente se hace igual a cero al principio de una simulación y posteriormente indica cuántas
unidades de tiempo simulado han transcurrido desde el inicio de la simulación. A menos que
específicamente se expresa de manera contraria, el término tiempo de simulación significa el
tiempo de reloj indicado y no el tiempo que ha necesitado un computador para realizar la
simulación. Por regla general no hay conexión directa entre el tiempo simulado y el necesario para
realizar los cómputos. El factor de control en la determinación del tiempo de cómputo es el número
de eventos que ocurren. Dependiendo de la naturaleza del sistema que se simula, y el detalle con
que se modela, puede variar considerablemente la relación del tiempo simulado al tiempo real. Si
una simulación estudiara el funcionamiento detallado de un sistema de computador en que los
eventos reales ocurren en intervalos medidos en fracciones de microsegundos, aunque la simulación
se realizara en un computador digital de alta velocidad, fácilmente tomaría varios miles de veces
mas tiempo que la operación real del sistema.
Existen dos métodos básicos de actualizar el tiempo del reloj. Uno consiste en avanzar el
reloj a la hora a que debe ocurrir el siguiente evento. El otro método es avanzar el reloj en
intervalos pequeños (generalmente uniformes) y determinar en cada intervalo si debe de ocurrir un
evento en ese momento. Al primer método se le conoce como orientado al evento y del segundo se
dice que está orientado a intervalos. Por lo general la simulación de sistemas discretos se realiza
utilizando el método orientado a los eventos en tanto que la simulación de sistemas continuos
utiliza normalmente el método orientado a los intervalos.
Sin embargo, se debe de señalar que no se puede expresar una regla definitiva con respecto
a la manera en que se representa el tiempo en las simulaciones para sistemas discretos y continuos.
82
Un programa orientado a los intervalos detecta cambios discretos y por tanto puede simular
sistemas discretos, en tanto que se puede hacer que un programa orientado a eventos siga cambios
continuos introduciendo artificialmente eventos que ocurren a intervalos regulares.
La entidad que llega generalmente requiere que se generen ciertos valores de atributos, en
cuyo caso debe ponerse atención a la hora en que se generan los valores. Se pueden generar
cuando se calcula el tiempo de llegada o pueden generarse cuando la entidad llega físicamente. Si
no hay interacción entre los atributos y los eventos que ocurren dentro del sistema, la generación
puede hacerse en cualquier momento. Sin embargo, si los valores de los atributos dependen del
sistema, se debe acordar que al tiempo de generar el tiempo de la llegada, la llegada real todavía es
un evento en el futuro. Entonces es necesario posponer la generación de los valores de atributo
hasta que se ejecute el evento de la llegada. Por ejemplo una simulación en que se generan llamadas
telefónicas. Es necesario generar la longitud de la llamada y su origen. No hay interacción entre la
distribución de la longitud de la llamada y el estado del sistema, de manera que se puede generar la
longitud de la llamada al tiempo que se decide la hora de llegada o cuando llega la llamada. Sin
embargo, una llamada no puede provenir de alguna línea que ya esté ocupada, de manera que la
selección del origen debe de posponerse hasta que llegue la llamada. Elegir el origen cuando se
decide la hora de llegada implica el riesgo de que otra llamada haya ocupado el origen propuesto
antes de que llegue la llamada en cuestión.
El sistema tiene una cantidad de teléfonos (sólo se muestran los ocho primeros) conectados
a un conmutador mediante líneas. El conmutador tiene una cantidad de enlace que se pueden
utilizar para conectar cualesquiera dos líneas, sujeto solo a la condición de que se puede hacer
únicamente una conexión a la vez a cada línea. Se supondrá que el sistema es de llamadas perdidas,
o sea que se abandona de inmediato toda llamada que no se pueda conectar cuando llega. Una
llamada se puede perder debido a que el llamado puede estar ocupado, en cuyo caso se dice que la
83
llamada está ocupada; o también se puede perder debido a que no se disponga de un enlace, en cuyo
caso se dice que es una llamada bloqueada.
El estado actual del sistema, que se muestra en la figura es que la línea 2 está conectada ala
5 y que la línea 4 está conectada a la 7. En la figura 2 aparece una manera de representar el estado
del sistema. Se considera a cada línea como una entidad que tiene como atributo a su
disponibilidad. Se establece una tabla de números para mostrar el estado actual de cada línea. Un
cero en la tabla significa que la línea está libre, en tanto que uno significa que está ocupada.
84
FIG. 2 SISTEMA, ESTADO 1.
No es necesario llevar una historia detallada de cada enlace individual, ya que cada uno
puede dar servicio a cualquier línea. Basta con incorporar en el modelo la restricción impuesta por
el hecho de que hay un número fijo de enlaces (en este caso tres). Bajo estas circunstancias, el
grupo de enlaces se representa como una sola entidad en que loa atributos son el número máximo
de enlaces y los que actualmente están en uso. En consecuencia, dos números representan los
enlaces.
Para llevar control de los eventos se concluye un número que representa el tiempo de reloj.
De momento se indica que el tiempo de reloj es 1027, en que se considera que la unidad de tiempo
es 1 segundo. El reloj se actualiza en la forma orientada a los eventos según se desarrolla la
simulación. Cada llamada es una entidad separada que tiene como atributos a su origen, destino y
longitud. La simulación se realizará utilizando el concepto orientado a las partículas de los eventos,
de manera que será necesario generar el tiempo en que termina la llamada, como un atributo
adicional de la misma. Existe una lista de llamadas en proceso que muestra cuáles líneas conecta
cada llamada y la hora que termina la llamada. Para generar la llega de llamadas se utiliza el
método de cordón de bota, de manera que se lleva un registro de la hora en que debe llegar la
siguiente llegada. Se supondrá que la llamada tiene igual probabilidad de provenir de cualquier
línea que no esté ocupada, y que puede dirigirse a cualquier línea excepto a si misma, sin importar
que la línea está ocupada o no. La selección del origen debe de posponerse hasta que llegue la
85
llamada. Por conveniencia se generarán en ese momento tanto el origen como el destino y longitud
de la llamada. La generación de la longitud de la llamada se puede posponer no sólo hasta que haya
llegado la llamada sino hasta determinar si se puede conectar.
El conjunto de números dentro del bloque principal de la figura 2 recuerda el estado del
sistema al tiempo 1027. Hay dos actividades que provocan eventos; pueden llegar nuevas llamadas
y pueden terminar las llamadas existentes.
86
FIG. 3 SISTEMA, ESTADO 2.
Se puede ver que el siguiente evento es la llegada de una llamada el tiempo 1057. Se
actualiza el reloj al tiempo de llegada y se generan los atributos de la nueva llegada. Ya que la
actividad elegida es conectar una llamada, es necesario realizar pruebas; primero para determinar si
hay un enlace disponible, y luego para determinar si está ocupado el que recibirá la llamada. En
este caso el que recibe la llamada está ocupado de manera que se pierde la llamada. Se incrementan
en 1 los contadores de llamadas procesadas y de llamadas ocupadas. Se genera una nueva llegada y
entonces el estado del sistema al tiempo de que se perdió la llamada aparece como se muestra en la
figura 4.
87
FIG. 4 ESTADO 3 DEL SISTEMA
Nuevamente el siguiente evento potencial es una llamada, pero esta vez puede conectar la
llamada llegada de manera que el estado del sistema cambia al que se muestran en la figura 5.
88
FIG 5 ESTADO 4 DEL SISTEMA
89
FIG. 6 TAREAS DE PROGRAMACIÓN DE SIMULACION.
90
Imagen del sistema: De la descripción del sistema es necesario crear un conjunto de
números para representar el estado del mismo. A este conjunto de número se le conoce como
imagen del sistema ya que su propósito es reflejar el estado del mismo en todo momento. Se debe
representar las actividades del sistema como rutinas que deben realizar los cambios a la imagen del
sistema.
91
Un diagrama de flujo de programa de simulación
92
UNIDAD V:
VALIDACIÓN
EL tamaño de una corrida de simulación depende principalmente del tipo de distribución que se
intenta simular y, por decirlo de alguna forma, de la bondad del generador de números U(0,1) que
se esta utilizando y de las condiciones iniciales con que inició la simulación del sistema.
n = 2(Z/2)2
K2
Donde:
Z = Estadístico normal estándar para cierta .
K = Desviación absoluta máxima permitida sobre la media de la distribución a simular.
2 = Variancia de la distribución a simular.
93
n = s2(tn1-1,/2)2
K2
Donde:
t = Estadístico de la distribución t student.
K = Desviación absoluta máxima permitida sobre la media de la distribución a
simular.
S2 = Estimador de la variancia de la distribución a simular.
Esta segunda fórmula se emplea para calcular n óptima basándose en una corrida simulada del
sistema de tamaño n1. A esta corrida pequeña se le conoce como prueba piloto, y su función es
calcular n en función de la distribución general y del generador utilizado en la prueba piloto.
Pueden usarse ambas fórmulas siempre y cuando la información de donde se obtienen los
estimadores sigan, estadísticamente, una distribución normal. En caso de que los datos analizados
sigan otra distribución se debe hacer uso del teorema de Tchebycheff de tal suerte que el cálculo se
ve reducido a:
n = m2
Donde:
= Probabilidad de error permitida.
m2 = Número de desviaciones estándar máximo permitido
sobre la media de la distribución a simular.
El cálculo del número de corridas óptimo, del modelo de simulación en donde se tengan varias
variables probabilísticas, se realiza ejecutando el cálculo para cada una de ellas y se selecciona la
mayor de todas las n; éste será el número de simulaciones del modelo computacional.
Ejemplo:
Se desea encontrar el número de simulaciones que debe realizar un simulador de desperdicios de
una planta de poliéster, de tal forma que el promedio diario simulado de desperdicio no difiera más
de 0.166 de su valor real, con una confiabilidad del 95%.
Si se supone o se sabe que el desperdicio diario en toneladas sigue una distribución normal,
entonces, el número de simulaciones óptimo es:
n = 2(Z/2)2
K2
Donde:
Z = 1.96 para una confiabilidad del 95%
K = 0.166s = 0.166
94
Sustituyendo la información:
n = 139.4
n = m2 36 = 720.00
0.05
Este cálculo del número de simulaciones óptimo, es un cálculo a priori, sin embargo, no se
asegura del todo que se cumpla con las condiciones de estabilidad.
Una forma más segura de determinar el momento en que el sistema se estabiliza se consigue al
graficar, a través del tiempo, cada uno de los valores promedio de aquellas variables o resultados
que se deseen analizar y al observar el comportamiento de las variables deteniendo la simulación
cuando todas esas variables se encuentren en estado estable.
Una vez que se ha corrido un sistema de simulación hasta llegar a la estabilización, existe el
problema de que las observaciones obtenidas en el experimento de simulación, generalmente, no
son independientes (autocorrelacionadas). Para obtener resultados independientes hay que repetir
“r” veces la simulación de tamaño “n” con diferentes números aleatorios.
Teniendo los resultados de cada una de las réplicas, es necesario tomar estos resultados para
calcular los estimadores de media, variancia e intervalo de confianza de acuerdo con el siguiente
procedimiento.
Calcular la media y variancia de las observaciones para cada réplica individual con las fórmulas:
n
xj = 1 xij
n i=1
95
n
sj = 1 (xij - xj)2
2
n-1 i=1
Con la media y la variancia de cada una de las réplicas, encuentre la media y variancia entre
réplicas con las fórmulas siguientes:
r
x = 1 xj
r j=1
n
s2 = 1 (xj – x)2
r-1 i=1
Debido a la naturaleza probabilística de los resultados, es indispensable que para cada variable
de respuesta se calcule el intervalo de confianza de acuerdo con:
Ic= = x ( s )t
x
rr-1,/2
REDUCCIÓN DE VARIANZA
En muchos estudios de simulación, una gran parte del tiempo se emplea en el desarrollo del
modelo y en la programación del mismo; pero sólo un pequeño esfuerzo se utiliza para desarrollar
un diseño apropiado de las corridas o para analizar correctamente los resultados que genera la
simulación. Partiendo de que la información de entrada es una variable aleatoria, la información de
salida es también aleatoria. Por lo tanto, un modelo de simulación sólo puede producir un
estadístico estimado de la medida de desempeño.
Existen algunos métodos, conocidos como técnicas de reducción de varianza, que permiten
reducir los valores estimados para la varianza, fijando condiciones a partir de los datos históricos.
Para que el resultado de una simulación sea estadísticamente preciso y libre de tendencias, se debe
especificar perfectamente la longitud de cada corrida, el número de réplicas y el período de
estabilización.
Ejemplo:
Una pequeña fábrica consta de un centro de maquinado y estaciones de inspección en serie. Las
partes por procesar arriban a la planta a un ritmo de 1 por minuto. Los tiempos de procesamiento en
las máquinas e inspecciones subsecuentes son aleatorios con medias respectivas de 0.675 y 0.775
minutos; 90% de las partes inspeccionadas son “buenas” y se envían al área de embarque; el resto
son “malas” y se llevan a máquinas de reproceso. El centro de maquinado está sujeto a
descomposturas de ocurrencia aleatoria y la fábrica esta inicialmente vacía y desocupada. La tabla
siguiente muestra los estimados de las medias de desempeño analizadas para 5 réplicas
96
independientes, de longitud igual a 16 horas (se usan diferentes números aleatorios en cada réplica)
para una simulación de la planta.
Observe que los resultados para varias corridas pueden ser completamente diferentes. Así, una
sola corrida no produce las respuestas. Se presentan aquí algunas técnicas que ayudarán al analista a
encontrar de forma más rápida un estimador del resultado.
Muestreo antitético
El objetivo de esta técnica es inducir una correlación negativa entre los elementos
correspondientes en las series de números aleatorios utilizados para generar variaciones de entrada
en réplicas diferentes. Una forma de generar correlaciones negativas consiste en correr el modelo,
primero, con números aleatorios ri para obtener u estimador Y1 del parámetro estudiado y después,
con números 1-ri, obteniendo un estimador Y2 del parámetro estudiado.
Corridas comunes
Una práctica útil cuando se desarrolla un proceso de simulación, es emplear datos históricos, los
cuales pueden ser archivados y utilizados posteriormente para definir, por ejemplo, los programas
de producción de años anteriores.
El objetivo principal es iniciar nuevas corridas de simulación utilizando siempre los datos
almacenados; de esta forma, el uso de las corridas comunes afecta a todas las alternativas de igual
forma. Se debe aplicar cuando el problema consiste en la comparación de dos o más alternativas.
Muestreo clasificado
97
Esta técnica se apoya en un resultado parcial de una corrida, clasificándolo como interesante o
no interesante, en caso de ser interesante se continúa con la corrida en caso contrario se detiene la
corrida.
Variaciones de control
Este método utiliza aproximaciones de modelos analíticos para reducir la varianza. Por ejemplo,
una simulación puede ser un modelo complejo de colas donde interese conocer la longitud
promedio de la fila, cuyo valor puede estimarse analíticamente.
Muestreo estratificado
En esta técnica la función de distribución se divide en varias partes, lo más homogéneas posibles
que se resuelven o ejecutan por separado; los resultados obtenidos se combinan para lograr una sola
estimación del parámetro a analizar.
Muestreo sesgado
Consiste en distorsionar las probabilidades físicas del sistema real, de tal forma que los eventos
de interés ocurran más frecuentemente. Los resultados obtenidos presentarán también una
distorsión que debe corregirse mediante factores probabilísticos de ajuste.
VALIDACIÓN DE RESULTADOS
Al usar la simulación para estudiar un sistema complejo, encontramos varios tipos de error
como:
a) errores de diseño,
b) errores en la programación,
c) errores en los datos utilizados,
d) errores en el uso del modelo,
e) errores en la interpretación de los resultados.
Evaluar un modelo significa desarrollar un nivel aceptable de confianza de modo que las
interferencias obtenidas del comportamiento del modelo sean correctas y aplicables al sistema del
mundo real. La validación y verificación es una de las tareas más importantes y difíciles que
enfrenta la persona que desarrolla un modelo de simulación.
98
1. Verificación se refiere a la comparación del modelo conceptual con el código computacional
que se generó, para lo cual es necesario contestar preguntas como: ¿está correcta la
codificación?, ¿son correcta la entrada de datos y la estructura lógica del programa?.
H0 : V(modelo) = V(real)
H1 : V(modelo) V(real)
V(real) = 40.57
V(modelo) = 36.96
F= S12 = 40.57
S2 36.96
Fc de tablas con 8 y 10 grados de libertad y con un nivel de rechazo de un 5% s 3.07. Ya que F 0
es menor que Fc, se acepta que el modelo de simulación está arrojando resultados con la misma
variancia que el sistema real.
H0 : (modelo) = (real)
H1 : (modelo) (real)
99
E(modelo) = 104.90
E(real) = 103.87
t= x 1 - x2_____
n11 + n222 1 + 1
2
n 1 + n2 n 1 n2
Ya que t es menor que t c, se acepta que los resultados en cuanto a la producción de carburadores
por día del simulador son estadísticamente iguales, en cuanto a la media, a los de la producción
real.
En cuanto a la prueba de forma entre ambas muestras no se puede afirmar nada ya que la
cantidad pequeña de datos que se está manejando imposibilita la formación de histogramas para
realizarla.
OPTIMIZACIÓN
Una vez que se tiene un modelo de simulación computacional válido y que se ha verificado
estadísticamente, entonces, para lograr la optimización se necesita empezar a jugar con las variables
de decisión: se busca el mejor valor de la medida de efectividad. Este proceso de optimización tiene
que realizarse mediante el proceso de prueba y error, sin embargo, el número de combinaciones de
las variables de decisión que pueden ser probadas es infinito, por eso es indispensable usar técnicas
que permitan analizar sistemáticamente las posibilidades seleccionadas, de tal modo que
eventualmente se podrá escoger una combinación cercana del óptimo.
Estas técnicas se basan principalmente en el diseño de experimentos y las más utilizadas son:
100
Simplex
Simplex EVOP
Superficies de repuestas
SENSIBILIDAD Y EXPERIMENTACIÓN
Es el último paso dentro del proceso de simulación y puede efectuarse antes o durante la
implantación de las soluciones en el proceso real. Consiste en jugar o experimentar con el modelo
ante situaciones nuevas o imprevistas, que tengan cierta probabilidad de ocurrencia, con el objeto
de encontrar una solución óptima ante ese posible escenario. Esto es útil pues los sistemas reales
son dinámicos y de esta manera podemos adelantarnos y ser capaces de hacerles frente con
anticipación. El análisis de sensibilidad se enfoca principalmente a estudiar las variables no
controlables por el tomador de decisiones dentro del proceso real.
MONITOREO
Como se acaba de mencionar, los sistemas reales son dinámicos, esto significa que se debe
llevar un estricto control de los cambios ocurridos en ellos para inmediatamente implantarlos en el
modelo y para que pueda seguir siendo un fiel reflejo de la realidad.
101
Naylor, Burdick
Editorial Limusa
Simulación de Sistemas
Geofrey Gordon
Editorial Diana
102