Vous êtes sur la page 1sur 488

7101410GR01A01.

pdf 11/7/13 11:43:50

CM

MY

CY

CMY

K
Modelado y simulación
de eventos discretos

ALFONSO URQUÍA MORALEDA


CARLA MARTÍN VILLALBA

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA


MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Quedan rigurosamente prohibidas, sin la


autorización escrita de los titulares del
Copyright, bajo las sanciones establecidas
en las leyes, la reproducción total o
parcial de esta obra por cualquier medio
o procedimiento, comprendidos la reprografía
y el tratamiento informático, y la distribución
de ejemplares de ella mediante alquiler
o préstamos públicos.

© Universidad Nacional de Educación a Distancia


Madrid 2013

www.uned.es/publicaciones

© Alfonso Urquía Moraleda y Carla Martín Villalba

ISBN electrónico: 978-84-362-6781-5

Edición digital: septiembre de 2013


ÍNDICE

Prefacio 17
Organización de la Unidad Didáctica . . . . . . . . . . . . . . . . . . . . . 17
Cómo utilizar el libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Objetivos docentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1. Introducción al modelado y la simulación 19


1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.2. Conceptos fundamentales . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.2.1. Sistema, experimento y modelo . . . . . . . . . . . . . . . . . 24
1.2.2. Niveles en el conocimiento de los sistemas . . . . . . . . . . . 27
1.2.3. Marco formal para el modelado y la simulación . . . . . . . . 29
1.2.4. Clasificaciones de los modelos matemáticos . . . . . . . . . . . 32
1.3. Modelado y simulación de tiempo discreto . . . . . . . . . . . . . . . 35
1.3.1. Descripción de modelos de tiempo discreto . . . . . . . . . . . 36
1.3.2. Simulación de modelos de tiempo discreto . . . . . . . . . . . 38
1.3.3. Autómatas celulares . . . . . . . . . . . . . . . . . . . . . . . 38
1.4. Modelado y simulación de eventos discretos . . . . . . . . . . . . . . . 43
1.4.1. Modelado orientado a la planificación de eventos . . . . . . . . 44
1.4.2. Modelado orientado a los procesos . . . . . . . . . . . . . . . . 48
1.4.3. Modelado de una oficina de atención al público . . . . . . . . 49
1.5. Pasos en un estudio de simulación . . . . . . . . . . . . . . . . . . . . 55

7
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.5.1. Definición del problema y planificación del proyecto . . . . . . 57


1.5.2. Definición del sistema y formulación del modelo . . . . . . . . 59
1.5.3. Diseño de los experimentos . . . . . . . . . . . . . . . . . . . . 63
1.5.4. Datos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.5.5. Traducción del modelo . . . . . . . . . . . . . . . . . . . . . . 64
1.5.6. Verificación y validación del modelo . . . . . . . . . . . . . . . 65
1.5.7. Experimentación y análisis de los resultados . . . . . . . . . . 66
1.5.8. Documentación y aplicación de los resultados . . . . . . . . . 67
1.6. Análisis de datos: introducción a R . . . . . . . . . . . . . . . . . . . 68
1.6.1. El espacio de trabajo . . . . . . . . . . . . . . . . . . . . . . . 70
1.6.2. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . . . 72
1.6.3. Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.6.4. Manejo básico de los datos . . . . . . . . . . . . . . . . . . . . 78
1.6.5. Valor NA (Not Available) . . . . . . . . . . . . . . . . . . . . 79
1.6.6. Conversión del tipo de datos . . . . . . . . . . . . . . . . . . . 80
1.6.7. Control del flujo . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.6.8. Definición de funciones . . . . . . . . . . . . . . . . . . . . . . 82
1.7. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1.8. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 84
1.9. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 87

2. Modelado mediante DEVS 99


2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.2. Modelos DEVS atómicos . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.2.1. Especificación formal . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.2. Comportamiento de modelos DEVS atómicos . . . . . . . . . 105
2.2.3. Práctica del modelado . . . . . . . . . . . . . . . . . . . . . . 109
2.3. Modelos DEVS compuestos . . . . . . . . . . . . . . . . . . . . . . . 121

8
ÍNDICE

2.3.1. Especificación formal . . . . . . . . . . . . . . . . . . . . . . . 121


2.3.2. Comportamiento de modelos DEVS acoplados . . . . . . . . . 123
2.3.3. Práctica del modelado . . . . . . . . . . . . . . . . . . . . . . 125
2.4. Simulación de modelos DEVS . . . . . . . . . . . . . . . . . . . . . . 128
2.4.1. Algoritmo DEVS-simulador . . . . . . . . . . . . . . . . . . . 130
2.4.2. Algoritmo DEVS-coordinador . . . . . . . . . . . . . . . . . . 133
2.4.3. Algoritmo DEVS-coordinador-raı́z . . . . . . . . . . . . . . . . 137
2.5. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 139
2.6. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 140
2.7. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 148

3. Modelado con Arena 165


3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.2. Comenzando con Arena . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.3. Modelado de los recursos . . . . . . . . . . . . . . . . . . . . . . . . . 180
3.3.1. Planificación de la capacidad . . . . . . . . . . . . . . . . . . . 180
3.3.2. Fallos en los recursos . . . . . . . . . . . . . . . . . . . . . . . 182
3.3.3. Utilización de los recursos . . . . . . . . . . . . . . . . . . . . 183
3.4. Encapsulado y prueba de circuitos . . . . . . . . . . . . . . . . . . . . 184
3.4.1. Descripción del funcionamiento del sistema . . . . . . . . . . . 185
3.4.2. Modelado del funcionamiento del sistema . . . . . . . . . . . . 186
3.4.3. Definición del experimento . . . . . . . . . . . . . . . . . . . . 194
3.4.4. Ejecución de la simulación . . . . . . . . . . . . . . . . . . . . 194
3.4.5. Planificación de la capacidad de la Zona de Retrabajado . . . 196
3.4.6. Averı́as en la Zona de Encapsulado y Prueba . . . . . . . . . . 201
3.5. Modelado detallado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
3.5.1. Rechazo (balking) . . . . . . . . . . . . . . . . . . . . . . . . . 208
3.5.2. Conjuntos de objetos . . . . . . . . . . . . . . . . . . . . . . . 209

9
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

3.5.3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210


3.5.4. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
3.5.5. Submodelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
3.5.6. Costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
3.6. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 213
3.7. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 214
3.8. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 221

4. Modelado de las entradas aleatorias 249


4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
4.2. Conceptos básicos de probabilidad . . . . . . . . . . . . . . . . . . . . 256
4.2.1. El significado de “probabilidad” . . . . . . . . . . . . . . . . . 256
4.2.2. Probabilidad condicionada . . . . . . . . . . . . . . . . . . . . 258
4.2.3. El teorema fundamental de la probabilidad . . . . . . . . . . . 258
4.2.4. El concepto de variable aleatoria . . . . . . . . . . . . . . . . 259
4.2.5. Probabilidad acumulada y densidad de probabilidad . . . . . . 260
4.2.6. Cuantiles y mediana . . . . . . . . . . . . . . . . . . . . . . . 261
4.2.7. Media, varianza y desviación estándar . . . . . . . . . . . . . 261
4.2.8. Estimadores de la media y la varianza . . . . . . . . . . . . . 262
4.2.9. Teorema del lı́mite central . . . . . . . . . . . . . . . . . . . . 264
4.2.10. Intervalos de confianza para la media . . . . . . . . . . . . . . 264
4.2.11. Intervalos de confianza para la varianza de una distribución
normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
4.3. Distribuciones de probabilidad . . . . . . . . . . . . . . . . . . . . . . 272
4.3.1. Parámetros de las familias de distribuciones teóricas continuas 272
4.3.2. Distribuciones empı́ricas continuas . . . . . . . . . . . . . . . 273
4.3.3. Distribuciones empı́ricas discretas . . . . . . . . . . . . . . . . 275
4.3.4. Desplazamiento y truncado de distribuciones . . . . . . . . . . 275

10
ÍNDICE

4.4. Independencia y homogeneidad de los datos experimentales . . . . . 277


4.4.1. Análisis de la independencia de los datos experimentales . . . 277
4.4.2. Análisis de la homogeneidad de los datos experimentales . . . 278
4.5. Tarea I: Selección de la familia de distribuciones . . . . . . . . . . . . 279
4.5.1. Consideraciones teóricas . . . . . . . . . . . . . . . . . . . . . 279
4.5.2. Estadı́sticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
4.5.3. Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
4.5.4. Gráficas cuantil-cuantil . . . . . . . . . . . . . . . . . . . . . . 286
4.6. Tarea II: Estimación de los parámetros . . . . . . . . . . . . . . . . . 289
4.7. Tarea III: Medida de la bondad del ajuste . . . . . . . . . . . . . . . 292
4.8. Selección de la distribución en ausencia de datos . . . . . . . . . . . . 294
4.9. Procesos estocásticos de llegada . . . . . . . . . . . . . . . . . . . . . 297
4.9.1. Procesos de Poisson . . . . . . . . . . . . . . . . . . . . . . . . 298
4.9.2. Procesos de Poisson no estacionarios . . . . . . . . . . . . . . 299
4.9.3. Procesos de Poisson compuestos . . . . . . . . . . . . . . . . . 301
4.9.4. Modelado usando Arena . . . . . . . . . . . . . . . . . . . . . 302
4.10. Modelado de las entradas usando Arena . . . . . . . . . . . . . . . . 304
4.11. Modelado de las entradas usando R . . . . . . . . . . . . . . . . . . . 308
4.11.1. Funciones estadı́sticas . . . . . . . . . . . . . . . . . . . . . . 308
4.11.2. Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
4.11.3. Gráficas Q-Q . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
4.11.4. Ajuste de los datos . . . . . . . . . . . . . . . . . . . . . . . . 312
4.11.5. Medida de la bondad del ajuste . . . . . . . . . . . . . . . . . 313
4.12. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 313
4.13. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 315
4.14. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 317

5. Generación de las entradas aleatorias 325

11
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329


5.2. Generación de números aleatorios . . . . . . . . . . . . . . . . . . . . 330
5.2.1. Generadores fı́sicos . . . . . . . . . . . . . . . . . . . . . . . . 331
5.2.2. Generadores aritméticos . . . . . . . . . . . . . . . . . . . . . 335
5.2.3. Generadores congruenciales lineales . . . . . . . . . . . . . . . 338
5.2.4. Generadores congruenciales lineales mixtos . . . . . . . . . . . 340
5.2.5. Generadores congruenciales lineales multiplicativos . . . . . . 342
5.2.6. Otros generadores congruenciales . . . . . . . . . . . . . . . . 344
5.2.7. Generadores combinados . . . . . . . . . . . . . . . . . . . . . 345
5.2.8. Generadores de Tausworthe . . . . . . . . . . . . . . . . . . . 348
5.3. Tests empı́ricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
5.4. Métodos para generar observaciones de variables aleatorias . . . . . . 353
5.4.1. Método de la transformación inversa . . . . . . . . . . . . . . 353
5.4.2. Composición . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.4.3. Convolución . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.4.4. Método de aceptación/rechazo . . . . . . . . . . . . . . . . . . 359
5.5. Observaciones de variables aleatorias continuas . . . . . . . . . . . . . 360
5.5.1. Uniforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.5.2. Exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.5.3. Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.5.4. Lognormal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.5.5. Triangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.5.6. Distribución empı́rica . . . . . . . . . . . . . . . . . . . . . . . 362
5.6. Observaciones de variables aleatorias discretas . . . . . . . . . . . . . 363
5.6.1. Distribución Bernoulli . . . . . . . . . . . . . . . . . . . . . . 363
5.6.2. Distribución discreta uniforme . . . . . . . . . . . . . . . . . . 363
5.6.3. Distribución binomial . . . . . . . . . . . . . . . . . . . . . . . 363

12
ÍNDICE

5.6.4. Distribución geométrica . . . . . . . . . . . . . . . . . . . . . 364


5.6.5. Distribución negativa binomial . . . . . . . . . . . . . . . . . . 364
5.6.6. Distribución de Poisson . . . . . . . . . . . . . . . . . . . . . . 364
5.6.7. Distribución empı́rica . . . . . . . . . . . . . . . . . . . . . . . 365
5.7. Generación de procesos de llegada . . . . . . . . . . . . . . . . . . . . 366
5.7.1. Proceso de Poisson estacionario . . . . . . . . . . . . . . . . . 366
5.7.2. Proceso de Poisson no estacionario . . . . . . . . . . . . . . . 366
5.7.3. Proceso de Poisson con llegadas en grupo . . . . . . . . . . . . 367
5.8. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 368
5.9. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 369
5.10. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 372

6. Análisis de los resultados de la simulación 379


6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
6.2. Comportamiento transitorio y estacionario . . . . . . . . . . . . . . . 384
6.3. Simulaciones con condición de finalización . . . . . . . . . . . . . . . 388
6.4. Simulaciones en el estacionario . . . . . . . . . . . . . . . . . . . . . . 390
6.4.1. Método gráfico de Welch . . . . . . . . . . . . . . . . . . . . . 390
6.4.2. Media de la distribución en el estacionario . . . . . . . . . . . 394
6.5. Intervalos de confianza para varias magnitudes . . . . . . . . . . . . . 396
6.6. Comparación entre dos sistemas . . . . . . . . . . . . . . . . . . . . . 398
6.7. Comparación entre más de dos sistemas . . . . . . . . . . . . . . . . . 399
6.7.1. Comparación con un estándar . . . . . . . . . . . . . . . . . . 400
6.7.2. Comparación de todos con todos . . . . . . . . . . . . . . . . 401
6.8. Análisis usando Arena . . . . . . . . . . . . . . . . . . . . . . . . . . 402
6.8.1. Simulación con terminación . . . . . . . . . . . . . . . . . . . 402
6.8.2. Comparación de dos modelos . . . . . . . . . . . . . . . . . . 404
6.8.3. Comparación entre más de dos modelos . . . . . . . . . . . . . 406

13
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

6.8.4. Simulación en el estacionario . . . . . . . . . . . . . . . . . . . 410


6.9. Análisis usando R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
6.10. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6.11. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 417
6.12. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 419

7. Diseño de experimentos y optimización 421


7.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
7.2. Objetivos, respuestas y factores . . . . . . . . . . . . . . . . . . . . . 427
7.2.1. Objetivos del experimento . . . . . . . . . . . . . . . . . . . . 427
7.2.2. Selección de las respuestas . . . . . . . . . . . . . . . . . . . . 428
7.2.3. Selección de los factores experimentales . . . . . . . . . . . . . 430
7.3. Diseño experimental factorial completo . . . . . . . . . . . . . . . . . 432
7.3.1. Efectos principales . . . . . . . . . . . . . . . . . . . . . . . . 433
7.3.2. Interacciones de dos factores . . . . . . . . . . . . . . . . . . . 433
7.3.3. Interacción entre más de dos factores . . . . . . . . . . . . . . 438
7.3.4. Intervalos de confianza . . . . . . . . . . . . . . . . . . . . . . 438
7.3.5. Modelado de la respuesta . . . . . . . . . . . . . . . . . . . . . 439
7.4. Diseño experimental factorial fraccional . . . . . . . . . . . . . . . . . 442
7.4.1. Diseño experimental 2k−p . . . . . . . . . . . . . . . . . . . . . 442
7.4.2. Modelado de la respuesta . . . . . . . . . . . . . . . . . . . . . 443
7.5. Optimización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
7.5.1. Metodologı́a de la superficie de respuesta . . . . . . . . . . . . 445
7.5.2. Optimización usando Arena . . . . . . . . . . . . . . . . . . . 448
7.6. Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . 451
7.7. Ejercicios de autocomprobación . . . . . . . . . . . . . . . . . . . . . 452
7.8. Soluciones de los ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 455

14
ÍNDICE

APÉNDICES 461

A. Distribuciones de probabilidad continuas 461


Uniforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Gamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Weibull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Lognormal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Triangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Equivalencias entre distribuciones . . . . . . . . . . . . . . . . . . . . . . . 471
Relaciones entre distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . 472

B. Distribuciones de probabilidad discretas 473


Bernoulli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Uniforme discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Binomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Binomial negativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Equivalencias entre distribuciones . . . . . . . . . . . . . . . . . . . . . . . 481
Relaciones entre distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . 481

Índice alfabético 483

Bibliografı́a 489

15
PREFACIO

ORGANIZACIÓN DE LA UNIDAD DIDÁCTICA

La presente Unidad Didáctica está estructurada en siete temas. En el Tema 1


se definen conceptos básicos comúnmente empleados en el ámbito del modelado y
la simulación, se introducen el modelado y la simulación de tiempo discreto y de
eventos discretos, y se explican cuáles son los pasos que comúnmente se siguen en
un estudio de simulación. Finalmente, se proporcionan algunas indicaciones acerca
del manejo de herramientas para el análisis de datos.
En los siguientes seis temas se abordan diferentes etapas en el desarrollo de
un estudio de simulación, como son el modelado de las entradas, el desarrollo del
modelo, el planteamiento del experimento, la simulación del modelo y el análisis de
los resultados de la simulación.
En los Temas 2 y 3 se describen dos aproximaciones diferentes al modelado de
sistemas de eventos discretos. El Tema 2 está dedicado a DEVS, una especificación
para modelos de eventos discretos que está basada en la planificación de los eventos.
En el Tema 3 se introduce la metodologı́a del modelado orientado a los procesos,
empleando para ello el entorno de simulación Arena.
En el Tema 4 se dan algunas recomendaciones para el modelado de las entradas
aleatorias y se describen algunas de las técnicas estadı́sticas que pueden emplearse.
En el Tema 5 se explican técnicas para generar observaciones de las entradas
aleatorias con las cuales alimentar el modelo.
El análisis de los resultados de la simulación de un modelo estocástico debe
realizarse empleando técnicas estadı́sticas. Esta cuestión se aborda en el Tema 6.
Finalmente, en el Tema 7 se ofrece una introducción al diseño de experimentos y a
la optimización.
Al final de la unidad didáctica se encuentran dos apéndices, en los que se recoge
en forma de tablas información útil acerca de las distribuciones de probabilidad
continuas y discretas más comúnmente usadas.

17
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

CÓMO UTILIZAR EL LIBRO

Por lo general, las explicaciones ofrecidas en cada tema están autocontenidas. No


obstante, serı́a recomendable que la primera lectura de la unidad didáctica se hiciera
siguiendo el orden de los temas, ya que de esta manera es más sencillo comprender
el hilo conductor existente entre ellos.
Asimismo, se recomienda al lector que instale en su ordenador un IDE para el
lenguaje de programación R y la versión de estudiante de Arena, y que emplee estas
herramientas para realizar aquellos ejemplos y ejercicios autocomprobación que ası́
lo requieran.

OBJETIVOS DOCENTES

Se plantea como objetivo docente fundamental que el alumno adquiera las capa-
cidades siguientes:

1. Discutir los conceptos fundamentales de la simulación de eventos discretos.

2. Diseñar y realizar evaluaciones básicas de modelos de eventos discretos para


la simulación por ordenador de procesos logı́sticos.

3. Modelar estadı́sticamente las entradas aleatorias al modelo.

4. Comparar y contrastar métodos para la generación de números aleatorios y


métodos para la generación de observaciones de variables aleatorias.

5. Diseñar, codificar, verificar, validar y documentar programas de simulación de


modelos de eventos discretos.

6. Realizar el diseño estadı́stico de experimentos, analizar estadı́sticamente los


resultados de las simulaciones, extraer conclusiones y documentarlas.

7. Analizar mediante simulación por ordenador el funcionamiento de un proceso


logı́stico y proponer de manera argumentada mejoras al mismo.

Al comienzo de cada tema se indican los objetivos docentes que deben alcanzarse
una vez completado el estudio del mismo y realizados los ejercicios prácticos de au-
tocomprobación. Un buen procedimiento de autoevaluación del aprendizaje consiste
en repasar los objetivos docentes una vez completado el estudio del tema, analizando
en cada caso si se ha alcanzado o no el objetivo.

18
TEMA 1

INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

1.1. Introducción
1.2. Conceptos fundamentales
1.3. Modelado y simulación de tiempo discreto
1.4. Modelado y simulación de eventos discretos
1.5. Pasos en un estudio de simulación
1.6. Análisis de datos: introducción a R
1.7. Lecturas recomendadas
1.8. Ejercicios de autocomprobación
1.9. Soluciones de los ejercicios
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Discutir el significado de los conceptos “sistema”, “modelo”, “experimento” y


“simulación”.

– Discutir en qué situaciones puede ser imposible o desaconsejable experimentar


con el sistema real.

– Describir y comparar las diferentes formas de estudiar un sistema y los dife-


rentes tipos de modelos.

– Comparar y reconocer los distintos tipos de modelos matemáticos.

– Discutir los niveles en el conocimiento de los sistemas de la clasificación de Klir,


y el significado de los conceptos “análisis”, “inferencia” y “diseño” de sistemas
con relación a dicha clasificación del conocimiento.

– Discutir un marco formal para el modelado y la simulación en el que se


definen 5 entidades (sistema fuente, base de datos del comportamiento, modelo,
simulador y marco experimental) y dos relaciones entre ellas (relación de
modelado y relación de simulación).

– Describir las diferencias entre los distintos tipos de modelos matemáticos y


saber reconocer a qué tipo pertenece cualquier modelo.

– Discutir qué caracterı́sticas debe tener un modelo para ser de tiempo discreto
y cómo se realiza la descripción y simulación de este tipo de modelos.

– Discutir qué es un autómata celular y cómo se realiza su descripción y simu-


lación.

– Discutir qué caracterı́sticas tienen los modelos de eventos discretos y las dife-
rencias entre su descripción orientada a la planificación de eventos y orientada
a los procesos.

– Discutir los pasos de que tı́picamente consta un estudio de simulación en el


cual se emplean modelos estocásticos de eventos discretos.

– Emplear el lenguaje R para realizar programas sencillos y representaciones


gráficas sencillas de los datos.

21
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

1.1. INTRODUCCIÓN

En este primer tema se definen algunos de los conceptos más comúnmente em-
pleados en el ámbito del modelado y la simulación, como son “modelo”, “sistema”,
“experimento” y “simulación”. Se describen cuatro tipos diferentes de modelos, uno
de los cuales es el empleado en simulación: el modelo matemático.
En la teorı́a de sistemas se diferencian dos aspectos fundamentales, ortogonales
entre sı́. Por una parte está el conocimiento del que se dispone acerca del comporta-
miento de un sistema. Por otra parte está la especificación de dicho conocimiento,
que puede realizarse empleando uno u otro tipo de modelo matemático.
En este tema se muestra una clasificación en cuatro niveles del conocimiento
que puede poseerse acerca de un sistema. Esta clasificación facilita la definición de las
tres actividades fundamentales relacionadas con los sistemas: el análisis, la inferencia
y el diseño.
Se describe asimismo un marco formal para el modelado y la simulación, en
el cual se establecen unas entidades, como son el sistema fuente, el modelo y el
simulador, y también la relación entre ellas. De este marco formal se deriva de forma
natural la definición de conceptos básicos como son “marco experimental”, “simula-
dor”, “validez” del modelo, “corrección” del simulador, “complejidad” del modelo y
“simplificación” del modelo, entre otros.
Ahondando en lo que respecta a la especificación del conocimiento, se describen
diferentes clasificaciones de los modelos matemáticos que responden a diferentes
criterios. Se pone especial énfasis en la descripción de los tipos de modelos que aquı́
nos ocupan: los modelos matemáticos de tiempo discreto y de eventos discretos.
Se explican también los pasos de los que tı́picamente consta un estudio de
simulación, cuando en él se emplean modelos estocásticos de eventos discretos.
Estos pasos comprenden la definición del problema, la planificación del proyecto,
la definición del sistema, las diferentes etapas en la definición del modelo y del
experimento, la experimentación con el modelo, el análisis e interpretación de los
resultados, y la documentación de las conclusiones.
Finalmente, se introduce una de las múltiples herramientas software existentes
para el análisis de datos: el lenguaje R. Dicho análisis es una parte esencial en el
planteamiento del modelo matemático y también en la toma de decisiones basada
en los resultados de la simulación de los modelos.

23
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.2. CONCEPTOS FUNDAMENTALES

Una forma de aproximarse a una disciplina es entendiendo el significado de los


términos que describen sus conceptos fundamentales. Con este propósito se explica
a continuación el significado de términos que describen conceptos fundamentales en
el ámbito del modelado y la simulación.

1.2.1. Sistema, experimento y modelo

El modelado matemático y la simulación por ordenador es una forma de adquirir


conocimiento acerca del comportamiento de los sistemas. A la vista de ello, cabe
plantearse en primer lugar qué se entiende por sistema. Puede considerarse que un
sistema es cualquier objeto cuyas propiedades se desean estudiar. De acuerdo con
esta definición, cualquier fuente potencial de datos puede considerarse que es un
sistema.
Ası́, por ejemplo, una fábrica con máquinas, personal y almacén serı́a un sistema.
También lo serı́a el servicio de emergencias de un hospital, incluyendo el personal, las
salas, el equipamiento y el transporte de los pacientes. Serı́a igualmente un sistema
una red de ordenadores con servidores, clientes, dispositivos de disco e impresoras,
como también lo serı́a un supermercado con control de inventario, cajeros y atención
al cliente, o un parque temático con atracciones, tiendas, restaurantes, trabajadores,
clientes y aparcamientos, por citar únicamente algunos ejemplos.
Una manera de conocer el comportamiento de un sistema es experimentar con él.
De hecho, éste ha sido el método empleado durante siglos para avanzar en el conoci-
miento: plantear preguntas acerca del comportamiento de los sistemas y responderlas
mediante experimentación. Un experimento es el proceso de extraer datos de un
sistema sobre el cual se ha ejercido una acción externa. Por ejemplo, el encargado de
un supermercado puede ensayar diferentes procedimientos de control del inventario
y de distribución del personal para determinar qué combinación muestra un mejor
equilibrio entre coste y calidad de servicio.
Experimentar directamente con el sistema real presenta indudables ventajas. Sin
embargo, en ocasiones no es posible. Quizá el motivo más evidente es que el sistema
real aun no exista fı́sicamente. Esto sucede por ejemplo en la fase de diseño de
nuevos sistemas, cuando el ingeniero necesita predecir el comportamiento de los
mismos antes de que sean construidos. Otro motivo es que la escala de tiempo del
experimento lo haga inviable. Esto es habitual en los estudios geológicos, cosmoló-

24
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

gicos, de evolución de los ecosistemas y sociológicos, en los cuales los experimentos


deberı́an tener una duración de cientos, miles o millones de años.
Aun siendo posible experimentar directamente con el sistema real, en ocasiones
es desaconsejable debido a su elevado coste económico. Consideremos un empresario
que debe decidir si ampliar o no las instalaciones de su fábrica, para lo cual necesita
estimar si la ganancia potencial que supondrán las nuevas instalaciones justifica el
coste que tendrá realizar la ampliación. Experimentar directamente con el sistema
real supondrı́a realizar la ampliación con el fin de evaluar su rendimiento económico,
lo cual no parece razonable.
Otro posible motivo para no experimentar con el sistema real es que el experi-
mento produzca perjuicio, incomodidad o sea peligroso. Ası́, experimentar con un
nuevo sistema de facturación en un aeropuerto puede producir retrasos y problemas
imprevisibles que perjudiquen al viajero. Un ejemplo de experimento peligroso serı́a
usar el sistema real para entrenar a los operarios de una central nuclear acerca de
cómo deben reaccionar ante situaciones de emergencia.
Una alternativa a la experimentación con el sistema real consiste en realizar
un modelo del sistema y experimentar con el modelo. En el sentido amplio del
término, un modelo es una representación de un sistema desarrollada para un
propósito especı́fico. Volviendo al ejemplo de la ampliación de la fábrica, en lugar
de experimentar con el sistema real puede realizarse un modelo de la operación de
cada una de las configuraciones de la fábrica (la actual y la ampliada) y comparar
el comportamiento de los modelos.
Como hemos visto, en ocasiones experimentar con un modelo resulta menos
costoso y más seguro que experimentar directamente con el sistema real. Otra
ventaja de la experimentación con modelos es que, con un modelo adecuado, se
pueden ensayar condiciones de operación extremas que son impracticables en el
sistema real. Este es el caso cuando el experimento requiere modificar variables que
en el sistema real o bien no están accesibles, o bien no pueden ser modificadas en el
rango requerido.
Resumiendo lo anterior, en la Figura 1.1 se muestran las dos formas de conocer el
comportamiento de un sistema: experimentando con el sistema real y experimentan-
do con un modelo del sistema. Obsérvese también que en la figura se señalan cuatro
tipos diferentes de modelo: mental, verbal, fı́sico y matemático. A continuación se
explican las caracterı́sticas de cada uno de ellos.
En nuestra vida cotidiana empleamos continuamente modelos mentales para
comprender y predecir el comportamiento de los sistemas. Considerar que alguien es

25
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

SISTEMA

EXPERIMENTAR CON EXPERIMENTAR CON EL


EL SISTEMA REAL MODELO DEL SISTEMA

MODELO MODELO MODELO MODELO


MENTAL VERBAL FÍSICO MATEMÁTICO

SOLUCIÓN ANALÍTICA SIMULACIÓN

Figura 1.1: Formas de estudiar un sistema.

“amable” constituye un modelo del comportamiento de esa persona. Este modelo nos
ayuda a responder, por ejemplo, a la pregunta de cómo reaccionará si le pedimos
un favor. También, mediante la intuición y la experiencia, desarrollamos modelos
mentales de los sistemas técnicos. Por ejemplo, aprender a conducir un coche consiste
parcialmente en desarrollar un modelo mental de las propiedades de la conducción
del coche. Asimismo, un operario trabajando en determinado proceso industrial
sabe cómo el proceso reacciona ante diferentes acciones: el operario, mediante el
entrenamiento y la experiencia, ha desarrollado un modelo mental del proceso.
Otro tipo de modelo es el modelo verbal, en el cual el comportamiento del
sistema es descrito mediante palabras. Por ejemplo, un modelo mental es: si se
aprieta el freno, entonces la velocidad del coche se reduce. Los sistemas expertos
son ejemplos de modelos verbales formalizados. Es importante diferenciar entre
los modelos mentales y los verbales. Por ejemplo, usamos un modelo mental de la
dinámica de la bicicleta cuando la conducimos. Sin embargo, no es sencillo convertirlo
en un modelo verbal.
Además de los modelos mentales y verbales, existe otro tipo de modelos que
tratan de imitar al sistema real. Son los modelos fı́sicos, tales como las maquetas
a escala que construyen los arquitectos, diseñadores de barcos o aeronaves, para
comprobar las propiedades estéticas, aerodinámicas, etc.
Finalmente, el cuarto tipo de modelo es el modelo matemático. En los modelos
matemáticos las relaciones entre las magnitudes de interés del sistema (distancias,
velocidades, flujos, etc.) son descritas mediante relaciones matemáticas. La mayorı́a
de las teorı́as sobre las Leyes de la Naturaleza son descritas empleando modelos

26
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

matemáticos. Igualmente, en todas las ramas de la Ingenierı́a se emplean modelos


matemáticos para describir el funcionamiento de los sistemas naturales y artificiales.
En algunos casos, las relaciones matemáticas que constituyen los modelos son
sencillas y puede encontrarse una solución analı́tica del modelo. Sin embargo,
en la mayorı́a de los casos los modelos no pueden resolverse analı́ticamente y deben
estudiarse con ayuda del ordenador, aplicando métodos numéricos. Este experimento
numérico realizado sobre el modelo matemático recibe el nombre de simulación.
A partir de este punto nos enfocaremos en los modelos de tipo matemático y en
su resolución mediante simulación por ordenador. Los modelos mentales, verbales y
fı́sicos quedan fuera del alcance de este texto. Emplearemos en lo sucesivo el término
“modelo” para referirnos a modelo matemático. También está fuera del alcance de
este texto la resolución analı́tica de los modelos matemáticos.

1.2.2. Niveles en el conocimiento de los sistemas

Existen varias formas de clasificar el conocimiento que puede poseerse de un


sistema. A principios de la década de 1970, G.J. Klir propuso una clasificación del
conocimiento en cuatro niveles, que resulta muy adecuada en el ámbito del modelado
y la simulación. A continuación se indica qué tipo de conocimiento se posee acerca
del sistema en cada nivel, de acuerdo con esta clasificación. A medida que se asciende
de nivel, se conocen aspectos importantes del sistema que no se conocen en los niveles
inferiores del conocimiento.

– Nivel 0 - Fuente. En este nivel identificamos la porción del mundo real a


modelar y las maneras mediante las cuáles vamos a observarlo. Dicha porción
del mundo real, que es nuestra fuente de datos, se denomina sistema fuente.

– Nivel 1 - Datos. En este nivel disponemos de una base de datos de medidas


y observaciones de nuestro sistema fuente.

– Nivel 2 - Generación. En este nivel somos capaces de recrear estos datos


usando una representación más compacta. Por ejemplo, mediante fórmulas
matemáticas o algoritmos. Dado que un mismo conjunto de datos puede ser
generado empleando diferentes fórmulas, algoritmos u otros procedimientos,
haber determinado el procedimiento para reproducir los datos es un conoci-
miento que no tenı́amos al Nivel 1 (datos).

– Nivel 3 - Estructura. En este último nivel sabemos cómo recrear los datos
observados en el Nivel 1 (datos) de una manera especı́fica: en términos de

27
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

componentes interconectados entre sı́. Esto implica un conocimiento acerca de


la estructura interna del sistema.

Los modelos constituyen una formalización del conocimiento en los Niveles 2


(generación) y 3 (estructura). Por otra parte, esta clasificación permite definir en
qué consisten los tres tipos básicos de problemas relacionados con el conocimiento
de los sistemas: análisis, inferencia y diseño. Cada uno de estos problemas implica
un determinado movimiento entre los niveles de conocimiento del sistema.

– Al realizar el análisis de un sistema se intenta comprender el comportamiento


del sistema, existente o hipotético, empleando para ello el conocimiento que se
tiene de su estructura.

– En la inferencia sobre un sistema se intenta conocer la estructura del sistema


a partir de las observaciones que pueden realizarse del mismo.

– En el diseño de un sistema se investigan diferentes estructuras alternativas


para un sistema completamente nuevo o para el rediseño de uno ya existente.

Cuando nos movemos hacia niveles inferiores del conocimiento, como sucede en
el caso del análisis de sistemas, no estamos generando conocimiento nuevo. Estamos
únicamente haciendo explı́cito lo que ya está implı́cito en la descripción que tenemos.
Por el contrario, la inferencia y el diseño son problemas que requieren ascender en
los niveles de conocimiento. Al hacer inferencia disponemos de una base de datos
del comportamiento del sistema fuente y tratamos de encontrar una representación
del conocimiento al Nivel 2 (generación) o al Nivel 3 (estructura), que nos permita
recrear los datos de que disponemos. Este proceso se denomina construcción del
modelo.
En el caso de la inferencia, el sistema fuente existe. Sin embargo, en el caso
del diseño el sistema fuente no existe y el objetivo es construir un sistema que se
comporte de la manera deseada. Si el objetivo es llegar a construir el sistema, debe
llegarse a un Nivel 3 (estructura) del conocimiento, puesto que la construcción se
realizará mediante la interconexión de diferentes componentes tecnológicos.
Finalmente, el proceso denominado ingenierı́a inversa tiene elementos tanto
de inferencia como de diseño. Para hacer ingenierı́a inversa de un sistema existente,
en primer lugar se realiza un gran número de observaciones de él. A partir de estas
observaciones, se infiere el comportamiento del sistema y se diseña una estructura
alternativa que tenga ese comportamiento.

28
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

1.2.3. Marco formal para el modelado y la simulación

En esta sección se presenta un marco formal para el modelado matemático y la


simulación, en el cual se definen cinco entidades (sistema fuente, base de datos
del comportamiento, modelo, simulador y marco experimental) y dos relaciones
entre ellas (relación de modelado y relación de simulación). En la Figura 1.2 se han
representado esquemáticamente las cinco entidades y las dos relaciones. Se describen
a continuación.

Marco experimental

Sistema Base de datos del


Simulador
fuente comportamiento

Relación de
Relación de simulación
modelado
Modelo

Figura 1.2: Entidades básicas del modelado y simulación, y su relación.

El sistema fuente es el entorno real o virtual que estamos interesados en mo-


delar, el cual constituye una fuente de datos observables, en la forma de trayectorias
(observaciones indexadas en el tiempo) de variables. Esta entidad es conocida en el
Nivel 0 (fuente) de conocimiento del sistema.
Los datos que se han recogido a partir de observaciones o experimentando con
el sistema se llaman base de datos del comportamiento del sistema. Estas
observaciones son caracterı́sticas del conocimiento en el Nivel 1 (datos). Los datos
son observados o adquiridos a través de marcos experimentales de interés para quien
realiza el modelo. Un marco experimental es una especificación de las condiciones
bajo las cuales el sistema es observado o se experimenta con él. Es la formulación
operacional de los objetivos que motivan un proyecto de modelado y simulación.
Hay dos formas igualmente válidas de entender qué es un marco experimental.
En la primera, el marco experimental es la definición del tipo de los datos que se
incluirán en la base de datos del comportamiento del sistema. En la segunda, el
marco experimental es un sistema que interactúa con el sistema de interés para
obtener observaciones bajo determinadas condiciones experimentales. En esta se-

29
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

gunda aproximación, el marco experimental está caracterizado por ser un sistema de


medida y observador, que tı́picamente está compuesto por tres componentes (véase la
Figura 1.3): generador, receptor y transductor. El generador genera las secuencias
de entrada al sistema. El receptor monitoriza el experimento, para comprobar que
se satisfacen las condiciones experimentales requeridas. El transductor observa y
analiza las secuencias de salida del sistema.

SISTEMA

MARCO EXPERIMENTAL

GENERADOR RECEPTOR TRANSDUCTOR

Figura 1.3: Marco experimental y sus componentes.

Es importante establecer lo antes posible en el proceso de desarrollo del modelo


cuáles son los objetivos del estudio, ya que los objetivos sirven para enfocar el
modelo en aquellos aspectos del sistema que son relevantes para el propósito del
estudio. En otras palabras, conocer los objetivos del estudio permite plantear los
marcos experimentales adecuados. Los marcos experimentales trasladan los objetivos
a condiciones de experimentación más precisas para el sistema fuente y sus modelos.
Una vez fijados los objetivos, presumiblemente existirá un nivel en la especifi-
cación del sistema que será el más adecuado para contestar la cuestión planteada.
Cuanto más exigentes sean las preguntas, normalmente mayor es la resolución nece-
saria (nivel en la descripción del modelo) para contestarlas. Por ello, la elección de
un nivel de abstracción apropiado repercute en la consecución de los objetivos.
Un procedimiento para transformar los objetivos en marcos experimentales, en
aquellos casos en que los objetivos se refieren al diseño del sistema, es el siguiente:

1. Se establece qué medidas van a usarse para evaluar las diferentes alternativas
de diseño. Estas medidas deben cuantificar la eficacia con la que el sistema
cumple con sus objetivos. Llamaremos a estas medidas las medidas de salida.

30
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

2. Para calcular esas medidas, el modelo deberá incluir ciertas variables (llamadas
variables de salida) cuyo valor deberá calcularse durante la simulación del
modelo.

3. El cálculo de las medidas de salida a partir de las variables de salida se realiza


en el componente transductor del marco experimental.

Las otras dos entidades que componen el marco formal son el modelo y el simula-
dor. En el contexto de este marco formal, se entiende que un modelo de un sistema
es un conjunto de instrucciones, reglas, ecuaciones o ligaduras para reproducir el
comportamiento del sistema. Se trata de una especificación del conocimiento acerca
del comportamiento del sistema al Nivel 2 (generación) o al Nivel 3 (estructura).
Dado que un modelo es un conjunto de instrucciones, reglas, ecuaciones o li-
gaduras, es necesario disponer de un agente capaz de obedecer las instrucciones y
reglas, y de evaluar las ecuaciones, con el fin de generar el comportamiento descrito
en el modelo. Este agente se denomina simulador. Ası́ pues, puede definirse un
simulador como cualquier agente computacional (tal como un único procesador, una
red de procesadores, la mente humana, o de manera más abstracta, un algoritmo)
capaz de ejecutar el modelo para generar su comportamiento.
La relación de modelado, denominada validez, se refiere a la relación entre
el modelo, el sistema y el marco experimental. A menudo se piensa en la validez
como el grado en el cual el modelo representa fielmente al correspondiente sistema.
Sin embargo, resulta más práctico requerir que el modelo capture de forma fiel el
comportamiento del sistema sólo hasta el punto demandado por los objetivos del
estudio de simulación. De esta forma, el concepto de validez responde a la pregunta
de si es posible distinguir entre el modelo y el sistema en el marco experimental de
interés.
El tipo más básico de validez, la validez replicativa, se afirma si, para todos
los posibles experimentos del marco experimental, el comportamiento del modelo
y del sistema se corresponden dentro de una tolerancia aceptable. Formas más
estrictas de validez son la validez predictiva y la validez estructural. En la validez
predictiva no sólo requerimos validez replicativa, sino también la habilidad de
predecir. Finalmente, para que exista validez estructural el modelo no sólo debe
ser capaz de replicar los datos observados del sistema, sino también reproducir el
comportamiento componente a componente.
La relación de simulación, denominada la corrección del simulador, es la
relación entre el simulador y el modelo. Un simulador es correcto si ejecuta sin

31
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

errores las instrucciones, reglas y ecuaciones que componen el modelo, generando


correctamente el comportamiento descrito en el modelo.
La complejidad del modelo son los recursos requeridos por un determinado
simulador para interpretar el modelo correctamente. Si bien la complejidad se mide
relativa a un determinado simulador, a menudo las propiedades intrı́nsecas al modelo
están fuertemente correlacionadas con su complejidad, la cual es prácticamente
independientemente del simulador. El modelado exitoso puede verse como la sim-
plificación válida. A menudo es necesario reducir la complejidad de los modelos
(simplificar los modelos) para facilitar que sean ejecutados en un tiempo razonable
en el simulador, de recursos limitados, de que disponemos.
En el proceso de la simplificación están implicados dos modelos: el modelo base
y el modelo simplificado. El modelo base es “más capaz”, pero requiere más recursos
para ser simulado que el modelo simplificado. En este contexto, “más capaz” significa
que el modelo base es válido dentro de un conjunto de marcos experimentales (con
respecto a un sistema real) más amplio que el modelo simplificado. Sin embargo, el
punto importante es que el modelo simplificado y el modelo base sean igualmente
válidos dentro del marco experimental particular de interés.

1.2.4. Clasificaciones de los modelos matemáticos

En la Sección 1.2.2 se describió una clasificación en cuatro niveles del conoci-


miento que puede poseerse de un sistema. Asimismo, se explicó que el conocimiento
al Nivel 2 y 3 puede especificarse empleando modelos. En esta sección de muestran
varias clasificaciones de los modelos matemáticos. Con ello se pretende proporcionar
una primera visión general acerca de qué opciones hay a la hora de seleccionar el
modelo matemático que más se adecúe a un determinado estudio. Obsérvese que el
tipo de modelo más adecuado en cada caso no depende del sistema en sı́, ni del nivel
de conocimiento que se posea sobre él, sino de de las preguntas a las que se pretende
contestar mediante la experimentación con el modelo.

Modelo determinista o estocástico

Un modelo es determinista cuando todas sus variables de entrada son determi-


nistas. Es decir, el valor de cada una de ellas es conocido en cada instante. Un ejemplo
de modelo determinista es un servicio al cual los clientes acceden ordenadamente,
cada uno a una hora preestablecida (de acuerdo, por ejemplo, con un libro de citas),

32
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

y en el cual el tiempo de servicio a cada cliente está igualmente preestablecido de


antemano. No existe incertidumbre acerca del instante de inicio o de finalización de
cada servicio.
Por el contrario, un modelo es estocástico cuando alguna de sus variables
de entrada es aleatoria. Las variables del modelo calculadas a partir de variables
aleatorias son también aleatorias. Por ello, la evolución de este tipo de sistemas
debe estudiarse en términos probabilı́sticos.
Por ejemplo, considérese el modelo de un parking, en el cual las entradas y
salidas de coches se producen en instantes de tiempo aleatorios. La aleatoriedad
de estas variables se propaga a través de la lógica del modelo, de modo que las
variables dependientes de ellas también son aleatorias. Este serı́a el caso, por ejemplo,
del tiempo que transcurre entre que un cliente deja aparcado su vehı́culo y lo
recoge (tiempo de aparcamiento), el número de vehı́culos que hay aparcados en
un determinado instante, etc.
Es importante tener en cuenta que realizar una única réplica de la simulación de
un modelo estocástico es equivalente a realizar un único experimento sobre el sistema
real. Por ejemplo, si se realiza una simulación del comportamiento del parking du-
rante 24 horas, es equivalente a observar el funcionamiento del parking real durante
24 horas. Si se repite la observación al dı́a siguiente, seguramente los resultados
obtenidos serán diferentes, y lo mismo sucede con la simulación: si se realiza una
segunda réplica independiente de la primera (usando una secuencia diferente de
números aleatorios), seguramente los resultados serán diferentes. La consecuencia
que debe extraerse de ello es que el diseño y el análisis de los experimentos de
simulación estocásticos debe hacerse teniendo en cuenta esta incertidumbre en los
resultados. Es decir, debe hacerse empleando técnicas estadı́sticas.

Modelo estático o dinámico

Un modelo estático es un modelo en el cual el tiempo no juega ningún papel. Los


modelos estáticos pueden ser deterministas y estocásticos. El primer tipo se emplea
frecuentemente en Ingenierı́a para describir el comportamiento de los sistemas en el
estado estacionario. El segundo tipo se emplea en la realización de simulaciones
de Monte Carlo. Reciben este nombre las simulaciones que emplean números
aleatorios para resolver problemas estáticos (se verá un ejemplo en los ejercicios de
autocomprobación).

33
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Un modelo dinámico es un modelo en el cual interviene el tiempo. Los modelos


dinámicos se clasifican en tres tipos: de tiempo discreto, de eventos discretos y de
tiempo continuo. Se describen a continuación las caracterı́sticas de cada uno de ellos.
En los modelos de tiempo discreto y en los modelos eventos discretos
el valor de las variables sólo puede cambiar en instantes especı́ficos, permaneciendo
constante el resto del tiempo. Estos cambios se denominan eventos y debe satis-
facerse que el número de eventos en un intervalo de tiempo finito debe ser finito.
La diferencia entre los modelos de tiempo discreto y de eventos discretos es que
en el primer tipo los eventos se producen en instantes de tiempo equiespaciados y
predefinidos, cosa que en general no sucede en el segundo. Las variables de ambos
tipos de modelos se denominan variables de tiempo discreto.
En un modelo de tiempo continuo el valor de las variables puede cambiar de
manera continua a lo largo del tiempo. Estas variables se denominan variables de
tiempo continuo. Un ejemplo de variable de tiempo continuo es el nivel de agua
en un depósito. Sin embargo, al simular mediante ordenador un modelo de tiempo
continuo debe discretizarse el eje temporal. Esta discretización es una aproximación,
que transforma el modelo de tiempo continuo en un modelo de tiempo discreto. Se
explica esto con más detalle a continuación.
En cualquier intervalo de tiempo de longitud mayor que cero existen infinitos
instantes de tiempo. Dado que es imposible calcular el valor de las variables del
modelo en infinitos instantes de tiempo, la simulación de los modelos de tiempo
continuo se realiza aplicando algoritmos que calculan el valor de las variables del
modelo únicamente en determinados instantes de tiempo. Se dice que se realiza una
discretización temporal.
Consideremos, por ejemplo, el modelo de tiempo continuo

dx
= f (x, u, t) (1.1)
dt
el cual describe que la variación en el tiempo de la variable x es una función f del
valor de la propia variable, de una variable de entrada u y del valor del tiempo
t. Aplicando el método de integración explı́cito de Euler con un intervalo de
discretización temporal ∆t, se obtiene el modelo de tiempo discreto

xi − xi−1
= f (xi−1 , ui−1 , ti−1 ) con i = 1, 2, . . . (1.2)
∆t

34
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

donde xi representa el valor de x en el instante ti , y xi−1 y ui−1 representan el valor


de x y u en el instante ti−1 , respectivamente. Despejando xi se obtiene:

xi = xi−1 + ∆t · f (xi−1 , ui−1 , ti−1 ) con i = 1, 2, . . . (1.3)

Esta expresión permite calcular el valor de la variable x en un instante de tiempo


ti , conocido el valor de dicha variable y de la variable de entrada en un instante
anterior ti−1 . Es decir, permite calcular la evolución en el tiempo de x. La simulación
del modelo consiste en el cálculo del valor de la variable x en los instantes:

ti = t0 + i · ∆t con i = 1, 2, . . . (1.4)

donde el valor de la variable x en el instante ti , que se representa xi , se calcula de


la Ec. (1.3). Obsérvese que para ello, es preciso conocer:

– El valor de la variable x en el instante t0 . Dicho valor, que se denomina valor


inicial de la variable, se ha representado x0 .

– El valor de la variable de entrada en los instantes de tiempo t0 , t1 , etc. Estos


valores se han representado u0 , u1, etc.

Como resultado de la simulación del modelo, se obtienen los pares de valores


(ti , xi ) para i = 0, 1, 2, . . . , que describen la evolución en el tiempo de la variable x.
Como la variable x es de tiempo continuo, su evolución suele graficarse interpolando
linealmente entre los valores calculados.

1.3. MODELADO Y SIMULACIÓN DE TIEMPO DISCRETO

Los modelos de tiempo discreto son el tipo de modelo más fácil de entender
de manera intuitiva, ya que sus variables van cambiando de valor únicamente en
instantes de tiempo equiespaciados. Ası́ pues, para simular estos modelos el reloj
de la simulación (que indica el valor del tiempo simulado) avanza saltando un
cierto intervalo de tiempo denominado paso de avance en el tiempo, que es
constante a lo largo de la simulación.
Si el instante inicial de la simulación es t0 y el paso de avance en el tiempo es
∆t, entonces el reloj de la simulación va saltando sucesivamente a los instantes t0 ,
t1 , t2 , . . . , donde

35
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

ti+1 = ti + ∆t para i = 0, 1, 2, . . . (1.5)

En cada uno de esos instantes, el modelo se encuentra en un estado, recibe unas


entradas y genera unas salidas. El modelo permite calcular, a partir de su estado
actual y de sus entradas actuales, cuáles son sus salidas actuales y cuál será su estado
en el siguiente instante de tiempo.
Los modelos de tiempo discreto tienen numerosas aplicaciones. Una aplicación
importante es la descripción de circuitos digitales sı́ncronos, en los cuales el periodo
del reloj del circuito define el paso de avance en el tiempo. Como hemos visto ante-
riormente, los modelos de tiempo discreto también se emplean como aproximaciones
de modelos de tiempo continuo. En este caso, el paso de avance en el tiempo viene
determinado por el intervalo de discretización temporal.

1.3.1. Descripción de modelos de tiempo discreto

Cuando el modelo tiene un número finito de estados y sus entradas pueden


tomar un número finito de posibles valores, una forma sencilla de especificar el
comportamiento del modelo es mediante su tabla de transición/salidas. En ella
se escriben todas las posibles combinaciones de valores de los estados y las entradas,
y para cada una de éstas se indica el valor de la salida y del siguiente estado. Este
tipo de representación se emplea frecuentemente para describir el comportamiento
de los circuitos digitales. Se muestra a continuación un ejemplo sencillo.
Consideremos el siguiente modelo de un biestable de tipo D. El modelo tiene dos
estados, representados mediante 0 y 1, una entrada y una salida. La entrada puede
tomar dos posibles valores, representados mediante 0 y 1. Hay cuatro combinaciones
entre los estados y los posibles valores de la entrada. Estas cuatro combinaciones
se escriben en las dos primeras columnas de la tabla. El número de combinaciones
determina el número de filas de la tabla. Para cada una de estas combinaciones, se
escribe en la tercera columna el valor del estado siguiente. En la cuarta columna se
escribe el valor de la salida actual del sistema.

Estado Entrada Estado Salida


actual actual siguiente actual
0 0 0 0
0 1 1 0
1 0 0 1
1 1 1 1

36
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

La primera fila de la tabla indica que cuando el estado actual es 0 y la entrada es


0, entonces la salida del sistema es 0 y el estado en el siguiente instante de tiempo
es 0. La segunda fila indica que cuando el estado actual es 0 y la entrada actual
es 1, entonces la salida actual es 0 y el estado siguiente es 1, y ası́ sucesivamente.
Obsérvese que en el biestable D la salida es igual al estado actual y el estado siguiente
es igual a la entrada actual.
Conocido el estado inicial del modelo, la tabla de transición/salidas permite
calcular las trayectorias de estado y de salida correspondientes a una trayectoria de
entrada. A continuación se muestra un ejemplo del funcionamiento del biestable D.
Se comprueba que la salida sigue a la entrada, pero retrasada un paso en el tiempo.

Tiempo t0 t1 t2 t3 t4 t5 t6 t7 t8 t9
Trayectoria de entrada 1 0 1 0 1 0 1 0 1 0
Trayectoria de estado 0 1 0 1 0 1 0 1 0 1 0
Trayectoria de salida 0 1 0 1 0 1 0 1 0 1

La tabla de transición/salidas es útil para representar el comportamiento de


modelos sencillos, con un número pequeño de estados y unas entradas con un número
pequeño de posibles valores. Una forma más general de representar el comportamien-
to de un modelo de tiempo discreto es indicando su función de transición de estado
y su función de salida. Sean xi la entrada, qi el estado e yi la salida del modelo en
el instante ti , donde el ı́ndice temporal i toma los valores 0, 1, 2, . . . . Las funciones
de transición de estado y de salida se definen de la forma indicada a continuación.

– La función de transición de estado, δ, describe cómo se calcula el estado


siguiente a partir del estado y la entrada actuales.

qi+1 = δ (qi , xi ) para i : 0, 1, 2, . . . (1.6)

– La función de salida, λ, describe cómo se calcula la salida actual a partir


del estado y la entrada actuales.

yi = λ (qi , xi ) para i : 0, 1, 2, . . . (1.7)

Las funciones de transición de estado y de salida permiten calcular la trayectoria


del estado (q1 , q2 , . . . ) y la trayectoria de la salida (y0 , y1 , y2 , . . . ), conocidos el
estado inicial del modelo (q0 ) y la trayectoria de entrada (x0 , x1 , x2 , . . . ).

37
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

La información representada mediante una tabla de transición/salidas puede ser


descrita de forma más compacta empleando las funciones de transición de estado
y de salida. Por ejemplo, el comportamiento del biestable D (la salida es igual al
estado actual y el estado siguiente es igual a la entrada actual) puede representarse
de la forma siguiente:

δ (q, x) = x (1.8)
λ (q, x) = q (1.9)

1.3.2. Simulación de modelos de tiempo discreto

El siguiente algoritmo es un simulador para un modelo de tiempo discreto


descrito mediante las funciones de transición de estado y de salida. El algoritmo
calcula las trayectorias del estado y de salida del modelo, a partir de la trayectoria
de entrada y del estado inicial.
iFin = 9 ı́ndice temporal final
x(0) = 1, ..., x(9) = 0 trayectoria de entrada
q(0) = 0 estado inicial
i = 0 inicialización del ı́ndice temporal
while ( i <= iFin ) {
y(i) = λ( q(i), x(i) )
q(i+1) = δ( q(i), x(i) )
i = i + 1
}

1.3.3. Autómatas celulares

El autómata celular es un tipo de modelo con dos propiedades caracterı́sticas.


La primera es que posee una estructura regular: está compuesto de componentes
iguales, conectados de acuerdo a un cierto patrón espacial. La segunda es que el
comportamiento de todos los componentes está regido por el mismo conjunto de
reglas.
Este tipo de modelo fue empleado originalmente por von Neumann y Ulam para
describir la autorreproducción de sistemas biológicos. De ahı́ proviene su denomi-
nación. Cada uno de los componentes iguales que compone el autómata celular se
denomina una célula y el conjunto de células se denomina espacio celular. La dis-

38
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.4: Espacio celular unidimensional.

tribución espacial de las células puede ser un mallado unidimensional, bidimensional


o multidimensional, conectado de manera uniforme. Las células que influyen sobre
una célula en particular, denominadas sus vecinas, son a menudo aquellas situadas
más cerca en el sentido geométrico.
Puede definirse un autómata unidimensional conectando las células en fila, como
se muestra en la Figura 1.4, de modo que cada célula tenga conectada una célula
a su izquierda y otra a su derecha. Supongamos que cada célula de este autómata
unidimensional puede estar en dos estados, 0 y 1, y que recibe como entrada los
estados de las células vecinas. En este caso, hay 8 posibles combinaciones de los
valores de las 2 entradas y del estado de la célula. La tabla de transición de
estados de la célula, qué describe el nuevo estado de la célula en función de sus
entradas y del estado actual, tendrá la forma mostrada a continuación.

Entrada Estado Entrada Estado


izquierda actual actual derecha actual siguiente
0 0 0 ?
0 0 1 ?
0 1 0 ?
0 1 1 ?
1 0 0 ?
1 0 1 ?
1 1 0 ?
1 1 1 ?

La cuarta columna contiene interrogaciones. Dado que dicha columna tiene 8 filas
y que la célula puede estar en 2 estados, hay 28 = 256 posibles tablas de transición
de estados. Cada una de estas posibles tablas representa una regla. Hay, por tanto,
256 posibles reglas. El criterio para designar las reglas es el siguiente. La cuarta
columna puede interpretarse como un número binario de 8 bits, de modo que la
primera fila sea el bit menos significativo y la octava fila el más significativo. Se
obtiene el nombre de la regla convirtiendo este número de decimal.
Para simular el autómata hay que asignar valor inicial al estado de cada célula
del espacio celular y aplicar el algoritmo simulador, que calcula en cada instante

39
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Entrada Estado Entrada Estado


izquierda actual actual derecha actual siguiente
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0

i=0 ------------------------------X------------------------------
i=1 -----------------------------X-X-----------------------------
i=2 ----------------------------X---X----------------------------
i=3 ---------------------------X-X-X-X---------------------------
i=4 --------------------------X-------X--------------------------
i=5 -------------------------X-X-----X-X-------------------------
i=6 ------------------------X---X---X---X------------------------
i=7 -----------------------X-X-X-X-X-X-X-X-----------------------
i=8 ----------------------X---------------X----------------------
i=9 ---------------------X-X-------------X-X---------------------
i=10 --------------------X---X-----------X---X--------------------
i=11 -------------------X-X-X-X---------X-X-X-X-------------------
i=12 ------------------X-------X-------X-------X------------------
i=13 -----------------X-X-----X-X-----X-X-----X-X-----------------
i=14 ----------------X---X---X---X---X---X---X---X----------------
i=15 ---------------X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X---------------
i=16 --------------X-------------------------------X--------------
i=17 -------------X-X-----------------------------X-X-------------
i=18 ------------X---X---------------------------X---X------------
i=19 -----------X-X-X-X-------------------------X-X-X-X-----------
i=20 ----------X-------X-----------------------X-------X----------
i=21 ---------X-X-----X-X---------------------X-X-----X-X---------
i=22 --------X---X---X---X-------------------X---X---X---X--------
i=23 -------X-X-X-X-X-X-X-X-----------------X-X-X-X-X-X-X-X-------
i=24 ------X---------------X---------------X---------------X------
i=25 -----X-X-------------X-X-------------X-X-------------X-X-----
i=26 ----X---X-----------X---X-----------X---X-----------X---X----
i=27 ---X-X-X-X---------X-X-X-X---------X-X-X-X---------X-X-X-X---
i=28 --X-------X-------X-------X-------X-------X-------X-------X--
i=29 -X-X-----X-X-----X-X-----X-X-----X-X-----X-X-----X-X-----X-X-

Figura 1.5: Autómata celular con regla 90: tabla de transición de estados (arriba) y simulación
de un espacio celular con esa regla compuesto por 61 células (abajo).

40
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.6: Células vecinas en el Juego de la Vida a la situada en: a) (0, 0); y b) (i, j).

el estado de cada célula a partir del estado en el instante anterior de esa célula y
de sus vecinas. Por ejemplo, en la Figura 1.5 se muestra la tabla de transición de
estados del autómata con regla 90 y un ejemplo de su simulación. Para facilitar la
visualización del resultado de la simulación, el estado 1 se ha representado mediante
un aspa y el estado 0 mediante un guión.
Los autómatas celulares unidimensionales muestran comportamientos muy in-
teresantes y diversos. Básicamente pueden distinguirse cuatro tipos diferentes de
comportamiento. En algunos autómatas cualquier dinámica se extingue rápidamen-
te. Otros tienen enseguida un comportamiento periódico. Hay otros que muestran
un comportamiento caótico. Finalmente, está el tipo más interesante de autómatas:
aquellos autómatas cuyo comportamiento no es periódico ni predecible, pero que
muestran patrones regulares interesantes.
Un ejemplo interesante de autómata bidimensional es el denominado Juego de
la Vida de Conway. El juego tiene lugar en un espacio celular bidimensional, cuyo
tamaño puede ser finito o infinito. Cada celda está acoplada a aquellas que se en-
cuentran más próximas a ella, tanto lateral como diagonalmente. Esto significa que,
para una célula situada en el punto (0, 0), sus células vecinas laterales están situadas
en los puntos (0, 1), (1, 0), (0, −1) y (−1, 0), y sus células vecinas diagonales están
situadas en (1, 1), (−1, 1), (1, −1) y (−1, −1), como se muestra en la Figura 1.6a. En
la Figura 1.6b se muestran las células vecinas de una célula situada en la posición
(i, j).
El estado de cada célula puede tomar dos valores: 1 (viva) y 0 (muerta). Cada
una de las células puede sobrevivir (está viva y permanece viva), nacer (su estado

41
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

pasa de 0 a 1) y morir (su estado pasa de 1 a 0) a medida que el juego progresa. Las
reglas, tal como fueron definidas por Conway, son las siguientes:

1. Una célula permanece viva si tiene en su vecindad 2 ó 3 células vivas.

2. Una célula muere debido a superpoblación si hay más de 3 células vivas en su


vecindad.

3. Una célula muere a causa del aislamiento si hay menos de 2 células vivas en
su vecindad.

4. Una célula muerta vuelve a la vida si hay exactamente 3 células vivas en su


vecindad.

El espacio celular recubre una región finita. Por ejemplo, el cuadrado ocupado por
N × N células, de modo que el autómata está compuesto por N 2 células. Obsérvese
que debe especificarse el comportamiento de las células del borde del espacio, ya
que no poseen todos sus vecinos. Una posibilidad es asumir que las células situadas
en los bordes de la región mantienen un estado constante: por ejemplo, todas están
muertas. Otra solución es envolver el espacio de manera toroidal. Es decir, interpretar
el ı́ndice N también como 0.
El modelo del Juego de la Vida evoluciona sobre una base de tiempo discreto.
El tiempo avanza a pasos: 0, 1, 2, . . . El juego comienza con cierta configuración de
células vivas. A medida que la simulación va avanzando, la forma de los grupos de
células vivas va cambiando. La idea del juego es encontrar nuevos patrones y estudiar
su comportamiento. Por ejemplo, se muestran algunos patrones en la Figura 1.7.
Un algoritmo para simular el autómata serı́a el siguiente. Se almacena el estado
inicial de las células en una estructura de datos. En cada instante de tiempo se
inspeccionan todas las células, aplicando la función de transición de estado a cada
una de ellas, y salvando el siguiente estado en una segunda copia de la estructura
de datos. Una vez calculado el siguiente estado, éste se convierte en el estado actual
y se avanza el reloj de la simulación un paso.
Este algoritmo que calcula el nuevo estado de todas las células en cada paso
de tiempo. Una forma de optimizarlo consiste en calcular únicamente el nuevo
estado de aquellas células cuyo nuevo estado pueda ser diferente del actual. Si el
estado de las células vecinas no cambia en el instante actual, entonces el estado de
la célula en cuestión no cambiará en el siguiente instante. Obsérvese que en esta
versión optimizada del algoritmo es necesario llevar un registro de qué células son
susceptibles de cambiar de estado en la transición siguiente.

42
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.7: Algunos patrones que aparecen en el Juego de la Vida de Conway. Los patrones a),
b) y c) son estables, ya que no cambian. El patrón d) es oscilante. En e) se muestra un ciclo de
patrones que se mueve.

La versión optimizada del algoritmo sigue la lógica siguiente. En una transición


de estado deben señalarse aquellas células cuyo estado cambia. A continuación, se
establece el conjunto de todas las células vecinas de aquellas. Este conjunto contiene
todas las células que pueden posiblemente cambiar su estado en el siguiente paso
de tiempo. El estado de las células no pertenecientes a este conjunto permanecerá
inalterado en el siguiente paso de tiempo. De esta forma se determina el conjunto
de células que posiblemente cambiarán su estado. Para saber si cada una de ellas
efectivamente cambia de estado, es necesario evaluar su función de transición de
estado.
Los autómatas celulares se emplean para describir sistemas cuyo comportamiento
está determinado por la interacción entre sus componentes. Algunas aplicaciones son
el estudio del crecimiento de cristales, la propagación de incendios forestales y de
manchas en el mar, las reacciones quı́micas y el transporte en medios fluidos y sólidos,
el tráfico de vehı́culos en las ciudades, el comportamiento de colonias de seres vivos,
y el crecimiento de corales y conchas, por citar sólo algunos ejemplos.

1.4. MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Los modelos de tiempo discreto y de eventos discretos tienen una caracterı́stica


en común: las variables del modelo cambian únicamente en determinados instantes
de tiempo, manteniéndose constante el resto del tiempo. La diferencia entre ambos
tipos de modelo es la siguiente. En los modelos de tiempo discreto estos instantes
están equiespaciados en el eje temporal y por ello el reloj de la simulación avanza en

43
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

pasos de tiempo de duración constante durante toda la simulación. En los modelos


de eventos discretos no existe esta restricción. El tiempo que transcurre entre eventos
consecutivos puede ser cualquiera, siempre que se satisfaga que el número de eventos
en cualquier intervalo finito de tiempo sea finito. Por ello, el algoritmo de simulación
de eventos discretos debe mantener un calendario de eventos, donde ir registrando
el instante de activación de los eventos planificados para instantes futuros.
Existen varias metodologı́as para la descripción de modelos de eventos discretos.
En esta sección se introducirán dos de ellas: el modelado orientado a la planificación
de eventos y el modelado orientado a los procesos.

1.4.1. Modelado orientado a la planificación de eventos

Una manera de definir los modelos de eventos discretos es especificando qué tipos
de eventos pueden ocurrir y cuál es la relación causal entre ellos. Un evento puede
producir un cambio en el estado del modelo, planificar eventos para instantes futuros
y cancelar la planificación de eventos.
A continuación se describe una manera sencilla de programar, empleando un
lenguaje de programación imperativo (C, FORTRAN, etc.), el algoritmo de la simu-
lación de un modelo de eventos discretos descrito mediante planificación de eventos.
El programa podrı́a constar de las rutinas siguientes:

– Rutina de inicialización. Asigna valores iniciales a las variables de estado,


inicializa los acumuladores estadı́sticos y planifica eventos añadiéndolos al
calendario de eventos. Los acumuladores estadı́sticos son variables interme-
dias a partir de las cuales se calculan las variables de salida de la simulación.
Algunos ejemplos de acumuladores estadı́sticos son la suma de tiempos de
espera en una cola, el tiempo máximo hasta el momento de espera en una
cola, el número de entidades procesadas hasta el momento por cierto recurso,
etc.

– Rutina de tiempo. Determina cuál es el evento más inminente de los plani-


ficados en el calendario de eventos y avanza el reloj de la simulación hasta ese
instante.

– Rutinas de eventos. Son las rutinas, una para cada tipo de evento, que
realizan el flujo de acciones asociado al evento. Entre estas acciones puede
estar modificar el valor de las variables y acumuladores estadı́sticos, ası́ como
añadir o quitar eventos del calendario de eventos.

44
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

INICIO

Rutina de INICIALIZACIÓN

Rutina de TIEMPO

Rutinas de EVENTOS

No
FIN

Rutina de INFORMES

FIN

Figura 1.8: Flujo de la simulación de un modelo orientado a la planificación de eventos.

– Rutina de informes. Al finalizar la simulación, calcula y muestra el valor de


las variables de salida.

El programa principal controla el flujo de control de la simulación, tal como se


muestra en la Figura 1.8.

1. Comienza la simulación.

2. El programa principal pasa el control a la rutina de inicialización, para que


ésta inicialice el reloj de la simulación, las variables de estado, el calendario
de eventos y los acumuladores estadı́sticos. Se activa el evento “Inicio de la
Simulación”. Como parte de las acciones asociadas a la ejecución de este evento,
se planifican determinados eventos para su ejecución en instantes futuros. Estos
eventos son añadidos al calendario de eventos, ordenados de menor a mayor
instante de ejecución.

3. Una vez ejecutadas las acciones de inicialización, el programa principal trans-


fiere el control a la rutina de tiempo. El reloj de la simulación es avanzado
hasta el instante de ejecución del primer evento del calendario, que es el más
inminente, el cual es entonces borrado del calendario. A continuación, se activa
dicho evento.

45
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4. El programa principal transfiere el control a la rutina correspondiente al tipo de


evento activado. Las acciones realizadas por la rutina de eventos dependen
de cada caso, pero en general la rutina actualizará las variables de estado, los
acumuladores estadı́sticos y añadirá nuevos eventos al calendario de eventos.
También puede eliminar eventos del calendario de eventos.
Existe un evento especial, denominado “Finalización de la Simulación”, que se
activa cuando se satisfacen las condiciones fijadas para la finalización de la
simulación. Por ejemplo, que se alcance determinado valor del tiempo, que el
estado del sistema satisfaga determinadas condiciones, etc. Una de las acciones
asociadas al evento de finalización de la simulación es el cálculo de las variables
de salida de la simulación a partir del valor de los acumuladores estadı́sticos.

5. Si el evento ejecutado es “Finalización de la Simulación”, el programa principal


transfiere el control a la rutina generadora de informes. En caso contrario, el
programa principal devuelve el control a la rutina de tiempo.

6. La rutina generadora de informes muestra el valor de las variables de


salida de la simulación.

7. Finaliza la simulación.

Esta forma de describir los modelos de eventos discretos y de programar su algo-


ritmo de simulación es conceptualmente sencilla cuando se aplica a modelos sencillos.
Sin embargo, este procedimiento implica describir globalmente el comportamiento
del sistema completo, lo cual resulta excesivamente complejo y es propenso a errores
cuando se aplica a la realización de modelos de grandes dimensiones, en los que hay
que definir muchos tipos de eventos y la relación causal entre ellos.
Para facilitar la descripción y simulación de modelos de grandes dimensiones,
se han propuesto formalismos orientados a la planificación de eventos que permiten
describir los modelos de manera modular y jerárquica, como componentes que
interactúan entre sı́, de modo que el modelo pueda reproducir la estructura del
sistema.
El planteamiento es el siguiente. En lugar de intentar describir globalmente el
comportamiento del sistema completo, es más sencillo realizar un análisis por
reducción. Es decir, dividir el sistema en partes, modelar las partes independien-
temente y finalmente describir la interacción entre las partes. Esta metodologı́a de
modelado modular y jerárquico facilita desarrollar y probar los modelos de las partes
como unidades independientes, situarlos en un repositorio de modelos y reutilizarlos

46
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

en cualquier contexto de aplicación en el cual su comportamiento sea apropiado y


tenga sentido conectarlos a otros componentes.
Para describir modelos de manera modular y jerárquica es preciso definir los
componentes que componen el modelo y especificar cómo los componentes interac-
cionan entre sı́. La interacción entre los componentes del modelo puede describirse
mediante los dos tipos siguientes de acoplamiento:

– Acoplamiento modular. Cada componente tiene una interfaz, compuesta


por puertos de entrada y puertos de salida, a través de los cuales se produce la
interacción con el resto de componentes. El componente envı́a información
a través de sus puertos de salida y la recibe a través de sus puertos de
entrada. La interacción (transmisión de información) entre componentes es
descrita mediante la conexión de los puertos de salida a los correspondientes
puertos de entrada. La transmisión de información entre puertos se produce
instantáneamente. Es decir, en el mismo instante en que se envı́a información
por un puerto de salida, ésta es recibida en los puertos de entrada conectados
al de salida.
Los modelos compuestos, definidos como componentes conectados entre sı́,
también tienen su interfaz, con puertos de entrada y de salida. La transmisión
de información desde las entradas del modelo compuesto hasta las entradas de
sus componentes y desde las salidas de los componentes hasta las salidas del
modelo compuesto también se produce instantáneamente.

– Acoplamiento no modular. La interacción entre los componentes se descri-


be mediante la influencia que tiene el estado de unos componentes (componen-
tes influenciadores) sobre la transición del estado de otros (componentes in-
fluenciados). Los componentes con acoplamiento no modular no tienen interfaz,
ya que el estado de los componentes influenciadores interviene directamente
en las funciones de transición de estados de los componentes influenciados. Por
ejemplo, las células de los autómatas celulares están acopladas de manera no
modular.

En el Tema 2 se describirá un formalismo, denominado DEVS (Discrete EVent


system Specification), que está basado en la planificación de eventos y facilita el
modelado modular y jerárquico.

47
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.4.2. Modelado orientado a los procesos

La metodologı́a del modelado orientado a los procesos pretende facilitar la des-


cripción de los modelos, permitiendo que ésta se realice de manera más próxima
al razonamiento humano. Consiste en tomar el punto de vista de las entidades y
describir su circulación a través del sistema. Este enfoque se centra en los procesos
que llevan a cabo las entidades. Por ello se llama modelado orientado a los procesos.
La práctica de esta metodologı́a de la orientación de los procesos comenzó a
aplicarse en la década de 1970, gracias a la aparición de lenguajes de simulación
de propósito general para modelos de eventos discretos. Los compiladores de estos
lenguajes de simulación traducen automáticamente la descripción orientada a los
procesos del modelo a una descripción orientada a la planificación de eventos escrita
en algún lenguaje de programación. En última instancia, el código ejecutable de la
simulación siempre está orientado a la planificación de los eventos. Algunos de estos
lenguajes de simulación se usan todavı́a en la actualidad, como es el caso de GPSS,
SIMSCRIPT, SLAM, SIMAN, etc.
Hoy en dı́a el modelado orientado a los procesos suele realizarse empleando
entornos de simulación, que son una capa software construida sobre un lenguaje
de simulación a fin de facilitar la descripción del modelo mediante interfaces de
usuario muy intuitivas, con menús, diálogos, etc. Entre los entornos de simulación
más populares están AnyLogic, Arena, AutoMod, Enterprise Dynamics, ExtendSim,
Flexsim, ProModel y SIMUL8.
Estos entornos permiten al usuario construir el modelo instanciando módulos
predefinidos (pinchando y arrastrando el icono desde la librerı́a de módulos a la
ventana de edición del modelo) y conectándolos gráficamente. La animación y otras
capacidades gráficas permiten visualizar la evolución del modelo durante la simu-
lación. La interfaz gráfica de usuario del entorno de simulación también permite
acceder a los niveles inferiores en la descripción del modelo: a la descripción de partes
del modelo usando el lenguaje de simulación e incluso al lenguaje de programación.
Por ejemplo, el entorno de simulación Arena soporta el uso combinado de diferen-
tes niveles de descripción: elementos de alto nivel parametrizables por el usuario y
elementos de bajo nivel que el usuario puede definir usando el lenguaje de simulación
SIMAN, y los lenguajes de programación Visual Basic y C/C++.
Asimismo, algunos entornos proporcionan facilidades para el modelado estadı́s-
tico de las entradas aleatorias al modelo, para definir experimentos y problemas de
optimización sobre el modelo, y para analizar estadı́sticamente los resultados.

48
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

La metodologı́a del modelado orientado a los procesos se explicará con más detalle
en el Tema 3, en el cual se realiza una introducción al manejo de Arena.

1.4.3. Modelado de una oficina de atención al público

El modelo descrito a continuación permite ilustrar las diferencias entre el mode-


lado orientado a la planificación de eventos y el modelado orientado a los procesos.
Se trata del modelo de una oficina de atención al público en la cual trabaja un
empleado. La estructura lógica del modelo es la siguiente (véase la Figura 1.9):

– Si llega un nuevo cliente y el empleado está ocupado, el cliente se pone al final


de la cola. Si el empleado está libre, el cliente es atendido inmediatamente. La
cola que se forma frente al empleado tiene disciplina FIFO. El término FIFO
es un acrónimo del inglés “First In, First Out”, que significa “primero en entrar,
primero en salir”. Es decir, los clientes abandonan la cola en el mismo orden
en que llegan a ella.

– Si el empleado termina de atender a un cliente, éste se marcha y comienza


a ser atendido el primer cliente de la cola. Si la cola está vacı́a, el empleado
permanece libre hasta la llegada de un nuevo cliente.

En la parte superior de la Figura 1.10 se muestra un esquema de la estructura del


modelo, que está compuesto por una cola y un proceso con un recurso: el empleado.
Se muestran los eventos de entrada y de salida al sistema. Los eventos de entrada,
ordenados sobre el eje temporal, se denominan trayectoria de entrada, mientras
que los eventos de salida ordenados sobre el eje temporal se denominan trayectoria
de salida. Cada evento de entrada (llegada de un cliente a la oficina) y de salida
(un cliente que abandona la oficina después de ser atendido) se representa mediante
una flecha vertical situada sobre el eje temporal, en el instante en que se produce el
evento.
Los procesos de llegada y de atención al cliente se modelan de la forma siguiente.
Supongamos que los clientes llegan de uno en uno y que el intervalo de tiempo que
transcurre entre llegadas sucesivas está distribuido exponencialmente, con media 10
minutos. Supongamos también que el tiempo que tarda el empleado en atender a
un cliente es una variable aleatoria distribuida uniformemente en el intervalo [5, 10]
minutos.
Para describir el estado del sistema, hacen falta al menos dos variables de estado:
la fase del empleado y el número de clientes que están en cola. Los valores posibles

49
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

EVENTO: EVENTO:
LLEGADA DE UN FIN DE
NUEVO CLIENTE SERVICIO

EL CLIENTE SE
No EMPLEADO Sí MARCHA
LIBRE

EL CLIENTE No COLA Sí
EL CLIENTE SE COMIENZA A VACIA
PONE A LA COLA SER ATENDIDO

EL PRIMER CLIENTE DE
EL EMPLEADO
LA COLA COMIENZA A
QUEDA LIBRE
SER ATENDIDO

Figura 1.9: Esquema de la estructura lógica del modelo.

Figura 1.10: Ejemplo del comportamiento del modelo de la oficina.

50
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

de estas variables son los siguientes. La fase del empleado puede tomar dos posibles
valores: {libre, ocupado}. El número de clientes que esperan en la cola puede tomar
valores enteros positivos, incluido el cero. En la Figura 1.10 se muestra un ejemplo
de cómo evoluciona el estado del modelo a medida que los clientes van llegando y
abandonando la oficina.
El objetivo de la simulación es estimar el tiempo medio de espera en cola y el
número medio de clientes que esperan en la cola. Los cálculos a realizar son los
siguientes.

– El tiempo medio de espera del cliente en la cola, se define de la forma


siguiente:

n
1X
dˆ(n) = Di (1.10)
n i=1

donde n es el número total del clientes que han abandonado la cola y Di es el


tiempo de espera en la cola del cliente i. Para calcularlo es preciso llevar registro
a lo largo de la simulación tanto del número de clientes que han abandonado
la cola hasta ese momento, como de la suma de sus tiempos de espera.

– El número medio de clientes en la cola se define de la forma siguiente:

T
1
Z
q̂ (T ) = Q (τ ) · dτ (1.11)
T 0

donde T es el tiempo que ha durado la simulación y Q (τ ) es el número de


clientes que habı́a en la cola en el instante τ . Obsérvese que si se representa
el número de clientes en cola Q en función del tiempo, la integral es igual al
área bajo la curva entre los instantes inicial y final de la simulación. Dicho
área debe irse calculando a lo largo de la simulación, para lo cual se emplea el
acumulador estadı́stico R. Inicialmente R vale cero. Se actualiza el valor de R
cada vez que cambia el tamaño de la cola y en el instante final la simulación.
Para ello, se suma al valor actual de R el producto del número de clientes
en cola antes del cambio por el tiempo transcurrido desde el anterior cambio.
Obsérvese que es preciso definir un segundo acumulador estadı́stico, tevento ,
que almacene el instante en que se produjo el cambio en el tamaño de la cola
anterior al actual.

La descripción del modelo siguiendo la metodologı́a de la planificación de


eventos se realiza describiendo la condición de disparo y las acciones asociadas a

51
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

cada tipo de evento. En este caso hay cuatro tipos de eventos: inicio de la simulación,
llegada a la oficina de un nuevo cliente, fin de servicio a un cliente y final de la
simulación. Los flujos de acciones asociados a los tres primeros tipos se muestran en
la Figura 1.11.
Obsérvese que la fase del empleado se representa mediante la variable de estado
E, que puede tomar los valores 0 (libre) y 1 (ocupado). El modelo tiene otras dos
variables de estado además de E. Estas son: Q (número de clientes en cola) y tevento
(instante en que se produjo el último evento).
El calendario de eventos guarda dos valores: llegada (instante en que está pla-
nificada la llegada del próximo cliente) y marcha (instante en que está planificado
que el cliente que está siendo atendido abandone el sistema).
El modelo tiene tres contadores estadı́sticos: D (suma de los tiempos de espera
en cola de todos los clientes que la han abandonado), n (número de clientes que han
comenzado a ser atendidos) y R (área bajo Q).
Veamos a continuación cómo se describe el funcionamiento de la oficina em-
pleando la metodologı́a de la orientación al proceso y en particular el entorno de
simulación Arena. En esta metodologı́a se toma el punto de vista de los clientes y
se describe su circulación a través del sistema. Los pasos que sigue un cliente en la
oficina son los siguientes:

1. Llego a la oficina.

2. Me pongo al final de la cola. Espero hasta que yo sea el primero de la cola y


el empleado esté libre (si tengo suerte, el tiempo de espera será cero).

3. El empleado me atiende durante el tiempo que requiero.

4. Finaliza mi tiempo de servicio y abandono la oficina.

El modelo puede describirse de manera sencilla, ya que Arena dispone de un


módulo predefinido que permite describir el proceso de llegada, otro módulo que
permite describir el proceso de atención al cliente con su cola, y otro módulo que
permite describir que los clientes abandonan la oficina. En la Figura 1.12a se muestra
el diagrama de módulos del modelo con la animación correspondiente a un cierto
instante de la ejecución de la simulación. El diagrama del modelo está compuesto por
la instanciación y conexión de los tres tipos de módulo anteriormente indicados. La
conexión entre los módulos define el flujo de los clientes en la oficina. En el preciso
instante de la simulación mostrado en la figura habı́an llegado ya 109 clientes, 3

52
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

LLEGADA
INICIO CLIENTE i

D=0 Generación del intervalo


Inicialización de Generar Ai +1 entre llegadas
R=0 los contadores Instante de
estadísticos llegada del Actualización de
n=0 cliente i+1 llegada = reloj + Ai +1 la lista de eventos
Inicialización del reloj
reloj = 0 de la simulación E =1 E = 0 (libre)
Actualización E
del área bajo
Q(t) R = R + Q ⋅ ( reloj − tevento ) Empleado pasa a
Leer Q E =1 estar ocupado
Asignar valor al estado
Leer E inicial del sistema Instante de llegada Incremento del número de
tevento = 0 del cliente i ti = reloj n = n + 1 clientes que han comenzado
a ser atendidos
Generación del Generación del
Generar A1 intervalo entre Incremento del Q = Q + 1 Generar Si tiempo de servicio
llegadas tamaño de la cola
marcha = reloj + Si Actualización de
llegada = A1 Inicialización la lista de eventos
marcha = No_definido de la lista de
eventos Actualización del tevento = reloj
instante en que se produjo
el último evento
RETURN RETURN

MARCHA
CLIENTE i
 Se atiende al 
Q>0  
 cliente i + 1  Q = 0 (cola vacía)
Q
Incremento del número de clientes El empleado
que han comenzado a ser atendidos n = n +1 E=0 queda libre

Actualización del tiempo Actualización de la


total de espera en cola D = D + reloj − t i +1 marcha = NO _ DEFINIDO lista de eventos

Actualización del R = R + Q ⋅ (reloj − t evento )


área bajo Q(t)
Decremento del número de Q = Q −1
clientes en la cola
Generación del tiempo
de servicio Generar Si +1

Actualización de la lista de
eventos. Instante en que se marcha = reloj + Si +1
marcha el cliente i+1
t evento = reloj
Actualización del instante en que se
ha producido el último evento
RETURN

Figura 1.11: Flujos de acciones asociadas a los eventos.

53
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 1.12: Modelado en Arena de la oficina atendida por un empleado: a) diagrama de módulos
del modelo; y b) y c) propiedades de los módulos que definen los procesos de llegada de los clientes
y de atención a los clientes, respectivamente.

54
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

esperaban en la cola, uno estaba siendo atendido por el empleado y 105 habı́a
abandonado la oficina (véanse los números que hay cerca de los módulos en la
Figura 1.12a).
Haciendo doble clic sobre cada módulo del diagrama se abre un menú de confi-
guración. En la Figura 1.12b se muestra el menú de configuración del módulo que
describe la llegada de clientes (módulo de tipo Create) y en la Figura 1.12c el menú
del módulo que describe el proceso de atención al cliente (módulo de tipo Process).
Arena calcula por defecto determinadas medidas estadı́sticas del comportamiento
del sistema, como son el tiempo medio, máximo y mı́nimo en las colas, la ocupación
de los recursos, etc. y permite al usuario definir sus propio cálculos. Al finalizar el
experimento de simulación Arena genera automáticamente informes en los cuales se
muestra esta información.
En este punto no es importante entender los detalles acerca de la definición del
modelo con Arena, ya que eso se explicará con detalle en el Tema 3. Lo importante
es comprender la diferencia entre el modelado orientado a la planificación de eventos
y el modelado orientado a los procesos.

1.5. PASOS EN UN ESTUDIO DE SIMULACIÓN

Avanzando en la breve introducción al modelado y la simulación ofrecida en este


primer tema, en esta sección se describen los pasos que tı́picamente se siguen al
realizar un estudio de simulación empleando modelos de eventos discretos de tipo
estocástico. A grandes rasgos, los pasos son los siguientes:

1. Definición del problema. Consiste en definir claramente por qué se estudia


el sistema, qué objetivos se persigue con ello y cuáles son las preguntas a
contestar.

2. Planificación del proyecto. Tiene como objetivo estimar qué recursos son
necesarios para llevar a cabo el estudio: dinero, personal, hardware de compu-
tación, recursos software, etc. Si estos recursos no están disponibles debe
replantearse el alcance del estudio.

3. Definición del sistema. Debe definirse qué aspectos de la realidad constitu-


yen el sistema bajo estudio.

4. Formulación conceptual del modelo. Desarrollo de un modelo preliminar,


bien gráficamente (mediante diagramas de bloques) o en pseudocódigo, en el

55
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

que se definen los componentes, las variables descriptivas y las interacciones


(la lógica) que constituyen el modelo del sistema.

5. Diseño preliminar del experimento. Consiste en definir qué acción se va


a ejercer sobre el modelo y cómo se va a medir su comportamiento. Se trata,
por tanto, de definir qué variables son las entradas y cuáles las salidas, cómo
va a modificarse el valor de las entradas y cómo van a recogerse los datos de
salida.

6. Preparación de los datos de entrada. Debe establecerse el procedimiento


a seguir para asignar valores a cada una de las variables de entrada durante la
simulación.

7. Traducción del modelo a código ejecutable, bien sea programando directa-


mente el algoritmo de simulación del modelo en algún lenguaje de programa-
ción, o bien empleando un lenguaje o entorno de simulación. Esta descripción
del modelo ya puede ser simulada en el ordenador.

8. Verificación y validación. Se trata de estudiar si el modelo opera como


debiera, y si la salida del modelo es creı́ble y representativa del comportamiento
del sistema.

9. Diseño experimental final. En este punto se diseña un experimento que


proporcione la información necesaria para poder contestar a las preguntas
planteadas en el estudio. Tı́picamente el experimento consiste en cierto número
de réplicas de la simulación realizadas en condiciones bien definidas.

10. Experimentación. Realización del experimento de simulación diseñado an-


teriormente.

11. Análisis e interpretación. Consiste en extraer conclusiones de los resultados


de la simulación.

12. Documentación y actuación (si procede). Una vez obtenidos los resulta-
dos, analizados y extraı́das las conclusiones, éstas deben ser presentadas de la
forma más adecuada. El modelo debe ser documentado y preparado de modo
que pueda ser reutilizado para posteriores estudios. Finalmente, deben tomarse
acciones (si ésta era la finalidad del estudio) a partir de las conclusiones
obtenidas.

La denominada “Regla 40 − 20 − 40” proporciona una orientación acerca de cómo


distribuir el esfuerzo en un estudio de simulación. Esta regla aconseja dedicar el 40 %

56
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

del esfuerzo y del tiempo del proyecto en los pasos 1 a 6 (comprensión del problema,
diseño del modelo y del experimento), el 20 % del esfuerzo en el paso 7 (progra-
mación del modelo) y el 40 % restante en los pasos 8 a 12 (verificación, validación,
diseño y realización del experimento, análisis de los resultados y documentación). A
continuación se describe con más detalle cada uno de estos pasos.

1.5.1. Definición del problema y planificación del proyecto

Antes de intentar resolver un problema, es esencial formularlo adecuadamente.


Ésta es una afirmación que parece evidente, de sentido común, pero que no siempre
se aplica. Para encontrar una solución a un problema, primero es preciso conocer
cuál es el problema. En particular, el primer paso en todo estudio de simulación es
definir explı́citamente cuál es su objetivo: la construcción del modelo se realiza con
el fin de ayudar a responder ciertas preguntas acerca del sistema real.
El objetivo de un estudio de simulación puede ser de lo más diverso. Algunos
ejemplos son:

– Evaluación del comportamiento de determinado diseño del sistema en térmi-


nos absolutos frente a determinados criterios especı́ficos.

– Comparación del comportamiento de diferentes diseños alternativos del sis-


tema, o comparación de diferentes polı́ticas de operación o procedimientos.

– Predicción del comportamiento del sistema bajo cierto conjunto de condicio-


nes.

– Análisis de la sensibilidad, es decir, determinar entre varios factores cuál


es el que más afecta al comportamiento del sistema.

– Optimización, esto es, cálculo de los valores de determinados parámetros del


modelo que producen que el sistema tenga la mejor respuesta (atendiendo a
un determinado criterio).

– Estudio de las relaciones funcionales entre determinadas variables del


modelo. Por ejemplo, la determinación de la relación funcional entre una de
las respuestas del modelo y determinadas variables de entrada.

– Localización y análisis de los cuellos de botella. Consiste en descubrir


la localización de los cuellos de botella del sistema y evaluar propuestas para
descongestionar alguno de ellos.

57
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Estos objetivos pretenden responder preguntas del tipo:

– ¿Funciona el sistema del modo que queremos que lo haga? (Evaluación y


predicción).

– ¿Por qué no funciona el sistema y qué podemos hacer para que funcione?
(Determinación de los cuellos de botella y optimización).

– ¿Cuál es la mejor alternativa? (Comparación y análisis de sensibilidad).

El propósito del estudio de simulación tiene implicaciones decisivas en el diseño


del modelo y del experimento. Por ejemplo, si el propósito es evaluar el compor-
tamiento de un sistema en términos absolutos, deberá existir un alto grado de
correspondencia entre el comportamiento del modelo y del sistema. Por el contrario,
si el propósito del estudio es comparar varios diseños, el modelo puede ser válido
en un sentido relativo incluso cuando sus respuestas en un sentido absoluto difieran
considerablemente de las del sistema real. En consecuencia, el proceso completo de
diseño del modelo, validación, diseño de los experimentos y análisis de los resultados
debe estar ı́ntimamente relacionado con el propósito del estudio.
No obstante, el objetivo del estudio debe definirse con más detalle que mediante
una simple pregunta. También es necesario conocer todos los aspectos relevantes
que rodean al proyecto de simulación. Frecuentemente el estudio es realizado por un
grupo de ingenieros que deben recomendar una solución al problema, pero que no
son quienes deben tomar la decisión final. En estos casos, los resultados del estudio
deben servir simultáneamente a dos propósitos: ayudar a formular la recomendación
y ayudar a “vender” la recomendación. Con este fin, deben considerarse otros factores
condicionantes: cuáles son los intereses de la persona que debe tomar la decisión final,
qué aspectos de la situación están bajo su control y cuáles no, en qué va a consistir
el proceso de la toma de decisión, qué otras personas participan en la toma de la
decisión (en especial aquellas que se oponen a que se realicen cambios en el sistema)
y cuáles son sus objetivos más relevantes, etc.
Como parte de la planificación deben considerarse todos aquellos factores que
son crı́ticos para el éxito del proyecto, tales como:

– ¿Están claramente definidos los objetivos del estudio? ¿Por qué se realiza el
estudio? ¿Qué se pretende obtener del estudio?

– ¿Se dispone de los recursos adecuados y suficientes para poder realizar el


estudio: tiempo, personal, software, ordenadores, etc.?

58
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

– ¿Dispone el estudio del soporte necesario por parte de la dirección? Las partes
involucradas se implicarán en mayor medida si son conscientes del respaldo de
la dirección. ¿Se les ha informado adecuadamente? ¿Son conscientes de que
ese respaldo existe?

– ¿Se han definido las tareas de que consta el proyecto, la vinculación entre ellas,
quién debe realizarlas y en qué fechas?

– ¿Posee cada uno de los miembros del proyecto la formación necesaria para rea-
lizar con éxito su cometido? ¿Está suficientemente capacitado el coordinador
del proyecto?

– ¿Se han identificado los usuarios potenciales o clientes de los resultados del
estudio? ¿Han sido todos ellos consultados? ¿Se ha establecido el procedimiento
para comunicarles regularmente el estado en que se encuentra el proyecto y los
progresos realizados?

– ¿Se han establecido los adecuados canales de comunicación entre los miembros
del equipo, la dirección y los clientes?

1.5.2. Definición del sistema y formulación del modelo

La esencia del arte del modelado son la abstracción y la simplificación. Se


trata de identificar el pequeño conjunto de caracterı́sticas o propiedades del sistema
suficientes para servir los objetivos especı́ficos del estudio. A grandes rasgos, la
metodologı́a para la construcción del modelo podrı́a ser la siguiente:

1. Escoger las variables de salida, lo cual resulta relativamente sencillo una vez
definido el objetivo del estudio.

2. La construcción del modelo se realiza identificando qué componentes del siste-


ma afectan a estas variables de salida y decidiendo, para cada uno de ellos, si
debe ser incluido en el modelo o si debe ser considerado parte del entorno del
modelo. En este último caso, el componente es representado mediante entradas
al modelo.

3. Una vez se ha decidido qué componentes constituyen de modelo y qué variables


describen el comportamiento de cada componente, deben determinarse las
relaciones funcionales entre los componentes, es decir, la lógica del modelo.
Normalmente se usan gráficos o pseudocódigo para describir el sistema como
un diagrama de flujo lógico.

59
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Para diseñar el modelo de simulación conviene disponer de la máxima información


posible acerca del sistema. Existen diversas fuentes de información, tales como:

– La documentación de las especificaciones de diseño del sistema. Aunque a


menudo esta información está desactualizada y es incompleta, suele ser un
punto de partida razonable para comprender el sistema.

– Entrevistas con operarios e ingenieros que conozcan el sistema o con


sus diseñadores si éste todavı́a no ha sido construido. En efecto, durante el
diseño del modelo puede invitarse a especialistas en el sistema a que examinen
datos de salida, procedentes unos del sistema real y otros del modelo, y que
intenten, sin conocer la respuesta, identificar (razonadamente) cuáles provienen
del modelo y cuáles del sistema real. Esta información puede emplearse para
mejorar el modelo.

– Observaciones y medidas realizadas de primera mano sobre el sistema.


Sin duda ésta es la fuente de información más fiable: una vez leı́da la docu-
mentación y discutida la operación del sistema con operarios e ingenieros, es
recomendable observar el sistema en operación. De hecho, en los primeros años
de la investigación de operaciones se consideraba un procedimiento habitual
que los ingenieros a cargo del modelado participaran durante cierto tiempo en
la operación del sistema bajo estudio a fin de conocerlo mejor.

La tarea de modelado implica la búsqueda de un punto de equilibrio: el modelo


debe representar los aspectos del sistema real con el grado de detalle requerido, pero
de modo que sea lo más sencillo posible. No debe hacerse un modelo demasiado
detallado, que incluya componentes que contribuyan poco o nada a la comprensión
del problema. Debe tenerse presente que el objetivo del modelo es responder a las
preguntas planteadas y no imitar de manera precisa el comportamiento del sistema
real. Además, aumentando la complejidad del modelo, no necesariamente se consigue
aumentar su realismo.
Los dos siguientes casos reales son descritos en (Law & Kelton 2000). En el primer
caso, la dirección de una fábrica de comida para perros encargó a una consultorı́a la
realización de un modelo de su lı́nea de fabricación, que producı́a entorno a un millón
de latas de comida por dı́a. En el modelo se representó cada lata de comida como una
entidad independiente, con lo cual era extremadamente costoso ejecutar el modelo.
Por ello, el modelo no fue muy útil. El modelo fue reescrito unos años más tarde,
tratando el proceso de fabricación como un flujo continuo. El nuevo modelo produjo
resultados precisos y se ejecutaba en una pequeña fracción del tiempo necesario para
ejecutar el modelo original.

60
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

El segundo ejemplo de estudio de simulación fallido tuvo lugar en el año 1985. Se


realizó un modelo de una fábrica de grandes dimensiones (la fábrica tenı́a entorno
a 2.5 km de longitud), con un coste de 250.000 dólares. Sin embargo, el modelo era
tan detallado que jamas pudo llegarse a ejecutar, dados los inmensos recursos de
memoria que requerı́a.
Una buena práctica consiste en realizar el modelo de manera iterativa: comenzar
con un modelo muy simple, cuya complejidad puede posteriormente ir aumentándose
fácilmente. Para ello, el modelo debe realizarse de manera modular y jerárquica,
dividiendo el sistema en submodelos y modelando todos ellos con un nivel semejante
de complejidad. Este modelo inicial puede construirse muy rápido y puede servir de
punto de discusión sobre posteriores refinamientos en el modelado, entendiéndose por
refinamiento del modelo el aumento en su nivel de detalle. Añadiendo progresiva-
mente los refinamientos al modelo, y comparando los resultados obtenidos con los del
modelo más sencillo, puede estimarse el impacto de cada conjunto de refinamientos
sobre la respuesta del modelo. En determinado punto de este proceso de aumento
gradual de la complejidad del modelo, los refinamientos añadidos tienen un efecto
pequeño, es decir, influyen despreciablemente en las conclusiones del estudio, con lo
cual se concluirá que no es preciso incorporarlos.
Existen varias técnicas que se pueden aplicar simultáneamente para obtener un
modelo simplificado de un sistema. Algunas de ellas son:

– La omisión de ciertos detalles del modelo. La idea que hay detrás de esta
aproximación es que no todos los factores son igualmente importantes para
determinar el comportamiento del sistema. Se trata de determinar qué factores
son crı́ticos (efectos de primer orden) y cuáles no (efectos de segundo orden).
Omitir los detalles supone introducir deliberadamente “imperfecciones” y por
tanto podrı́a considerarse que es una mala práctica. Sin embargo, nada más
lejos de la realidad: solamente omitiendo los factores de segundo orden puede
construirse un modelo útil. El aumento en el nivel de detalle debe hacerse
atendiendo al impacto que la complejidad añadida tiene sobre los resultados del
estudio. Es decir, debe emplearse el esfuerzo de modelado en la representación
de aquellos aspectos del sistema que más influencia tienen sobre los resultados
del estudio.

– Agregar determinados procesos del sistema en un proceso equivalente. Ejem-


plos tı́picos de agregación son:

– Agregación temporal: se trata un intervalo de tiempo como una uni-


dad. Por ejemplo, se consideran que todos los eventos ocurridos en un dı́a

61
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

han ocurrido simultáneamente en determinado instante (por ejemplo, a


las 12 de la mañana).
– Agregación de recursos: se tratan varios recursos como una unidad.
Por ejemplo, si un operario de una cadena de montaje realiza cierto
número de trabajos consecutivos, puede modelarse la operación completa
como un proceso simple en lugar de modelar cada una de las tareas
individualmente.
El Teorema del Lı́mite Central a menudo ayuda a determinar la distri-
bución de probabilidad resultante del proceso agrupado. Si la variable
aleatoria del proceso agrupado (por ejemplo, el tiempo en realizar la
tarea) es suma de las variables aleatorias de los subprocesos y si éstas
son independientes entre sı́, entonces la variable del proceso agrupado
está aproximadamente distribuida de forma normal cuando el número de
subprocesos es grande (sean cuales sean las distribuciones de probabilidad
de las variables de los subprocesos).

– El tercer tipo de simplificación consiste en sustituir un proceso complejo por


un proceso diferente, más sencillo, que se comporte de manera equivalente al
proceso original. Un ejemplo es la representación de un proceso complejo, cuyo
comportamiento no se comprende o no se desea modelar, por medio de determi-
nada distribución de probabilidad. De este modo, se sustituye un componente
del sistema por entradas al sistema. Por ejemplo, para modelar los pedidos
realizados por determinado cliente puede, o bien modelarse toda la estructura
de negocio del cliente, o bien considerar que sus demandas están distribuidas
aleatoriamente de acuerdo a determinada distribución de probabilidad.

Además de la aplicación de las técnicas anteriores, comúnmente se realizan las


siguientes aproximaciones:

– La definición de los “lı́mites” del modelo y de su interacción con el entorno


implica la realización de aproximaciones, entre ellas la decisión de qué factores
externos influyen sobre el funcionamiento del modelo (entradas al modelo) y
cuáles son ignorados.

– Los fenómenos de naturaleza aleatoria son modelados mediante funciones de


probabilidad (frecuentemente distribuciones teóricas) que los representan sólo
de manera aproximada.

– Al modelar la interacción entre los fenómenos aleatorios, en ocasiones se consi-


dera (de forma aproximada) que dos variables aleatorias son estadı́sticamente
independientes con el fin de simplificar el modelo.

62
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

– En ocasiones de considera que la distribución de probabilidad de algunos de los


parámetros del modelo no varı́a con el tiempo. Esta aproximación es razonable
si la velocidad de cambio es muy pequeña comparada con el periodo de tiempo
de interés.

El impacto de las aproximaciones de modelado debe estimarse considerando el


propósito especı́fico del estudio de simulación:

– Si el propósito es estimar de manera precisa el comportamiento del sistema,


deben evaluarse las simplificaciones considerando su impacto sobre la medida
del comportamiento.

– Por otro lado, si el propósito del estudio es comparar diferentes sistemas o


procedimientos, debe evaluarse si la simplificación afecta a todos los mode-
los aproximadamente de la misma manera (los errores son aproximadamente
iguales en magnitud).

Por este motivo, estimar el comportamiento absoluto de un sistema normalmente


requiere modelos considerablemente más detallados que comparar varios sistemas.
Una consecuencia práctica de este hecho es que los modelos matemáticos suelen
ser más precisos en la comparación de sistemas alternativos que en la obtención de
respuestas absolutas.

1.5.3. Diseño de los experimentos

El diseño de los experimentos se realiza en dos etapas diferentes del estudio de


simulación. En primer lugar, antes de que el diseño del modelo haya finalizado.
Tan pronto como sea posible deben seleccionarse qué medidas del comportamiento
del sistema van a usarse en el estudio, qué factores van a variarse y qué niveles
de cada uno de estos factores van a investigarse. Una vez que el modelo ha sido
desarrollado, verificado y validado, se revisa el diseño experimental teniendo en
cuenta el conocimiento que se ha ganado durante el proceso de diseño, construcción,
verificación y validación del modelo.
El experimento debe diseñarse cuidadosamente, atendiendo a las siguientes dos
consideraciones:

– El diseño del experimento determina el tipo de análisis estadı́stico que debe


aplicarse a los resultados.

63
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

– Los experimentos de simulación deben diseñarse de modo que permitan obtener


la máxima información acerca del comportamiento del sistema al menor costo
posible (tiempo y trabajo del experimentador, y tiempo de computación).

1.5.4. Datos de entrada

Determinar qué datos emplear como entrada al modelo durante la simulación es


una tarea muy delicada, de la que depende en gran medida el éxito del estudio. De
hecho, frecuentemente la recogida y el análisis de los datos del sistema, y el modelado
de las entradas a partir de estos datos, consume más tiempo que el propio diseño y
programación del modelo.
El diseño de un modelo estocástico de simulación siempre implica decidir si deter-
minados aspectos del sistema son representados de forma estocástica o determinista.
Si se opta por una descripción probabilı́stica de determinado aspecto, puede suceder
que:

– Puedan obtenerse datos experimentales del sistema. En este caso, debe deci-
dirse si durante la simulación se muestrea directamente de los datos experi-
mentales, o bien si se muestrea de una distribución de probabilidad ajustada
a partir de éstos.

– No puedan obtenerse datos experimentales, bien porque el sistema aun no ha


sido construido o porque no es posible recogerlos. En este caso, puede uno
basarse en consideraciones teóricas y en estimaciones de operarios, ingenieros,
diseñadores, etc. familiarizados con el funcionamiento del sistema.

1.5.5. Traducción del modelo

El modelo puede describirse formalmente empleando diferentes metodologı́as.


En las secciones precedentes se han introducido dos de ellas: el modelado orientado
a la planificación de eventos y el modelado orientado a los procesos. Cada una
de ellas es soportada por diferentes herramientas software, que ayudan a definir y
simular el modelo. Por ejemplo, el modelado orientado a los procesos es facilitado por
lenguajes de simulación (GPSS, SIMSCRIPT, SLAM, SIMAN, etc.) y entornos de
simulación (AnyLogic, Arena, AutoMod, Enterprise Dynamics, ExtendSim, Flexsim,
ProModel, SIMUL8, etc.) Igualmente, se han desarrollado herramientas software
para facilitar la aplicación de los formalismos basados en la planificación de eventos.

64
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Por ejemplo, algunas de las herramientas software que facilitan la aplicación del
formalismo DEVS son ADEVS, CD++, DEVS/C++, DEVSJAVA, DEVSim++,
JDEVS, PowerDEVS, Python DEVS, SmallDEVS, etc.

1.5.6. Verificación y validación del modelo

La finalidad de la verificación es comprobar que no se han cometido errores al


codificar el modelo usando un lenguaje o entorno de simulación. La validación
consiste en comprobar que el modelo supone una aproximación adecuada de la
realidad para los objetivos particulares del estudio de simulación. La verificación y
validación de un modelo son análisis conceptualmente distintos, si bien en la práctica
aparecen relacionados. Cuando los resultados de la simulación parecen “extraños” o
erróneos, debe investigarse si es debido a equivocaciones al traducir el modelo (de
su definición formal a su descripción en lenguaje de simulación) o a que las hipótesis
de modelado no son las adecuadas.
Algunos de los procedimientos que se emplean para verificar un modelo son los
siguientes:

– Verificación manual de la lógica. Consiste en ejecutar la simulación du-


rante un periodo de tiempo corto y comprobar manualmente los resultados
obtenidos.

– Comprobación submodelo a submodelo. Se trata de verificar individual-


mente que cada submodelo produce los resultados esperados para todos los
posibles tipos de entradas.

– Comprobación con soluciones conocidas. Consiste en ajustar el modelo


de modo que represente un sistema de solución conocida y comparar ésta con
los resultados de la simulación.

– Test de sensibilidad. Puede modificarse el valor de un parámetro, dejando


los demás fijos, con el fin de medir la sensibilidad del modelo respecto a ese
parámetro. La comparación de la sensibilidad observada en las simulaciones,
con la que serı́a de esperar en el sistema real, puede proporcionar pistas útiles.

Respecto a la validación de los modelos, puede considerarse que ésta tiene tres
vertientes diferentes. Consiste en determinar:

1. Si la estructura del modelo representa adecuadamente al sistema real.

65
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2. Si los datos calculados al simular el modelo (es decir, el comportamiento del


modelo) reproducen de forma adecuada el comportamiento del sistema real.

3. Si el usuario del modelo tiene confianza en los resultados obtenidos de las


simulaciones. Involucrar al usuario final en todas las fases del diseño y la
construcción del modelo generalmente hace que este aspecto de la validación
del modelo sea mucho más sencillo. En (Law & Kelton 2000) se describe el
siguiente caso real. Un analista trabajó durante 6 meses en un modelo, sin
interactuar con la persona que lo habı́a solicitado. En la reunión mantenida
para la presentación de los resultados del estudio, cuando tan sólo habı́an
transcurrido 5 minutos, la persona que habı́a encargado el estudio afirmó:
“Este no es el problema en el que yo estoy interesado”.

Puesto que el modelo se construye para un propósito especı́fico, la validez sólo


puede ser evaluada con relación a este propósito. La validación del modelo es un
proceso continuo durante su diseño, desarrollo y uso. Existen diferentes grados de
validación: la confianza en el modelo va acumulándose según el modelo va superando
pruebas y se van encontrando más puntos de coincidencia entre el comportamiento
del modelo y el del sistema real. La verificación y la validación de un modelo son
procesos que realmente nunca finalizan.
En todo este proceso de validación, no debe perderse de vista que el objetivo del
ingeniero dedicado al modelado es la realización de modelos útiles, en un tiempo
razonable y con un coste razonable. Por este motivo, más que preguntarse en qué
medida se ajusta el comportamiento simulado al comportamiento real del sistema, es
más adecuado preguntarse en qué medida las diferencias entre el modelo y el sistema
son lo suficientemente significativas como para afectar a las conclusiones derivadas
del uso del modelo.

1.5.7. Experimentación y análisis de los resultados

En el caso de los modelos estocásticos, la planificación del experimento y el aná-


lisis de los resultados se realiza aplicando técnicas estadı́sticas. Cabe distinguir dos
tipos de simulación de modelos estocásticos: “con terminación” y “sin terminación”.
El tipo de simulación (con o sin terminación) más adecuado en cada caso depende
del objetivo del estudio, no de la naturaleza del sistema. Las caracterı́sticas de estos
dos tipos de simulación se describen a continuación:

66
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

– Simulación con terminación. La simulación se dice que tiene terminación


cuando existe un evento que señala de forma natural el final de la misma. La
finalidad es estudiar el comportamiento del sistema cuando éste evoluciona,
partiendo se unas determinadas condiciones iniciales, hasta que se satisface
determinada condición de finalización.

– Simulación sin terminación. La simulación es sin terminación cuando no


existe un evento que de manera natural marque el final de la misma. La
finalidad de este tipo de estudios es analizar el comportamiento del sistema
una vez éste ha adquirido un régimen de funcionamiento independiente de las
condiciones iniciales de la simulación, es decir, el estado estacionario.

Puesto que la salida de un modelo de simulación es una muestra de datos


de su comportamiento, pueden aplicarse los conceptos de inferencia estadı́stica de
muestras. Sin embargo, la mayorı́a de los tests estadı́sticos requieren que los datos
de la muestra sean independientes entre sı́. Es decir, no estén correlacionados.
Frecuentemente los datos obtenidos de la simulación de los modelos no cumplen esta
condición, con lo cual deben aplicarse ciertos procedimientos antes de poder extraer
conclusiones válidas. Respecto al tamaño de la muestra (duración de la simulación o
número de réplicas), éste debe ser lo suficientemente grande como para proporcionar
el nivel de confianza necesario en la estimación de la medida del comportamiento.

1.5.8. Documentación y aplicación de los resultados

Llegado este punto, ya se han completado todos los pasos del diseño y desarrollo
del modelo, ejecución de la simulación, ası́ como del análisis de los resultados. Los
elementos finales del estudio de simulación son la aplicación de sus resultados y
la documentación. No puede considerarse que un proyecto de simulación ha sido
completado con éxito hasta que los resultados obtenidos no hayan sido entendidos,
aceptados y usados.
Las conclusiones del estudio deben ser documentadas de manera clara, concisa
y convincente, debiéndose abordar todos aquellos aspectos que el cliente considera
importantes. De otra forma, difı́cilmente serán aplicadas, con lo cual el proyecto será
un fracaso. La presentación de los resultados es una parte del estudio tan crı́tica como
las demás, y merece el mismo cuidado en su planificación y diseño.
Además de los resultados del estudio, debe documentarse el desarrollo y operación
del modelo. Esto puede contribuir a aumentar considerablemente su vida útil, ası́

67
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

como aumentar la probabilidad de que recomendaciones basadas en él sean acepta-


das. Una buena documentación facilita las modificaciones y asegura que el modelo
puede ser usado o algunas de sus partes reutilizadas, aun si no están presentes sus
desarrolladores.

1.6. ANÁLISIS DE DATOS: INTRODUCCIÓN A R

El análisis de los datos es una parte esencial en un proyecto de simulación. Por una
parte es preciso analizar los datos del sistema bajo estudio, con el fin de modelar
su comportamiento. Por otra parte es preciso analizar los datos obtenidos como
resultado de la simulación del modelo, con el fin de extraer conclusiones.
Como ya se ha indicado anteriormente, algunos entornos de simulación incor-
poran herramientas de ayuda para el análisis de los datos. Estas herramientas
tı́picamente permiten representar los datos gráficamente (por ejemplo, mediante
gráficas X-Y, boxplots, histogramas y gráficas Q-Q) y realizar ajustes (por ejemplo,
ajuste de distribuciones de probabilidad y superficies de respuesta). Sin embargo, un
buen número de entornos de simulación no proporcionan estas ayudas, limitándose a
facilitar la descripción y simulación del modelo. En este segundo grupo se encuentran
la mayorı́a de los entornos y herramientas de simulación gratuitas, las cuales deben
por tanto usarse en combinación con alguna herramienta para el análisis y modelado
de los datos.
Existe una amplia variedad de herramientas especializadas en el análisis y mo-
delado de los datos. En esta sección se presenta una de ellas: el lenguaje R y la
plataforma software que lo soporta. Se trata de software gratuito y de código abierto,
con versiones para los sistemas operativos Windows, Mac OS X y Linux. Puede
descargarse del Comprehensive R Archive Network (CRAN), que está ubicado en
http://cran.r-project.org/.

R es un lenguaje interpretado, en el cual se distingue entre letras mayúsculas


y minúsculas. Es posible ir introduciendo los comandos uno a uno en la lı́nea de
comandos de la consola, tras el sı́mbolo del sistema (>), o bien ejecutar un conjunto
de comandos escritos en un fichero. En la Figura 1.13 se muestra un ejemplo de la
consola de R en Windows.
El lenguaje R tiene una gran variedad de tipos de datos, incluyendo vectores,
matrices, data frames y listas. La mayor parte de la funcionalidad se consigue
mediante el uso de funciones, tanto las proporcionadas por el lenguaje como las
definidas por el propio usuario. Algunas funciones básicas están disponibles por

68
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.13: Ejemplo de la consola de R en Windows.

defecto. Otras se encuentran en paquetes, que deben ser abiertos (esta acción se
denomina attach) para poder usar las funciones que contienen.
Las sentencias consisten en funciones y asignaciones. R usa el sı́mbolo <- para
las asignaciones, en lugar del tı́pico sı́mbolo =. Por ejemplo,
> x <- rnorm(10)

crea un objeto de tipo vector llamado x, que contiene 10 observaciones de la distri-


bución normal estándar.
Los comentarios son precedidos por el sı́mbolo #. El intérprete de R ignora todo
el texto que aparezca tras el sı́mbolo #. Para finalizar una sesión debe ejecutarse la
función q().
La función c() convierte sus argumentos en un vector o una lista. Por ejemplo,
supongamos que se realizan 5 réplicas independientes de la simulación del modelo
de la oficina, obteniéndose los siguientes 5 valores del tiempo medio de espera en
cola: 1.2, 2.4, 1.4, 2.2 y 3.2 minutos. La primera de las siguientes dos sentencias crea
un objeto del tipo vector llamado tCola, cuyos componentes son esos cinco valores.
La segunda sentencia dibuja el valor del componente del vector frente al ı́ndice. En
la Figura 1.14 se muestra el gráfico.

> tCola <- c(1.2, 2.4, 1.4, 2.2, 3.2)


> plot(tCola)

69
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 1.14: Ejemplo de uso de la función plot.

La función help() permite acceder a la documentación de las funciones. Por


ejemplo,
> help(plot)

abre una ventana en la cual se muestra la documentación para la función plot.


R incluye demos que ilustran algunas de sus capacidades para la representación
gráfica. Por ejemplo,
> demo(graphics)

arranca una de ellas. Otras dos demos relacionadas con las capacidades gráficas se
arrancan mediante: demo(persp) y demo(image). Puede obtenerse la lista completa
de demos ejecutando:
> demo()

1.6.1. El espacio de trabajo

El espacio de trabajo es el espacio de memoria en el cual se guardan todos los


objetos creados durante la sesión. Es posible salvar el espacio de trabajo al finalizar la
sesión (R pregunta antes de cerrarse si debe hacerlo), de modo que automáticamente
sea vuelto a cargar la siguiente vez que se arranque R. Puede obtenerse una lista de
todos los objetos del espacio de trabajo mediante:

70
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

> ls()

La función rm() elimina del espacio de trabajo los objetos que se le pasan como
argumento. Por ejemplo,
> rm(x)

elimina del espacio de trabajo el objeto llamado x.


El directorio de trabajo es donde R salva por defecto los resultados y también
de donde intenta por defecto leer los ficheros. Para saber cuál es el directorio de
trabajo hay que ejecutar
> getwd()

Es recomendable separar en diferentes directorios los diferentes proyectos. La


función setwd() permite modificar el directorio de trabajo, pasando como argumento
a la función el nombre del nuevo directorio escrito entre comillas. Por ejemplo:
> setwd("F:/Simulacion")

La función save.image salva el espacio de trabajo completo a un fichero. Para


salvar únicamente algunos objetos puede emplearse save(). La función load() carga
en la sesión actual el espacio de trabajo almacenado en el fichero que se le pasa como
argumento. Si se desea acceder a un fichero que no se encuentra en el directorio de
trabajo, es necesario especificar el path completo en la llamada.
R guarda memoria de los comandos ejecutados durante la sesión. Con las fle-
chas del teclado es posible moverse por la historia de comandos. Las funciones
savehistory() y loadhistory() permiten salvar a fichero los comandos de la sesión
y cargar dicha historia desde un fichero.
Es posible escribir los comandos en un fichero de texto y cargar este fichero de
comandos desde R, de manera que se ejecuten en secuencia todos los comandos
escritos en él. Por convenio, el nombre del fichero con los comandos (también llamado
fichero script) se escribe con extensión .R. La función source() permite cargar y
ejecutar el fichero. Por ejemplo,
> source("F:/Simulacion/script1.R")

carga y ejecuta el fichero de comandos llamado script1.R. En la práctica suele resul-


tar más cómodo trabajar empleando ficheros de comandos que hacerlo escribiendo
directamente las sentencias en la consola de R.

71
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.6.2. Estructuras de datos

El primer paso en el análisis de los datos es crear una estructura de datos que
contenga los datos a estudiar. Los datos pueden ser cargados en la estructura de
datos bien manualmente o bien pueden ser importados desde una fuente externa.
R tiene básicamente cinco tipos diferentes de estructura de datos: vector, matriz,
array, data frame y lista. Los vectores, matrices y arrays contienen números y tienen
una, dos o más dimensiones.
Un data frame es una tabla bidimensional, pero más general que una matriz,
dado que en el data frame el tipo de los datos almacenados en una columna puede
diferir del tipo de los datos almacenados en otra. Los datos almacenados en una
misma columna deben ser del mismo tipo: cadena de caracteres, numérico o lógico
(TRUE, FALSE).
Las sentencias siguientes crean un data frame llamado exp1 con tres columnas
(las columnas del data frame son denominadas sus variables):

> numOper <- c(1,1,2,2)


> horario <- c("std", "nuevo", "std", "nuevo")
> tCola <- c(12.3, 6.1, 5.2, 2.5)
> exp1 <- data.frame(numOper, horario, tCola)

Escribiendo el nombre de un objeto, R muestra su valor. En este caso, escribiendo


exp1 se obtiene:

> exp1
numOper horario tCola
1 1 std 12.3
2 1 nuevo 6.1
3 2 std 5.2
4 2 nuevo 2.5

Otra forma de introducir o modificar los datos del data frame es mediante la
función edit(). Para ello, en primer lugar debe crearse el objeto vacı́o, especificando
el nombre y tipo de las variables. A continuación, se invoca el editor de texto
mediante la función edit() y se introducen los datos empleando dicho editor. Por
ejemplo:

> exp2 <- data.frame( numOper = numeric(0),


horario = character(0),
tCola = numeric(0) )
> exp2 <- edit(exp2)

72
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.15: Ejemplo de uso de la función edit para editar el contenido de un data frame.

En la Figura 1.15 se muestra el aspecto de la ventana de edición una vez se han


introducido en ella los datos.
Otra forma de introducir datos en el data frame es importarlos desde un fichero
de texto. Para ello puede emplearse la función read.table(). Supongamos que el
contenido del fichero data.txt es:

numOper horario tCola


1 std 12.3
1 nuevo 6.1
2 std 5.2
2 nuevo 2.5

Obsérvese que en la primera fila se han escrito los nombres de las variables. En
las siguientes filas están los valores separados por un delimitador, que en este caso
es el espacio en blanco (puede usarse cualquier otro sı́mbolo como delimitador).
Mediante las dos siguientes sentencias se crea un data frame llamado exp3, se
cargan en él valores contenidos en el fichero data.txt y a continuación se muestra
el contenido de exp3. Si el fichero con los datos no se encuentra en el directorio de
trabajo, debe especificarse el path completo. Mediante header=TRUE se indica que la
primera fila del fichero contiene los nombres de las variables.

> exp3 <- read.table("data.txt", header=TRUE)


> exp3
numOper horario tCola
1 1 std 12.3
2 1 nuevo 6.1
3 2 std 5.2
4 2 nuevo 2.5

73
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Puede accederse a una variable del data frame indicando su número de orden.
La primera variable es la columna 1, la segunda la 2 y ası́ sucesivamente. Otra
posibilidad es escribir el nombre del data frame, seguido del sı́mbolo $ y del nombre
de la variable. Por ejemplo, las dos siguientes sentencias son equivalentes:

> exp1[,3]
[1] 12.3 6.1 5.2 2.5
> exp1$tCola
[1] 12.3 6.1 5.2 2.5

De forma similar puede accederse a los elementos de cada variable. Por ejemplo,
mediante estas dos sentencias se accede al cuarto elemento de la variable tCola (los
ı́ndices en R comienzan en el valor 1):

> exp1$tCola[4]
[1] 2.5
> exp1[4,3]
[1] 2.5

Las siguientes funciones facilitan la manipulación de los datos. La función pretty()


se emplea a menudo para dibujar gráficos.

length(x) Devuelve la longitud del objeto x.


seq(desde,hasta,paso) Devuelve una secuencia.
rep(x,n) Repite x n veces.
pretty(x,n) Divide x en aproximadamente n intervalos iguales,
de modo que los puntos de división tengan valores
redondeados. Devuelve los puntos de división.

Los siguientes son algunos ejemplos de uso de estas funciones:

> x <- seq(1,10,2)


> x
[1] 1 3 5 7 9
> length(x)
[1] 5
> y <- rep(x,2)
> y
[1] 1 3 5 7 9 1 3 5 7 9
> pretty(c(1,5),10)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

74
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

1.6.3. Gráficos

La representación gráfica de los datos es una herramienta fundamental para su


análisis. En ocasiones representar gráficamente los datos permite detectar patrones
o anomalı́as que difı́cilmente pueden ser detectadas mediante análisis estadı́sticos
numéricos. Por su potencia y sencillez, la mayorı́a de las técnicas de análisis descritas
en este texto son técnicas gráficas.
R proporciona excelentes recursos para la construcción de gráficos. La construc-
ción del gráfico se realiza ejecutando varias sentencias, cada una de las cuales va
añadiendo nuevas caracterı́sticas al gráfico y definiendo su aspecto. Se muestra un
ejemplo a continuación. Supongamos un data frame llamado datos cuyo contenido
es:

> datos
x y
1 1.2 2.4
2 2.3 6.4
3 1.4 2.8
4 3.7 10.1
5 1.2 2.0
6 0.6 1.0

La primera de las siguientes tres sentencias dibuja la variable x frente a y. En la


sentencia se especifican las etiquetas de ambos ejes (xlab, ylab) y el rango de valores
de cada eje (xlim, ylim). La segunda sentencia añade la lı́nea correspondiente al
ajuste de los datos y la tercera añade el tı́tulo.

> plot(datos$x, datos$y, xlab="x", ylab="y", xlim=c(0,4), ylim=c(0,12))


> abline( lm(datos$y ~ datos$x) )
> title("Representación y vs x")

La gráfica obtenida se muestra en la Figura 1.16. Es posible configurar otras


caracterı́sticas del gráfico, como son su tamaño, los sı́mbolos usados para representar
los valores y su color, el tipo y color de las lı́neas, el tamaño, color y fuente del texto
de los ejes, del tı́tulo y del subtı́tulo, las marcas de los ejes, etc. Asimismo, es posible
añadir etiquetas al gráfico y superponer varios gráficos.
Otros tipos de gráficos útiles para el análisis de los datos son el histograma y el
boxplot. Las funciones hist() y boxplot() dibujan el histograma y el boxplot de los
datos pasados como argumento.
La función dev.new() abre una nueva ventana gráfica sobre la cual es posible
construir un nuevo gráfico.

75
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 1.16: Ejemplo de construcción de un gráfico X-Y.

La función par() permite asignar valor a los parámetros del gráfico. Puede usarse
para asignar valor al parámetro mfrow, que define el número de filas y columnas de
gráficos que van a representarse en la ventana de dibujo. Por ejemplo,

> par( mfrow(2,3) )

prepara la ventana de dibujo para que aloje 6 gráficos, dispuestos formando una
matriz de 2 filas y 3 columnas.
A continuación se muestra un ejemplo. Se crea un objeto de tipo vector llamado
x, en el cual se guardan 500 observaciones independientes de una distribución expo-
nencial de media 1, y se grafica de tres maneras diferentes: grafico X-Y, histograma
y boxplot. Las tres gráficas obtenidas se muestran en la Figura 1.17.

> x <- rexp(500)


> par(mfrow=c(1,3))
> plot(x)
> hist(x)
> boxplot(x)

El boxplot es una herramienta de análisis gráfico muy útil cuando se desea


comparar la distribución de diferentes grupos de datos. En la Figura 1.18 se muestra
nuevamente el boxplot que aparece en la Figura 1.17, indicando en esta ocasión cómo
ha sido construido a partir de los datos.

76
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.17: Ejemplo de construcción de un gráfico X-Y, un histograma y un boxplot.

OUTLIERS
Datos situados a una distancia
de la caja mayor que 1.5 veces
el rango intercuartil

La longitud del bigote es


menor o igual a 1.5 veces BIGOTE CAJA
el rango intercuartil
3 er CUARTIL
RANGO INTERCUARTIL
50% de los datos centrales MEDIANA
BIGOTE 1 er CUARTIL

Figura 1.18: Construcción del boxplot de un grupo de datos.

77
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.6.4. Manejo básico de los datos

Sentencias del tipo


> variable <- expresion

permiten crear nuevas variables y transformar las existentes. La expresión puede


contener operadores y funciones. También es posible añadir nuevas variables a un
data frame. Por ejemplo, si el data frame data tiene dos variables x e y

> data <- data.frame(x=c(1,2),y=c(10,20))


> data
x y
1 1 10
2 2 20

mediante la sentencia
> data$media <- (data$x+data$y)/2

se crea una nueva variable llamada media en el data frame. Cada elemento de la nueva
variable es la media de los correspondientes elementos de las otras dos variables.

> data
x y media
1 1 10 5.5
2 2 20 11.0

Una sentencia del tipo


> variable[condicion] <- expresion

sólo realiza la asignación si la condición vale TRUE. Por ejemplo, puede incluirse
una nueva variable en el data frame que indique si la media es mayor o menor que
10.

> data$criterio10 [data$media < 10] <- "menor"


> data$criterio10 [data$media == 10] <- "igual"
> data$criterio10 [data$media > 10] <- "mayor"
> data
x y media criterio10
1 1 10 5.5 menor
2 2 20 11.0 mayor

Igualmente,
> variable1 <- variable2[condicion]

78
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

crea el objeto variable1 y copia en él los elementos de variable2 que satisfacen la
condición. Por ejemplo:

> x1 <- data$x[data$criterio10 == "mayor"]


> x1
[1] 2

Las expresiones lógicas en R pueden tomar dos valores: TRUE y FALSE. Los
operadores de comparación son <, <=, >, >=, == y !=. Las operaciones lógicas se
representan: !x (not x), x | y (x or y), x & y (x and y).
La función order() permite ordenar los elementos de una estructura de datos.
Puede por ejemplo aplicarse a un data frame de la forma siguiente (se ordenan las
filas de exp3 tomando como criterio el valor de la variable tCola):

> exp3
numOper horario tCola
1 1 std 12.3
2 1 nuevo 6.1
3 2 std 5.2
4 2 nuevo 2.5
> exp3[order(tCola),]
numOper horario tCola
4 2 nuevo 2.5
3 2 std 5.2
2 1 nuevo 6.1
1 1 std 12.3

Las funciones merge(), cbind() y rbind() permiten realizar la unión de los datos
de dos data frames.

1.6.5. Valor NA (Not Available)

El valor NA significa Not Available (No Disponible). Se emplea para indicar que
no se dispone de ese dato. Supongamos por ejemplo un vector de 5 elementos definido
de la forma:

> x <- c(1:5)


> x
[1] 1 2 3 4 5

Si se asigna valor a un elemento del vector que no existe, R aumenta automáti-


camente el tamaño del vector rellenando con valores NA. Por ejemplo:

79
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

> x[8] <- 8


> x
[1] 1 2 3 4 5 NA NA 8

La función is.na() acepta un objeto como argumento y devuelve un objeto del


mismo tamaño con las entradas reemplazadas por TRUE si el elemento es NA y por
FALSE si no lo es. Por ejemplo:

> x
[1] 1 2 3 4 5 NA NA 8
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
> x[ !is.na(x) ]
[1] 1 2 3 4 5 8

Si alguno de los operandos es NA, el resultado de la operación aritmética es


también NA. Lo mismo sucede cuando se pasa el valor NA como argumento a una
función. Esto debe ser tenido en cuenta al operar sobre conjuntos de datos: los valores
NA deben ser excluidos del análisis. Con este fin, la mayor parte de las funciones
tienen un parámetro llamado na.rm, tal que si se le asigna el valor TRUE los valores
NA son eliminados de los datos pasados como argumento a la función. Por ejemplo,
la función sum realiza la suma de los datos contenidos en el objeto que es pasado
como argumento (puede consultarse su documentación ejecutando help(sum)):

> x
[1] 1 2 3 4 5 NA NA 8
> sum(x)
[1] NA
> sum(x, na.rm=TRUE)
[1] 23

La función na.omit() devuelve un objeto en el cual se han eliminado todos los


valores NA. Cuando se pasa como argumento un data frame, el objeto devuelto es
un data frame en el cual se han eliminado todas las filas que contienen algún valor
NA.

1.6.6. Conversión del tipo de datos

R proporciona funciones para identificar el tipo de dato de un objeto y conver-


tirlo a un tipo diferente. Las funciones cuyo nombre tiene la forma is.tipodato()
devuelven TRUE o FALSE dependiendo de que el objeto pasado como argumento
sea o no del tipo de dato. Por el contrario, las funciones cuyo nombre es de la forma

80
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

as.tipodato() realizan la conversión del argumento al tipo de dato. En la Tabla 1.1


se muestran las funciones disponibles.

Tabla 1.1: Funciones para la comprobación y conversión de tipos de datos.

Comprobación Conversión
is.numeric() as.numeric()
is.character() as.character()
is.vector() as.vector()
is.matrix() as.matrix()
is.data.frame() as.data.frame()
is.factor() as.factor()
is.logical() as.logical()

1.6.7. Control del flujo

R tiene sentencias para controlar el flujo de ejecución. La sentencias for y while


permiten definir bucles, mientras que las sentencias if-else y switch permiten espe-
cificar que una sentencia se ejecute sólo cuando se satisface determinada condición.
La sentencia for tiene la siguiente sintaxis:
> for (var in secuencia) sentencia

Si el cuerpo del bucle consta de varias sentencias, debe escribirse entre llaves
({ }). La función length() devuelve el número de elementos del objeto que se le
pasa como argumento. El siguiente ejemplo ilustra el uso de dicha función y del
bucle for.

> x <- c(1,2,3,5,7,11)


> y <- numeric(0)
> k <- numeric(0)
> for (i in 1:length(x)) {
y[i] <- i*x[i]
k[i] <- y[i]/2
}
> y
[1] 1 4 9 20 35 66
> k
[1] 0.5 2.0 4.5 10.0 17.5 33.0

La sentencia if-else permite definir que una o varias sentencias sean ejecutadas
sólo si se satisface determinada condición. La sintaxis es:

81
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

> if (condición) sentencia


> if (condición) sentencia1 else sentencia2

1.6.8. Definición de funciones

R proporciona las funciones matemáticas más habituales, tales como abs(x),


sqrt(x), ceiling(x) (entero más pequeño no menor que x), floor(x) (mayor entero
no mayor que x), trunc(x) (entero formado truncando a cero los decimales de
x), round(x,digits=n) (redondea x al número de dı́gitos decimales especificado),
signif(x,digits=n) (redondea x al número de dı́gitos especificado, incluyendo dı́-
gitos enteros más decimales), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x),
sinh(x), cosh(x), tanh(x), asinh(), acosh(), atanh(), log(x,base=n), log(x) (lo-
garitmo en base e), log10(x) (logaritmo en base 10) y exp(x).
El usuario puede definir sus propias funciones. La sintaxis para ello es la siguiente:

> nombreFunción <- function(arg1, arg2, ...) {


sentencias
return(objeto)
}

Los objetos creados dentro del cuerpo de la función son locales a la función. El
objeto devuelto por la función puede ser cualquier tipo de dato. La función se invoca
de la misma forma que las demás funciones definidas en R: especificando su nombre
y escribiendo a continuación los argumentos entre paréntesis, separados por coma.
Aquı́ concluye esta breve introducción al lenguaje R. En los siguientes temas irán
mostrándose otras capacidades del lenguaje.

1.7. LECTURAS RECOMENDADAS

Las definiciones de sistema y modelo dadas en la Sección 1.2.1 han sido extraı́das
de (Cellier 1991). En este excelente libro pueden encontrarse otras definiciones de
estos términos, ası́ como una discusión más elaborada acerca de en qué situaciones
resulta imposible o inconveniente experimentar con el sistema real, y las ventajas
que tiene en estos casos el empleo de modelos.
La clasificación de los modelos en cuatro tipos (mental, verbal, fı́sico y matemá-
tico) está explicada con más detalle en (Ljung & Torkel 1994). En la Sección 1.2.4

82
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

se presentaron algunas clasificaciones de los modelos matemáticos. En (Cellier 1991,


Ljung & Torkel 1994) puede encontrarse una discusión más extensa acerca de las
distintas clasificaciones de los modelos matemáticos.
En la Sección 1.2.2 se describe una clasificación en cuatro niveles del conocimiento
que puede poseerse acerca de un sistema. Puede encontrarse una descripción más
detallada en (Klir 1985, Zeigler et al. 2000). En el texto (Zeigler et al. 2000) se
propone una clasificación similar, que está enfocada al modelado y la simulación. La
clasificación de Zeigler consta de 5 niveles de conocimiento: (0) marco de observación;
(1) comportamiento de entrada/salida; (2) función de entrada/salida; (3) transición
de estado; y (4) componentes acoplados.
El marco formal para el modelado y la simulación descrito en la Sección 1.2.3
está extraı́do de (Zeigler et al. 2000), donde puede encontrarse una explicación más
detallada.
En la Sección 1.3.3 se han introducido algunos conceptos básicos acerca de los
autómatas celulares. En (Wolfram 1986) se investigan sistemáticamente todas las
posibles funciones de transición en autómatas celulares unidimensionales. Puede
encontrarse una descripción más detallada del Juego de la Vida en (Gardner 1970).
En (Tyszer 1999) se explica en uso de C++ en la programación de simulacio-
nes de eventos discretos. Este texto complementa las explicaciones dadas sobre la
programación de modelos basados en planificación de eventos.
Los pasos que tı́picamente se siguen en un estudio de simulación están descritos
con mayor detalle en (Pedgen et al. 1995, Law & Kelton 2000). Se recomienda
acudir a esas referencias para ampliar las explicaciones de la Sección 1.5. Asimismo,
en (Bratley et al. 1987) y (Hoover & Perry 1989) puede encontrarse abundante
información acerca de lenguajes de simulación como pueden ser Simscript, GPSS,
SIMAN y Simula.
Finalmente, existe gran cantidad de documentación en Internet y excelentes
referencias sobre el lenguaje R y también sobre el lenguaje S, en el cual se basa R.
Excelentes textos sobre análisis estadı́stico en S y S-PLUS son (Venables & Ripley
1997) y (Becker et al. 1988). Los dos siguientes textos sobre R son excepcionales por
la claridad de sus explicaciones: (Kabacoff 2011) y (Maindonald & Braun 2010).

83
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.8. EJERCICIOS DE AUTOCOMPROBACIÓN

Ejercicio 1.1

Describa una forma de estudiar cada uno de los sistemas siguientes, en términos
de las posibilidades mostradas en la Figura 1.1.

1. Un ecosistema compuesto por varias especies (animales y vegetales) y por


recursos (agua, luz, etc.).

2. Una glorieta en la que convergen varias calles y que frecuentemente presenta


atascos.

3. Una presa para el suministro de agua y electricidad que se planea construir en


un rı́o.

4. El servicio de urgencias de un hospital que se encuentra en funcionamiento.

5. Un circuito eléctrico.

Ejercicio 1.2

Describa qué caracterı́sticas tiene cada uno de los tipos de modelo siguientes:
mental, verbal, fı́sico y matemático. Ponga un ejemplo de modelo de cada tipo,
indicando cuál es su finalidad.

Ejercicio 1.3

Para cada uno de los sistemas mencionados en el Ejercicio 1.1, suponga que se ha
decidido realizar el estudio mediante simulación por ordenador. Discuta de qué tipo
podrı́a ser, en su opinión, el modelo matemático: estático o dinámico, determinista
o estocástico, de tiempo continuo, de tiempo discreto, eventos discretos o hı́brido.

Ejercicio 1.4

Plantee un ejemplo de conocimiento de un sistema en cada uno de los cuatro


niveles de la clasificación de Klir.

84
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Ejercicio 1.5

Para un sistema de su elección, plantee un ejemplo de análisis del sistema,


inferencia sobre el sistema y diseño del sistema. Indique el nivel en el conocimiento
del sistema que se precisa, según la clasificación de Klir, para realizar cada una de
estas tres actividades.

Ejercicio 1.6

Ejecute manualmente el algoritmo que realiza la simulación del modelo represen-


tado por la tabla de transición/salidas siguiente:

Estado Entrada Estado Salida


actual actual siguiente actual
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

para la trayectoria de entrada siguiente:

x(0)=0 x(1)=1 x(2)=0 x(3)=1 x(4)=1 x(5)=0 x(6)=0 x(7)=1 x(8)=0 x(9)=1

Realice dos réplicas de la simulación. En la primera considere que el estado inicial


es q(0)=0 y en la segunda considere que es q(0)=1. A la vista de los resultados,
explique por qué este sistema se denomina “contador binario”. Finalmente, escriba
el código en lenguaje R que permite simular el comportamiento del modelo para esa
trayectoria de entrada y la condición inicial q(0)=0.

Ejercicio 1.7

Escriba en lenguaje R un simulador para el autómata celular unidimensional


con Regla 90 mostrado en la Figura 1.5. Realice el programa de manera que pueda
configurarse de manera sencilla el número de células, el estado inicial y la función
de transición de estados. Ejecútelo para el mismo número de células (61) y el mismo
estado inicial mostrados en la Figura 1.5.

85
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejercicio 1.8

El método de Monte Carlo permite estimar el valor de la integral definida de una


función real monovaluada g (x) entre dos valores reales finitos a y b:

Z b
I= g(x) · dx (1.12)
a

Para ello, se define una variable aleatoria Y de la forma siguiente:

Y = (b − a) · g(X) (1.13)

donde la variable aleatoria X está distribuida uniformemente en el intervalo [a, b].


Puede demostrarse que el valor esperado de la variable aleatoria Y , que repre-
sentaremos µY , es igual al valor de la integral definida I que se desea calcular.
La media Ȳ (n) de n observaciones independientes de Y es una estimación de µY
y por tanto de I. Ȳ (n) puede calcularse de la Ecuación (1.14), donde {x1 , . . . , xn }
son n observaciones independientes de la variable aleatoria X.

n
b−a X
Ȳ (n) = · g (xi ) (1.14)
n i=1

Realice un programa en lenguaje R que aplique la técnica anteriormente descrita


para estimar el valor de la integral definida siguiente:

Z π
I= sin(x) · dx (1.15)
0

Esta integral posee primitiva analı́tica: −cos (x). Por ello es posible comparar el
resultado obtenido aplicando la técnica de Monte Carlo con el resultado analı́tico
exacto, que es I = 2.
Ejecute 5 veces el programa para cada uno de los tres tamaños de muestra
siguientes: n = 50, 500 y 5000. Con el fin de comparar la distribución de las
estimaciones obtenidas para cada tamaño de muestra, dibuje un gráfico con un
boxplot para cada tamaño de muestra, en el cual se representen las correspondientes
cinco estimaciones.

86
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

1.9. SOLUCIONES DE LOS EJERCICIOS

Solución al Ejercicio 1.1

La forma más adecuada de estudiar cada uno de los sistemas depende de cuál
sea en cada caso el objetivo del estudio. Puesto que en el enunciado no se indican
los objetivos, al contestar a la pregunta debe plantearse el objetivo del estudio de
cada sistema y, una vez fijado el objetivo, deberı́a explicarse qué forma o formas de
estudio del sistema podrı́an ser válidas para alcanzar ese objetivo.
En algunos de los casos citados en el enunciado serı́a posible experimentar con
el sistema real, mientras que en otros puede ser costoso y complejo (como en el caso
del ecosistema), o imposible (como en el caso del diseño de una presa, puesto que el
sistema aun no existe).
La experimentación con el sistema real y el modelado matemático son frecuen-
temente actividades complementarias, dado que los datos experimentales sirven de
base para la construcción del modelo y para realizar su validación. En aquellos
casos en que no se disponga de datos del sistema real, la construcción del modelo
puede basarse en el conocimiento teórico disponible acerca del comportamiento de
los diferentes componentes del sistema. Por ejemplo, el diseño de la presa puede
realizarse empleando modelos matemáticos basados en una combinación de leyes
fı́sicas, relaciones empı́ricas y conjuntos de datos que describen el comportamiento
mecánico de los materiales de construcción, del agua, etc.
A continuación, se plantea un posible objetivo en el estudio de cada sistema y
una forma de estudiarlo que podrı́a permitir alcanzar el objetivo. Otros objetivos y
formas de estudio podrı́an ser igualmente válidas.

1. Un ecosistema compuesto por varias especies (animales y vegetales) y por


recursos (agua, luz, etc.).
El objetivo del estudio podrı́a ser analizar la evolución del número de indivi-
duos de determinadas especies animales y vegetales, a partir de unas deter-
minadas condiciones iniciales y para una cierta evolución en el tiempo de los
factores ambientales. Para ello, podrı́a plantearse un modelo matemático del
sistema y experimentar con él mediante simulación.
Puede considerarse que la variación en el tiempo de la cantidad de individuos
de una especie vegetal depende de determinados factores ambientales (agua,
luz, etc.) y de su tasa de reproducción, ası́ como de la densidad de depredadores

87
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

(herbı́voros) e individuos de otras especies vegetales que compitan con ella por
los recursos (por ejemplo, por la luz).
Análogamente, podrı́a suponerse que la variación en el número de individuos
de una especie animal depende de su frecuencia reproductora, ası́ como de la
densidad de depredadores y presas, y de la abundancia de recursos tales como
el agua.

2. Una glorieta en la que convergen varias calles y que frecuentemente presenta


atascos.
El objetivo del estudio podrı́a ser estudiar la conveniencia de colocar semáforos
en las calles de acceso a la glorieta y determinar qué programación de los
semáforos resulta más adecuada en función de la hora del dı́a. Podrı́a emplearse
para ello la simulación de un modelo matemático.
Si el objetivo del estudio fuera señalizar los accesos a la glorieta, de modo que
se diera prioridad a unos frente a otros, quizá podrı́a emplearse un modelo
mental.

3. Una presa para el suministro de agua y electricidad que se planea construir en


un rı́o.
Si la finalidad del estudio es determinar la forma, altura y espesor de la presa,
podrı́a emplearse simulación de modelos matemáticos. Una vez determinada
la forma, dimensiones y ubicación de la presa, serı́a útil realizar un modelo
fı́sico (una maqueta a escala) con el fin de dar a conocer las conclusiones del
estudio.

4. El servicio de urgencias de un hospital que se encuentra en funcionamiento.


Si el objetivo es estimar el tiempo de espera de los pacientes en función de
su frecuencia de llegada, del tiempo del proceso de admisión, del número de
boxes, enfermeros y médicos, entonces podrı́a emplearse la simulación de un
modelo matemático.

5. Un circuito eléctrico.
Si el objetivo es calcular la tensión en los nodos del circuito y la corriente que
circula a través de los componentes eléctricos, entonces podrı́a emplearse un
modelo matemático. En algunos casos sencillos el modelo matemático podrı́a
ser resuelto de manera analı́tica. En la práctica lo más habitual es analizar el
modelo matemático mediante su simulación por ordenador.
Otra posibilidad serı́a construir el circuito y realizar directamente las medidas.

88
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

En algunos casos sencillos podrı́a emplearse un modelo mental, para decidir si


es necesario aumentar o disminuir el valor de ciertos componentes, con el fin
de conseguir modificar la tensión o la corriente de determinada forma.

Solución al Ejercicio 1.2

Un modelo mental es un conjunto de ideas que sirve de ayuda para predecir el


comportamiento de un sistema. El modelo mental puede haber sido desarrollado a
través de la experiencia, la observación o el aprendizaje. Por ejemplo, cuando vamos
a cruzar una calle y vemos un coche que se aproxima, empleamos un modelo mental
para decidir si nos dará tiempo a cruzar o si, por el contrario, debemos esperar.
Asimismo, los modelos mentales constituyen el estadio inicial en el desarrollo
de cualquiera de los otros tipos de modelos, ya que no será posible desarrollar un
modelo verbal, fı́sico o matemático sin previamente haber desarrollado un modelo
mental del sistema.
Un modelo verbal es la descripción del comportamiento del sistema mediante
palabras. Se ajusta al esquema: “si se cumple esta condición, entonces deberı́a ocurrir
aquello”. Un ejemplo de modelo verbal serı́a la descripción verbal del funcionamiento
de un electrodoméstico (por ejemplo, una lavadora) donde se van describiendo las
posibles acciones a realizar y sus resultados.
Un modelo fı́sico es una maqueta que reproduce total o parcialmente un sistema.
Un ejemplo de modelo fı́sico es una maqueta de un vehı́culo cuyas caracterı́sticas
aerodinámicas quieren estudiarse en el túnel de viento. Otra finalidad de los modelos
fı́sicos es analizar los diseños desde el punto de vista estético.
Un modelo matemático consiste en la representación de las magnitudes de interés
del sistema mediante variables y de la relación entre estas magnitudes mediante
ecuaciones.

Solución al Ejercicio 1.3

Existen múltiples formas igualmente válidas de contestar a esta pregunta. A


continuación se explica una de ellas.
El modelo matemático del ecosistema podrı́a ser dinámico, determinista y de
tiempo continuo. Dinámico si se quiere estudiar la evolución en el tiempo de las
variables. Determinista si se conocen de manera precisa las condiciones iniciales y

89
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

además se conoce en cada instante el valor de las variables de entrada al modelo


(los factores ambientales). De tiempo continuo si las variables analizadas varı́an de
forma continua en el tiempo.
El modelo de la glorieta podrı́a ser dinámico, estocástico y de eventos discretos.
Dinámico si se pretende analizar la evolución temporal del sistema. Estocástico si el
proceso de llegada de los coches por cada una de las calles que confluye en la glorieta
se describe mediante un proceso estocástico. Es decir, si se supone que el tiempo que
transcurre entre las sucesivas llegadas de coches está distribuido de acuerdo a una
cierta distribución de probabilidad. De eventos discretos si el modelo se construye
de modo que el valor de sus variables sólo cambia en los instantes de tiempo en que
se producen eventos: cuando se produce la llegada de un nuevo vehı́culo, cuando
cambia el estado de un semáforo (rojo, verde, amarillo), etc.
Otra alternativa serı́a describir la glorieta mediante un modelo de tiempo conti-
nuo. En lugar de representar cada coche como una entidad independiente, puede
ser más eficiente computacionalmente considerar que el tráfico de coches es un
flujo continuo, de valor cero cuando los coches están detenidos y de valor f (t)
vehı́culos/minuto cuando los coches están en movimiento. Se escribe f (t) para indicar
que el flujo f es una función del tiempo t.
El modelo de la presa podrı́a ser estático y determinista. Estático si se trata
de calcular qué distribución de estrés en los materiales de la pared corresponde a
una cierta presión ejercida por el agua. Determinista si el valor de las variables de
entrada al modelo (por ejemplo, la presión ejercida por el agua) es conocida.
Como sucede habitualmente con los modelos de los sistemas logı́sticos, el modelo
del servicio de urgencias podrı́a ser un modelo dinámico, estocástico y de eventos
discretos. Estocástico si los procesos de llegada son estocásticos y los tiempos de
proceso son variables aleatorias. De eventos discretos si las variables del sistema sólo
cambian en los instantes en que se producen eventos. Eventos serı́an la llegada de
cada paciente, y el inicio y la finalización de la atención a cada paciente en cada
proceso (por ejemplo recepción, primera diagnosis y curas). Las variables del modelo
permanecen constantes en los intervalos de tiempo entre eventos.
Finalmente, el modelo del circuito eléctrico podrı́a ser dinámico, determinista y
de tiempo continuo. Dinámico si se desea conocer la evolución temporal de tensiones
y corrientes. Determinista si se conoce de manera precisa el estado inicial del modelo
y en cada instante el valor de las variables de entrada. De tiempo continuo si las
variables del modelo varı́an continuamente en el tiempo.

90
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Solución al Ejercicio 1.4

Veamos dos ejemplos. En primer lugar, consideremos los niveles en el conocimien-


to de un colector solar. Se trata de un dispositivo que forma parte de los calentadores
solares y que aprovecha la energı́a de la radiación solar para calentar un fluido (por
ejemplo, una mezcla de agua y glicol) que circula por unos conductos situados dentro
del panel. El fluido caliente circula desde el panel hasta su punto de uso (por ejemplo,
los radiadores del sistema de calefacción de una vivienda), retornando luego al panel.

– En el Nivel 0 del conocimiento se identifica la porción del mundo que vamos a


modelar y las maneras mediante las cuáles vamos a observarlo. Esta porción
del sistema real, que en nuestro caso será el panel solar térmico, constituye el
sistema fuente. La forma en que vamos a observar el colector será midiendo la
radiación solar incidente, la temperatura de entrada del fluido y su temperatura
de salida.

– En el Nivel 1 disponemos de una base de datos de medidas del sistema. En


este caso, de las temperaturas de entrada y salida del fluido que se han medido
para un cierto valor medido de la radiación incidente.

– En el Nivel 2 hemos sido capaces de correlacionar el incremento en la tempe-


ratura del fluido con la intensidad de la radiación incidente. Esta correlación
la hemos obtenido ajustando los parámetros de una fórmula a los datos expe-
rimentales.

– Finalmente, en el Nivel 3 conocemos la estructura del sistema y somos capaces


de entender su comportamiento a partir del comportamiento y la interacción
de sus componentes. Sabemos que el panel solar térmico está compuesto por
una caja rectangular, dentro del cual está el sistema captador de calor. Una de
las caras de esta caja está cubierta de un vidrio muy fino y las otras cinco caras
son opacas y están aisladas térmicamente. Dentro de la caja, expuesta al sol,
se sitúa una placa metálica, que está tratada para que aumente su absorción
del calor, y a la cual están soldados los conductos por los que circula el fluido
transportador del calor.

En segundo lugar, consideremos los niveles en el conocimiento de una gasolinera,


compuesta por varios surtidores, una tienda y varias cajas para realizar el pago.

– En el Nivel 0 conocemos qué porción del mundo vamos a estudiar y las maneras
mediante las cuales vamos a observarlo. Una forma de observar el funciona-
miento de la gasolinera serı́a medir el instante de tiempo en que se produce

91
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

la llegada de un cliente y el instante en que se produce su marcha. Con ello


podrı́a estimarse la distribución de probabilidad del tiempo que se tarda en
atender a un cliente. También podrı́a conocerse el número de clientes que están
siendo atendidos en la gasolinera en cada instante. Entre ambos estadı́sticos
existirá una correlación.

– En el Nivel 1 dispondrı́amos de una base de datos de medidas: número de


clientes en la gasolinera y tiempos de atención.

– En el Nivel 2 dispondrı́amos de un modelo que permite predecir el tiempo me-


dio de atención al cliente en función del número de clientes que se encuentran
en la gasolinera.

– En el Nivel 3 conocemos de manera detallada la estructura de la gasolinera:


número de surtidores, número de cajas de pago, tipo de cola que se forma
frente a las cajas de pago (una cola común a todas o una cola frente a cada
caja), etc. Para un determinado proceso de llegada de clientes y conociendo la
distribución de los tiempos de proceso de llenado en los surtidores, compra en la
tienda y cobro en las cajas, podemos simular el funcionamiento de la gasolinera
y calcular estadı́sticos representativos del mismo. Es decir, podemos conocer el
funcionamiento del sistema completo a partir del funcionamiento e interacción
de sus partes.

Solución al Ejercicio 1.5

Consideremos el colector solar descrito al contestar al Ejercicio 1.4. El análisis


del sistema consistirı́a en intentar comprender su funcionamiento basándose para
ello en el conocimiento que se tiene de su estructura. A partir del análisis de su
estructura, podemos comprender que el colector solar funciona aprovechando el
efecto invernadero. El vidrio deja pasar la luz visible del sol, que incide en la placa
metálica calentándola. Sin embargo, el vidrio no deja salir la radiación infrarroja
de baja energı́a que emite la placa metálica caliente. A consecuencia de ello, y a
pesar de las pérdidas por transmisión (el vidrio es mal aislante térmico), el volumen
interior de la caja se calienta por encima de la temperatura exterior.
En la inferencia, disponemos de una base de datos del comportamiento del
sistema fuente y tratamos de encontrar una representación del conocimiento al Nivel
2 (generación) o al Nivel 3 (estructura), que nos permita recrear los datos de que
disponemos. Por ejemplo, hemos observado experimentalmente que el rendimiento
de los colectores mejora cuanto menor sea la temperatura de trabajo. El modelo

92
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

que describe la estructura del sistema deberı́a reproducir este comportamiento: a


mayor temperatura dentro de la caja (en relación con la exterior), mayores serán las
pérdidas por transmisión en el vidrio. También, a mayor temperatura de la placa
captadora, más energética será su radiación, y más transparencia tendrá el vidrio a
ella, disminuyendo por tanto la eficiencia del colector.
En el diseño de un sistema se investigan diferentes estructuras alternativas para
un sistema completamente nuevo o para el rediseño de uno ya existente. Como
parte del diseño del colector solar podrı́an investigarse el efecto sobre la absorción
de calor de diferentes longitudes de los conductos, diferente volumen interno de la
caja, diferentes pinturas aplicadas sobre la capa metálica, diferentes condiciones de
operación (por ejemplo, caudal de fluido), etc.

Solución al Ejercicio 1.6

La trayectoria de entrada es la siguiente:

x(0)=0 x(1)=1 x(2)=0 x(3)=1 x(4)=1 x(5)=0 x(6)=0 x(7)=1 x(8)=0 x(9)=1

Para esta trayectoria, con un estado inicial q(0)=0, se obtiene las trayectorias de
los estados y de salida siguientes:

q(0)=0 q(1)=0 q(2)=1 q(3)=1 q(4)=0 q(5)=1 q(6)=1 q(7)=1 q(8)=0 q(9)=0
x(0)=0 x(1)=1 x(2)=0 x(3)=1 x(4)=1 x(5)=0 x(6)=0 x(7)=1 x(8)=0 x(9)=1
q(1)=0 q(2)=1 q(3)=1 q(4)=0 q(5)=1 q(6)=1 q(7)=1 q(8)=0 q(9)=0 q(10)=1
y(0)=0 y(1)=0 y(2)=0 y(3)=1 y(4)=0 y(5)=0 y(6)=0 y(7)=1 y(8)=0 y(9)=0

Para la misma trayectoria de entrada, pero con estado inicial q(0)=1, se obtiene:

q(0)=1 q(1)=1 q(2)=0 q(3)=0 q(4)=1 q(5)=0 q(6)=0 q(7)=0 q(8)=1 q(9)=1
x(0)=0 x(1)=1 x(2)=0 x(3)=1 x(4)=1 x(5)=0 x(6)=0 x(7)=1 x(8)=0 x(9)=1
q(1)=1 q(2)=0 q(3)=0 q(4)=1 q(5)=0 q(6)=0 q(7)=0 q(8)=1 q(9)=1 q(10)=0
y(0)=0 y(1)=1 y(2)=0 y(3)=0 y(4)=1 y(5)=0 y(6)=0 y(7)=0 y(8)=0 y(9)=1

El estado del sistema almacena el bit menos significativo de la suma binaria de


los valores de entrada. La salida es el acarreo.
Existen varias maneras de escribir un programa en lenguaje R que simule el
comportamiento del sistema para la trayectoria de entrada dada. Se muestra a
continuación un posible programa. Lo más cómodo es escribir el programa en un
fichero de texto y cargarlo desde la consola de R empleando la función source().

93
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

x <- c(0,1,0,1,1,0,0,1,0,1) # Trayectoria de entrada


t <- c(0:(length(x)-1)) # Tiempo
q <- 0 # Estado inicial
y <- numeric(0) # Salida
# Bucle de la simulación
for (i in 1:length(x)) {
q[i+1] <- if ( q[i]==0 & x[i]==0 ) 0
else if ( q[i]==0 & x[i]==1 ) 1
else if ( q[i]==1 & x[i]==0 ) 1
else 0
y[i] <- if ( q[i]==0 & x[i]==0 ) 0
else if ( q[i]==0 & x[i]==1 ) 0
else if ( q[i]==1 & x[i]==0 ) 0
else 1
}
# Salida de resultados
q <- q[1:length(x)]
resultados <- data.frame(t,x,q)

Una vez ejecutado el código anterior, el resultado está almacenado en el data


frame resultados. Su contenido es el siguiente:

> resultados
t x q
1 0 0 0
2 1 1 0
3 2 0 1
4 3 1 1
5 4 1 0
6 5 0 1
7 6 0 1
8 7 1 1
9 8 0 0
10 9 1 0

Solución al Ejercicio 1.7

Se muestra a continuación el programa. Se crea una matriz llamada evolAutom,


en cuyas filas se va almacenando el estado del autómata en los sucesivos instantes
de tiempo. En la primera fila se almacena el estado inicial, en la segunda fila el
estado en el siguiente instante de tiempo y ası́ sucesivamente. Una vez realizada
la simulación, se emplea la función matrixplot() para visualizar el contenido de
evolAutom. Para poder usar esa función es necesario tener cargado el paquete VIM
(es posible descargarlo de Internet, instalarlo y cargarlo desde la propia plataforma
R). En la Figura 1.19 se muestra el resultado de la ejecución del programa.

94
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

# Estado inicial
estadoInicial <- c( rep(0,30), 1, rep(0,30) );
# ------------------------------
# Tabla de transición de estados
# ------------------------------
tabla <- numeric(0)
# Estado Entrada Estado Entrada
# siguiente izqda actual drcha
tabla[1] <- 0 # 0 0 0
tabla[2] <- 1 # 0 0 1
tabla[3] <- 0 # 0 1 0
tabla[4] <- 1 # 0 1 1
tabla[5] <- 1 # 1 0 0
tabla[6] <- 0 # 1 0 1
tabla[7] <- 1 # 1 1 0
tabla[8] <- 0 # 1 1 1
# ------------------------------
# Número de réplicas
numReplicas <- 30
# ------------------------------
# Simulación
evolAutom <- matrix( 0, nrow=numReplicas , ncol=length(estadoInicial) )
evolAutom[1,] <- estadoInicial
for (rep in c(2:numReplicas)) {
for (cel in c(2:(length(estadoInicial)-1))) {
evolAutom [rep,cel] <- tabla[ 4*evolAutom[rep-1,cel-1]+
2*evolAutom[rep-1,cel] +
evolAutom[rep-1,cel+1]+ 1 ]
}
}
# La función matrixplot está definida en el paquete VIM
matrixplot(evolAutom, labels=FALSE)

Figura 1.19: Evolución del celular unidimensional con Regla 90.

95
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 1.8

A continuación se muestra una forma de realizar el programa.

# Función para la estimación de la integral


estimaI <- function(n,a,b) {
x <- runif(n,a,b)
I <- (b-a)*sum( sin(x) )/n
return (I)
}

# Extremos del intervalo de integración


a <- 0
b <- 3.14159265358979323
# Número de réplicas
nReplicas <- 5
# -----------------------
# Tama~no de la muestra 50
I_50 <- numeric(0)
for (rep in c(1:nReplicas))
I_50[rep] <- estimaI(50,a,b)
# ------------------------
# Tama~no de la muestra 500
I_500 <- numeric(0)
for (rep in c(1:nReplicas))
I_500[rep] <- estimaI(500,a,b)
# -------------------------
# Tama~no de la muestra 5000
I_5000 <- numeric(0)
for (rep in c(1:nReplicas))
I_5000[rep] <- estimaI(5000,a,b)
# -------------------------
# Representación resultados
I <- data.frame(I_50, I_500, I_5000)
boxplot(I)
abline(h=2, lty=3) # Dibuja linea horizontal

El resultado obtenido de la ejecución del programa se encuentra almacenado en


el data frame I. En la Figura 1.20 se muestran los boxplots. Puede observarse que
al aumentar el tamaño de muestra los resultados tienden hacia el valor verdadero y
su variabilidad disminuye.
Obsérvese también que en general se obtendrán diferentes resultados si se repite la
ejecución del programa, ya que R usa en cada caso secuencias diferentes de números
pseudoaleatorios.

96
INTRODUCCIÓN AL MODELADO Y LA SIMULACIÓN

Figura 1.20: Boxplots de las estimaciones de la integral para cada tamaño de muestra.

> I
I_50 I_500 I_5000
1 2.231706 1.964716 2.013596
2 2.106927 1.992722 1.997176
3 2.410476 2.006765 2.006508
4 1.751520 2.024015 2.022142
5 1.996247 1.996353 1.998435

97
TEMA 2

MODELADO MEDIANTE DEVS

2.1. Introducción
2.2. Modelos DEVS atómicos
2.3. Modelos DEVS compuestos
2.4. Simulación de modelos DEVS
2.5. Lecturas recomendadas
2.6. Ejercicios de autocomprobación
2.7. Soluciones de los ejercicios
MODELADO MEDIANTE DEVS

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Discutir la especificación formal de modelos atómicos y acoplados mediante el


formalismo DEVS clásico.

– Aplicar el formalismo DEVS clásico a la especificación de modelos de eventos


discretos.

– Discutir los fundamentos del algoritmo simulador para modelos DEVS.

– Describir el comportamiento dinámico de un modelo de eventos discretos a


partir de su especificación DEVS.

101
MODELADO MEDIANTE DEVS

2.1. INTRODUCCIÓN

DEVS (Discrete EVent system Specification) es una especificación para la des-


cripción de modelos de eventos discretos que fue propuesta a mediados de la década
de 1970 por el profesor Bernard P. Zeigler. La especificación proporciona un marco
formal sencillo y elegante para describir el comportamiento de los modelos ató-
micos mediante la planificación de eventos y también la estructura de los modelos
compuestos mediante el acoplamiento modular de sus componentes.
Dos décadas más tarde Alex ChungHen Chow y Bernard P. Zeigler realizaron
una revisión del formalismo, eliminando algunas de sus restricciones. Con el fin
de distinguir entre ambas especificaciones, la propuesta en los años 1970 pasó a
denominarse DEVS clásico y la nueva especificación de los años 1990 se denominó
DEVS paralelo. En este tema nos limitaremos al formalismo DEVS clásico.

2.2. MODELOS DEVS ATÓMICOS

La interfaz de un modelo DEVS está compuesta por cero, uno o varios puertos
de entrada y por cero, uno o varios puertos de salida. El modelo recibe datos en sus
puertos de entrada y envı́a datos a través de sus puertos de salida. La recepción de
uno de estos datos se denomina evento de entrada y el envı́o evento de salida.
Un dato es un paquete de información, que puede ser simple (de tipo numérico
o cadena de caracteres) o una estructura tan compleja como se desee. Al definir el
modelo debe especificarse el tipo de información que transportan los datos recibidos
o enviados por cada puerto.
La descripción de los modelos DEVS clásico se realiza suponiendo que los eventos
se disparan de uno en uno. Esto no significa que no puedan producirse varios eventos
en un mismo instante de tiempo. Significa que esos eventos son ejecutados en cadena,
uno tras otro, de manera que en cada paso de la ejecución de la cadena de eventos
se ejecuta un único evento.
El estado del modelo está descrito mediante el valor de sus variables de estado. El
cambio en el estado del modelo se denomina transición de estado. En el instante
de la transición de estado las variables de estado cambian instantáneamente su valor:
en ese instante cada variable de estado tiene un valor “antiguo” y un valor “nuevo”
(que puede ser igual al valor antiguo o diferente). Un modelo DEVS experimenta un
número finito de transiciones de estado en cualquier intervalo acotado de tiempo.
Las transiciones del estado pueden producirse bien porque han sido planificadas por

103
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

el propio modelo, o bien pueden ser debidas a un evento de entrada. En el primer


caso el cambio de estado se produce en una transición interna y en el segundo en
una transición externa. Todo ello se explica con detalle a continuación.

2.2.1. Especificación formal

La especificación de un modelo DEVS atómico consiste en la tupla (secuencia


ordenada de objetos) siguiente:

DEVS = hX, S, Y, δint , δext , λ, tai (2.1)

donde cada objeto de la tupla tiene el significado siguiente:

X Conjunto de entrada.
S Conjunto de posibles estados.
Y Conjunto de salida.
δint : S → S Función de transición interna.
δext : Q × X → S Función de transición externa.
λ:S→Y Función de salida.
ta : S → R+0,∞ Función de avance de tiempo.

La Tupla (2.1) contiene tres conjuntos y cuatro funciones. Para cada función se
ha indicado el tipo de su argumento o argumentos, y el tipo de su valor de retorno.
A continuación se explica el significado de cada objeto de la tupla.

– El conjunto de entrada X está compuesto por todas las posibles parejas


(pI, v), donde pI es el nombre de un puerto de entrada y v es un posible dato
recibido en dicho puerto. El conjunto X se especifica indicando el nombre de
cada puerto de entrada y el tipo de los datos que pueden ser recibidos en dicho
puerto.

– El conjunto S está compuesto por todos los posibles estados del modelo. El
estado del modelo está descrito por un cierto conjunto de variables de
estado, de modo que cada combinación de valores de las variables de estado
define un estado del modelo. Ası́ pues, el conjunto S es el producto cartesiano
de los posibles valores de las variables de estado del modelo. El rango de una
variable de estado, es decir, el conjunto de valores que puede tomar la variable,

104
MODELADO MEDIANTE DEVS

puede ser un conjunto discreto finito o infinito, o un conjunto continuo acotado


o no acotado.

– El conjunto de salida Y está compuesto por todas las posibles parejas (pO,
v), donde pO es el nombre de un puerto de salida y v es un posible dato
enviado por dicho puerto. El conjunto Y se especifica indicando el nombre de
cada puerto de salida y el tipo de los datos que pueden ser enviados a través
de dicho puerto.

– La función de transición interna, δint : S → S, admite como argumento


un estado del modelo y devuelve un estado del modelo.

– La función de transición externa, δext : Q × X → S, tiene dos argumentos


de entrada: un elemento del estado total del modelo y un elemento (pI, v) del
conjunto X. Devuelve un estado del modelo. Los elementos del conjunto Q,
llamado estado total, están formados por parejas de valores (s, e), donde s
es un estado del modelo y e es el tiempo que ha transcurrido desde la anterior
transición del estado.

– La función de salida, λ : S → Y , admite como argumento un estado del


modelo y devuelve un elemento (pO, v) del conjunto Y . La función también
puede devolver el conjunto vacı́o, que se representa ∅.

– La función de avance de tiempo, ta : S → R+ 0,∞ , tiene como argumento


un estado del modelo y devuelve un número real positivo, incluyendo el cero
e infinito. Este número es el tiempo máximo que el modelo puede permanecer
de manera continuada en el estado pasado como argumento a la función.

2.2.2. Comportamiento de modelos DEVS atómicos

Además de los objetos de la tupla, para poder simular el modelo debe especificarse
en qué instante de tiempo comienza la simulación, en qué estado total se encuentra
el modelo en dicho instante inicial y cuál es la condición de finalización de la
simulación. Esta información no forma parte del modelo, sino del experimento
que va a realizarse sobre él. Si el modelo contiene parámetros, especificar el valor de
éstos también forma parte de la definición del experimento. Un parámetro es una
variable cuyo valor permanece constante a lo largo de la simulación.
La simulación del modelo DEVS atómico se realiza mediante un algoritmo de-
nominado DEVS-simulador. En este algoritmo se emplean las variables tlast y
tnext , en las cuales se almacena el instante en el cual se produjo la última transición

105
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

del estado del modelo atómico y el instante en el cual está planificada su próxima
transición interna, respectivamente. Obsérvese que la variable tnext hace las funciones
de calendario de eventos del algoritmo DEVS-simulador, ya que en los modelos DEVS
atómicos el calendario de eventos contiene un único evento: la próxima transición
interna.
Sea tinicial el valor del tiempo al inicio de la simulación. Sea (sinicial , einicial ) el
estado total inicial del modelo. Esto significa que en el instante tinicial el modelo
está en el estado sinicial y que ha permanecido en dicho estado durante un tiempo
einicial . Es decir, desde el instante tinicial − einicial hasta el instante inicial tinicial . Al
inicializar el algoritmo DEVS-simulador, se asigna valor inicial a tlast y tnext de la
forma siguiente:

tlast = tinicial − einicial (2.2)


tnext = tlast + ta(sinicial ) (2.3)

Supongamos que en un instante de tiempo tactual el estado del modelo atómico


es s ∈ S y que se dispara una transición interna. Entonces, el algoritmo DEVS-
simulador ejecuta las acciones siguientes:

1. Generar (si procede) un evento de salida. Se invoca la función de salida,


pasando como argumento el estado s. Si el valor devuelto, λ(s), es un elemento
(pO, v) ∈ Y , se produce un evento de salida: se envı́a el dato v a través del
puerto pO. Si el valor devuelto es el conjunto vacı́o, no se produce evento de
salida.

2. Transición del estado. Se invoca la función de transición interna pasando


como parámetro el estado s. Sea snew el estado devuelto por la función. Es
decir, snew = δint (s). Se produce una transición del estado s al estado snew .

3. Actualizar tlast . Se asigna: tlast = tactual .

4. Planificar una nueva transición interna. Se asigna: tnext = tlast + ta(snew ).

Supongamos ahora que en un instante de tiempo tactual el modelo atómico está


en el estado s ∈ S y se dispara una transición externa debido a que se recibe un
dato v en un puerto pI. Entonces, el algoritmo DEVS-simulador ejecuta las acciones
siguientes:

106
MODELADO MEDIANTE DEVS

1. Actualizar la variable e. Se asigna a la variable e el tiempo que ha trans-


currido desde la última transición del estado. Es decir, e = tactual − tlast .

2. Transición del estado. Se pasan a la función de transición externa los dos


parámetros siguientes: el elemento (pI, v) y el estado total actual (s, e). La
función devuelve un nuevo estado, que llamaremos snew . Es decir, snew =
δext ((s, e), (pI, v)). Se produce una transición del estado s al estado snew .

3. Actualizar tlast . Se asigna: tlast = tactual .

4. Replanificar la transición interna. Se asigna: tnext = tlast + ta(snew ).

Obsérvese que en la transición externa nunca se produce evento de salida. Los


eventos de salida sólo pueden producirse en las transiciones internas.
Obsérvese también que en la definición del modelo DEVS atómico no se indica
qué ocurre si se produce un evento externo precisamente en el mismo instante en que
está planificada una transición interna. Supongamos que en el instante t el modelo
se encuentra en el estado total (s, e) y recibe un dato vI en el puerto de entrada
pI. Supongamos también que en ese mismo instante está planificada una transición
interna: e = ta(s). Habrı́a dos posibles formas de proceder:

1. Ejecutar primero la transición interna y luego la externa.

a) Se envı́a el dato vO a través del puerto pO, donde (pO, vO) = λ (s).
b) Transición del estado s al estado transitorio s∗ = δint (s).
c) Transición del estado s∗ al estado snew,1 = δext ((s∗ , 0), (pI, vI)).
d ) La próxima transición interna se planifica en el instante tnext,1 = t +
ta(snew,1 ).

2. Ejecutar primero la transición externa.

a) Transición del estado s al estado snew,2 = δext ((s, ta(s)), (pI, vI)).
b) La próxima transición interna se planifica en el instante tnext,2 = t +
ta(snew,2 ). Por consiguiente, la transición interna que estaba planificada
para el instante actual t no se ejecuta.

El simulador de DEVS procede de acuerdo a la segunda opción. Es decir, ejecuta


primero la transición externa. En la Sección 2.4 se explicará con detalle la simulación
de modelos DEVS, con lo cual se volverá sobre este tema.

107
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Trayectoria ( inPort,x0 ) ( inPort,x1 )


de entrada

0 t0 t2

Estado
s1 = δ ext ( ( s0 , t0 ) , ( inPort,x0 ) )
s3 = δ ext ( ( s2 , t2 − t1 ) , ( inPort,x1 ) )
s0
s2 = δ int ( s1 )

e = t0 < ta ( s0 ) ta ( s1 ) e = t2 − t1 < ta ( s2 )

Trayectoria
de salida ( outPort,y0 )

0 t1 = t0 + ta ( s1 )

Figura 2.1: Ejemplo de comportamiento de un modelo DEVS atómico SISO.

Para ilustrar las explicaciones anteriores acerca del comportamiento de los mo-
delos DEVS atómicos, en la Figura 2.1 se muestra un ejemplo del comportamiento
de un modelo DEVS con un puerto de entrada llamado inPort y un puerto de salida
llamado outPort. Los modelos con una entrada y una salida se denominan modelos
SISO (Single-Input Single-Output).
El comportamiento de entrada/salida observado en la figura es el siguiente. La
trayectoria de entrada consta de dos eventos de entrada: en el instante t0 se recibe
el dato x0 y en el instante t2 se recibe el dato x1 . En el instante t1 se produce una
transición interna, en la cual se produce un evento de salida: se envı́a el dato y0 . A
continuación se explica detalladamente el comportamiento mostrado en la figura.

1. Inicialización. Supongamos que la simulación comienza en tinicial = 0 y que


el estado total inicial es (sinicial , einicial ) = (s0 , 0). Ası́ pues, la última transición
del estado se produjo en el instante tlast = tinicial − einicial = 0 − 0 = 0. Se
planifica la siguiente transición interna para el instante: tnext = tlast + ta(s0 ) =
0 + ta(s0 ) = ta(s0 ).

2. Transición externa en t0 < ta(s0 ). En el instante t0 se produce un evento


de entrada. Se asigna: e = t0 − tlast = t0 − 0 = t0 . Se produce una transición
del estado s0 al estado s1 = δext ((s0 , t0 ), (inPort, x0 )). Se asigna: tlast = t0 . La
transición interna que estaba planificada para ta(s0 ) se cancela y en su lugar

108
MODELADO MEDIANTE DEVS

se planifica una transición interna para el instante t1 = t0 + ta(s1 ). Para ello,


se asigna: tnext = t1 .

3. Transición interna en t1 = t0 + ta(s1 ). No se produce ningún nuevo evento


de entrada en el intervalo (t0 , t1 ), con lo cual en t1 se dispara la transición
interna, realizándose las acciones siguientes. Sea (outPort, y0 ) el elemento de
Y devuelto por la función de salida al pasar el estado s1 como argumento. Se
envı́a el dato y0 a través del puerto de salida. A continuación, se produce una
transición del estado s1 al estado s2 = δint (s1 ). Se asigna: tlast = t1 . Se planifica
la próxima transición interna para el instante tnext = t1 + ta(s2 ).

4. Transición externa en t2 < t1 +ta(s2 ). En el instante t2 se produce un evento


de entrada. Se asigna: e = t2 − t1 . Se produce una transición del estado s2 al
estado s3 = δext ((s2 , t2 − t1 ), (inPort, x1 )). Se asigna: tlast = t2 . Se replanifica la
próxima transición interna: se elimina de la planificación la transición interna
del instante t1 + ta(s2 ) y se planifica la próxima transición interna para el
instante t2 + ta(s3 ). Para ello, se asigna, tnext = t3 , donde t3 = t2 + ta(s3 ).

5. Si no se producen eventos externos en el intervalo (t2 , t3 ), en el instante t3 se


ejecutará la transición interna. Si se produce un evento externo en el intervalo,
se ejecutará una transición externa en el instante del evento. De esta manera
se seguirı́a ejecutando el modelo hasta alcanzar la condición de finalización de
la simulación.

2.2.3. Práctica del modelado

Veamos a continuación cómo puede describirse en la práctica el comportamiento


de modelos atómicos mediante DEVS. Para especificar ordenadamente los diferentes
objetos de la tupla, emplearemos una plantilla como la mostrada en la Tabla 2.1.
En la columna de la izquierda se indica el nombre del objeto y en la columna de la
derecha se muestra su definición. En la plantilla de la Tabla 2.1 se explica en qué
consiste dicha definición.
Es práctica común declarar una variable de estado llamada σ (se lee “sigma”).
En esa variable de almacena el tiempo máximo durante el cual el modelo podrá
permanecer en el estado. Este tiempo se denomina tiempo de vida del estado.
Si no se producen eventos de entrada, transcurrido ese tiempo se disparará una
transición interna. Para conseguir ese comportamiento, se define la función de avance
en el tiempo de modo que devuelva el valor de la variable de estado σ.

109
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Tabla 2.1: Plantilla para la especificación de modelos DEVS atómicos.

Nombre del modelo Nombre asignado al modelo


Parámetros Declaración de parámetros y sus rangos.
X Nombre de cada puerto de entrada y conjunto de datos que
pueden recibirse en él.
Y Nombre de cada puerto de salida y conjunto de datos que
pueden ser enviados a través de él.
Variables de estado Declaración de las variables de estado, especificando su
rango. El conjunto S es el producto cartesiano de los rangos
de las variables de estado.
δint : S → S Nombre y rango de variables locales, cuyo ámbito es el
cuerpo de la función. Cuerpo de la función.
δext : Q × X → S Nombre y rango de variables locales, cuyo ámbito es el
cuerpo de la función. Cuerpo de la función.
λ:S→Y Nombre y rango de variables locales, cuyo ámbito es el
cuerpo de la función. Cuerpo de la función.
ta : S → R+
0,∞ Nombre y rango de variables locales, cuyo ámbito es el
cuerpo de la función. Cuerpo de la función.

Ası́ pues, cuando se produce una transición interna o externa se asigna nuevo
valor a todas las variables de estado, incluyendo σ. A continuación, como parte
de las acciones de la transición, se planifica una nueva transición interna para un
instante futuro σ unidades de tiempo posterior al instante actual.
La declaración de la variable de estado σ se realiza de la misma forma que
cualquier otra variable de estado: especificando su nombre y su rango de valores. La
declaración es: σ ∈ R+ +
0,∞ . El rango es el conjunto R0,∞ . Es decir, los números reales
positivos incluyendo el cero y el infinito. Cuando σ valga cero, el sistema estará en
ese estado un tiempo cero. Se dice que ese estado es un estado transitorio. Cuando
σ valga infinito, el sistema permanecerá en ese estado hasta que suceda un evento
externo. En este caso, se dice que s es un estado pasivo.
A continuación se muestran algunos ejemplos sencillos de cómo se realiza la
especificación mediante DEVS de modelos atómicos.

110
MODELADO MEDIANTE DEVS

Sistema pasivo

El sistema pasivo no responde con salidas a ninguna trayectoria de entrada y


se encuentra siempre en su única fase, que denominamos “pasivo”. El modelo tiene
un puerto de entrada, llamado inPort, y un puerto de salida, llamado outPort. Al
puerto de entrada llegan números reales. No se envı́a ningún dato a través del puerto
de salida. En la Figura 2.2 se muestra un ejemplo del comportamiento del sistema
pasivo. Dado que el sistema tiene un único puerto de entrada, por simplicidad se ha
omitido el nombre del puerto al representar los eventos de la trayectoria de entrada.
La definición de este modelo se muestra en la Tabla 2.2.

Trayectoria x0 x1
de entrada
inPort DEVS outPort
fase
pasivo “pasivo”

Trayectoria
de salida
a) b)
Figura 2.2: Sistema pasivo: a) interfaz; y b) ejemplo del comportamiento.

Tabla 2.2: Modelo DEVS pasivo.

Nombre del modelo DEVS pasivo


Parámetros
X (inPort, R)
Y (outPort, ∅)
Variables de estado fase ∈ {“pasivo”};
σ ∈ R+0,∞ ;
δint : S → S return (“pasivo”, ∞);
δext : Q × X → S return (“pasivo”, ∞);
λ:S→Y return ∅;
ta : S → R+0,∞ return σ;

111
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Generador de eventos

El modelo tiene únicamente un puerto de salida, llamado outPort, a través del


cual envı́a un valor real E cada cierto intervalo de tiempo constante ∆. El valor (E)
del dato enviado y el periodo del generador (∆) son parámetros del modelo. En la
Figura 2.3 se muestra un ejemplo del comportamiento dinámico del modelo DEVS
generador. Dado que el sistema tiene un único puerto de salida, por simplicidad se
ha omitido el nombre del puerto al representar los eventos de la trayectoria de salida.
El comportamiento del modelo puede describirse formalmente como se indica en la
Tabla 2.3.

fase “activo”

outPort
DEVS
generador Trayectoria
E E E E
de salida

0 ∆ 2∆ 3∆ 4∆
a) b)

Figura 2.3: Generador de eventos: a) interfaz; y b) ejemplo del comportamiento.

Tabla 2.3: Modelo DEVS de un generador de eventos.

Nombre del modelo DEVS generador eventos


Parámetros ∆ ∈ R+ ;
E ∈ R;
X No hay puertos de entrada
Y (outPort, R)
Variables de estado fase ∈ {“activo”};
σ ∈ R+0,∞ ;
δint : S → S return (“activo”, ∆);
δext : Q × X → S No definida, ya que no hay puertos de entrada.
λ:S→Y return (outPort, E);
ta : S → R+0,∞ return σ;

112
MODELADO MEDIANTE DEVS

Acumulador SISO

El acumulador tiene un puerto de entrada (inPort), al que llegan valores reales,


y un puerto de salida (outPort). Tiene un parámetro: el tiempo de respuesta (∆).
El modelo puede estar en dos posibles fases: “pasivo” y “responde”.

– Si el sistema está en la fase “pasivo” y recibe en el puerto de entrada un número


distinto de cero, entonces el modelo almacena el valor recibido (reemplazando
el valor anteriormente almacenado).

– Si el sistema está en la fase “pasivo” y recibe en el puerto de entrada el número


cero, entonces pasa a la fase “responde”. Transcurridas ∆ unidades de tiempo,
envı́a a través del puerto de salida el valor almacenado. A continuación, pasa
a la fase “pasivo”.

– Mientras está en la fase “responde”, el sistema ignora los eventos de entrada.

En la Figura 2.4 se muestra un ejemplo del comportamiento del modelo. La


variable de estado almacena contiene el valor almacenado en el acumulador.

1. El valor inicial que se ha asignado a las variables de estado en este ejemplo


es (“pasivo”, ∞, 0). El valor de las variables de estado se indica en el mismo
orden en que han sido definidas en la Tabla 2.4.

2. En t0 se recibe el valor x1 6= 0. Se produce una transición al estado que devuelve


la función de transición externa: (“pasivo”, ∞, x1 ).

3. En t1 se recibe un 0 en el puerto de entrada. Se produce una transición al


estado devuelto por la función de transición externa: (“responde”, ∆, x1 ).

4. En t1 +∆ se ejecuta la transición interna. Primero se envı́a el valor de la variable


de estado almacena (es decir, x1 ) a través del puerto outPort. A continuación,
se produce la transición al estado devuelto por la función de transición interna:
(“pasivo”, ∞, x1 ).

5. Los eventos de entrada en t2 , t4 y t6 hacen que se planifiquen transiciones


internas para los instantes t2 + ∆, t4 + ∆ y t6 + ∆, respectivamente. El evento
de entrada en el instante t5 hace que cambie el valor de almacena.

La descripción formal del modelo se encuentra en la Tabla 2.4. El valor recibido


en el puerto de entrada inPort se representa: dato(inPort).

113
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Trayectoria ∆ ∆ ∆ ∆
de entrada x1 0 0 x2 0 x3 0

t0 t1 t2 t3 t4 t5 t6
almacena x3
x1
0
t0 t5
fase ∆ ∆ ∆ ∆
“responde”
“pasivo”

t1 t2 t4 t6
Trayectoria
de salida
x1 x1 x1 x3

t1 + ∆ t2 + ∆ t4 + ∆ t6 + ∆

Figura 2.4: Ejemplo del comportamiento del acumulador.

Tabla 2.4: Modelo DEVS acumulador SISO.

Nombre del modelo DEVS acumulador SISO


Parámetros ∆ ∈ R+ ;
X (inPort, R)
Y (outPort, R)
Variables de estado fase ∈ {“pasivo”, “responde”};
σ ∈ R+ 0,∞ ;
almacena ∈ R;
δint : S → S return (“pasivo”, ∞, almacena);
δext : Q × X → S if ( fase == “pasivo” and dato(inPort) 6= 0 ) {
return (“pasivo”, ∞, dato(inPort));
} else if ( fase == “pasivo” and dato(inPort) == 0 )
return (“responde”, ∆, almacena);
} else {
return (fase, σ − e, almacena);
}
λ:S→Y return (outPort, almacena);
ta : S → R+
0,∞ return σ;

114
MODELADO MEDIANTE DEVS

Contador binario

El contador tiene un puerto de entrada (inPort), al que llegan los números 0 y 1,


y un puerto de salida (outPort). Cuando se recibe un 1, si el número de 1’s recibidos
hasta ese momento es par (incluyendo el que acaba de recibirse), entonces se envı́a
un 1 a través del puerto de salida. En la Figura 2.5 se muestra un ejemplo del
comportamiento del modelo. El modelo del contador está descrito en la Tabla 2.5.

Trayectoria 0 1 10 1 0 1
de entrada

t0 t1 t2 t3 t4 t5 t6
cuenta 1 1
0 0 0

t1 t2 t4 t6
Trayectoria
1 1
de salida

t2 t6
Figura 2.5: Ejemplo del comportamiento del contador binario.

Tabla 2.5: Modelo DEVS contador binario.

Nombre del modelo DEVS contador binario


Parámetros
X (inPort, {0, 1})
Y (outPort, {1})
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
cuenta ∈ {0, 1};
δint : S → S return (“pasivo”, ∞, cuenta);
δext : Q × X → S if ( cuenta + dato(inPort) <2 ) {
return (“pasivo”, ∞, cuenta + dato(inPort));
} else {
return (“activo”, 0, 0);
}
λ:S→Y return (outPort, 1);
ta : S → R+
0,∞ return σ;

115
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Empleado en la oficina de atención al público

En la Sección 1.4.3 se describió el modelo de una oficina de atención al público


en la cual trabaja un empleado. Consideremos el siguiente modelo simplificado del
comportamiento del empleado, en el cual no se incluye la cola FIFO que se forma
frente a él en la oficina.
Como se muestra en la Figura 2.6, el modelo del empleado tiene un puerto de
entrada (inPort) y un puerto de salida (outPort). Cada cliente es descrito mediante
un identificador: un número natural mayor que cero (1, 2, 3, . . . ) que lo caracteriza
de forma unı́voca. La llegada de un cliente se describe mediante la llegada a inPort
de un dato cuyo valor es el identificador del cliente.

inPort DEVS outPort


recurso

Figura 2.6: Interfaz del modelo del empleado que atiende la oficina.

El empleado puede encontrarse en dos posibles fases: “pasivo” (libre) y “activo”


(atendiendo a un cliente).

– Si mientras el empleado está en la fase “pasivo” se produce la llegada de un


cliente, entonces el empleado pasa a la fase “activo”. El tiempo necesario para
atender al cliente es un parámetro: el tiempo de proceso ∆. Durante ese tiempo,
el empleado almacena el identificador del cliente. Transcurrido el tiempo de
proceso se envı́a el identificador de la entidad a través de outPort y el empleado
pasa a la fase “pasivo”.

– El empleado ignora los eventos de entrada mientras está en la fase “activo”.

En la Figura 2.7 se muestra un ejemplo del comportamiento del modelo. El


identificador del cliente que está siendo atendido se almacena en la variable de estado
entidad. Mientras el empleado no está atendiendo a un cliente, la variable entidad
vale cero. La Tabla 2.6 contiene la especificación del modelo.

116
MODELADO MEDIANTE DEVS

x0 x1 x2
Trayectoria
de entrada

t0 t1 t2
∆ ∆
Variables σ =∞ σ = ∆ σ = ∆−e σ =∞ σ =∆ σ =∞
de estado
fase = “pasivo” fase = “activo” fase = “pasivo” fase = “activo” fase = “pasivo”
entidad = 0 entidad = x0 entidad = 0 entidad = x2 entidad = 0

x0 x2
Trayectoria
de salida

t0 + ∆ t2 + ∆
Figura 2.7: Ejemplo del comportamiento del empleado que atiende la oficina.

Tabla 2.6: Modelo DEVS del empleado que atiende la oficina.

Nombre del modelo DEVS recurso


Parámetros ∆ ∈ R+ ;
X (inPort, N − {0})
Y (outPort, N − {0})
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
entidad ∈ N;
δint : S → S return (“pasivo”, ∞, 0);
δext : Q × X → S if ( fase == “pasivo” ) {
return (“activo”, ∆, dato(inPort));
} else {
return (fase, σ − e, entidad);
}
λ:S→Y return (outPort, entidad);
ta : S → R+
0,∞ return σ;

117
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Conmutador

En la Figura 2.8 se muestra la interfaz del modelo del conmutador. Está com-
puesta por dos puertos de entrada (in, in1) y dos puertos de salida (out, out1). Los
datos recibidos en los puertos de entrada son valores reales.

in out
DEVS
in1 conmutador out1

Figura 2.8: Interfaz del modelo de un conmutador.

El comportamiento del conmutador depende del valor de la variable de estado


Sw. El valor de Sw, que puede ser true o false, cambia en el instante que se produce
un evento de entrada. Asimismo, el conmutador puede encontrarse en dos fases:
“pasivo” y “activo”.

– Si se produce un evento de entrada mientras el conmutador está en la fase


“pasivo”, entonces pasa a la fase “activo”. Transcurrido un retardo de ∆ uni-
dades de tiempo, se produce un evento de salida: se envı́a el mismo valor que
se recibió como dato de entrada.

• Si el dato se recibió en el puerto in, entonces es enviado por el puerto out


si Sw=true y por el puerto out1 si Sw=false.
• Si el dato se recibió en el puerto in1, entonces es enviado por el puerto
out1 si Sw=true y por el puerto out si Sw=false.

A continuación, el conmutador pasa a la fase “pasivo”.

– El conmutador ignora todos los eventos de entrada mientras está en la fase


“activo”.

En la Figura 2.9 se muestra un ejemplo del comportamiento del modelo.

1. El estado inicial del modelo es: (“pasivo”, ∞, “in”, 0, false).

2. En el instante t0 se recibe el valor x0 en el puerto in1. El estado devuelto por


la función de transición externa es: (“activo”, ∆, “in1”, x0 , true). Se asigna a
σ el valor ∆. Dado que la función de avance de tiempo devuelve el valor de σ,
se planifica una transición interna para el instante t0 + ∆.

118
MODELADO MEDIANTE DEVS

(in1, x0) (in, x1) (in, x2)


Trayectoria
de entrada
e
t0 t1 t2
∆ ∆
σ =∞ σ = ∆ σ = ∆−e σ =∞ σ =∆ σ =∞
Variables
de estado
fase = “pasivo” fase = “activo” fase = “pasivo” fase = “activo” fase = “pasivo”
inport = “in” inport = “in1” inport = “in1” inport = “in” inport = “in”
almacena = 0 almacena = x0 almacena = x0 almacena = x2 almacena = x2
Sw = false Sw = true Sw = true Sw = false Sw = false

(out1, x0) (out1, x2)


Trayectoria
de salida

t0 + ∆ t2 + ∆
Figura 2.9: Ejemplo del comportamiento del conmutador.

3. En el instante t1 , mientras el sistema está aun en la fase “activo”, se produce


un evento de entrada. Se produce una transición al estado devuelto por la
función de transición externa. Sólo σ cambia de valor. El nuevo valor, ∆ − e,
hace que la transición interna se planifique para el mismo instante que ya
estaba planificada: t0 + ∆. Esto puede comprobarse de la forma siguiente. La
transición se planifica para el instante t1 +∆−e. Como e = t1 −t0 , ese instante
es precisamente t0 + ∆.

4. En el instante t0 + ∆ se produce una transición interna. Se envı́a el valor


de la variable de estado almacena, que es x0 , a través del puerto out1. A
continuación, se produce la transición al estado devuelto por la función de
transición interna: (“pasivo”, ∞, “in1”, x0 , true).

5. En el instante t2 se recibe el valor x2 al puerto in. Se produce la transición


al estado devuelto por la función de transición externa: (“activo”, ∆, “in”, x2 ,
false).

119
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

6. En el instante t2 + ∆ se produce la transición interna. Se envı́a un evento de


valor x2 a través del puerto out1. A continuación, se produce una transición
al estado devuelto por la función de transición interna: (“pasivo”, ∞, “in”, x2 ,
false).

La especificación DEVS del modelo se muestra en la Tabla 2.7. Obsérvese que el


modelo tiene cinco variables de estado. En la variable almacena se guarda el valor
recibido y en la variable inport se almacena “in” o ”in1”, dependiendo del puerto por
el cual se ha recibido el dato. El procedimiento para discernir en qué puerto se ha
recibido el dato es el siguiente. Cuando se recibe un dato en el puerto in, dato(in)
es igual al dato y dato(in1) es el conjunto vacı́o (∅). Igualmente, cuando se recibe
un dato en in1, dato(in1) es igual al dato y dato(in) es el conjunto vacı́o.

Tabla 2.7: Modelo DEVS de un conmutador.

Nombre del modelo DEVS conmutador


Parámetros ∆ ∈ R+ ;
X (in, R), (in1, R)
Y (out, R), (out1, R)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
inport ∈ {“in”, “in1”};
almacena ∈ R;
Sw ∈ {true, false};
δint : S → S return (“pasivo”, ∞, inport, almacena, Sw);
δext : Q × X → S if ( fase == “pasivo” and dato(in) 6= ∅ ) {
return (“activo”, ∆, “in”, dato(in), not Sw);
} else if ( fase == “pasivo” and dato(in1) 6= ∅ ) {
return (“activo”, ∆, “in1”, dato(in1), not Sw);
} else {
return (fase, σ − e, inport, almacena, Sw);
}
λ:S→Y if ( ( Sw == true and inport == “in” ) or
( Sw == false and inport == “in1” ) ) {
return (out, almacena);
} else {
return (out1, almacena);
}
ta : S → R+
0,∞ return σ;

120
MODELADO MEDIANTE DEVS

2.3. MODELOS DEVS COMPUESTOS

El formalismo DEVS permite definir modelos compuestos. Es decir, modelos que


están formados por otros modelos DEVS atómicos o compuestos, acoplados entre
sı́ mediante la conexión de sus puertos. De esta forma se posibilita la descripción
modular y jerárquica de los modelos.
El modelo compuesto tiene una interfaz, formada por puertos de entrada y
salida, a la cual se conectan “internamente” los puertos de sus componentes y
“externamente” otros modelos situados al mismo nivel jerárquico que el modelo
compuesto en cuestión.

2.3.1. Especificación formal

Un modelo compuesto es aquel formado por la conexión de componentes, los


cuales a su vez pueden ser simples o compuestos. La especificación de un modelo
DEVS compuesto consiste en la tupla siguiente:

N = hX, Y, D, {Md | d ∈ D}, EIC, EOC, IC, selecti (2.4)

donde cada objeto de la tupla tiene el significado siguiente:

X Conjunto de entrada.
Y Conjunto de salida.
D Conjunto de los nombres de los componentes.
{Md | d ∈ D} Descripción DEVS de los componentes.
EIC Conjunto de conexiones a entradas externas.
EOC Conjunto de conexiones a salidas externas.
IC Conjunto de conexiones internas.
select : {d | d ∈ D} → D Función de selección.

La Tupla (2.4) contiene siete conjuntos y una función. Los conjuntos de entrada
(X) y salida (Y ) se definen de la misma forma que en los modelos DEVS atómicos.
Esto es razonable, ya que mirando únicamente la interfaz de un componente no es
posible distinguir si se trata de un modelo atómico o compuesto. A continuación se
explica el significado de cada objeto de la tupla.

121
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

– El conjunto de entrada, X, está compuesto por todas las posibles parejas


(pI, v), donde pI es el nombre de un puerto de entrada y v es un posible dato
recibido en dicho puerto. El conjunto X se especifica indicando el nombre de
cada puerto de entrada y el conjunto de datos que pueden ser recibidos en
dicho puerto.

– El conjunto de salida, Y , está compuesto por todas las posibles parejas


(pO, v), donde pO es el nombre de un puerto de salida y v es un posible dato
enviado por dicho puerto. El conjunto Y se especifica indicando el nombre de
cada puerto de salida y el conjunto de datos que pueden ser enviados a través
de dicho puerto.

– El conjunto de nombres de los componentes D contiene los nombres de


los componentes. Cada componente debe tener un nombre que lo identifique
unı́vocamente. Es decir, el conjunto D no puede tener elementos repetidos.

– Sea Md la descripción DEVS del componente llamado d. Por ser d el nombre de


uno de los componentes, se satisface d ∈ D. Ası́ pues, {Md | d ∈ D} representa
el conjunto de las descripciones DEVS de los componentes del modelo.

– El conjunto de las conexiones a las entradas externas de componentes,


EIC (External Input Coupling), contiene las conexiones entre los puertos de
entrada del modelo compuesto y los puertos de los componentes. La conexión
del puerto de entrada PI del modelo compuesto con el puerto de entrada pI
del componente d se especifica: PI − (d, pI).

– El conjunto de las conexiones a salidas externas de los componentes, EOC


(External Output Coupling), contiene las conexiones entre los puertos de salida
del modelo compuesto y los puertos de los componentes. La conexión del
puerto de salida pO del componente d con el puerto de salida PO del modelo
compuesto se especifica: (d, pO) − PO.

– El conjunto de las conexiones internas entre componentes, IC (Internal


Coupling), contiene las conexiones entre los puertos de los componentes. Su-
pongamos que dA y dB son los nombres de dos componentes (dA , dB ∈ D con
dA 6= dB ). La conexión del puerto de salida pO del componente dA con el
puerto de entrada pI del componente dB se especifica: (dA , pO) − (dB , pI).
En el formalismo DEVS no está permitido conectar una salida de un com-
ponente con una entrada del mismo componente. Por ello, en la definición
anterior de la conexión interna se impone que los nombres de los componentes
dA y dB no sean el mismo: dA 6= dB .

122
MODELADO MEDIANTE DEVS

– La función de selección select establece la prioridad en caso de que varios


componentes tengan planificada su transición interna para el mismo instante.
El argumento de la función es el conjunto formado por los nombres de los com-
ponentes cuya transición interna está planificada para el mismo instante. Este
conjunto de componentes cuya transición es inminente se representa INM,
satisfaciéndose que INM es un subconjunto de D. La función select devuelve
uno de los nombres pasados como argumento: el nombre del componente cuya
transición interna debe ejecutarse primero. Es decir: select(INM) ∈ INM.

Obsérvese que las conexiones entre los puertos están clasificadas en tres con-
juntos, que se denominan EIC, EOC e IC. Como ejemplo ilustrativo de los tres
tipos de conexión, en la Figura 2.10 se muestra un modelo compuesto por dos
componentes, dA y dB , que están conectados entre sı́ y conectados a la interfaz
del modelo compuesto. Se verifica:
EIC = { PI − (dA , pI) }
IC = { (dA , pO) − (dB , pI) }
EOC = { (dB , pO) − PO }

PI pI pO pI pO PO
dA dB

PI – (dA, pI) (dA, pO) – (dB, pI) (dB, pO) – PO


Figura 2.10: Ejemplo de conexiones en modelos compuestos.

2.3.2. Comportamiento de modelos DEVS acoplados

Se introducen a continuación algunas ideas fundamentales acerca del algoritmo de


la simulación de modelos DEVS, las cuales permiten comprender el comportamiento
de los modelos DEVS acoplados. Como veremos en la Sección 2.4, el simulador de
cada modelo compuesto lleva su propio calendario de eventos, en el cual registra
las transiciones internas planificadas para sus componentes. Por simplicidad, en las
explicaciones siguientes asumiremos que la simulación se realiza manteniendo un
único calendario de eventos para el modelo completo. El algoritmo de la simulación
de los modelos DEVS es esencialmente el descrito a continuación.

123
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1. Comienza la simulación.

2. Inicialización. Al comienzo de la simulación se ejecutan las acciones de ini-


cialización de la simulación. Se inicializa el estado de cada modelo atómico,
calculándose el instante en el cual está planificada la próxima transición interna
de cada modelo atómico. La lista ordenada de transiciones internas planificadas
constituye el calendario de eventos. Interesa conocer cuál de ellas es la transi-
ción más inminente. Es decir, aquella que está planificada para el instante de
tiempo más próximo. Si varios modelos atómicos tienen su transición interna
planificada para ese instante, se usan las funciones select para seleccionar uno
de ellos. La transición interna de ese componente será la primera del calendario.

3. Avance del reloj de la simulación. Sea d∗ el modelo atómico cuya transición


interna aparece en primer lugar en el calendario de eventos. Sea t∗next el instante
en que está planificada dicha transición. Se avanza el reloj de la simulación
t hasta t∗next . Se elimina del calendario el primer evento (transición interna
planificada para el modelo atómico d∗ ).

4. Transición interna de d∗ y correspondientes transiciones externas.

a) Se invoca la función de salida de d∗ . Si se produce un evento de salida,


se envı́a el dato a través del correspondiente puerto de salida de d∗ . El
dato se transmite por las conexiones, a través de la estructura jerárquica
del modelo completo, hasta alcanzar finalmente uno o varios modelos
atómicos. Se ejecutan las correspondientes transiciones externas en
estos modelos atómicos influidos por d∗ . Se produce la transición del
estado (el nuevo estado se calcula invocando la función de transición
externa) y se planifica la próxima transición interna de cada uno de ellos.
Se insertan estos nuevos eventos en el calendario, eliminando los eventos
que estaban planificados para los modelos influidos por d∗ .
b) El nuevo estado de d∗ se calcula invocando su función de transición inter-
na. Se produce la transición del estado de d∗ al nuevo estado calculado.
c) Invocando la función de avance del tiempo de d∗ , se calcula en qué instante
está planificada la próxima transición interna de d∗ . Se inserta ese evento
en el calendario.

5. Si no se satisface la condición de finalización de la simulación, se salta al Paso 3.

6. Fin de la simulación.

124
MODELADO MEDIANTE DEVS

2.3.3. Práctica del modelado

Veamos a continuación una forma de describir de forma organizada y sistemática


los objetos de la tupla. Al igual que hicimos en el caso de los modelos DEVS atómicos,
emplearemos una plantilla. En este caso, la mostrada en la Tabla 2.8. Obsérvese que
en la plantilla no se incluye la definición DEVS de los componentes, ya que dicha
definición se realizará mediante las correspondientes plantillas separadas.

Tabla 2.8: Plantilla para la especificación de modelos DEVS compuestos.

Nombre del modelo Nombre asignado al modelo


Parámetros Declaración de parámetros especificando sus rangos.
X Nombre de cada puerto de entrada y conjunto de datos
que pueden ser recibidos en él.
Y Nombre de cada puerto de salida y conjunto de datos
que pueden ser enviados a través de él.
D Tipo y nombre de cada componente, y asignación de
valor a sus parámetros (si procede).
EIC Conjunto de conexiones PI − (d, pI).
EOC Conjunto de conexiones (d, pO) − PO.
IC Conjunto de conexiones (dA , pO) − (dB , pI), con dA 6=
dB .
select : {d | d ∈ D} → D Nombre y rango de variables locales, cuyo ámbito es el
cuerpo de la función. Cuerpo de la función. El conjunto
de nombres {d | d ∈ D} pasado como argumento se
llama IN M .

Los siguientes ejemplos pretenden ilustrar la práctica de la especificación de


modelos compuestos mediante DEVS.

125
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Secuencia de etapas

Supongamos un modelo compuesto que describe una secuencia de tres etapas


como la mostrada en la Figura 2.11. Se ha señalado en la figura el nombre de los
puertos de cada componente y del modelo compuesto.

p p p

pipeline
Figura 2.11: Modelo compuesto por tres etapas secuenciales.

Supongamos que al puerto de entrada llegan valores reales y que los componentes
son tres instancias del modelo atómico DEVS recurso. En la Tabla 2.9 se muestra la
especificación del modelo compuesto. Obsérvese que la declaración de los componen-
tes se realiza indicando primero del tipo del componente, a continuación su nombre
y finalmente se señalan las equivalencias entre los parámetros del modelo compuesto
y los parámetros del componente. El valor de ∆0 será asignado al parámetro ∆ del
componente p0 , el valor de ∆1 al parámetro ∆ del componente p1 y el valor de ∆2
al parámetro ∆ del componente p2 .

Tabla 2.9: Modelo DEVS de una secuencia de tres etapas.

Nombre del modelo pipeline


Parámetros ∆0 , ∆1 , ∆2 ∈ R + ;
X (in, R)
Y (out, R)
D DEVS recurso p0 (∆ = ∆0 );
DEVS recurso p1 (∆ = ∆1 );
DEVS recurso p2 (∆ = ∆2 );
EIC in − (p0 , in);
EOC (p2 , out) − out;
IC (p0 , out) − (p1 , in);
(p1 , out) − (p2 , in);
select : {d | d ∈ D} → D if p2 ∈ IN M {
return p2 ;
} else {
return p1 ;
}

126
MODELADO MEDIANTE DEVS

Red de conmutación

En el modelo compuesto mostrado en la Figura 2.12, un conmutador (s0 ) envı́a


datos a dos recursos (p0 , p1 ). La salida de cada recurso está conectada a la salida del
modelo compuesto, con lo cual los datos generados por ambos recursos son enviados
a través del puerto de salida del modelo compuesto. La especificación formal del
modelo compuesto está en la Tabla 2.10.

Figura 2.12: Red de conmutación.

Tabla 2.10: Modelo DEVS de una red de conmutación.

Nombre del modelo red conmutación


Parámetros ∆0 , ∆1 ∈ R + ;
X (in, R)
Y (out, R)
D DEVS conmutador s0 ;
DEVS recurso p0 (∆ = ∆0 );
DEVS recurso p1 (∆ = ∆1 );
EIC in − (s0 , in);
EOC (p0 , out) − out;
(p1 , out) − out;
IC (s0 , out) − (p0 , in);
(s0 , out1) − (p1 , in);
select : {d | d ∈ D} → D if p1 ∈ IN M {
return p1 ;
} else {
return p0 ;
}

127
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2.4. SIMULACIÓN DE MODELOS DEVS

La simulación del modelo DEVS se realiza empleando un simulador. Es decir,


un algoritmo que reproduce el comportamiento del modelo. Dicho algoritmo está
estructurado de la misma forma modular y jerárquica que el propio modelo DEVS
cuyo comportamiento reproduce. Para ello, el simulador combina el empleo de los
tres tipos de algoritmo siguientes:

1. Algoritmo DEVS-simulador, que ejecuta la simulación de un modelo DEVS


atómico.

2. Algoritmo DEVS-coordinador, que coordina la ejecución de un modelo


DEVS compuesto.

3. Algoritmo DEVS-coordinador-raı́z, que es el programa principal que coor-


dina la ejecución de la simulación.

La estructura del simulador se obtiene a partir de la estructura del modelo de


la forma siguiente: se asocia un algoritmo DEVS-simulador a cada modelo DEVS
atómico, un algoritmo DEVS-coordinador a cada modelo DEVS compuesto y en la
parte superior de la jerarquı́a del simulador se sitúa un algoritmo DEVS-coordinador-
raı́z.
El ejemplo de la Figura 2.13 ilustra la correspondencia entre la estructura del
modelo DEVS y la estructura de su simulador. Los algoritmos DEVS-simulador
están asociados con las hojas del árbol del modelo, esto es, con los modelos DEVS
atómicos. Los algoritmos DEVS-coordinador están asociados con los modelos DEVS
compuestos, que están situados en los nodos internos de la jerarquı́a del modelo.
El algoritmo DEVS-coordinador-raı́z tiene siempre un único algoritmo hijo: aquel
asociado al modelo DEVS completo.
Como veremos, el avance del reloj de la simulación es gestionado por el algoritmo
DEVS-coordinador-raı́z y cada algoritmo DEVS-coordinador mantiene su propio
calendario de eventos. Asimismo, cada algoritmo DEVS-simulador lleva registro (en
su variable tnext ) de en qué instante está planificada la siguiente transición interna
del modelo DEVS atómico al que está asociado. Por tanto, los diferentes algoritmos
del simulador deben coordinarse entre sı́ durante la simulación. Emplean para ello
un protocolo de intercambio de mensajes, que está basado en los cuatro tipos de
mensaje siguientes:

128
MODELADO MEDIANTE DEVS

DEVS coordinador raíz

Modelo DEVS
compuesto coordinador

Modelo Modelo DEVS DEVS


compuesto atómico coordinador simulador

Modelo Modelo DEVS DEVS


atómico atómico simulador simulador

Figura 2.13: Correspondencia entre un modelo DEVS modular y jerárquico (izquierda), y su


simulador (derecha).

DEVS-coordinador-raíz

( i, t ) (*,t )

DEVS-coordinador

( i , t ) ( x, t ) (*,t ) ( y, t )

DEVS-coordinador

( i , t ) ( x, t ) (*,t ) ( y, t )

DEVS-simulador

Figura 2.14: Intercambio de mensajes entre los simuladores.

(i, t) ւ El mensaje (i, t), llamado mensaje-i, indica al algoritmo hijo que éste debe
ejecutar sus acciones de inicialización.

(x, t) ւ El mensaje (x, t), llamado mensaje-x, se envı́a al algoritmo hijo para noti-
ficarle que se ha producido un evento de entrada en uno de sus puertos. El
elemento x = (p, v) pertenece al conjunto de entrada X del algoritmo hijo,
donde p es el nombre del puerto y v el dato recibido en dicho puerto.

(∗, t) ւ El mensaje (∗, t), llamado mensaje-*, notifica al algoritmo hijo que éste debe
ejecutar su transición interna más inminente.

(y, t) ր El mensaje (y, t), llamado mensaje-y, notifica al algoritmo padre que en el
algoritmo hijo que envı́a el mensaje se ha producido un evento de salida. El

129
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

elemento y = (p, v) pertenece al conjunto de salida Y del algoritmo hijo, donde


p es el nombre del puerto y v el dato enviado a través de dicho puerto.

En los cuatro tipos de mensaje, el valor de t en el mensaje es igual al valor del


reloj de la simulación en el instante en que se produce la comunicación del mensaje.
A continuación se explica brevemente el código de cada uno de los tres tipos de
simulador.
Obsérvese la Figura 2.14. En ella se muestran los tipos de mensaje enviados y
recibidos por cada tipo de algoritmo. El simulador DEVS-coordinador-raı́z envı́a a
su hijo dos tipos de mensaje: mensaje-i y mensaje-*. Dado que el modelo DEVS de
mayor nivel jerárquico no tiene puertos, el modelo hijo de DEVS-coordinador-raı́z
ni recibe mensajes de tipo mensaje-x de DEVS-coordinador-raı́z, ni tampoco envı́a
mensajes de tipo mensaje-y a DEVS-coordinador-raı́z.

2.4.1. Algoritmo DEVS-simulador

El algoritmo DEVS-simulador mostrado en Código 2.1 reproduce el comporta-


miento de un modelo DEVS atómico descrito en la Sección 2.2.2. La variable t es el
reloj de la simulación, que almacena el tiempo simulado actual. Obsérvese que por
brevedad las variables tlast y tnext se han llamado tl y tn, respectivamente.
El algoritmo consta de una sección de declaración de las variables locales al
algoritmo y de tres cláusulas when. La sintaxis de la cláusula when es la siguiente:

when ( condición_evento ) {
sentencias
}

donde las sentencias del cuerpo de la cláusula when se ejecutan cuando se produce
el evento descrito en la condición de la cláusula. A continuación, se describen con
detalle las tres cláusulas when del algoritmo.
Cuando el algoritmo DEVS-simulador recibe de su padre un mensaje-i (i, t),
entonces realiza las acciones siguientes:

1. Asigna: tl = t - e. La variable tl almacena el instante en que se produjo la


última transición en el estado del algoritmo DEVS-simulador. Dicha variable
se inicializa restando el tiempo transcurrido desde la anterior transición del
estado (e) del valor del reloj de la simulación (t) recibido en el mensaje.

130
MODELADO MEDIANTE DEVS

DEVS-simulador
Variables:
parent // Algoritmo padre de este algoritmo DEVS-simulador
tl // Instante en que se produjo la última transición del estado
tn // Instante en que está planificada la próxima transición interna
(s,e) // Estado total del modelo DEVS asociado a este DEVS-simulador
y // y = (p,v) pertenece al conjunto de salida del modelo
x // x = (p,v) pertenece al conjunto de entrada del modelo
when ( recibe mensaje-i (i,t) en el instante t ) {
tl = t - e
tn = tl + ta(s)
envı́a {tl,tn} a parent
}
when ( recibe mensaje-* (*,t) en el instante t ) {
if t != tn then error: mala sincronización
y = lambda(s)
envia mensaje-y (y,t) a parent
s = delta_int(s)
tl = t
tn = tl + ta(s)
envı́a tn a parent
}
when ( recibe mensaje-x (x,t) en el instante t ) {
if not ( tl <= t <= tn ) then error: mala sincronización
e = t - tl
s = delta_ext(s,e,x)
tl = t
tn = tl + ta(s)
envı́a tn a parent
}
end DEVS-simulador

Código 2.1: Algoritmo DEVS-simulador

131
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2. Asigna: tn = tl + ta(s). La variable tn almacena el instante en que está


planificada la siguiente transición interna de este modelo DEVS atómico.

3. Envı́a al algoritmo padre los nuevos valores de las variables tl y tn.

Cuando el algoritmo DEVS-simulador recibe de su padre un mensaje-* (∗, t),


entonces realiza las acciones indicadas a continuación. Mediante dicho mensaje el
algoritmo padre indica al algoritmo DEVS-simulador que éste debe ejecutar una
transición interna.

1. Si el instante t en que se recibe el mensaje no coincide con el instante tn en


que estaba planificada la transición interna, entonces se ha producido un error
de sincronización.

2. Calcula el dato a enviar (v) y el puerto de salida (p) invocando la función de


transición interna: y = lambda(s), donde y=(p,v).

3. Envı́a un mensaje (y, t) al simulador padre. En el mensaje-y se especifica el


elemento del conjunto de salida calculado (y) y el valor actual del reloj de la
simulación (t).

4. Calcula el nuevo estado del modelo DEVS atómico. Para ello invoca la función
de transición interna pasando como argumento el estado del modelo DEVS
atómico.

5. Asigna: tl = t.

6. Asigna: tn = tl + ta(s).

7. Envı́a el nuevo valor de tn al algoritmo padre.

Cuando el algoritmo DEVS-simulador recibe de su padre un mensaje-* (∗, t),


entonces realiza las acciones indicadas a continuación. Mediante dicho mensaje el
algoritmo padre indica al algoritmo DEVS-simulador que se ha producido un evento
de entrada en el modelo DEVS atómico asociado al algoritmo DEVS-simulador y
que éste debe ejecutar la correspondiente transición externa.

1. Si el mensaje (x, t) ha llegado en un instante de tiempo posterior al instante


en que está planificada la siguiente transición interna del algoritmo DEVS-
simulador, entonces se ha producido un error de sincronización entre los algo-
ritmos simuladores.

132
MODELADO MEDIANTE DEVS

2. Calcula el tiempo transcurrido desde la anterior transición del estado: e = t - tl.

3. Calcula el nuevo estado del modelo DEVS atómico. Para ello, evalúa la función
de transición externa pasando como argumentos el estado total (s,e) del
modelo DEVS atómico y el elemento x=(p,v) del conjunto de entrada recibido
en el mensaje.

4. Asigna: tl = t.

5. Asigna: tn = tl + ta(s).

6. Envı́a el nuevo valor de tn al algoritmo padre.

2.4.2. Algoritmo DEVS-coordinador

Cada simulador DEVS-coordinador es responsable de la correcta sincroniza-


ción de sus simuladores hijos, que pueden ser de tipo DEVS-simulador y DEVS-
coordinador. Para ello, intercambia mensajes con sus hijos y con su padre, y gestiona
su propio calendario de eventos, en el que va almacenando el instante en el que está
planificada la siguiente transición interna de cada uno de sus hijos. Este calendario
de eventos está ordenado en función del instante planificado de disparo. Cuando hay
varias transiciones internas planificadas para un mismo instante, éstas se ordenan
empleando la función select. Adicionalmente, el algoritmo DEVS-coordinador debe
gestionar los eventos de entrada que llegan a la interfaz del modelo DEVS acoplado
que simula.
El algoritmo DEVS-coordinador se muestra en el Código 2.2. Se emplea la nota-
ción siguiente. Se llama D al conjunto de algoritmos simuladores hijo del simulador
DEVS-coordinador. Se representa d un elemento de dicho conjunto y d* el elemento
cuya transición interna es más inminente (aplicando el criterio de tiempo de disparo
más próximo y función select en caso de igualdad de instante de disparo). El ins-
tante en que está planificada la siguiente transición interna del simulador hijo d se
representa tn_d y el instante de su última transición del estado tl_d.

– El primer evento del calendario del algoritmo DEVS-coordinador está planifi-


cado para el instante: tn = min{ tn_d | d en D }.

– La última transición del estado en los algoritmos hijo del DEVS-coordinador


se produjo en el instante: tl = max{ tl_d | d en D }.

133
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

DEVS-coordinador
variables:
parent // Simulador padre de este algoritmo DEVS-coordinador
tl // Instante en que se produjo la última transición del estado
tn // Instante en que está planificada transición interna más inminente
cal-event // Calendario de eventos, (d,tn_d), ordenado por tn_d y select
d* // Hijo cuya transición interna planificada es más inminente
when ( recibe mensaje-i (i,t) en el instante t ) {
envı́a mensaje-i (i,t) a cada uno de los simuladores hijo d
recibe {tn_d, tl_d} de cada hijo d
cal-event es la lista ordenada de los (d,tn_d) recibidos en el paso anterior
tl = max{ tl_d | d en D }
tn = min{ tn_d | d en D }
envı́a {tn,tl} a parent
}
when ( recibe mensaje-* (*,t) en el instante t ) {
if t != tn then error: mala sincronización
d* = primer elemento en cal-event
elimina (d*,t) de cal-event
envia mensaje-* (*,t) a d*
si recibe mensaje-y de d*, ejecuta las acciones asociadas a dicho mensaje
recibe tn_d* de d*
inserta (d*,tn_d*) en cal-event
tl = t
tn = min{ tn_d | d en D }
envı́a tn a parent
}
when ( recibe mensaje-x ((p,v),t) en el instante t ) {
if not ( tl <= t <= tn ) then error: mala sincronización
para cada conexión p-(d*,p_d*) {
envı́a el mensaje-x ((p_d*,v),t) a d*
recibe tn_d* de d*
}
actualiza cal-event
tl = t
tn = min{ tn_d | d en D }
envı́a tn a parent
}
when ( recibe de d* un mensaje-y ((p_d*,v_d*),t) en el instante t ) {
para cada conexión (d*,p_d*)-q {
envı́a el mensaje-y ((q,v_d*),t) a parent
}
para cada conexión (d*,p_d*)-(d,p_d) {
envı́a un mensaje-x ((p_d,v_d*),t) al hijo d
recibe tn_d del hijo d
}
actualiza cal-event
tl = t
tn = min{ tn_d | d en D }
envı́a tn a parent
}
end DEVS-coordinador

Código 2.2: Algoritmo DEVS-coordinador

134
MODELADO MEDIANTE DEVS

Cuando el algoritmo DEVS-coordinador recibe de su padre un mensaje-i (i, t),


entonces realiza las acciones siguientes:

1. Reenvı́a a sus simuladores hijo el mensaje-i.

2. Cada uno de los simuladores hijo procesa el mensaje-i y, una vez hecho es-
to, cada uno de ellos devuelve una pareja de valores (tn_d,tl_d) al DEVS-
coordinador.

3. Los instantes tn_d en que están planificadas las transiciones internas de los
hijos se ordenan cronológicamente, de más próximo a más lejano en el tiempo.
En caso de coincidencia en el instante de disparo de la transición interna de
varios hijos, se usa la función select del modelo DEVS acoplado para decidir
cómo deben ordenarse. La lista ordenada de las parejas (d,tn_d) constituye el
calendario de eventos.

4. Escoge el mayor valor de tl_d y lo asigna a tl.

5. Escoge el menor valor de tn_d y lo asigna a tn.

6. Envı́a los valores de tn y tl calculados anteriormente a su simulador padre.

Cuando el algoritmo DEVS-coordinador recibe de su padre un mensaje-* (∗, t),


entonces realiza las acciones siguientes:

1. Comprueba que el reloj de la simulación t coincide con el instante tn en que


está planificada la transición interna más inminente de los simuladores hijos. Si
no coincidiera, se ha producido un error en la sincronización de los simuladores.

2. El simulador DEVS-coordinador sabe cuál de sus simuladores hijo debe ejecu-


tar la transición interna: aquel cuya transición interna ocupa el primer puesto
en el calendario de eventos. Llamemos d* a ese simulador hijo.

3. El simulador DEVS-coordinador elimina del calendario de eventos la transición


interna planificada en primer lugar (es la del hijo d*) y envı́a el mensaje-* al
simulador hijo d*.

4. El simulador d* ejecuta su transición interna. Si en dicha transición el simu-


lador d* genera un evento de salida, entonces d* envı́a a DEVS-coordinador
(que es su padre) un mensaje-y (y_d*,t). DEVS-coordinador ejecuta en este
punto las acciones asociadas a la recepción de este mensaje-y proveniente de
su hijo d*. Más adelante se indica en qué consisten estas acciones.

135
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

5. Una vez el simulador d* ha ejecutado su transición interna y se han ejecutado


las transiciones externas debidas al evento de salida de d*, entonces se actualiza
el calendario de eventos de DEVS-coordinador. El hijo d* envı́a el nuevo valor
de tn_d* a DEVS-coordinador, en el que le indica el instante para el cual está
planificado su siguiente transición interna. Se inserta dicho evento (d*,tn_d*)
en el calendario de DEVS-coordinador.

6. El simulador DEVS-coordinador actualiza el valor de sus variables tn y tl.


Asigna: tl = t. Asigna: tn = min{ tn_d | d en D }.

7. Envı́a el nuevo valor de tn a su simulador padre (parent).

Cuando se produce un evento de salida en d*, éste envı́a un mensaje-y (y_d*,t) a


DEVS-coordinador (que es su padre). El evento se produce en el instante que indica
el mensaje: t. También en el mensaje se indica el elemento del conjunto de salida de
d*, esto es: y_d* = (p_d*,v_d*). El evento de salida consiste en enviar el dato v_d*
a través del puerto de salida p_d* de d*. El algoritmo DEVS-coordinador realiza las
acciones siguientes al recibir un mensaje-y de su hijo:

1. El simulador DEVS-coordinador inspecciona las conexiones entre el puerto


de salida p_d* de d* y los puertos de salida del modelo compuesto que simula
DEVS-coordinador. Representamos (d*,p_d*)-q este tipo de conexiones EOC,
donde q es el puerto de salida del modelo compuesto. Para cada una de estas
conexiones, se envı́a un mensaje-y ((q,v_d*),t) a parent (el simulador padre
de DEVS-coordinador). Este mensaje indica que se envı́a el dato v_d* a través
del puerto de salida q del modelo compuesto.

2. El simulador DEVS-coordinador inspecciona las conexiones entre el puerto


de salida p_d* de d* y los puertos de entrada de los demás componentes d.
Este tipo de conexiones IC se representan: (d*,p_d*)-(d,p_d). Para cada una
de estas conexiones, DEVS-coordinador envı́a el mensaje-x ((p_d,v_d*),t) al
componente d. Este mensaje dispara la ejecución de una transición externa en
d, dado que indica que se ha recibido el dato v_d* en el puerto de entrada
p_d. Una vez ejecutadas las transiciones externas, los componentes d envı́an
al DEVS-coordinador los instantes en que están planificadas sus próximas
transiciones internas, tn_d.

3. DEVS-coordinador elimina del calendario de eventos las transiciones internas


que estaban planificadas para estos componentes (ya que no llegarán a produ-
cirse debido a la transiciones externas que acaban de ejecutarse) e inserta la
nueva planificación de transiciones internas que acaba de recibir.

136
MODELADO MEDIANTE DEVS

4. El simulador DEVS-coordinador actualiza el valor de sus variables tn y tl.


Asigna: tl = t. Asigna: tn = min{ tn_d | d en D }.

5. Envı́a el nuevo valor de tn a su simulador padre (parent).

Un mensaje-x (x,t), con x=(p,v), enviado a DEVS-coordinador por su padre


indica que se ha recibido el dato v en el puerto de entrada p del modelo compuesto
simulado por DEVS-coordinador. Cuando recibe un mensaje-x, DEVS-coordinador
ejecuta las acciones siguientes:

1. Comprueba que el evento externo no se ha recibido posteriormente al instante


en que está planificada la transición interna más inminente. Si no se satisface
esta condición, entonces se ha producido un error de sincronización entre los
algoritmos.

2. El algoritmo DEVS-coordinador analiza las conexiones entre sus hijos, con el


fin de identificar qué puertos de entrada de los componentes están directamente
conectados al puerto de entrada p del modelo compuesto, que es donde se ha
producido la llegada del dato v. Este tipo de conexiones EIC entre el puerto de
entrada p del modelo compuesto y el puerto de entrada p_d* del componente
d* se representa: p-(d*,p_d*).

3. Para cada una de las conexiones anteriores, el algoritmo DEVS-coordinador


envı́a un mensaje-x al correspondiente hijo, d*. El mensaje-x indica la llegada
del dato v al puerto p_d* de d*. Tras ejecutar su evento externo de entrada, cada
uno de los componentes d* envı́a al algoritmo DEVS-coordinador el instante en
el cual tiene planificado su siguiente evento interno, tn_d*. DEVS-coordinador
actualiza su calendario de eventos, eliminando la transición interna que estaba
planificada para cada componente d* e insertando en el calendario los nuevos
instantes de disparo tn_d*, para todos los componentes d*.

4. El simulador DEVS-coordinador actualiza el valor de sus variables tn y tl.


Asigna: tl = t. Asigna: tn = min{ tn_d | d en D }.

5. Envı́a el nuevo valor de tn a su simulador padre (parent).

2.4.3. Algoritmo DEVS-coordinador-raı́z

El algoritmo DEVS-coordinador-raı́z gestiona el avance del reloj de la simulación,


t. Realiza su tarea enviando mensajes al algoritmo del nivel jerárquico inmediata-

137
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

DEVS-coordinador-raı́z
variables:
t // Reloj de la simulación
hijo // Algoritmo del nivel jerárquico inmediatamente inferior
t = t0
envı́a mensaje-i (i,t) a hijo
recibe tn de hijo
t = tn
loop
envı́a mensaje-* (*,t) a hijo
recibe tn de hijo
t = tn
until final de simulación
end DEVS-coordinador-raı́z

Código 2.3: Algoritmo DEVS-coordinador-raı́z

mente inferior, que es el simulador asociado al modelo DEVS completo. El algoritmo


DEVS-coordinador-raı́z es el Código 2.3. Las acciones que realiza son las siguientes:

1. Al comienzo de la simulación, envı́a un mensaje-i a su simulador hijo. Como


hemos explicado, este mensaje de inicialización se propaga a través de todo el
árbol jerárquico del simulador, inicializando todos los algoritmos. En respuesta,
el algoritmo hijo envı́a a DEVS-coordinador-raı́z el instante de tiempo para el
que está planificada la transición interna más inminente, tn.

2. Avanza el reloj de la simulación t hasta el valor tn que ha recibido de su hijo.

3. Envı́a a su hijo un mensaje-* que indica que debe ejecutarse la transición


interna más inminente. En respuesta el hijo envı́a a DEVS-coordinador-raı́z el
instante para el cual está planificada la transición interna más inminente, tn.

4. Avanza el reloj de la simulación t hasta el valor tn que ha recibido de su hijo.

5. Comprueba si se satisface la condición de finalización de la simulación. En caso


afirmativo, finaliza la simulación. En caso contrario, salta al Paso 3.

138
MODELADO MEDIANTE DEVS

2.5. LECTURAS RECOMENDADAS

Las explicaciones proporcionadas en este tema están en su mayorı́a extraı́das de


(Zeigler et al. 2000). Puede acudirse a esa referencia para ampliar información sobre
el formalismo DEVS clásico.
El formalismo DEVS paralelo está descrito en (Chow 1996) y se explica detalla-
damente en (Zeigler et al. 2000).
Puede consultarse en (Zeigler et al. 2000) un formalismo denominado DEVS
multicomponente, que permite describir modelos con acoplamiento no modular. Por
ejemplo, autómatas celulares. También se explica cómo ese tipo de modelos puede
convertirse en modelos DEVS. Para ello se aplica un procedimiento, denominado
modularización, que permite traducir el acoplamiento no modular en acoplamiento
modular.
En (Wainer 2009) se explican de forma muy didáctica numerosos ejemplos de apli-
cación del formalismo DEVS al modelado de sistemas de eventos discretos. También
se explica el formalismo Cell-DEVS para el modelado de autómatas celulares y la
simulación de este tipo de modelos empleando el simulador CD++.
Los modelos hı́bridos son aquellos que tienen una parte de tiempo continuo, y
otra parte de eventos discretos y/o tiempo discreto. Una forma de describir este
tipo de modelos es mediante la definición de un nuevo formalismo, que combine la
especificación de modelos de eventos discretos (DEVS clásico) y la especificación de
modelos mediante ecuaciones diferenciales. Este nuevo formalismo recibe el nombre
de DEV&DESS. En (Zeigler et al. 2000) puede encontrarse una descripción de este
formalismo y ejemplos de aplicación a la descripción de modelos hı́bridos.

139
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2.6. EJERCICIOS DE AUTOCOMPROBACIÓN

Ejercicio 2.1

Defina un contador DEVS SISO que cuente el número de entradas con valor
diferente de cero que ha recibido desde su inicialización y que devuelva este valor
cuando reciba una entrada de valor cero. El contador tiene un puerto de entrada
(inPort) al que llegan datos del tipo número real y un puerto de salida (outPort).

Ejercicio 2.2

Defina un modelo DEVS con un puerto de entrada (inPort) en el cual se reciben


valores reales y un puerto de salida (outPort). El modelo puede encontrarse en dos
fases: “pasivo” y “responde”.

– Si estando en la fase “pasivo” se produce un evento de entrada, entonces el


modelo pasa a la fase “responde”. Transcurrido un tiempo ∆, el modelo envı́a
a través del puerto de salida un mensaje de valor K · x, donde x es el valor
recibido en el puerto de entrada, K es un parámetro real y ∆ es un parámetro
real positivo. A continuación, el modelo pasa a la fase “pasivo”.

– El modelo ignora los eventos de entrada mientras se encuentra en la fase


“responde”.

Ejercicio 2.3

Consideremos un multiplexor 2:1 con dos entradas de datos (X0 , X1 ), una entrada
de selección (S) y una salida (Y ). Las señales de entrada y salida son binarias: pueden
tomar los valores {0, 1}.
Es posible realizar un modelo de tiempo continuo del circuito, donde las señales
de entrada y salida son constantes a tramos. La salida Y es igual al valor de la
entrada X0 mientras S vale 0 e igual a X1 mientras S vale 1. En la Figura 2.15a se
muestra un ejemplo del comportamiento de tiempo continuo del multiplexor.
También es posible realizar un modelo de eventos discretos del circuito, en el cual
las trayectorias de entrada y salida son secuencias de eventos. Los datos recibidos
en los puertos de entrada y salida pueden tomar los valores {0, 1}. La descripción

140
MODELADO MEDIANTE DEVS

X1 X1 1 0 1

t2 t5 t0 t2 t5

X0 X00 1 0 1

t3 t6 t8 t0 t3 t6 t8

S S 1 0 1 0 1

t1 t4 t7 t9 t0 t1 t4 t7 t9

Y Y 1 0 10 1 0 1

t1 t3 t4 t5 t7 t8 t0 t1 t3 t4 t5 t7 t8
a) b)
Figura 2.15: Multiplexor 2 a 1. Ejemplo del comportamiento entrada/salida: a) del modelo de
tiempo continuo; y b) del modelo eventos discretos.

de eventos discretos de una señal binaria consiste en una secuencia de eventos, que
se producen en el instante en que la señal cambia de valor. El valor del evento es
igual al nuevo valor que toma la señal. Es decir, el instante en que la señal cambia
de 0 a 1 está definido por un evento de valor 1. Análogamente, el instante en que la
señal cambia de 1 a 0 está definido por un evento de valor 0. En la Figura 2.15b se
muestra un ejemplo del comportamiento de eventos discretos del multiplexor. Los
eventos de entrada señalan los cambios en las señales de entrada. Sólo se producen
eventos de salida cuando cambia el valor de la señal de salida. Describa, empleando
el formalismo DEVS clásico, el modelo de eventos discretos del multiplexor 2:1.

Ejercicio 2.4

Escriba la especificación DEVS del modelo de un sistema que introduce un


retardo aleatorio a las entidades. El sistema tiene una entrada (inPort) y una salida
(outPort). Las entidades llegan de una en una al sistema. Cada entidad tiene asociado

141
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

un número natural, que la identifica de forma unı́voca. La llegada de una entidad al


sistema corresponde con un evento de entrada. El dato recibido es igual al número
identificativo de la entidad recibida.
Cuando llega una entidad, en el sistema se obtiene una observación aleatoria de la
distribución U(1,2) minutos, que es el tiempo durante el cual la entidad permanecerá
en el sistema. Transcurrido ese tiempo, la entidad abandona el sistema: se genera un
evento de salida, enviándose a través del puerto de salida el número identificativo
de la entidad.
Obsérvese que puesto que el tiempo que permanece cada entidad en el sistema es
aleatorio, puede suceder que haya varias entidades “esperando” en el sistema y que
las entidades no abandonen el sistema en el mismo orden en que han llegado.

Ejercicio 2.5

Describa el modelo de un sistema de bifurcación aleatoria de las entidades,


empleando el formalismo DEVS clásico. El sistema, que comúnmente se denomina
bloque de decisión, tiene una única entrada (inPort), a través de la cual las entidades
llegan de una en una. Cada entidad tiene asociado un número natural, que la
caracteriza de forma unı́voca. La llegada de una entidad corresponde con un evento
de entrada, cuyo valor coincide con el número identificativo de la entidad.
El sistema tiene dos salidas: outPort1 y outPort2. Un parámetro del sistema,
p ∈ (0, 1), define la probabilidad de que la entidad abandone el sistema por el
puerto outPort1. Si la entidad no abandona el sistema por outPort1, lo abandona
por outPort2.
Cuando llega una entidad, se genera una observación u de la distribución U(0, 1).
Si u < p, entonces la entidad abandona el sistema por outPort1. En caso contrario,
lo abandona por la outPort2. En cualquier caso, el tiempo de residencia de la entidad
es el sistema es cero.

inPort outPort1
p
outPort2

Figura 2.16: Interfaz del bloque de decisión.

142
MODELADO MEDIANTE DEVS

Ejercicio 2.6

Describa el modelo compuesto mostrado en la Figura 2.17 mediante el formalismo


DEVS clásico. Suponga que los componentes P0 , P1 y P2 son instancias del modelo
definido en el Ejercicio 2.4 y el componente D es una instancia del bloque de decisión
definido en el Ejercicio 2.5. La prioridad de los componentes en caso de coincidencia
en la planificación de la transición interna es {P2 , P1 , D, P0 }, donde P2 tiene la
mayor prioridad y P0 la menor.

inPort outPort1
outPort1
D inPort
P1 outPort
inPort
outPort2

inPort
P0 outPort

outPort2

inPort
P2 outPort

Figura 2.17: Diagrama del modelo compuesto.

Ejercicio 2.7

Empleando el formalismo DEVS clásico, describa el modelo de un biestable tipo D


con dos puertos de entrada (D, Ck) y dos puertos de salida (Q, Q̄). En la Figura 2.18
se muestra la interfaz del modelo.

D Q
Ck Biestable D Q

Figura 2.18: Interfaz del modelo del biestable D.

El funcionamiento del sistema es el siguiente. Los posibles valores que llegan al


puerto de entrada D son: {0,1}. Los eventos en el puerto de entrada Ck sólo pueden

143
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

tomar un valor: {1}. Cada vez que se produce un evento de entrada en el puerto Ck,
se producen dos eventos de salida:

– Un evento en el puerto Q, cuyo valor es igual al del último evento recibido en


el puerto de entrada D.

– Un evento en el puerto Q̄, cuyo valor es igual al complementario del valor del
último evento recibido en el puerto de entrada D.

Ası́ pues, el modelo debe almacenar el valor del último evento recibido en el
puerto de entrada D.

Ejercicio 2.8

Escriba la especificación DEVS clásico de un proceso atendido por un recurso,


frente al cual se forma una cola con disciplina FIFO en la cual las entidades esperan a
que llegue su turno. Cada identidad está representada mediante un número natural.
El sistema tiene dos puertos: el puerto de entrada inPort, a través del cual se produce
la llegada de las entidades al sistema, y el puerto de salida outPort, a través del cual
las entidades abandonan el sistema. El tiempo que el recurso emplea en atender
a cada entidad es una observación independiente de una distribución normal, con
media med minutos y desviación estándar stdDev minutos, donde med y stdDev
son dos parámetros del modelo.

Ejercicio 2.9

Modifique el modelo del Ejercicio 2.8, de modo que la cola FIFO tenga una
capacidad máxima Nmax . Mientras la cola tiene su tamaño máximo, las entidades
que llegan no se añaden al final de la cola, sino que abandonan inmediatamente el
sistema.
En determinadas aplicaciones es necesario distinguir entre las entidades que
abandonan el sistema nada más llegar debido a que éste ha alcanzado su capacidad
máxima y las que lo abandonan tras ser procesadas. Para ello, el modelo deberá
tener dos puertos de salida, tal como se muestra en la Figura 2.19. Se envı́an por
el puerto outPort las entidades que abandonan el sistema tras ser procesadas y por
el puerto outPortB las entidades que abandonan el sistema sin ser procesadas por
haberse alcanzado la capacidad máxima del sistema.

144
MODELADO MEDIANTE DEVS

outPort
inPort
outPortB

Figura 2.19: Interfaz del modelo del proceso con cola FIFO y balking.

Ejercicio 2.10

En la Sección 2.2.3 se describió el modelo de un acumulador SISO, en el cual la


lectura del dato almacenado se produce cuando se recibe el valor cero en el puerto
de entrada. En este caso, consideremos un modelo con dos entradas del sistema
acumulador. La interfaz de muestra en la Figura 2.20. El modelo acepta a través de
inDatoPort los valores a almacenar y a través de inReadPort las solicitudes de lectura
del dato almacenado. Las salidas se producen a través del puerto outDatoPort.

inDatoPort
outDatoPort
inReadPort

Figura 2.20: Interfaz del modelo acumulador con entrada de lectura.

El tiempo de respuesta del sistema, que es el tiempo que transcurre desde que
se recibe en inReadPort la petición de lectura hasta que se envı́a a través de
outDatoPort el dato almacenado, es un parámetro llamado ∆. Durante ese tiempo, se
ignoran los eventos recibidos en cualquiera de los dos puertos de entrada. Los datos
recibidos y enviados por los puertos inDatoPort y outDatoPort, respectivamente,
son de tipo real. Los datos recibidos en el puerto inReadPort tienen un único valor
posible: {“lee”}.

Ejercicio 2.11

En la Sección 2.2.3 se describió el modelo de un generador de eventos sin entradas


y con una salida, a través de la cual el modelo envı́a un valor real E cada cierto
intervalo de tiempo constante ∆. El valor (E) del dato enviado y el periodo del
generador (∆) son parámetros del modelo.
Consideremos ahora un modelo generador de eventos con dos puertos de entrada
(véase la Figura 2.21): inStartPort e inStopPort. El modelo inicia la generación de

145
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

eventos cuando recibe un evento en inStartPort y la suspende cuando recibe un


evento en inStopPort. Los posibles valores recibidos en cada uno de estos puertos
son {“start”} y {“stop”}, respectivamente.

inStartPort
outPort
inStopPort

Figura 2.21: Interfaz del modelo generador con entradas de inicio y pausa.

Cuando el modelo recibe “start” en el puerto inStartPort, envı́a el valor E a través


del puerto de salida y mientras no reciba “stop” en inStopPort continua enviando el
valor E cada ∆ unidades de tiempo.
Cuando el modelo recibe el valor “stop” en inStopPort, deja de enviar eventos
de salida. El modelo reanuda la generación de eventos cuando reciba “start” en
inStartPort.

Ejercicio 2.12

Escriba la especificación DEVS del modelo de una neurona que puede emitir un
único impulso. El modelo tiene un puerto de entrada (inPort) y un puerto de salida
(outPort). Los datos que recibe y envı́a el modelo tienen un único valor posible:
{“impulso”}. La neurona, que puede encontrarse en las fases {“receptiva”, “disparo”,
“refractaria”}, tiene el comportamiento descrito a continuación.

1. Inicialmente la neurona se encuentra en la fase “receptiva”.

2. Cuando se produce un evento de entrada, la neurona pasa a la fase “dispa-


ro”. Permanece en esa fase durante un cierto tiempo ∆. Dicho tiempo es un
parámetro del modelo denominado tiempo de disparo.

3. Trascurrido el tiempo de disparo, la neurona emite un impulso y pasa a la fase


“refractaria”, en el cual permanece indefinidamente. Mientras está en la fase
“refractaria”, la neurona ignora cualquier evento de entrada.

Explique cómo puede aplicarse este tipo de neuronas a la búsqueda del camino
más corto entre dos puntos de una red. Emplee el ejemplo mostrado en la Figura 2.22
para ilustrar su explicación. Se trata de calcular el camino más corto para ir desde el

146
MODELADO MEDIANTE DEVS

inPort outPort
Neurona
#1

inPort outPort
Neurona
outPort #2
Generador

inPort outPort
Neurona
#4

Neurona
inPort #3 outPort

Figura 2.22: Red con dos caminos entre el generador y la neurona #4.

generador hasta la neurona #4. Obsérvese que hay dos posibles caminos. El primer
camino pasa por las neuronas #1 y #2. El segundo camino pasa por la neurona #3.

147
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2.7. SOLUCIONES DE LOS EJERCICIOS

Solución al Ejercicio 2.1

En la Tabla 2.11 se encuentra la definición formal del modelo. Para ilustrar el


comportamiento del modelo, en la Figura 2.23 se muestra la evolución del estado y
la trayectoria de salida del contador, para una determinada trayectoria de entrada.

≠ ≠ ≠

( ∞ )
( ∞ )
( ∞ )
( ∞ )

Figura 2.23: Ejemplo de evolución del contador SISO de números reales.

Obsérvese que en este ejemplo el estado inicial del modelo es (fase, σ, cuenta) =
(“pasivo”, ∞, 0). En la variable de estado cuenta se almacena el número de mensajes
de valor diferente de cero recibidos en el puerto de entrada.
En los instantes t1 y t4 se producen sendos eventos de entrada en los que se
recibe el valor cero. Al ejecutar la función de transición externa, el sistema pasa al
estado (“activo”, 0, cuenta). Puesto que en ese estado σ = 0 (se trata, por tanto de
un estado transitorio), a continuación, en el mismo instante de tiempo, tiene lugar
una transición interna. Se genera un evento de salida de valor igual al valor que ese
instante tiene la variable de estado cuenta y se produce una transición de estado,
definida por la función de transición interna. El estado resultante de la transición
interna es (“pasivo”, ∞, cuenta), que es el mostrado en la Figura 2.23.

148
MODELADO MEDIANTE DEVS

Tabla 2.11: Modelo DEVS del contador SISO de números reales.

Nombre del modelo DEVS contador SISO real


Parámetros
X (inPort, R)
Y (outPort, N)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
cuenta ∈ N;
δint : S → S return (“pasivo”, ∞, cuenta);
δext : Q × X → S if ( dato(inPort) 6= 0 ) {
return (“pasivo”, ∞, cuenta + 1);
} else {
return (“activo”, 0, cuenta);
}
λ:S→Y return (outPort, cuenta);
ta : S → R+
0,∞ return σ;

Solución al Ejercicio 2.2

En la Tabla 2.12 se muestra una forma de definir el modelo.

Tabla 2.12: Modelo DEVS solución al Ejercicio 2.2.

Nombre del modelo DEVS ganancia SISO


Parámetros ∆ ∈ R+ ;
K ∈ R;
X (inPort, R)
Y (outPort, R)
Variables de estado fase ∈ {“pasivo”, “responde”};
σ ∈ R+ 0,∞ ;
almacena ∈ R;
δint : S → S return (“pasivo”, ∞, almacena);
δext : Q × X → S if ( fase == “pasivo” ) {
return (“responde”, ∆, dato(inPort));
} else {
return (fase, σ − e, almacena);
}
λ:S→Y return (outPort, K·almacena);
ta : S → R+
0,∞ return σ;

149
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 2.3

En el enunciado se indica que el circuito multiplexor tiene 3 entradas (X0 , X1 , S)


y una salida (Y ). Llamaremos a estos puertos PX0 , PX1 , PS y PY , e interpretaremos
los valores {0, 1} como ’0’ lógico y ’1’ lógico, o equivalentemente como false y true,
respectivamente.
El modelo de tiempo continuo del MUX es un sistema sin memoria: un circuito
combinacional cuya función lógica es Y = X0 · S̄ + X1 · S. Por el contrario, el modelo
de eventos discretos del MUX es un sistema con memoria. El modelo debe “recordar”
el valor de los últimos datos que se recibieron en los puertos, de modo que cuando
se produzca un nuevo evento de entrada pueda evaluarse la correspondiente salida.
Una forma de modelar este comportamiento es definir tres variables de estado, que
almacenen el valor de las entradas. Llamaremos sX0 , sX1 y sS a estas tres variables
de estado, cada una de las cuales puede tomar los valores {0, 1}.
Aunque esto no es necesario, definiremos otra variable de estado, sY , que alma-
cene el último valor enviado a través del puerto de salida. De esta forma, cuando se
produzca un evento de entrada, puede compararse el nuevo valor de la salida con el
valor de sY , generándose un evento de salida sólo en el caso de que ambos valores
sean diferentes.
Ası́ pues, el estado del sistema está compuesto por las variables de estado si-
guientes: (f ase, σ, sX0 , sX1 , sS , sY ). En la Tabla 2.13 se muestra la especificación del
modelo.
La función de transición externa asigna a las variables de estado sX0 , sX1 o sS ,
según corresponda, el dato recibido en el puerto y planifica una transición interna
para ese mismo instante. Se genera un evento de salida si el último dato enviado,
sY , es diferente de sX0 · s̄S + sX1 · sS . A continuación, la función de transición interna
asigna valor a sY y planifica la siguiente transición interna para el instante infinito.
Obsérvese que en las funciones de salida y transición interna se declara una
variable local llamada sY new . El ámbito de dicha variable es el cuerpo de la función
en la que se declara.

150
MODELADO MEDIANTE DEVS

Tabla 2.13: Modelo DEVS del MUX 2:1.

Nombre del modelo DEVS MUX 2a1


Parámetros
X (PX0 , {0, 1})
(PX1 , {0, 1})
(PS , {0, 1})
Y (PY , {0, 1})
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
sX0 ∈ {0, 1};
sX1 ∈ {0, 1};
sS ∈ {0, 1};
sY ∈ {0, 1};
δint : S → S sY new ∈ {0, 1};
sY new = sX0 · s¯S + sX1 · sS ;
return (“pasivo”, ∞, sX0 , sX1 , sS , sY new );
δext : Q × X → S if ( dato(PX0 ) 6= ∅ ) {
return (“activo”, 0, dato(PX0 ), sX1 , sS , sY );
} else if ( dato(PX1 ) 6= ∅ ) {
return (“activo”, 0, sX0 , dato(PX1 ), sS , sY );
} else {
return (“activo”, 0, sX0 , sX1 , dato(PS ), sY );
}
λ:S→Y sY new ∈ {0, 1};
sY new = sX0 · s¯S + sX1 · sS ;
if ( sY 6= sY new ) {
return (PY , sY new );
} else {
return ∅;
}
ta : S → R+
0,∞ return σ;

151
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 2.4

En la Tabla 2.14 se muestra la especificación del modelo.

Tabla 2.14: Modelo DEVS de un proceso que retrasa las entidades.

Nombre del modelo DEVS Proceso Delay


Parámetros
X (inPort, N)
Y (outPort, N)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
q es una cola de elementos (R+ 0,∞ , N);
+
tlast ∈ R0,∞ ;
δint : S → S q ∗ es una cola vacı́a de elementos (R+ 0,∞ , N);

q = q;
Eliminar el primer elemento de q ∗ ;
tactual ∈ R+ 0,∞ ;
tactual = tlast + e;
if ( q ∗ == ∅ ) {
return (“pasivo”, ∞, ∅, tactual );
} else {
(t2 , x2 ) ∈ (R+0,∞ , N);
(t2 , x2 ) = primer elemento de q ∗ ;
return (“activo”, t2 − tactual , q ∗ , tactual );
}
δext : Q × X → S τ ∈ [1, 2];
τ = una observación de la distribución U(1,2);
q ∗ es una cola vacı́a de elementos (R+ 0,∞ , N);

q = q;
tactual ∈ R+ 0,∞ ;
tactual = tlast + e;
Inserta (tactual + τ, dato(inPort)) en q ∗ ;
return (“activo”, mı́n(σ − e, τ ), q ∗ , tactual );
λ:S→Y (t1 , x1 ) ∈ (R+ 0,∞ , N);
(t1 , x1 ) = primer elemento de q;
return (outPort, x1 );
ta : S → R+
0,∞ return σ;

152
MODELADO MEDIANTE DEVS

El modelo tiene cuatro variables de estado:

– La variable de estado fase puede tomar dos valores: {“activo”, “pasivo”}. El


sistema se encuentra en la fase “activo” cuando hay alguna entidad esperando
dentro de él. Se encuentra en la fase “pasivo” cuando no hay ninguna entidad
esperando dentro de él.

– La variable de estado σ representa el tiempo durante el cual el sistema perma-


necerá en el estado actual en ausencia de eventos externos.

– Una de las variables de estado del sistema es una cola, q = {(t1 , x1 ), . . . , (tn , xn )},
donde se guarda ordenadamente la información de las entidades que esperan
en el sistema. La información de cada entidad es el instante de tiempo (ti )
en que dicha entidad abandonará el sistema y el número que la identifica
(xi ). Las entidades están dispuestas en la cola en el mismo orden en que
deberán abandonar el sistema: la primera entidad de la cola será la primera
en abandonar el sistema (t1 ≤ t2 ≤ · · · ≤ tn ).

– En la variable de estado tlast se almacena el instante de tiempo en el cual se


produjo la última transición. Esta variable se emplea en cada transición para
calcular el valor actual del reloj de la simulación.

Cuando llega al sistema una nueva entidad, la función de transición externa


inserta la nueva entidad en la correspondiente posición de la cola. Para ello, obtiene
una observación independiente τ de la distribución de probabilidad U(1,2), que
representa el tiempo durante el cual la entidad que acaba de llegar permanecerá
en el sistema. El instante de tiempo en el cual la entidad recién llegada abandonará
el sistema se obtiene sumando τ al valor que tenga el reloj de la simulación en
el instante en que se produce la llegada. Este valor es tlast + e. Es decir, la suma
del instante de tiempo en que se produjo el último evento (tlast ) más el tiempo
transcurrido (e) desde ese instante hasta el instante actual.
El cambio en el estado producido por la función de transición externa es el
siguiente:

– Si cuando se produce el evento externo fase vale “pasivo”, significa que no


hay ninguna entidad esperando en el sistema y, por tanto, q no tiene ningún
elemento: vale ∅. La variable de estado fase pasará a valer “activo”, ya que la
entidad recién llegada se quedará esperando en el sistema.
La variable de estado σ, que anteriormente a la llegada de la entidad valı́a
infinito, pasa a valer τ .

153
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Se añade a la cola q, que estaba vacı́a, el elemento (tlast + e + τ, dato(inPort)),


que representa la entidad recién llegada.

– Si cuando se produce el evento externo fase vale “activo”, significa que hay
n ≥ 1 entidades esperando en el sistema. Con la llegada de una nueva entidad,
fase sigue valiendo “activo”.
La cola se actualiza insertando el elemento (tlast + e + τ, dato(inPort)) en la
posición correspondiente, de modo que las parejas queden ordenadas por orden
creciente de instante en el cual deben abandonar el sistema.
El tiempo restante σ hasta el instante en que se produce la próxima transición
interna es el menor de dos valores: (σ − e) y τ . Es decir, se comprueba cuál
de las dos entidades siguientes abandona antes el sistema: la entidad que se
encontraba primera en la cola o la entidad que acaba de llegar.

En ambos casos, el nuevo valor de tlast es tlast + e. Es decir, el nuevo valor es


igual a su valor anterior más el tiempo transcurrido desde que se produjo el anterior
evento (e).
La transición interna se produce en el instante en que la primera entidad de la
cola debe abandonar el sistema. La función de salida genera un evento cuyo valor
coincide con el número que identifica a la primera entidad de la cola.
La función de transición interna describe el cambio en el estado del sistema debido
a que la entidad que está en la primera posición de la cola abandona el sistema. El
nuevo estado del sistema depende del número de entidades que queden en la cola
una vez extraı́da de ésta la primera entidad. Sea q = {(t1 , x1 ) · · · } la cola, donde
(t1 , x1 ) es el primer elemento, y sea q ∗ la cola q una vez extraı́do el primer elemento.
Entonces, pueden darse las dos situaciones siguientes:

– Si q sólo tenı́a una entidad, entonces q ∗ es el conjunto vacı́o. En este caso, el


nuevo estado será: f ase=“pasivo”, σ = ∞, q = ∅, tlast = tlast + e.

– Si q tenı́a más de una entidad, entonces q ∗ = {(t2 , x2 ), · · · }. El nuevo estado


del sistema será: f ase=“activo”, σ = t2 − (tlast + e), q = q ∗ , tlast = tlast + e.

154
MODELADO MEDIANTE DEVS

Solución al Ejercicio 2.5

La descripción formal del bloque de decisión de muestra en la Tabla 2.15. Obsér-


vese que la variable de estado x almacena el número identificativo de la entidad. La
observación de la distribución U(0,1) se genera en la función de salida y dependiendo
del valor de dicha observación se envı́a el valor almacenado en x a través de outPort1
o outPort2.

Tabla 2.15: Modelo DEVS de un bloque de decisión.

Nombre del modelo DEVS Bloque Decisión


Parámetros p ∈ (0, 1);
X (inPort, N)
Y (outPort1, N)
(outPort2, N)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
x ∈ N;
δint : S → S return (“pasivo”, ∞, x);
δext : Q × X → S return (“activo”, 0, dato(inPort) );
λ:S→Y u ∈ [0, 1];
u = observación de una distribución U(0,1);
if ( u < p ) {
return (outPort1, x);
} else {
return (outPort2, x);
}
ta : S → R+
0,∞ return σ;

155
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 2.6

En la Tabla 2.16 se muestra la especificación formal del modelo compuesto.


Obsérvese que el modelo compuesto tiene un parámetro, pD , cuyo valor se asigna al
parámetro p del componente del tipo bloque de decisión.

Tabla 2.16: Modelo DEVS planteado en el Ejercicio 2.6.

Nombre del modelo modelo Ejercicio 2.6


Parámetros pD ∈ (0, 1);
X (inPort, N)
Y (outPort1, N)
(outPort2, N)
D DEVS Proceso Delay P0 ;
DEVS Proceso Delay P1 ;
DEVS Proceso Delay P2 ;
DEVS Bloque Decisión D (p = pD );
EIC inPort − (P0 , inPort);
EOC (P1 , outPort) − outPort1;
(P2 , outPort) − outPort2;
IC (P0 , outPort) − (D, inPort);
(D, outPort1) − (P1 , inPort);
(D, outPort2) − (P2 , inPort);
select : {d | d ∈ D} → D if P2 ∈ IN M {
return P2 ;
} else if P1 ∈ IN M {
return P1 ;
} else if D ∈ IN M {
return D;
} else {
return P0 ;
}

156
MODELADO MEDIANTE DEVS

Solución al Ejercicio 2.7

Se muestra la especificación en la Tabla 2.17. El último dato recibido a través


del puerto de entrada D se almacena en la variable de estado d. Cuando se recibe un
evento en el puerto Ck la variable de estado fase pasa a valer “activo Q” y se dispara
una transición interna. En esa transición interna se envı́a el dato almacenado en d a
través del puerto Q, la variable de estado fase pasa a valer “activo notQ” y se dispara
una segunda transición interna, en la cual se envı́a el dato d¯ (complementario del
dato almacenado en d) a través del puerto Q̄. La variable fase es puesta entonces al
valor “pasivo” y se planifica una transición interna para el instante infinito. Obsérvese
que los estados con fase igual a “activo Q” y “activo notQ” son transitorios, mientras
que los estados con fase “pasivo” son estados pasivos.

Tabla 2.17: Modelo DEVS de un biestable D.

Nombre del modelo DEVS biestable D


Parámetros
X (D, {0, 1})
(Ck, {1})
Y (Q, {0, 1})
(Q̄, {0, 1})
Variables de estado fase ∈ {“pasivo”, “activo Q”, “activo notQ”};
σ ∈ R+ 0,∞ ;
d ∈ {0, 1};
δint : S → S if ( fase == “activo Q” ) {
return (“activo notQ”, 0, d);
} else {
return (“pasivo”, ∞, d);
}
δext : Q × X → S if ( dato(D) 6= ∅ ) {
return (“pasivo”, ∞, dato(D));
} else {
return (“activo Q”, 0, d);
}
λ:S→Y if ( fase == “activo Q” ) {
return (Q, d);
} else if ( fase == “activo notQ” ) {
¯
return (Q̄, d);
} else {
return ∅;
}
ta : S → R+
0,∞ return σ;

157
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 2.8

El modelo se muestra en la Tabla 2.18. La variable de estado q es una cola


de números naturales, cada uno de los cuales representa una entidad. La primera
entidad de la cola q es aquella que está siendo atendida por el recurso. Las restantes
entidades de q esperan en la cola FIFO. La fase “pasivo” indica que recurso está libre
(en esta situación q = ∅), mientras que la fase “activo” indica que está ocupado. La
transición interna se planifica para el instante en que la entidad que está siendo
atendida debe abandonar el sistema.

Tabla 2.18: Modelo DEVS de un proceso con cola FIFO.

Nombre del modelo DEVS proceso colaFIFO


Parámetros med ∈ R+ +
0,∞ ; stdDev ∈ R0,∞ ;
X (inPort, N)
Y (outPort, N)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
q es una cola de elementos N;
δint : S → S q ∗ es una cola de elementos N;
q ∗ = q;
Elimina el primer elemento de q ∗ ;
if ( q ∗ == ∅ ) {
return (“pasivo”, ∞, q ∗ );
} else {
∆ ∈ R+ 0,∞ ;
∆ = observación distribución N(med,stdDev);
return (“activo”, ∆, q ∗ );
}
δext : Q × X → S q ∗ es una cola de elementos N;
q ∗ = q;
Añade dato(inPort) al final de la cola q ∗ ;
if ( fase == “pasivo” ) {
∆ ∈ R+ 0,∞ ;
∆ = observación distribución N(med,stdDev);
return (“activo”, ∆, q ∗ );
} else {
return (“activo”, σ − e, q ∗ );
}
λ:S→Y return (outPort, primer elemento de q);
ta : S → R+
0,∞ return σ;

158
MODELADO MEDIANTE DEVS

Solución al Ejercicio 2.9

El modelo se muestra en la Tabla 2.19. En la variable de estado q se almacena


la entidad que está siendo procesada (es la que se encuentra en la primera posición
de q) y las que se encuentran en esperando en la cola FIFO. Por ello, el sistema ha
alcanzado su capacidad máxima cuando el tamaño de q es Nmax + 1.
Cuando llega una entidad y el tamaño de q es Nmax + 1, entonces el modelo pasa
a la fase “activoB”, se almacena en la variable de estado xB el número identificador
de la entidad recibida y en la variable de estado τB se almacena el tiempo de proceso
restante de la entidad que en ese momento se encuentra en proceso. Se planifica para
ese mismo instante una transición interna, en la cual se envı́a a través de outPortB
el valor almacenado en xB y la fase del modelo vuelve a ser “activo”. Se planifica la
siguiente transición interna: el tiempo restante hasta la siguiente transición interna
es τB .
Obsérvese que los estados cuya fase es “activoB”son transitorios, ya que su tiempo
vida es cero (σ = 0). Obsérvese también que las transiciones en la fase del sistema
pueden ser las siguientes:

– “pasivo” → “activo”. El sistema está en la fase “pasivo” mientras está vacı́o.


Cuando se produce la llegada de una entidad, pasa a la fase “activo”. La entidad
recibida comienza inmediatamente a ser procesada, no se pone en la cola FIFO.
Por ello, de la fase “pasivo” puede pasarse a la fase “activo”, pero no a la fase
“activoB”.

– “activo” → “pasivo”. Cuando termina de procesarse una entidad y no hay


ninguna otra entidad esperando en la cola FIFO, el sistema pasa a estar vacı́o.
El modelo cambia de la fase “activo” a “pasivo”.

– “activo” → “activoB”. Si se produce la llegada de una nueva entidad cuando ya


hay una entidad en proceso y Nmax en la cola FIFO, entonces el modelo pasa
de la fase “activo” a “activoB”.

– “activoB” → “activo”. La fase “activoB” es transitoria. Es decir, el modelo entra


y sale de esa fase sin que se produzca avance del reloj de la simulación. Una vez
enviado por el puerto outPortB el número identificador de la entidad recibida,
el modelo pasa de la fase “activoB” a “activo”.

159
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Tabla 2.19: Modelo DEVS de un proceso con una cola FIFO con balking.

Nombre del modelo DEVS proceso colaFIFO balking


Parámetros med ∈ R+ +
0,∞ ; stdDev ∈ R0,∞ ; Nmax ∈ N;
X (inPort, N)
Y (outPort, N)
Y (outPortB, N)
Variables de estado fase ∈ {“pasivo”, “activo”, “activoB”};
σ ∈ R+ 0,∞ ;
q es una cola de elementos N;
xB ∈ N;
τB ∈ R + 0,∞ ;
δint : S → S if ( fase == “activoB” ) {
return (“activo”, τB , q, ∞, ∞);
}
q ∗ es una cola de elementos N;
q ∗ = q;
Elimina el primer elemento de q ∗ ;
if ( q ∗ == ∅ ) {
return (“pasivo”, ∞, q ∗ );
} else {
∆ ∈ R+ 0,∞ ;
∆ = observación distribución N(med,stdDev);
return (“activo”, ∆, q ∗ );
}
δext : Q × X → S if ( tamaño de q == Nmax + 1 ) {
return (“activoB”, 0, q, dato(inPort), σ − e);
}
q ∗ es una cola de elementos N;
q ∗ = q;
Añade dato(inPort) al final de la cola q ∗ ;
if ( fase == “pasivo” ) {
∆ ∈ R+ 0,∞ ;
∆ = observación distribución N(med,stdDev);
return (“activo”, ∆, q ∗ , xB , τB );
} else {
return (“activo”, σ − e, q ∗ , xB , τB );
}
λ:S→Y if ( fase 6= “activoB” ) {
return (outPort, primer elemento de q);
} else }
return (outPortB, xB );
}
ta : S → R+
0,∞ return σ;

160
MODELADO MEDIANTE DEVS

Solución al Ejercicio 2.10

La especificación del modelo se muestra en la Tabla 2.20. El sistema puede estar


en dos fases: “pasivo” y “responde”. Se encuentra en la fase “responde” cuando está
respondiendo a una petición de lectura del dato almacenado. El funcionamiento del
modelo es el siguiente.

– Si mientras el sistema está en la fase “pasivo” se recibe un dato en el puer-


to inDatoPort, entonces el dato recibido se guarda en la variable de estado
almacena. El modelo permanece en la fase “pasivo”.

– Si mientras el sistema está en la fase “pasivo” se recibe un dato en el puerto


inReadPort, entonces el modelo pasa a la fase “responde”. Transcurridas ∆
unidades de tiempo se produce una transición interna, en la cual se envı́a el
dato almacenado a través del puerto de salida y el modelo vuelve a la fase
“pasivo”.

– El modelo ignora los datos recibidos en los puertos de entrada mientras está
en la fase “responde”.

Tabla 2.20: Modelo DEVS acumulador con entrada de lectura.

Nombre del modelo DEVS acumulador MISO


Parámetros ∆ ∈ R+ ;
X (inDatoPort, R)
(inReadPort, {“lee”})
Y (outDatoPort, R)
Variables de estado fase ∈ {“pasivo”, “responde”};
σ ∈ R+ 0,∞ ;
almacena ∈ R;
δint : S → S return (“pasivo”, ∞, almacena);
δext : Q × X → S if ( fase == “pasivo” and dato(inDatoPort) 6= ∅ ) {
return (“pasivo”, ∞, dato(inDatoPort));
} else if ( fase == “pasivo” and dato(inReadPort) 6= ∅ )
return (“responde”, ∆, almacena);
} else {
return (fase, σ − e, almacena);
}
λ:S→Y return (outDatoPort, almacena);
ta : S → R+
0,∞ return σ;

161
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 2.11

En la Tabla 2.21 se muestra la especificación del modelo. El comportamiento del


modelo es el siguiente.

– Cuando se recibe un dato en el puerto de entrada inStartPort, el sistema pasa


a la fase “activo” y en ese mismo instante envı́a un dato con valor E. Mientras
permanezca en dicha fase, enviará el valor E a través del puerto de salida cada
∆ unidades de tiempo.

– Cuando el modelo recibe un dato en el puerto inStopPort, pasa a la fase


“pasivo” y se planifica la siguiente transición interna para el instante infinito.

Tabla 2.21: Modelo DEVS de un generador de eventos con entradas de inicio y pausa.

Nombre del modelo DEVS generador startPause


Parámetros ∆ ∈ R+ ;
E ∈ R;
X (inStartPort, {“start”})
(inStopPort, {“stop”})
Y (outPort, R)
Variables de estado fase ∈ {“pasivo”, “activo”};
σ ∈ R+ 0,∞ ;
δint : S → S return (“activo”, ∆);
δext : Q × X → S if ( dato(inStartPort) 6= ∅ ) {
return (“activo”, 0);
} else {
return (“pasivo”, ∞);
}
λ:S→Y return (outPort, E);
ta : S → R+
0,∞ return σ;

162
MODELADO MEDIANTE DEVS

Solución al Ejercicio 2.12

En la Tabla 2.22 se muestra la especificación del modelo de la neurona con un


único disparo.

Tabla 2.22: Modelo DEVS de una neurona con un único disparo.

Nombre del modelo DEVS neurona unDisparo


Parámetros ∆ ∈ R+ ;
X (inPort, {“impulso”})
Y (outPort, {“impulso”})
Variables de estado fase ∈ {“receptiva”, “disparo”, “refractaria”};
σ ∈ R+ 0,∞ ;
δint : S → S return (“refractaria”, ∞);
δext : Q × X → S if ( fase == “receptiva” ) {
return (“disparo”, ∆);
} else if ( fase == “disparo” ) {
return (“disparo”, σ − e);
} else {
return (“refractaria”, ∞);
}
λ:S→Y return (outPort, “impulso”);
ta : S → R+
0,∞ return σ;

Los modelos de redes de neuronas pueden emplearse para encontrar el camino


más corto a través de una red. Para ello, hay que transformar las distancias entre
nodos en valores equivalente del tiempo. Este valor se asigna como tiempo de disparo
de la neurona que representa el nodo de la red.
Por ejemplo, en la red mostrada en la Figura 2.22, el impulso emitido por el
generador recorre dos caminos concurrentemente hasta que llega a la neurona #4.
Dependiendo de la suma de retardos a lo largo de cada camino, el impulso proveniente
de cada camino alcanzará en un instante u otro la neurona final. El instante en el
cual la neurona final emite su impulso de salida permite calcular la longitud del
camino más corto a través de la red.
Con el fin de poder reconstruir el camino, puede modificarse el modelo de la
neurona de manera que desde cada neurona receptora sea posible identificar qué
neurona emisora ha disparado el impulso que ha llegado en primer lugar a dicha neu-
rona receptora. Puede encontrarse información adicional en (Zeigler & Sarjoughian
2003).

163
TEMA 3

MODELADO CON ARENA

3.1. Introducción
3.2. Comenzando con Arena
3.3. Modelado de los recursos
3.4. Encapsulado y prueba de circuitos
3.5. Modelado detallado
3.6. Lecturas recomendadas
3.7. Ejercicios de autocomprobación
3.8. Soluciones de los ejercicios
MODELADO CON ARENA

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Discutir los fundamentos del modelado orientado a los procesos.

– Discutir la funcionalidad de los módulos del panel Basic Process, ası́ como
algunas caracterı́sticas de módulos del panel Advanced Process.

– Describir modelos sencillos usando Arena, incluyendo la descripción de la


llegada de entidades, procesos con diferentes tipos de acciones (Seize, Delay y
Release), recursos con planificación de su capacidad y sus averı́as, y bifurca-
ciones en el flujo de las entidades.

– Discutir qué son los atributos, qué son las variables, la diferencia entre ambas
y cómo se definen en Arena.

– Discutir qué es el rechazo (balking) y cómo se describe en Arena.

– Discutir posibles utilidades de los conjuntos y cómo se describen en Arena.

– Discutir algunas capacidades de Arena para el modelado modular y jerárquico.

– Discutir algunas de las capacidades de Arena para la estimación de costes.

– Definir expresiones empleando el constructor de expresiones y el módulo Ex-


pressions.

– Describir en Arena el experimento a realizar sobre el modelo. En particular,


especificar los parámetros del modelo y los parámetros de las réplicas.

– Discutir de qué forma muestra Arena los resultados de la simulación y realizar


interpretaciones básicas sobre los mismos.

– Discutir el significado y cómo Arena calcula la utilización, la utilización ins-


tantánea y la utilización planificada de un recurso.

167
MODELADO CON ARENA

3.1. INTRODUCCIÓN

En el tema anterior se describió DEVS, una especificación formal de los modelos


basada en la planificación de eventos. En este tema se muestra otra metodologı́a
diferente para el modelado de sistemas de eventos discretos: la orientación a los
procesos. Como ayuda en la exposición de los conceptos y en la realización de
las actividades prácticas, se empleará el entorno de simulación comercial Arena R

Simulation Software.
Arena es un software comercial. Sin embargo, existe una versión de estudiante
gratuita, con capacidades limitadas, que puede emplearse para desarrollar y simular
los modelos descritos en este tema y en los sucesivos.
En este texto sólo se describe una parte de las capacidades de Arena para la
descripción del modelo y el análisis de los resultados de la simulación. Tampoco se
describen las facilidades de Arena para la visualización gráfica y la animación del
comportamiento del modelo durante la simulación. El lector interesado en profundi-
zar en el manejo de Arena puede hacer uso de la herramienta de ayuda de Arena y
consultar la documentación que acompaña a Arena. En particular, la guı́a de usuario
de Arena Standard Edition y la guı́a de las variables. Asimismo, existen libros muy
didácticos dedicados al modelado y simulación con Arena (véanse las referencias
ofrecidas al final del tema).

3.2. COMENZANDO CON ARENA

La interfaz gráfica de usuario (GUI) de Arena se muestra en la Figura 3.1. En


la parte izquierda se encuentran los paneles con los módulos que se emplean para
la descripción del modelo. El modelo se define en las dos ventanas de la derecha,
que inicialmente están vacı́as. El diagrama de flujo de las entidades se compone
en la ventana superior derecha pinchando y arrastrando módulos desde los paneles.
Cuando se selecciona (haciendo clic sobre él) un módulo de un panel o del diagrama
del modelo, Arena muestra en la ventana inferior derecha de la GUI información
sobre ese tipo de módulo.
Arena proporciona varios paneles de módulos. En la Figura 3.1 puede obser-
varse que el panel Basic Process está desplegado y los paneles Advanced Transfer y
Advanced Process se encuentran plegados. Para desplegar un panel hay que pinchar
sobre él.

169
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.1: Interfaz gráfica de usuario de Arena versión 7.

Aparte de éstos, Arena proporciona otros paneles. Si inicialmente estos paneles


no están cargados en la GUI de Arena o si se desea cargar otros, puede hacerse
seleccionando: File / Template Panel / Attach... Con ello se abre una ventana de
diálogo, en la que debe seleccionarse el fichero correspondiente al panel que se desea
añadir. Por ejemplo, para añadir el panel Basic Process hay que seleccionar el fichero
BasicProcess.tpo, que se encuentra en el directorio Template, situado dentro del
directorio de Arena.
Si se desea que un determinado panel se añada por defecto al arrancar Arena,
puede hacerse seleccionando: Tools / Options... En la ventana de diálogo que se
abre, debe seleccionarse la lengüeta Settings. En la parte inferior de la ventana, en
la caja de texto Auto Attach Panels, debe escribirse el nombre de los ficheros .tpo
que se desea cargar por defecto.

170
MODELADO CON ARENA

Tabla 3.1: Módulos de flujo del panel Basic Process.

Nombre del módulo Funcionalidad


Create Punto de entrada de las entidades al sistema.
Process Proceso.
Decide Bifurcación en el flujo de las entidades.
Batch Agrupación de entidades.
Separate Duplicación o separación de entidades.
Assign Asignación de valor a atributos o variables.
Record Cálculo de estadı́sticos.
Dispose Punto de salida de las entidades del sistema.

Por ejemplo, para que Arena cargue los tres paneles mostrados en la figura debe
escribirse:
AdvancedTransfer.tpo
AdvancedProcess.tpo
BasicProcess.tpo
La descripción del modelo se realiza por medio de módulos, que como se ha
indicado anteriormente se encuentran organizados en paneles. Hay básicamente dos
tipos de módulo: los módulos de flujo y los módulos de datos. A continuación se
describe la finalidad de estos dos tipos de módulo.
En la metodologı́a de modelado de Arena, se describe el funcionamiento del siste-
ma adoptando la perspectiva de las entidades que circulan por él. La circulación de
las entidades por el sistema se describe mediante un diagrama de módulos de flujo,
que se construye pinchando los correspondientes módulos de flujo y arrastrándolos
desde su panel hasta la ventana de edición del modelo. Con ello se crean instancias
del tipo de módulo seleccionado. Haciendo doble clic sobre una de estas instancias se
accede a sus parámetros, los cuales permiten particularizar su funcionalidad. En la
Figura 3.1 se muestran los módulos de flujo del panel Basic Process. Su funcionalidad
se resume en la Tabla 3.1.
Los módulos de datos presentan la información acerca de los diferentes aspectos
del modelo de forma estructurada, de modo que su consulta y modificación se facilita
enormemente. Por ejemplo, los módulos de datos Entity (entidad), Queue (cola) y
Resource (recurso) contienen las caracterı́sticas de todos los tipos de entidad, las
colas y los recursos definidos en el modelo. Asimismo, existen módulos de datos que
complementan la descripción del modelo proporcionada por los módulos de flujo. Por
ejemplo, el módulo de datos Schedule (planificación) permite describir la variación
temporal de la capacidad de un recurso.

171
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.2: Primer paso en la construcción del diagrama de módulos.

Los módulos de datos no deben ser arrastrados a la ventana del modelo. En


cada modelo sólo existe un módulo de datos de cada clase y está ubicado en su
correspondiente panel. Para editar un módulo de datos basta con seleccionarlo,
haciendo clic sobre él. Al hacerlo, aparecerá la información en un formato similar al
de una hoja de cálculo, pudiendo ser modificada, ampliada, etc.
Se muestra a continuación cómo construir y simular con Arena el modelo de
la oficina de atención al público descrito en la Sección 1.4.3. En la Figura 1.12 se
mostró el diagrama de módulos del modelo, ası́ como los parámetros de los módulos
que describen el proceso de llegada de clientes y el proceso de atención al cliente. Los
módulos necesarios para la construcción de este modelo se encuentran en el panel
Basic Process.
El modelo está compuesto por una instancia del módulo Create, una del módulo
Process y una del módulo Dispose. Se muestra en la Figura 3.2. Las instancias se

172
MODELADO CON ARENA

añaden al modelo arrastrando el icono del módulo desde el panel hasta la ventana
del modelo. Para facilitar la alineación de los módulos en la ventana del modelo,
antes de arrastrar los módulos, hay que activar View / Snap.
Una conexión entre módulos debe conectar un puerto de salida (conector
triangular) de un módulo con un puerto de entrada (conector cuadrado) de otro
módulo. Para facilitar la realización de las conexiones, puede indicarse a Arena
que cada vez que se instancie un módulo éste se conecte al módulo que se encuentre
seleccionado en la ventana de edición del modelo. Activando Object / Auto Connect,
el nuevo módulo se conecta automáticamente con el módulo que en ese momento
se encuentre seleccionado en la ventana del modelo. Si está activo Object / Smart
Connect, las conexiones se representan mediante lı́neas rectas horizontales y vertica-
les. La conexión entre los módulos puede hacerse también manualmente, mediante
Object / Connect. Haciendo doble clic sobre el área de edición del modelo se sale del
modo conexión.
Haciendo doble clic sobre la instancia del módulo Create, se abre una ventana
en la cual puede asignarse valor a sus parámetros. Dado que este módulo describe
un proceso de llegada de entidades al sistema, sus parámetros especifican el tipo
de entidad recibida, el tiempo que transcurre entre llegadas sucesivas y el número
de entidades recibidas en cada llegada. El tiempo entre llegadas y las entidades por
llegada pueden ser expresiones deterministas o aleatorias.
Arena dispone de un editor de expresiones. Para abrirlo hay que hacer clic
sobre la casilla donde se desea escribir la expresión (por ejemplo, sobre la casilla Value
o la casilla Entities per Arrival) y pulsar el botón derecho del ratón. Al hacerlo se
abre un menú, en el cual debe seleccionarse Build Expression...
Los parámetros del proceso de llegada (módulo Create) se muestran en la Fi-
gura 3.3. Cuando escribimos en la casilla Entity Type la palabra cliente, Arena
automáticamente declara un tipo de entidad llamado cliente. Si se hace clic sobre el
módulo de datos Entity, Arena muestra las entidades declaradas hasta el momento,
ası́ como el valor de sus propiedades: coste, iconos asociados a esta entidad en la
animación de la simulación, etc.
La asignación de los nombres a los módulos, los tipos de entidad, los recursos,
atributos, variables, planificaciones, etc. puede realizarse libremente. Sin embargo,
el nombre de cada objeto debe ser único: dos objetos no pueden tener el mismo
nombre, aun cuando sean de diferente tipo. También debe tenerse en cuenta que
Arena no distingue entre mayúsculas y minúsculas, y que no puede emplearse la
letra ñ, acentos, ni tampoco los signos de puntuación , (coma) y ; (punto y coma).

173
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.3: Definición del proceso de llegada de los clientes.

Figura 3.4: Tipos de entidad en el módulo de datos Entity.

El proceso de atención al cliente se describe en la instancia del módulo Process.


Haciendo doble clic sobre la instancia del módulo se abre una ventana, en la cual
puede especificarse el tipo de acción que realiza la entidad, el tipo y número de
recursos capturados por la entidad (si la acción lo requiere), y el tiempo durante el
cual la entidad se retrasa (si procede). Éste es el tiempo necesario para completar
la acción. En la Figura 3.5 se muestran los parámetros del módulo.
Obsérvese que el funcionamiento del sistema es descrito desde el punto de vista
de las entidades. Por ello, son éstas quienes capturan y liberan los recursos, y quienes
se retrasan el tiempo necesario para completar la acción. La acción puede constar
de uno o varios pasos, tales como Seize (captura recurso), Delay (se retrasa durante
un tiempo) y Release (libera el recurso). En este modelo la acción realizada por
la entidad es Seize - Delay - Release. En general, existen cuatro posibles tipos de
acción:

– Delay. La entidad permanece durante cierto tiempo esperando. Esta acción


no requiere de recurso. Por ello, las entidades comienzan a realizarla inme-
diatamente (no se forma cola), pudiendo ser realizada simultáneamente por
cualquier número de entidades. La entidad abandona el proceso en el instante
en que finaliza su tiempo de retraso, pudiendo suceder que varias entidades
abandonen el proceso simultáneamente.

174
MODELADO CON ARENA

Figura 3.5: Definición del proceso de atención al cliente.

– Seize - Delay. Dado que en esta acción hay un paso Seize, la entidad espera en
la cola hasta que el recurso quede disponible. Cuando el recurso está disponible,
la entidad lo captura (Seize) y entonces espera (Delay) un cierto tiempo,
finalizado el cual la entidad abandona el proceso, pero sin liberar el recurso.

– Seize - Delay - Release. La entidad espera en una cola hasta que el recurso
quede disponible. Entonces lo captura (Seize), espera (Delay) un cierto tiempo,
libera (Release) el recurso y abandona el proceso.

– Delay - Release. En este caso la entidad ha capturado previamente un recurso


que no ha liberado, con lo cual entra en el proceso con un recurso capturado.
La entidad espera (Delay) cierto tiempo y libera (Release) el recurso, saliendo
del proceso.

El tipo de recurso capturado por la entidad se declara pulsando el botón Add...


en la ventana de diálogo del módulo. El nombre que se asigna al recurso (Resource
Name) es empleado. La capacidad del recurso que es capturada por la entidad es
1 (Quantity). Es decir, el cliente es atendido por un empleado. En general, en la
casilla Quantity debe especificarse la capacidad del recurso que captura y/o libera
la entidad de la acción.

175
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

La duración del paso Delay de la acción puede especificarse mediante una expre-
sión, que puede escribirse empleando el constructor de expresiones de Arena. Para
ello, una vez seleccionado Expression en la casilla Delay Type, debe hacerse clic sobre
la casilla Expression, pulsar el botón derecho del ratón y en el menú seleccionar
Build Expression... En este modelo la duración del paso Delay de la acción está
uniformenente distribuido en el intervalo [5, 10] minutos.
Asimismo, debe indicarse bajo qué concepto (Allocation) se desea que Arena
contabilice el tiempo invertido en el paso Delay. Existen cinco posibilidades: Value
Added, Non-Value Added, Transfer, Wait y Other. Al computar el tiempo transcurri-
do por las entidades en el paso Delay de la acción, Arena contabiliza por separado los
tiempos dedicados a cada uno de los cinco conceptos anteriores. Esto tiene especial
relevancia cuando se desean realizar estimaciones del coste, ya que Arena computa
separadamente el coste del tiempo invertido en cada concepto.
Arena asocia automáticamente una cola al proceso, en la cual esperan las entida-
des. Haciendo clic sobre el módulo de datos Queue, se muestran las colas definidas
en el modelo (véase la Figura 3.6). Puede ahı́ modificarse la disciplina de cada cola,
que por defecto es FIFO.

Figura 3.6: Información sobre las colas en el módulo de datos Queue.

Asimismo, al escribir el nombre del recurso en la casilla Resource Name (véase la


Figura 3.5), Arena declara automáticamente ese tipo de recurso. La información so-
bre todos los recursos del modelo está recogida en el módulo de datos Resource. Para
mostrarla hay que hacer clic sobre dicho módulo. En este modelo es la información
mostrada en la Figura 3.7.

Figura 3.7: Información sobre los recursos en el módulo de datos Resource.

176
MODELADO CON ARENA

Figura 3.8: Diagrama de módulos del modelo de la oficina (fichero oficina.doe).

a) b)

Figura 3.9: Definición del experimento. Parámetros: a) del proyecto; y b) de las réplicas de la
simulación.

El número de empleados que atiende la oficina es constante durante toda la


simulación e igual a uno. Por ello, el tipo (Type) es Fixed Capacity y la capacidad
(Capacity) del recurso vale uno. Si en lugar de un empleado hubiera cinco empleados,
frente a los cuales se forma una única cola común a todos ellos, entonces la capacidad
(Capacity) del recurso valdrı́a 5. Como veremos en la Sección 3.3, Arena permite
describir la variación en la capacidad del recurso a lo largo de la simulación. Por
ejemplo, cada empleado podrı́a tener su propio horario de trabajo diferente del de
los demás empleados.
Haciendo doble clic sobre la instancia del módulo Dispose se abre una ventana de
diálogo, en la que puede cambiarse el nombre del módulo. El aspecto del diagrama,
una vez configurados los tres módulos, es el mostrado en la Figura 3.8. La lı́nea
horizontal sobre el bloque de tipo Process llamado Oficina indica que el proceso
tiene asociado una cola.
El modelo puede salvarse mediante File / Save. Se almacena en un fichero
con extensión .doe. Una vez definido el modelo, debe definirse el experimento.

177
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Seleccionando Run / Setup se abre una ventana en la cual pueden configurarse


las siguientes propiedades:

– Parámetros del proyecto (lengüeta Project Parameters) tales como el tı́tulo


del proyecto, nombre del autor del modelo y qué tipo de estadı́sticos debe Arena
incluir en el informe que automáticamente genera al terminar la simulación.
Para este estudio es conveniente seleccionar Entities, Resources, Queues y
Processes (véase la Figura 3.9a).

– Parámetros de las réplicas de la simulación (lengüeta Replication Parame-


ters), que definen cómo Arena debe realizar la simulación. Como se indica en la
Figura 3.9b, en este estudio se realizarán 100 réplicas (Number of Replications)
independientes del funcionamiento durante 8 horas del sistema (Replication
Length).
En cada réplica se inicializa el valor de los estadı́sticos y también el estado
del sistema, lo cual implica en este caso que al comenzar cada réplica no hay
clientes en la oficina. Si se hubiera seleccionado no inicializar el sistema entre
réplicas, el estado inicial de cada réplica corresponderı́a con el estado final de
la anterior.
En la casilla Base Time Units se selecciona la unidad en que debe medirse el
tiempo, que en este estudio es minutos.
En la casilla Warm-up Period se indica el tiempo que se supone necesita el
sistema para alcanzar el estado estacionario. Como veremos debe especificarse
este valor cuando se desea analizar el comportamiento del sistema en el estado
estacionario.

Para iniciar la ejecución de la simulación hay que pulsar Run / Fast-Forward,


o bien Run / Go si se desea además visualizar durante la simulación la animación
de las entidades en su movimiento por el sistema. Una vez concluida la simulación,
para salir del modo simulación y poder editar nuevamente el modelo hay que pulsar
Run / End.
Los resultados de la ejecución de la simulación son accesibles desde el panel
Reports. Arena extrae los datos mostrados en esos informes de un fichero Access
(con extensión .mdb) que es creado durante la ejecución de la simulación. Estos
mismos resultados están recogidos de forma más compacta en el informe resumen de
SIMAN, que es un fichero de texto con extensión .out. Estos dos ficheros de salida
de la simulación, .mdb y .out, son generados en el mismo directorio donde se guarda
el modelo que ha sido simulado (fichero con extensión .doe).

178
MODELADO CON ARENA

Arena calcula por defecto determinados estadı́sticos, tales como los tiempos que
las entidades pasan esperando en cada cola, los tiempos en cada proceso, el número
de entidades que esperan en cada cola, la utilización y el uso de cada recurso, el
tiempo acumulado, el número total de entidades que llegan al sistema, el número
total de entidades que lo abandonan, etc. Como se ha indicado anteriormente, es
posible habilitar y deshabilitar el cálculo de estos estadı́sticos en la lengüeta Project
Parameters de la ventana Run Setup (véase la Figura 3.9a).
El tiempo de ciclo de cada tipo de entidad se desglosa en la suma de las cinco
variables siguientes: VATime, NVATime, WaitTime, TranTime y OtherTime. Estas
variables almacenan el tiempo total acumulado en la fase Delay designado como Va-
lue Added, Non-Value Added, Wait, Transfer y Other, respectivamente. Asimismo,
se define la variable tiempo de ciclo, TotalTime, que es la suma de los cinco tiempos
anteriores. Al concepto Wait se asigna también el tiempo que pasan las entidades en
las colas de los recursos. El significado de las variables predefinidas de Arena puede
consultarse en el documento Variables Guide, al que puede accederse seleccionando
Help / Product Manuals.
Para cada estadı́stico, Arena calcula el promedio (Average), el valor máximo
(Maximum Value) y el mı́nimo (Minimum Value). Además, al final de cada réplica,
Arena trata de calcular el intervalo del 95 % de confianza del valor esperado en el
estacionario del estadı́stico, usando el método de las medias por lotes. La columna
Half Width contiene la mitad de la longitud del intervalo. Es decir, el intervalo es:
[Average − Half Width, Average + Half Width].
Para estimar el intervalo de confianza, Arena en primer lugar comprueba que
el número de datos recogidos es suficiente. Si el número de datos es demasiado
pequeño, en el informe escribe Insufficient. Si hay suficientes datos, Arena aplica el
test sobre la correlación de los lotes de datos, ya que para poder aplicar el método
los lotes no deben estar correlacionados. Si Arena encuentra que los datos están
correlacionados, escribe en el informe Correlated. Si el test indica que no están
correlacionados, entonces calcula y escribe en el informe el valor del semi intervalo.
Por otra parte, el usuario puede insertar en el diagrama de flujo de las entidades
módulos Record, en los cuales solicita a Arena que calcule otras magnitudes durante
la simulación. Se volverá sobre esto más adelante.

179
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

3.3. MODELADO DE LOS RECURSOS

En un cierto instante de tiempo, un recurso puede encontrarse en una de las


cuatro fases siguientes:

– Libre (Idle). El recurso se encuentra listo para ser capturado por una entidad.
Sin embargo, ninguna de ellas lo ha hecho.

– Ocupado (Busy). El recurso se encuentra actualmente capturado por una


entidad.

– Inactivo (Inactive). La capacidad del recurso es cero.

– Fuera de servicio (Failed). Debido a una averı́a, un mantenimiento, etc. el


recurso no se encuentra disponible para ser capturado por ninguna entidad.

Arena contabiliza el tiempo que cada recurso pasa en cada una de estas cuatro
fases e incluye por defecto este dato en el informe del resultado de la simulación. A
continuación se explica cómo pueden modelarse los cambios en la capacidad y los
fallos de los recursos.

3.3.1. Planificación de la capacidad

La capacidad (Capacity) del recurso es el número de unidades del mismo que


pueden ser capturadas por las entidades. En la columna Type del módulo Resource se
especifica si el recurso mantiene una capacidad constante durante toda la simulación
(Fixed Capacity) o si, por el contrario, la capacidad varı́a en el tiempo de acuerdo
a determinada planificación (Based on Schedule). Cuando en la columna Type del
módulo Resource se selecciona Based on Schedule, se añaden dos nuevas columnas:
Schedule Name y Schedule Rule.
En la columna Schedule Name debe escribirse el nombre de la planificación. Arena
añade automáticamente esa nueva planificación en el módulo de datos Schedule. En
dicho módulo es donde se definen las caracterı́sticas de la planificación. Es decir,
la evolución en el tiempo de la capacidad. Definir la capacidad separadamente
del recurso facilita la definición del modelo si hay varios recursos con la misma
planificación de la capacidad. La planificación se define una única vez en el módulo
Schedule y se referencia por su nombre tantas veces como sea preciso desde el módulo
Resource.

180
MODELADO CON ARENA

Comienzo planificado de la reducción


Final planificado de la
reducción

IGNORE
REDUCCIÓN
tiempo

WAIT
REDUCCIÓN
tiempo

PREEMPT
tiempo
REDUCCIÓN

Figura 3.10: Opciones “Ignore”, “Wait” y “Preempt”.

En la columna Schedule Rule se indica cuál de las tres reglas siguientes debe
aplicarse para reducir la capacidad: Wait, Ignore y Preempt. Las reglas funcionan
de la forma siguiente. Si en el instante en que está planificado reducir la capacidad
ésta se encuentra libre, entonces con cualquiera de las tres reglas se produce la
reducción en la capacidad. La capacidad restada pasa a la fase Inactivo (Inactive).
Sin embargo, si la capacidad que debe reducirse se encuentra capturada, la forma
de proceder depende de la regla (véase la Figura 3.10).

– La regla Ignore espera para reducir la capacidad a que la capacidad que debe
reducirse quede libre. Sin embargo, el tiempo que debe durar la reducción en la
capacidad comienza a contabilizarse a partir del instante en que teóricamente
deberı́a haberse producido, no a partir del instante en que efectivamente se
produce. Es decir, el tiempo real durante el cual se reduce la capacidad es igual
al tiempo de reducción planificado, menos el tiempo que transcurre hasta que
la entidad libera el recurso. Si durante todo el tiempo en que estaba planificada
la reducción no se libera la capacidad, entonces la reducción no se produce.
Como resultado de aplicar esta regla, puede suceder que ni el tiempo de inicio
de la reducción ni su duración coincidan con los planificados.

– La regla Wait también espera para reducir la capacidad a que ésta quede libre.
Una vez la capacidad a reducir queda libre, pasa a Inactive y ası́ permanece
durante el total del tiempo establecido para la reducción en la capacidad. Por
tanto, el tiempo durante el cual se reduce la capacidad siempre coincide con

181
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

el planificado, pero no ası́ el instante de inicio de la reducción, que puede


retrasarse.

– La regla Preempt hace que la reducción en la capacidad se produzca en el


instante en que está planificada. La entidad o entidades que tenı́an capturada
esa capacidad quedan a la espera, reanudándose posteriormente su acción en
el punto en que se interrumpió. Esta regla satisface de forma precisa tanto el
instante de inicio de la reducción como su duración.

Debe examinarse el sistema y escoger la regla que mejor describe lo que sucede
en el sistema en el instante de cambio en la capacidad o fallo de un recurso. Si el
recurso en cuestión es el cuello de botella del sistema, la elección de la regla puede
afectar significativamente a los resultados obtenidos.

3.3.2. Fallos en los recursos

Para modelar los fallos de un recurso debe definirse el tipo de fallo en el módulo
de datos Failure (panel Advanced Process) y a continuación asociar dicho tipo de
fallo con el recurso. Definir los fallos separadamente de los recursos permite asociar
un mismo tipo de fallo con varios recursos. En estos casos, Arena genera secuencias
de números aleatorios independientes para simular los fallos de cada recurso.
La definición de un tipo de fallo consiste en asignarle un nombre y escoger su
tipo, que puede ser Count o Time. Asimismo, debe especificarse cómo calcular el
tiempo durante el cual el recurso permanece fuera de servicio (Down Time). Este
tiempo puede ser constante o calculado de una expresión.

– Count (cuenta) hace que el recurso falle después de procesar un determinado


número de entidades, bien fijo o bien calculado de una expresión. Este tipo
de fallo permite por ejemplo modelar mantenimientos preventivos (limpieza,
sustitución de piezas, ajustes, etc.) realizados a la máquina cada cierto número
de entidades procesadas. Aunque una parada por mantenimiento no es un fallo
de la máquina propiamente dicho, en este caso se considera como tal, ya que
evita que el recurso pueda ser capturado por las entidades.

– Time hace que el recurso falle de acuerdo a un criterio basado en el tiempo.


Debe indicarse cómo calcular el tiempo entre fallos (Up Time). En la columna
Uptime in this State only, debe especificarse en qué fase del recurso se con-
tabiliza este tiempo entre fallos. Por ejemplo, si el mecanismo de fallo es el

182
MODELADO CON ARENA

desgaste de la maquinaria del recurso o el agotamiento de un consumible, sólo


debe contabilizarse como Up Time el tiempo durante el cual el recurso está
ocupado. Por defecto, se contabiliza el tiempo que pasa la máquina en las fases
libre como ocupado.

Una vez definido el tipo de fallo, éste debe asociarse al recurso. Para ello, debe
escribirse el nombre del tipo de fallo en la columna Failures del módulo Resource.
También, debe indicarse la regla a seguir al poner el recurso fuera de servicio: Wait,
Ignore o Preempt. El significado de estas reglas es el mismo que en el caso de la
planificación de la capacidad.

3.3.3. Utilización de los recursos

Arena calcula dos estadı́sticos relacionados con la utilización de cada recurso:


la utilización y la utilización planificada. La utilización se calcula a partir de la
utilización instantánea del recurso de la forma indicada a continuación.
La utilización instantánea U (t) es el cociente del número de unidades del
recurso que están ocupadas en un determinado instante, nocupado (t), entre el número
de unidades del recurso que en ese mismo instante están libres u ocupadas, nlibre (t)+
nocupado (t).
La utilización (Utilization) se define como el promedio temporal de la utilización
instantánea del recurso. Se calcula de la expresión siguiente, donde T es la duración
de la simulación.

T T
1 1 nocupado (t)
Z Z
Utilization = U (t) · dt = · dt (3.1)
T 0 T 0 nlibre (t) + nocupado (t)

Si el número de recursos disponibles sigue una planificación que intenta adecuar


la capacidad a la evolución de su demanda, entonces la utilización es una medida de
la bondad de esa adecuación.
La utilización planificada (Scheduled Utilization) es el promedio temporal
del número de unidades del recurso que están ocupadas, dividido por el promedio
temporal del número de unidades del recurso que están libres u ocupadas.

183
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1 T
Z
NumberBusy = nocupado (t) · dt (3.2)
T 0
1 T
Z
NumberScheduled = (nlibre (t) + nocupado (t)) · dt (3.3)
T 0
NumberBusy
ScheduledUtilization = (3.4)
NumberScheduled

La utilización planificada proporciona una idea de cuál es la capacidad total


frente a la demanda total, sin considerar la relación temporal entre ambas.
Cuando la capacidad del recurso es fija, es decir, cuando se verifica

nlibre (t) + nocupado (t) = constante (3.5)

entonces la utilización y la utilización planificada son iguales.


Obsérvese que la utilización planificada proporciona una idea de en qué medida la
capacidad total puede acomodar la demanda. Por otra parte, la utilización mide en
qué medida la evolución temporal de la planificación de la capacidad de los recursos
sigue a la demanda de capacidad. Por tanto, si la utilización es mucho más alta que
la utilización planificada, puede ser una indicación de que se dispone de la capacidad
necesaria, pero que su planificación en el tiempo no se ha realizado adecuadamente.
Es decir, no se ajusta a la evolución temporal de la demanda.

3.4. ENCAPSULADO Y PRUEBA DE CIRCUITOS

Para ilustrar los conceptos explicados anteriormente, en esta sección se describe el


modelado de una parte del proceso de fabricación de un circuito eléctrico, consistente
en el montaje del circuito en el interior de una carcasa metálica y la realización de
pruebas eléctricas para determinar si el dispositivo funciona correctamente una vez
encapsulado. Si bien se trata de un único tipo de circuito, puede encapsularse de dos
maneras diferentes, usando las carcasas del tipo A y B, respectivamente.

184
MODELADO CON ARENA

3.4.1. Descripción del funcionamiento del sistema

El flujo de los circuitos a través del sistema está representado en la Figura 3.11.
Las carcasas metálicas, ya preparadas para alojar el circuito en su interior, llegan
al sistema. Las carcasas de Tipo A llegan de una en una, mientras que las de Tipo
B llegan en grupos de 4. Los intervalos de tiempo entre llegadas sucesivas están
distribuidos exponencialmente, con media 5 minutos y 30 minutos respectivamente.

Zona de Desechados
Prep. A Retrabajado
Carcasa A Zona de 20%
Encapsulado
expo(5)
(5) y Prueba 80%
triang (1,4,8) 9% expo(45)
(45)
Enviados
Prep. B 91%

Carcasa B A : triang (1,3,4)


B:: Weibull(2.5,5.3) Enviados
Grupos de 4
(30)
expo(30)
triang (3,5,10)

Figura 3.11: Sistema de ensamblado y prueba de circuitos eléctricos.

Al llegar al sistema, las carcasas deben recibir cierto tratamiento (pulido de los
bordes, limpieza, etc.) en la Zona de Preparación. El tratamiento y el recurso que
lo realiza dependen del tipo de carcasa:

– En la Zona Prep. A se preparan las carcasas de Tipo A. El tiempo de proceso


está distribuido triangularmente, con rango [1, 8] minutos y moda 4 minutos.

– En la Zona Prep. B se preparan las carcasas de Tipo B. El tiempo de proceso


está distribuido triangularmente, con rango [3, 10] minutos y moda 5 minutos.

En ambos casos, las carcasas son procesadas una a una. En particular, las carcasas
de Tipo B, que son recibidas en grupos de cuatro, son separadas y procesadas
individualmente.
Una vez concluido el proceso de preparación, las carcasas de ambos tipos van a
la Zona de Encapsulado y Prueba. El proceso en esta zona consiste en introducir
el circuito dentro de la carcasa, cerrar y sellar ésta y probar eléctricamente el
dispositivo. La distribución de probabilidad del tiempo empleado en este proceso
depende del tipo de carcasa. Para las de Tipo A está distribuido triangularmente, con

185
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

rango [1, 4] minutos y moda 3 minutos. El tiempo de proceso de los dispositivos con
carcasa Tipo B está distribuido Weibull, con parámetro de escala β = 2.5 minutos
y parámetro de forma α = 5.3 minutos.
El 91 % de los dispositivos pasa las pruebas eléctricas y son enviados. Se supone
que la probabilidad de fallo de un dispositivo es independiente de la probabilidad de
fallo de los demás dispositivos. Los dispositivos fallados son enviados a la Zona de
Retrabajado.
En la Zona de Retrabajado los circuitos son extraı́dos de las cajas, reparados,
vueltos a encapsular y probados de nuevo. El 80 % de los dispositivos retrabajados
pasan con éxito este nuevo test y son enviados. El 20 % restante no consigue ser
reparado y es desechado. Se considera que el tiempo del proceso del retrabajado es
independiente del tipo de carcasa y de si finalmente se consigue reparar el dispositivo
o no. El tiempo de retrabajado está distribuido exponencialmente, con media 45
minutos.
La cadena de encapsulado y prueba opera durante 2 turnos al dı́a, de 8 horas
cada uno. Se considera que el funcionamiento en ambos turnos es similar, con lo cual
el modelo no depende del turno. Asimismo, puesto que las condiciones al comienzo
de un turno son las mismas que al finalizar el turno anterior, puede realizarse la
simulación sin solución de continuidad entre turnos.
Al comienzo de la simulación se supone que todas las colas están vacı́as y todos los
recursos libres. Se pretende simular el funcionamiento del sistema durante 4 turnos
de 8 horas cada uno. Ası́ pues, la condición de finalización de la simulación es que
el tiempo simulado alcance el valor 32 horas.
El objetivo del estudio es estimar la utilización de los recursos, el tamaño y
tiempo de espera de cada cola, y los tiempos de ciclo de los dispositivos enviados
sin retrabajar, retrabajados y desechados. El tiempo de ciclo de una entidad es el
tiempo que la entidad ha permanecido en el sistema.

3.4.2. Modelado del funcionamiento del sistema

Pueden distinguirse dos tipos de entidad en el sistema: las carcasas de tipo A y


de tipo B. Estos dos tipos de entidad se llamarán tipoA y tipoB, respectivamente.
En la Figura 3.12 se muestra el diagrama de módulos del modelo tal como
resulta una vez instanciados los módulos, antes de asignar valor a sus parámetros.
El diagrama consta de los módulos descritos a continuación. Dos módulos Create,

186
MODELADO CON ARENA

cada uno de los cuales se empleará para describir la llegada de un tipo de carcasa.
Dos bloques Process, llamados inicialmente Process 1 y 2, que describirán la zona
de preparación de cada tipo de carcasa. Dos bloques Process, señalados en la figura
como Process 3 y 4, que representarán el encapsulado y prueba, y el retrabajado
y prueba, respectivamente. Los bloques Decide 1 y 2 describen los dos puntos de
bifurcación del flujo de entidades correspondientes a las pruebas eléctricas tras el
encapsulado y tras el retrabajado. Tres módulos Dispose representan los tres puntos
de salida de carcasas: envı́o sin retrabajar, envı́o con retrabajo y desecho.
En los módulos Assign se asigna valor a atributos de las entidades. Los atributos
describen propiedades caracterı́sticas del tipo de entidad, pero cuyo valor varı́a de
una instancia de la entidad a otra. En este modelo se declaran dos atributos para las
entidades tipoA y tipoB: su instante de llegada y su tiempo de proceso en la Zona
de Encapsulado y Prueba. A continuación se explica el motivo.
Arena calcula por defecto el tiempo de ciclo de cada tipo de entidad. En este
modelo Arena calcula por defecto el tiempo de ciclo de las entidades tipoA y el
tiempo de ciclo de las entidades tipoB. Sin embargo, la información que se desea
obtener del modelo en este estudio no es esa. Para cada tipo de carcasa, se desea
estimar el tiempo de ciclo de cada uno de los tres caminos de fabricación por
separado: enviadas no retrabajadas, enviadas retrabajadas y desechadas. Arena no
realiza este cálculo por defecto, con lo cual es preciso indicar en el modelo cómo
debe realizarse.
La forma de hacerlo es asignar a cada entidad un atributo: su instante de llegada.
En el momento en que la entidad abandona el sistema, el valor de este atributo se
usará para realizar el cálculo del tiempo de ciclo. Situando tres puntos diferentes de
cálculo, uno al final de cada camino de fabricación, se obtendrán los tres tiempos de
ciclo para cada tipo de entidad. Estos puntos de cálculo son los tres bloques Record.
Por otra parte, la distribución de probabilidad del tiempo de proceso en la Zona
de Encapsulado y Prueba depende del tipo de entidad. Ası́ pues, se asigna a cada
entidad su valor de dicho tiempo de proceso en el instante en que entra al sistema.
Este valor, que se almacena como un atributo, es leı́do en la Zona de Encapsulado y
Prueba y usado en consecuencia, haciendo que el tiempo de la acción Delay de cada
entidad sea igual al valor almacenado en el atributo.
Los módulos Create son parametrizados como se muestra en la Figura 3.13. Basta
escribir tipoA y tipoB en la casilla Entity Type de los bloques para que Arena declare
esos dos tipos de entidad. Las propiedades de esos dos tipos de entidad pueden
configurarse en el módulo de datos Entity. Obsérvese que en la casilla Entities per

187
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.12: Diagrama de módulos del modelo.

Figura 3.13: Definición de las entidades y de sus procesos de llegada.

188
MODELADO CON ARENA

Arrival del módulo Create de creación de entidades tipoB se ha escrito 4, ya que las
entidades llegan de cuatro en cuatro.
En la Figura 3.14 se muestran las ventanas de diálogo de los dos módulos Assign,
en los cuales se asigna valor a dos atributos, a los cuales se han asignado los nombres
tLlegada y tProc. Los nombres de los atributos pueden escogerse libremente.
Las asignaciones de valor a los atributos realizadas en cada módulo Assign se
listan en el recuadro Assignments (véase la Figura 3.14). Para añadir una nueva
asignación debe pulsarse el botón Add..., que se encuentra a la derecha del recuadro
Assignments. En la ventana que se abre (Assignments), debe especificarse el tipo,
nombre y valor de lo que se está declarando. En este caso se declaran atributos, con
lo cual el tipo es Attribute. El valor a asignar puede escribirse con ayuda del editor
de expresiones de Arena.
Pulsando el botón derecho del ratón sobre la casilla New Value se despliega
un menú, desde el cual seleccionando Build Expression se arranca el editor de
expresiones. Pueden especificarse de manera sencilla distribuciones de probabilidad
desplegando Random Distributions en el menú del editor de expresiones. Si por
ejemplo se selecciona Triangular, aparecen las casillas para introducir los valores de
los parámetros de esta distribución: Minimum Value, Most Likely Value y Maximum
Value. Escribiendo 1, 3 y 4 en estas casillas, Arena muestra automáticamente la
correspondiente expresión: TRIA(1,3,4).
En el atributo tProc se almacena una observación de la correspondiente distribu-
ción de probabilidad del tiempo de proceso en la Zona de Encapsulado y Prueba. En
el atributo tLlegada se almacena el instante en que la entidad ha llegado al sistema.
Para ello, se asigna al atributo el valor de la variable TNOW de Arena, que guarda el
valor del reloj de la simulación. Puede accederse al nombre de la variable empleando
el constructor de expresiones. Desplegando en el menú Date and Time Functions y
seleccionando Current Simulation Time, Arena muestra el nombre de la variable en
la cual se almacena el valor del reloj de la simulación: TNOW.
En la Figura 3.15 se muestra la ventana de diálogo del bloque Process que
describe la Zona de Preparación de las carcasas tipoA. El proceso de la otra Zona
de Preparación se define de forma completamente análoga.
En la Figura 3.16. se muestra la ventana del módulo Process que describe el
Encapsulado y Prueba. Obsérvese que el tiempo de la acción Delay es igual al
valor del atributo tProc de la entidad que en cada momento tenga capturado el
recurso. El editor de expresiones de Arena también facilita construir expresiones
en las cuales intervengan atributos. Para acceder a los nombres de los atributos

189
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.14: Definición de los dos módulos Assign.

Figura 3.15: Definición del proceso de la Zona de Preparación A.

190
MODELADO CON ARENA

Figura 3.16: Definición del proceso de Encapsulado y Prueba.

Figura 3.17: Definición del proceso de Retrabajado y Prueba.

191
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

hay que desplegar Entity-Related Variables / Attributes en la ventana del editor de


ecuaciones y seleccionar User-Defined Attribute Value.
El resultado de la prueba que sigue al proceso de encapsulado implica una
bifurcación en el flujo de las entidades, que se modela mediante un módulo Decide.
El tipo de decisión es 2-way by chance (2 posibilidades por azar). El módulo Decide
tiene 2 salidas, marcadas respectivamente con las etiquetas True y False. Tal como se
ha realizado la conexión del módulo en la Figura 3.12, por la salida False deben salir
las entidades que no han fallado la prueba, mientras que por la salida True deben
salir las que sı́ la han fallado. De acuerdo con esta interpretación, el significado de
la bifurcación es: ¿falla la prueba? Ası́ pues, el tanto por cien de probabilidad de la
opción True (Percent True) es igual a 9.
El Retrabajado y Prueba se define tal como se muestra en la Figura 3.17. La
bifurcación en el flujo de las entidades que supone la prueba tras el retrabajado se
modela mediante un módulo Decide. Nuevamente, por la forma en que está conectado
el módulo (véase la Figura 3.12), su interpretación es: ¿falla la prueba? El tanto por
ciento de probabilidad de la opción True es igual a 20. Los parámetros del módulo
se muestran en la Figura 3.18.
En la Figura 3.19 se muestra la configuración del módulo Record empleado para
el cálculo del tiempo de ciclo de los dispositivos desechados. Se trata del módulo
llamado Record 1 en la Figura 3.12. En la casilla Type debe indicarse el tipo
de cálculo a realizar por el módulo. El tipo de cálculo Time Interval consiste en
calcular y almacenar la diferencia entre el valor del atributo especificado en la casilla
Attribute Name y el valor actual del reloj de la simulación. El resultado del cálculo
es almacenado en una estadı́stico, cuyo nombre debe indicarse en la casilla Tally
Name. El nombre asignado en este caso a este estadı́stico es tCiclo Desechados. Ese
será el nombre que usará Arena en el informe de resultados de la simulación para
referirse al estadı́stico. De forma análoga se configuran los módulos Record para el
cálculo de los tiempos de ciclo de los dispositivos enviados tras la primera prueba y
tras el retrabajo. En cada módulo se ha asignado un nombre diferente al estadı́stico:
tCiclo noRetrab y tCicloRetr.
Con la parametrización de los tres módulos Dispose se completa la definición
del modelo, que es mostrado en la Figura 3.20. El motivo por el cual se emplean
tres módulos Dispose, en lugar de dirigir los tres flujos de entidades a un único
módulo Dispose, es poder visualizar el número de entidades que han abandonado
el sistema por cada uno de los módulos. Si en la ventana de configuración de los
módulos Dispose se selecciona Record Entity Statistics, Arena muestra el valor de
esta variable de animación en la parte inferior derecha del módulo.

192
MODELADO CON ARENA

Figura 3.18: Decisión acerca de si la entidad falla la prueba de retrabajado.

Figura 3.19: Configuración del módulo Record de los circuitos desechados.

Figura 3.20: Diagrama de módulos del modelo.

193
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

3.4.3. Definición del experimento

Pulsando Run/Setup se abre la ventana de diálogo para la configuración del


experimento. Tal como se muestra en la Figura 3.21, se escoge como condición de
finalización que el reloj de la simulación alcance el valor 32 horas (Replication Length
= 32, Time Units = Hours). Asimismo, se escoge que la unidad de tiempo base para
la simulación sea minutos (Base Time Units = Minutes). De esta manera, en el
informe de los resultados de la simulación todos los estadı́sticos con unidades de
tiempo vendrán expresados en minutos. Se selecciona que Arena evalúe e incluya
en el informe los estadı́sticos relacionados con las entidades (Entities), los recursos
(Resources), las colas (Queues) y los procesos (Processes).

Figura 3.21: Definición del experimento.

3.4.4. Ejecución de la simulación

Antes de simular el modelo, puede comprobarse si contiene errores ejecutando


Run / Check Model. Para arrancar la simulación con animación hay que ejecutar:
Run / Go. Arena va mostrando durante la ejecución de la simulación cómo las
entidades de desplazan por el sistema y se van incrementando los contadores aso-
ciados a los módulos. Los contadores de los módulos Create, Dispose y Decide son
incrementados cada vez que una entidad abandona el módulo. En el caso de módulo
Process, el contador es el número total de entidades que se encuentran en el módulo.

194
MODELADO CON ARENA

Figura 3.22: Estado final del modelo.

El estado del modelo al finalizar la simulación es el mostrado en la Figura 3.22. Una


vez finalizada la simulación, hay que pulsar Run / End para regresar al modo de
edición del modelo.
Intentar extraer conclusiones de una única réplica de la simulación es poco
riguroso, máxime cuando no se han considerado aspectos tales como la duración de
la simulación, el número de réplicas, la conveniencia o no de realizar la simulación
hasta el estacionario, etc. No obstante, pueden extraerse algunas conclusiones. La
utilización estimada de los recursos es la siguiente:

Identifier Average Half Width


PrepA.Utilization .90385 .06109
PrepB.Utilization .75753 (Insuf)
EncapsuladoPrueba.Utilization .85949 .04352
retrabajo.Utilization .94954 (Insuf)

La utilización del recurso de la Zona de Retrabajado está próxima al 95 %. Por


otra parte, como puede observarse en la Figura 3.22, al finalizar la simulación el
proceso Retrabajado tiene 24 circuitos en cola y 1 en proceso. El número de entidades
en la cola de cada uno de los procesos es el siguiente:

195
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Identifier Average Half Width Minimum Maximum


Proceso PrepA.Queue.NumberInQueue 3.1680 (Corr) .00000 11.000
Proceso PrepB.Queue.NumberInQueue 3.5017 (Insuf) .00000 14.000
Retrabajado.Queue.NumberInQueue 12.953 (Insuf) .00000 26.000
Encapsulado y Prueba.Queue.NumberInQueue .86311 .33494 .00000 6.0000

A la vista de estos resultados cabe sospechar que o bien la Zona de Retrabajado


tiene una capacidad insuficiente, o bien el proceso tiene una gran variabilidad. Los
tiempos de espera en cola también reflejan la congestión del proceso de retrabajado:

Identifier Average Half Width Minimum Maximum


Proceso PrepA.Queue.WaitingTime 14.621 (Corr) .00000 46.345
Proceso PrepB.Queue.WaitingTime 26.903 (Insuf) .00000 85.951
Retrabajado.Queue.WaitingTime 456.35 (Insuf) .00000 810.98
Encapsulado y Prueba.Queue.WaitingTime 2.5152 (Corr) .00000 14.045

El tiempo de ciclo de las entidades en cada uno de los tres caminos de fabricación
es el siguiente:

Identifier Average Half Width Minimum Maximum Observations


tCiclo noRetrab 28.759 (Corr) 3.6795 93.481 589
tCiclo Desechados 737.18 (Insuf) 631.91 829.80 4
tCicloRetr 503.84 (Insuf) 24.977 876.85 32

3.4.5. Planificación de la capacidad de la Zona de Retrabajado

Hasta este momento hemos supuesto que el sistema opera durante 2 turnos al
dı́a, de 8 horas cada uno, que son totalmente equivalentes entre sı́. La capacidad de
la Zona de Retrabajado es constante e igual a uno. Obsérvese en la Figura 3.23 la
fila correspondiente al recurso retrabajo: Type = Fixed Capacity, Capacity = 1.

Figura 3.23: Módulo de datos Resource.

196
MODELADO CON ARENA

Figura 3.24: Definición del experimento.

Los resultados anteriores sugieren que dicha capacidad podrı́a ser insuficiente
para satisfacer la demanda. Realicemos la siguiente modificación en el modelo.
Supongamos que la capacidad de la Zona de Retrabajado durante el primer turno es
igual a uno y durante el segundo turno es igual a dos. Por otra parte, ampliaremos
el periodo de estudio a 10 dı́as. El objetivo es estimar el tiempo medio en la cola del
recurso de retrabajado y el tiempo de ciclo de las entidades por cada uno de los tres
caminos de fabricación.
La modificación del experimento se realiza en la ventana Run Setup, que se abre
pulsando Run / Setup. Como puede observarse en la Figura 3.24, se ha especificado
que un dı́a laborable consta de 16 horas (Hours per Day = 16) y que la duración
de la simulación son 10 dı́as (Replication Length = 10, Time Units = Days). En
el informe generado por Arena, los estadı́sticos con unidades de tiempo seguirán
expresándose en minutos (Base Time Units = Minutes).
En la Figura 3.25 se muestra cómo se indica que la capacidad del recurso retrabajo
varı́a según una planificación, a la cual se ha asignado el nombre turnosRetrab
(Type = Based on Schedule, Schedule Name = turnosRetrab). La regla (Schedule
Rule = Ignore) se ha escogido asumiendo que la reducción en la capacidad no se
produce dejando a medias el procesado del dispositivo, sino que primero se finaliza
el procesado del dispositivo y a continuación se reduce la capacidad.

197
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.25: Módulo de datos Resource.

Las caracterı́sticas de la planificación turnosRetrab se definen en el módulo


de datos Schedule. Haciendo clic sobre dicho módulo y examinando su contenido,
se observa que Arena ha creado automáticamente la fila correspondiente a dicha
planificación.
Haciendo clic en la correspondiente casilla de la columna Durations, se abre la
ventana gráfica mostrada en la Figura 3.26, en la que puede representarse la evolución
temporal de la capacidad. El eje horizontal representa el tiempo simulado. Según se
ha indicado en la ventana de definición del experimento, el dı́a consta de 16 horas.
El eje vertical es la capacidad del recurso.

Figura 3.26: Editor gráfico para la planificación de la capacidad.

198
MODELADO CON ARENA

Pulsando el botón Options, que está situado en la parte inferior de la ventana


(véase la Figura 3.26), se abre una ventana como la mostrada en la Figura 3.27.
En ella pueden configurarse los ejes y se define qué hacer una vez transcurrida la
ventana de tiempo de la gráfica (When at end of schedule). Puede escogerse que la
capacidad se mantenga a un cierto valor constante durante el resto de la simulación
(Remain at capacity), o bien que se repita una y otra vez la planificación mostrada
en la gráfica durante toda la simulación (Repeat from beginning).

Figura 3.27: Opciones del editor gráfico para la planificación de la capacidad.

Una vez configuradas las opciones, puede procederse a describir la variación en


el tiempo de la capacidad. En la ventana mostrada en la Figura 3.26, haciendo
clic en la posición x-y que corresponde a la hora 1 del dı́a 1, capacidad 1, aparece
una barra sólida que representa la capacidad deseada durante esa hora. Repitiendo
esta operación, se completa la información correspondiente al primer dı́a. La gráfica
obtenida se muestra en la Figura 3.28. No es necesario introducir los datos de los
restantes dı́as, dado que en las opciones se seleccionó Repeat from beginning (véase la
Figura 3.27) y por tanto la planificación del primer dı́a se repetirá automáticamente
los demás dı́as simulados. El contenido del módulo de datos Schedule se muestra en
la Figura 3.29.
Indicar la evolución de la capacidad por medio del editor gráfico no permite
especificar duraciones que no sean números enteros, ni tampoco entradas que sean

199
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.28: Planificación de la capacidad mediante el editor gráfico.

Figura 3.29: Módulo de datos Schedule.

Figura 3.30: Planificación de la capacidad mediante la ventana de diálogo.

200
MODELADO CON ARENA

una expresión. Por ejemplo, un intervalo de longitud aleatoria. Una forma más
flexible que especificar la planificación es hacerlo mediante una ventana de diálogo.
Para ello, debe situarse el ratón sobre la casilla de la columna Durations (véase la
Figura 3.29) y pulsar el botón derecho del ratón. Se muestra un menú, en el cual debe
seleccionarse Edit via Dialog. Entonces se abre la ventana Schedule. Hay que hacer
clic sobre el botón Add para definir, en la ventana Durations, las parejas (Capacidad,
Duración). En este caso, la capacidad permanece a 1 durante las primeras 8 horas
y a 2 durante las siguientes 8 horas. La ventana de diálogo en la cual se planifica la
capacidad se muestra en la Figura 3.30. Tanto la capacidad como la duración pueden
ser expresiones.
Ejecutando la simulación, se obtienen las estimaciones siguientes del tiempo de
espera de las entidades en las colas y de los tiempos de ciclo de las entidades que
circulan por cada una de las tres rutas de fabricación.

Identifier Average Half Width Minimum Maximum


Proceso PrepA.Queue.WaitingTime 10.937 (Corr) .00000 86.718
Proceso PrepB.Queue.WaitingTime 140.22 (Corr) .00000 434.96
Retrabajado.Queue.WaitingTime 379.06 (Insuf) .00000 1051.9
Encapsulado y Prueba.Queue.WaitingTime 2.5063 .80286 .00000 23.862

Identifier Average Half Width Minimum Maximum Observations


tCiclo noRetrab 74.536 (Corr) 2.9182 446.50 2909
tCiclo Desechados 518.50 (Insuf) 159.23 971.60 50
tCicloRetr 509.68 (Insuf) 24.977 1329.2 254

3.4.6. Averı́as en la Zona de Encapsulado y Prueba

Veamos cómo pueden modelarse las averı́as del recurso de la Zona de Encapsulado
y Prueba. Se hace la hipótesis de que el intervalo de tiempo entre fallos consecutivos
está distribuido exponencialmente, con media 120 minutos. El tiempo requerido para
arreglar la averı́a es también una variable aleatoria, distribuida exponencialmente
con media 4 minutos. El objetivo del estudio es estimar el tiempo que el recurso de
la Zona de Encapsulado y Prueba pasa fuera de servicio, ası́ como la utilización de
cada uno de los recursos del modelo.
Asimismo, se planea comprar estanterı́as para almacenar ordenadamente los
dispositivos que están en cola en la Zona de Retrabajado. La capacidad de cada
estanterı́a es de 10 dispositivos. Se pretende determinar cuántas de ellas es preciso
comprar. Para ello, se desea estimar mediante simulación durante cuánto tiempo el

201
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.31: Fallo del recurso de la Zona de Encapsulado y Prueba.

número de dispositivos en cola es cero, durante cuánto tiempo está entre 1 y 10,
durante cuanto tiempo entre 11 y 20, y ası́ sucesivamente.
El modelado de los fallos se realiza en dos pasos. En primer lugar, se define el
tipo de fallo. En segundo lugar, se asocia éste con el recurso.
El tipo de fallo se define en el módulo de datos Failure, que está situado en el
panel Advanced Process. Haciendo clic sobre el módulo se abre la tabla Failure -
Advanced Process, que por el momento no tiene ninguna fila. Haciendo doble clic en
el área bajo la cabecera, donde está escrito Double-click here to add a new row, se
añade una nueva fila a la tabla, en la cual debe introducirse la información mostrada
en la Figura 3.31:

– En la columna Name, el nombre que se asigna al tipo de fallo que se está


definiendo. En este modelo se ha asignado al fallo el nombre falloEncaps.

– En la columna Type, el criterio para que se produzca un fallo: Count o Time.


En este caso el criterio está basado en el tiempo, con lo cual se escoge Time.

– En las columnas Up Time y Down Time, el tiempo que transcurre entre dos
fallos consecutivos y el tiempo que pasa el recurso fuera de servicio debido a
un fallo. Estos tiempos están distribuidos EXPO(120) y EXPO(4), respectiva-
mente.

– En la columna Uptime in this State only, en qué fases del recurso se considera
que éste está Up. En este modelo, se deja la opción por defecto: para contabi-
lizar el tiempo entre fallos, se considera tanto la fase libre como ocupado.

Una vez definido el tipo de fallo en el módulo Failure, hay que asociarlo en el
módulo Resource con el recurso EncapsuladoPrueba. En la Figura 3.25 se muestra
el contenido del módulo. En él, hay que hacer clic sobre la casilla Failures de la
fila correspondiente a EncapsuladoPrueba. Se abre una pequeña ventana, llamada

202
MODELADO CON ARENA

Failures, en la que hay que hacer doble clic para añadir una nueva fila. La información
que debe introducirse es la siguiente (véase la Figura 3.32):

– En la columna Failure Name, hay que seleccionar el fallo anteriormente defi-


nido, que se llama falloEncaps.

– En la columna Failure Rule debe indicarse la regla a seguir, que puede ser Wait,
Ignore o Preempt. Dado que el tiempo entre fallos (120 minutos) es grande
comparado con el tiempo de reparación (4 minutos), es razonable escoger la
regla Wait.

Figura 3.32: Asociación del tipo de fallo falloEncaps con el recurso EncapsuladoPrueba.

Una vez hechas las modificaciones en el modelo, deben definirse los estadı́sticos.
Veamos en primer lugar cómo definir el estadı́stico a partir del cual va a estimarse
el número de estanterı́as que es necesario comprar. Haciendo clic sobre el módulo
de datos Statistic, se abre la hoja Statistic - Advanced Process, que inicialmente se
encuentra vacı́a. Tal como aparece indicado en la hoja, hay que hacer doble clic para
añadir una nueva fila (Double-clic here to add new row).

– En la casilla de la columna Name, debe introducirse el nombre que se asigna


al estadı́stico, el cual puede escogerse libremente. El nombre escogido en este
caso es colaRetrabSt.

– En la casilla de la columna Type se selecciona el tipo del estadı́stico, que en


este caso es Frequency. Obsérvese que en la casilla de la columna Report Label
aparece por defecto el nombre asignado al estadı́stico.

– En la casilla de la columna Frequency Type debe escogerse entre dos opciones:


Value o State. Para este estadı́stico debe escogerse Value, ya que el estadı́stico

203
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.33: Definición de los estadı́sticos y categorı́as de colaRetrabSt.

se calcula a partir de una expresión. Deberı́a escogerse State si se deseara


estudiar el tiempo que el recurso pasa en cada fase.

– En la casilla de la columna Expression debe introducirse la expresión de la


cual se desea estudiar la frecuencia. En este caso, la expresión es el número de
dispositivos en cola en la Zona de Retrabajado.
La expresión puede construirse con ayuda del editor de expresiones de Arena.
Para abrir este editor hay que hacer clic con el botón derecho del ratón sobre
la casilla Expression y seleccionar Build Expression. Desplegando en el menú
el item Basic Process Variables / Queue, debe seleccionarse Current Number
in Queue. Al hacerlo aparece la casilla Queue Name en la parte derecha de
la ventana del constructor, en la que debe seleccionarse cuál de las colas del
modelo debe usarse en la expresión. Debe seleccionarse la cola de la Zona de
Retrabajado. Finalmente debe pulsarse el botón OK para que la expresión se
inserte en la casilla desde la que se ha abierto el editor de expresiones.

– Las categorı́as determinan cómo deben ser representados los datos. Se definen
en la casilla Categories. Por defecto, la casilla contiene cero filas (0 rows).
Haciendo clic sobre la casilla se abre una pequeña ventana, Categories, en la
que se introduce la información acerca de las categorı́as. Se definen únicamente
hasta 4 estanterı́as. Si el número de dispositivos en cola superara los 40, Arena
automáticamente crearı́a una nueva categorı́a, a la que llamarı́a out-of-range.
En la definición de los rangos, el criterio que sigue Arena es que el extremo
inferior no está incluido en el rango. Por ejemplo, el rango Value = 10, High
Value = 20, define el rango de números (10, 20]. Es decir, mayor que 10 y
menor o igual que 20.

204
MODELADO CON ARENA

Para cerrar la ventana Categories hay que pulsar el aspa de la esquina superior
derecha. Con ello queda completa la definición del estadı́stico.

El segundo estadı́stico debe ser el tiempo total durante el cual el recurso de la


Zona de Encapsulado y Prueba está averiado. Para definirlo debe añadirse una nueva
fila al módulo de datos Statistic. En la Figura 3.33 se muestran los detalles de la
definición de los dos estadı́sticos.
Ejecutando una réplica de la simulación, los valores obtenidos de los estadı́sticos
son los siguientes:

–Occurrences– Standard Restricted


Identifier Category Number AvgTime Percent Percent
colaRetrabSt estanteria 0 41 69.472 29.67 29.67
estanteria 1 52 119.95 64.98 64.98
estanteria 2 12 42.821 5.35 5.35
estadoEncap BUSY 697 11.604 84.25 84.25
IDLE 640 1.9172 12.78 12.78
FAILED 68 4.1860 2.97 2.97

En el manual Arena Variables Guide puede consultarse el significado de las


variables de los estadı́sticos de frecuencia.

– Average time in category (FAVG) es el tiempo promedio que la expresión de la


frecuencia (es decir, el contenido de la casilla Expression en el módulo de datos
Statistic) toma un valor contenido en el rango correspondiente a la categorı́a.
Se calcula, para cada una de las categorı́as, de la forma siguiente:

FRQTIM
FAVG = (3.6)
FCOUNT
– Frequency category count (FCOUNT) es el número de veces que ocurren ob-
servaciones en el rango de una determinada categorı́a. Es un número entero.

– Standard category percent (FSTAND) es el porcentaje de tiempo en la categorı́a


especificada frente al tiempo en todas las categorı́as.

– Restricted category percent (FRESTR) es el porcentaje de tiempo en la cate-


gorı́a especificada frente al tiempo en todas las categorı́as restringidas.

– Time in category (FRQTIM) es el tiempo total que el valor de la expresión de


la frecuencia está en el rango de una determinada categorı́a.

205
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Standard Percent y Restricted Percent tienen los mismos valores en este estudio.
Sin embargo, es posible seleccionar el tipo de dato que se desea excluir del cálculo de
la última columna. Por ejemplo, si se excluyen los datos del recurso de encapsulado y
prueba cuando éste está en estado FAILED, entonces Standard Percent no variarı́a,
pero los cálculos de la columna Restricted Percent se calcuları́an sólo de las fases
BUSY e IDLE, de modo que los valores obtenidos sumarı́an 100.
Del estadı́stico definido para determinar el número necesario de estanterı́as, se
observa que durante la simulación el número de entidades en cola del retrabajado
nunca supera las 20, y que es mayor que 10 sólo durante el 5.35 % del tiempo. Por
consiguiente, de la simulación de deduce que deberı́an comprarse dos estanterı́as o
a lo sumo tres.
En las tablas siguientes se muestran la utilización y la utilización planificada de
los recursos. Inspeccionando el contenido del fichero .out que contiene el informe
del resultado de la simulación, puede comprobarse que la utilización planificada
(ScheduledUtilization) es el cociente de NumberBusy entre NumberScheduled.
Asimismo, en las tablas siguientes puede comprobarse que cuando la capacidad
del recurso es fija, la utilización y la utilización planificada son iguales. En efecto,
ambas métricas son iguales para todos los recursos del modelo excepto el recurso de
la Zona de Retrabajado.

Identifier Average Half Width Minimum Maximum Final Value


PrepA.Utilization .88686 .02755 .00000 1.0000 1.0000
PrepB.Utilization .80114 .07366 .00000 1.0000 1.0000
EncapsuladoPrueba.Utilization .84253 .03300 .00000 1.0000 .00000
retrabajo.Utilization .86405 (Corr) .00000 1.0000 1.0000

Identifier Value
PrepA.ScheduledUtilization .88686
PrepB.ScheduledUtilization .80114
EncapsuladoPrueba.ScheduledUtilization .84253
retrabajo.ScheduledUtilization .85675

206
MODELADO CON ARENA

3.5. MODELADO DETALLADO

En las secciones anteriores se ha descrito un tipo de modelado que puede rea-


lizarse empleando básicamente los módulos que se encuentran en el panel Basic
Process. Estos módulos de alto nivel son relativamente fáciles de usar, con lo cual
es una buena estrategia emplearlos en la construcción del modelo hasta donde sea
posible y emplear módulos de más bajo nivel únicamente en aquellos casos en que sea
imprescindible. Arena permite combinar en un mismo modelo módulos de diferentes
paneles. En esta sección se describe la funcionalidad de algunos de los módulos
contenidos en los paneles Advanced Process y Blocks.
El panel Advanced Process complementa al panel Basic Process, proporcionando
capacidades adicionales que permiten realizar un modelado más detallado. Por ejem-
plo, la secuencia de los módulos Seize, Delay y Release del panel Advanced Process
proporciona básicamente la misma lógica de modelado que el módulo Process del
panel Basic Process. La ventaja adicional que proporcionan estos tres módulos del
panel Advanced Process frente al módulo Process es que pueden conectarse formando
prácticamente cualquier combinación que requiera el modelo. De hecho, algunos
usuarios prefieren iniciar el modelado a este nivel, ya que consideran que el modelo
resultante resulta más fácil de entender.
Los paneles Blocks y Elements contienen módulos de más bajo nivel, que corres-
ponden con los bloques del lenguaje de simulación SIMAN sobre el que se basa Arena,
y también contienen módulos diseñados para el modelado de sistemas continuos.
El panel Elements contiene los módulos necesarios para la definición del experi-
mento en el lenguaje SIMAN. El panel Blocks proporciona la funcionalidad básica
que se ha usado para crear todos los módulos que se encuentran en los tres restantes
paneles de Arena: Basic Process, Advanced Process y Advanced Transfer. Además,
proporciona construcciones de modelado no disponibles en los demás paneles, tales
como los bucles while, bifurcaciones en el flujo en las cuales la condición combina la
probabilidad y la lógica, etc.
Puede observarse que el nombre de algunos módulos del panel Blocks coincide
con el nombre de módulos de otros paneles. Aunque los nombres son los mismos
(pueden distinguirse por su color y forma), los módulos no son iguales.
Por ejemplo, el módulo Seize del panel Advanced Process incorpora internamente
una cola, en la que esperan las entidades si el recurso se encuentra ocupado. Sin
embargo, el módulo Seize del panel Blocks no incorpora una cola: es preciso definirla

207
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

explı́citamente, conectando en serie un módulo Queue y un módulo Seize, ambos del


panel Blocks.
Otro ejemplo lo constituyen los bloques Assign de los paneles Basic Process y
Blocks. Cuando se usa el módulo Assign del panel Basic Process y se realiza una
asignación de un nuevo atributo, Arena define automáticamente el atributo y lo
añade a la lista de atributos del modelo. Por el contrario, el módulo Assign del panel
Blocks no define el atributo, únicamente le asigna un valor.
A continuación se describen brevemente algunas otras facilidades proporcionadas
por Arena para la descripción del modelo.

3.5.1. Rechazo (balking)

El término inglés balking se aplica a aquellas situaciones en las cuales se impide


el acceso de una entidad a un proceso.
Consideremos por ejemplo un sistema de atención telefónica. Si todas las lı́neas
se encuentran ocupadas, el cliente recibe la señal de comunicando y debe colgar el
teléfono. Se trata de un sistema en el cual no existe cola. Si hay un recurso disponible,
la entidad puede capturarlo. En caso contrario, la entidad debe abandonar el proceso.
Otro ejemplo serı́a un servicio de lavado de coches, frente al cual se forma una
cola y en el cual se supone que a partir de determinado tamaño de la misma los
clientes que llegan desistirán de ponerse a la cola y abandonarán el sistema.
En general, el balking describe un fallo del sistema en satisfacer las necesidades
de los clientes. Por este motivo, suele ser de interés contar el número de veces que
sucede en la simulación. Cuantas menos veces suceda, mejor.
El módulo Queue del panel Blocks permite definir un tamaño máximo de la
cola. Mientras el tamaño de la cola es igual al máximo permitido, las entidades que
entran en el módulo Queue son inmediatamente obligadas a abandonarlo. El módulo
posee las dos salidas siguientes (se muestra el módulo en la parte izquierda de la
Figura 3.34):

– Una salida para las entidades que abandonan la cola porque el recurso queda
disponible y por tanto van a capturarlo (salida situada en el centro del lado
derecho del módulo). Esta salida se conecta directamente a la entrada de un
módulo Seize del panel Blocks que modela la acción de capturar el recurso. La
conexión se muestra en la parte derecha de la Figura 3.34.

208
MODELADO CON ARENA

Figura 3.34: Módulo Queue del panel Blocks (izqda). Conexión Queue - Seize (drcha).

– Otra salida para las entidades a las que no se permite formar parte de la cola
(salida situada en la base del lado derecho del módulo). Esta salida se conecta
a los bloques que modelan el flujo de las entidades a las que se impide entran
en la cola.

La forma en que funciona la conexión de los módulos Queue - Seize, mostrada


en la parte derecha de la Figura 3.34, es la siguiente. Cuando una entidad llega al
módulo Queue, Arena comprueba en primer lugar el estado del recurso del módulo
Seize. Si el recurso está disponible, entonces no hay entidades esperando en la cola
y la entidad captura el recurso: sale del módulo Queue y entra en el módulo Seize.
Si por el contrario el recurso no está disponible, entonces la entidad trata de entrar
en la cola. Si no hay espacio disponible en la cola, la entidad sale inmediatamente
del módulo Queue por la salida que hay en la base del lado derecho de éste.

3.5.2. Conjuntos de objetos

Los conjuntos son un medio para referirse a objetos del mismo tipo (recursos,
entidades, colas, etc.), que tienen propiedades en común, pero que no son iguales.
Se muestra a continuación un ejemplo de aplicación de este concepto.
Supongamos que los clientes llaman a un servicio de atención telefónica con el fin
de solicitar soporte técnico acerca del producto tipo A o del tipo B. Cinco técnicos
atienden este servicio: los dos primeros están cualificados para responder cuestiones
acerca del producto A, el tercero y el cuarto acerca del producto B, y el quinto
está cualificado para atender consultas referentes a cualquiera de los dos productos.
Puesto que cada cliente accede al servicio con preguntas acerca de un determinado
tipo de producto, el cliente debe capturar un técnico de entre aquellos que están
cualificados para atender cuestiones relativas a este determinado tipo de producto.
Al realizar el modelo, se definen los dos conjuntos de recursos. El conjunto
denominado Grupo A está compuesto por los técnicos 1, 2 y 5. El denominado Grupo
B por los técnicos 3, 4 y 5. Si se requiere un técnico conocedor del producto A, el
recurso debe seleccionarse de entre los miembros del conjunto de recursos Grupo

209
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

A. El recurso deberá seleccionarse del conjunto Grupo B si se precisa un técnico


cualificado para atender las consultas acerca del producto B.
El módulo Set del panel Basic Process y el módulo Advanced Set del panel Advan-
ced Process permiten definir conjuntos. Para ello debe proporcionarse la información
siguiente:

– El nombre del conjunto.

– El tipo de objetos que componen el conjunto: recurso, contador estadı́sticos,


tipo de entidad, etc.

– Los miembros que componen el conjunto.

La diferencia entre los módulos Set y Advanced Set está en el tipo de miembros
que soportan. Los miembros de un conjunto definido en el módulo Set deben ser de
uno de los siguientes tipos: recursos, contadores estadı́sticos (counters), estadı́sticos
de tiempo discreto (tallies), tipos de entidad o iconos gráficos de entidades. El módulo
Advanced Set no impone esta restricción: los miembros de un conjunto pueden ser
de cualquier tipo de objeto de Arena (todos ellos del mismo tipo).
Al definir el recurso sobre el que se realiza la acción Seize, puede indicarse
que el recurso se escoja de entre los miembros de un conjunto. Para ello debe
seleccionarse que el tipo de recurso sea Set. En este caso, debe también especificarse
la regla a seguir cuando, por encontrarse libre, pueda seleccionarse más de un
miembro del conjunto. La elección puede hacerse atendiendo a una de varias posibles
reglas de selección: aleatoriamente, siguiendo un determinado orden de preferencias
preestablecido, de forma cı́clica, etc.

3.5.3. Variables

Una variable representa cierta información que es caracterı́stica del sistema y que
por tanto no está ligada a una determinada entidad, como sucede con los atributos.
Las variables pertenecen al sistema en su conjunto y son accesibles desde cualquier
parte del sistema.
Arena permite que el usuario defina sus propias variables. Las variables se usan
para diferentes propósitos. Por ejemplo, si el tiempo necesario para que una entidad
transite entre procesos es el mismo en diferentes partes del sistema, puede asignarse
este tiempo a una variable y usarla en todos aquellos módulos en los que se hace

210
MODELADO CON ARENA

uso de esta información. De esta forma sólo será necesario cambiar el valor de esta
variable para modificar el tiempo de tránsito en todo el modelo.
Las variables también pueden representar una magnitud que cambia durante la
simulación. Por ejemplo, el número de entidades que se encuentran en determinada
zona del sistema, de modo que la variable se incrementa cada vez que una entidad
entra en la zona y se decrementa cada vez que una entidad sale de la zona.
Las variables pueden almacenar valores reales. También pueden ser vectores
unidimensionales o matrices de dos dimensiones. En el módulo de datos Variable
del panel Basic Process está accesible la información de todas las variables que han
sido definidas en el modelo. La definición de las variables puede realizarse:

– En los módulos Assign del modelo, con lo que Arena automáticamente registra
la información en el módulo Variables.

– En el módulo Variable. Este es el procedimiento a seguir para definir variables


vectoriales y matriciales, y en aquellos casos en que el valor inicial de la variable
deba ser diferente de cero.
La definición de una variable en el módulo de datos Variable se realiza pro-
porcionando la siguiente información:

◦ El nombre de la variable.
◦ Su número de filas (Rows) y columnas (Columns). Si se trata de un valor
numérico, deben dejarse ambos campos en blanco.
◦ Su valor inicial. Si no se especifica, la variable toma por defecto el valor
inicial cero.

3.5.4. Expresiones

Arena permite al usuario definir expresiones. Esto es, asociar un nombre a una
expresión matemática. Cuando este nombre sea referenciado en el modelo, se evalúa
la expresión matemática y se devuelve su valor.
Las expresiones habitualmente se emplean para obtener valores de una distri-
bución o de una ecuación matemática, en la que pueden intervenir distribuciones,
atributos y variables. Cuando una expresión aparece en una sola parte del modelo, es
más cómodo introducirla directamente en el módulo donde se precisa. Sin embargo,
cuando la expresión se usa en varias partes del modelo o cuando la forma de la

211
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

expresión depende del valor de un atributo de una entidad, entonces suele ser más
cómodo emplear una expresión.
El módulo Expressions permite definir las expresiones y sus valores asociados. Al
igual que las variables, las expresiones son referenciadas por su nombre y pueden ser
especificadas como vectores unidimensionales y matrices bidimensionales.

3.5.5. Submodelos

Cuando se desarrollan modelos complejos es conveniente dividir el modelo en


submodelos, los cuales pueden o no interactuar entre sı́. En el primer caso, los
submodelos estará conectados entre sı́ y en el segundo permanecerán aislados dentro
del modelo.
Además de modularmente, Arena permite definir el modelo de manera jerárquica.
Es decir, los submodelos pueden a su vez contener otros submodelos y ası́ sucesi-
vamente. Arena facilita la navegación entre los diferentes submodelos: en la sección
Navigate de la barra del proyecto muestra en forma de árbol la estructura completa
de los submodelos.
Para crear un submodelo, debe seleccionarse la opción Object / Submodel / Add
Submodel. Al hacerlo, el cursor adquiere forma de cruz. Haciendo clic con el botón
izquierdo del ratón sobre la ventana del modelo, se sitúa el submodelo. Haciendo
clic con el botón derecho sobre el icono del submodelo se despliega un menú, en el
que puede seleccionarse:

– Editar las propiedades del submodelo, como son su nombre, el número de pun-
tos de entrada y el número de puntos de salida. Si el submodelo no interactúa
con el resto del modelo, el número de puntos de entrada y de salida es cero.

– Abrir el submodelo, con lo que se desciende un nivel en la jerarquı́a del modelo.


En la pantalla se muestran los puntos de entrada y de salida del submodelo,
y puede definirse el diagrama de módulos que representa el comportamiento
interno del submodelo.

3.5.6. Costes

Arena calcula automáticamente el tiempo y el coste acumulado por cada entidad


en su tránsito por el sistema, distinguiendo entre los costes debidos a cada uno de

212
MODELADO CON ARENA

los cinco conceptos en los que se puede asignar el tiempo: Value Added, Non-Value
Added, Transfer, Wait y Other.
Para obtener estadı́sticas del coste válidas, es preciso introducir la información de
los costes en el modelo. La información básica del coste se introduce en los módulos
de datos Entity y Resource.

3.6. LECTURAS RECOMENDADAS

Se recomienda al lector interesado en profundizar en el manejo de Arena que


consulte la documentación que proporciona la propia herramienta. En particular la
guı́a de usuario y la guı́a de variables.
Gran parte de las explicaciones y los ejemplos mostrados en este tema están
extraı́dos de (Kelton et al. 2002). Se trata de un libro muy didáctico y completo
sobre el manejo de Arena cuya consulta también es muy recomendable. Aparte de
éste, existen otros textos que explican el manejo de Arena mediante una sucesión de
ejemplos. Cabe destacar (Altiok & Melamed 2007).
Finalmente, se recomienda a aquellos lectores interesados en adquirir un cono-
cimiento profundo de Arena que también consulten el texto (Pedgen et al. 1995),
en el cual se describe el manejo del lenguaje de simulación SIMAN, sobre el cual se
fundamenta Arena.

213
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

3.7. EJERCICIOS DE AUTOCOMPROBACIÓN

Ejercicio 3.1

Se pretende estudiar mediante simulación usando Arena el funcionamiento de una


parte de la zona de facturación de la terminal de un aeropuerto. El funcionamiento
del sistema es el siguiente. Cuando los pasajeros llegan a la puerta principal de la
terminal del aeropuerto, se dirigen al mostrador de facturación. Una vez finalizada
la facturación de su equipaje, abandonan el sistema.

– El intervalo de tiempo entre llegadas sucesivas de pasajeros a la puerta princi-


pal está distribuido exponencialmente, con media 1.6 minutos. Los pasajeros
llegan de uno en uno.

– El tiempo que tardan los pasajeros en ir de la puerta principal al mostrador


de facturación está distribuido uniformemente en el intervalo [2, 3] minutos.

– En el mostrador de facturación esperan en una única cola FIFO hasta que uno
de los 5 empleados quede disponible para atenderles.

– El tiempo del proceso de facturación está distribuido (en minutos) Weibull con
parámetros β = 7.76 y α = 3.91.

Los empleados trabajan en turnos de 8 horas. Hay dos turnos por dı́a y en cada
turno trabajan 5 empleados. El horario de cada turno es el siguiente. Los empleados
realizan descansos de 15 minutos de manera escalonada, empezando a los 90 minutos
de entrar en el turno. El descanso para la comida dura 30 minutos y también se hace
de forma escalonada, empezando a las 3 horas y media de haber comenzado el turno.
Al comienzo del dı́a la cola de facturación está vacı́a y los empleados libres. La
condición de finalización es que la duración de la simulación alcance el valor 16 horas,
que es el tiempo diario de funcionamiento del mostrador de facturación.
El objetivo del estudio es estimar el tiempo promedio que pasan los pasajeros
en el sistema, el número de pasajeros que han completado la facturación durante el
tiempo simulado y el número medio de pasajeros que esperan en la cola del mostrador
de facturación.

214
MODELADO CON ARENA

Ejercicio 3.2

Se pretende analizar usando Arena el funcionamiento de la cadena de fabricación


descrita a continuación. Llegan al sistema piezas de dos tipos, denominados tipo A
y B. Las piezas deben primeramente ser procesadas por un operario. Hay un único
operario, que procesa ambos tipos de pieza. Las piezas de cada tipo esperan en su
propia cola FIFO a que este único operario queda libre.
Una vez procesada por el operario, la pieza es sometida a un segundo proceso,
común a los dos tipos de pieza, que es realizado por una máquina. Frente a la
máquina se forma una única cola FIFO, en la cual esperan las piezas de ambos
tipos. Una vez procesadas en la máquina, las piezas abandonan el sistema.
Las piezas llegan al sistema de una en una. En la tabla siguiente se indican las
distribuciones de probabilidad de los intervalos de tiempo entre llegadas y de la
duración de la fase Delay de los procesos. Todos los tiempos están expresados en
horas.

Llegada Proceso 1 Proceso 2


Tipo A LOGN(11.5,2.0) TRIA(5, 6, 8) TRIA(4, 6, 8)
Tipo B EXPO(15) TRIA(3, 7, 8) TRIA(4, 6, 8)

Las distribuciones de probabilidad se han indicado empleando la sintaxis de


Arena: EXPO(β), LOGN(µl , σl ) y TRIA(a, m, b). El parámetro β es la media
de la distribución exponencial. Los parámetros µl y σl de la distribución lognormal
son la media y la desviación estándar de la distribución lognormal. Los parámetros
a y b de la distribución triangular indican el rango de la distribución, [a, b], y el
parámetro m es el valor más probable, denominado moda.
Las condiciones inicial y final de la simulación son las siguientes. Inicialmente el
sistema se encuentra vacı́o y los recursos libres. La condición de finalización es que
el tiempo simulado alcance el valor 5000 horas.
El objetivo del estudio es estimar el tiempo de ciclo de las piezas (sin hacer
distinciones en función de su tipo) y el tamaño de las colas del primer proceso al
cual se somete a cada pieza.

215
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejercicio 3.3

Se desea modelar con Arena el funcionamiento de un restaurante de comida


rápida, en el periodo de tiempo que va desde las 10 AM hasta las 2 PM, que es en
el que se produce una mayor afluencia de clientes. La llegada de clientes se produce
de las tres maneras siguientes:

– Andando. Los clientes llegan de uno en uno, con intervalos entre llegadas
distribuidos exponencialmente, con media 3 minutos. La primera llegada se
produce, a partir de las 10 AM, en un instante aleatorio distribuido EXPO(3)
minutos.

– En coche. El número de clientes que llegan en cada coche puede ser 1, 2, 3 ó


4, con probabilidades 0.2, 0.3, 0.3 y 0.2 respectivamente. Los intervalos entre
llegadas están distribuidos exponencialmente, con media 5 minutos. La primera
llegada se produce, a partir de las 10 AM, en un instante aleatorio distribuido
EXPO(5) minutos.

– En autobús. Cada dı́a llega un único autobús, en un instante aleatorio distri-


buido uniformemente entre las 11 AM y las 1 PM. El número de pasajeros
del autobús varı́a de un dı́a a otro. Se estima que sigue aproximadamente una
distribución de Poisson con media 30 pasajeros.

Una vez en el restaurante, se supone que los clientes operan independientemente


con independencia del medio que hayan empleado para llegar. En primer lugar se
dirigen al mostrador de petición/pago. El tiempo necesario para ir de la puerta
al mostrador de petición/pago está distribuido EXPO(30) segundos. Los clientes
deben esperar en una cola FIFO frente al mostrador a que llegue su turno. Llegado
ese momento, se estima que cada cliente tarda un tiempo distribuido TRIA(1,2,4)
minutos en realizar su petición y un tiempo distribuido TRIA(1,2,3) minutos en
pagarla. Las operaciones de petición y pago son realizadas inmediatamente una tras
otra. Cada cliente es atendido por el mismo empleado en ambas.
A continuación, el cliente se dirige al mostrador de recogida. El tiempo necesario
para ir del mostrador de petición/pago al mostrador de recogida está distribuido
EXPO(30). Frente al mostrador de recogida se forma una cola FIFO. Allı́ el cliente
recoge la comida que ha pedido. El tiempo que transcurre entre que comienza a
ser atendido en dicho mostrador y el instante en que se le entrega la comida está
distribuido uniformemente entre 30 segundos y 2 minutos.

216
MODELADO CON ARENA

Seguidamente, el cliente se dirige al comedor. El tiempo necesario para ir del mos-


trador de recogida al comedor está distribuido EXPO(30) segundos. En el comedor
hay 30 asientos. Los clientes esperan en una cola FIFO a que quede algún asiento
libre. Cuando queda un asiento libre, el cliente se sienta en él. Una vez sentado,
comienza a comer, empleando un tiempo distribuido TRIA(10,20,30) minutos en
terminar su comida. Una vez terminada su comida, el cliente abandona el restau-
rante. Después de comer, el cliente se mueve algo más lentamente, con lo cual tarda
un tiempo distribuido EXPO(1) minuto en ir del comedor a la puerta de salida del
restaurante.
Durante las 4 horas que dura el periodo de tiempo bajo estudio, 6 empleados
atienden el mostrador de petición/pago y otros 2 empleados el mostrador de recogida.
Inicialmente el restaurante está vacı́o y los recursos libres. Se desea simular el
sistema durante las 4 horas que dura el periodo bajo estudio.
El objetivo es estimar la longitud promedio y máxima de cada cola, el tiempo de
espera promedio y máximo en cada cola, y el número total de clientes que abandonan
el restaurante.

217
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejercicio 3.4

Se pretende simular empleando Arena el funcionamiento de un servicio de aten-


ción telefónica automatizado, cuya función es informar al cliente acerca de tres tipos
de producto, que llamaremos A, B y C.
El cliente llama a un número central, que es atendido por 10 lı́neas telefónicas. Si
en ese instante todas las lı́neas se encuentran ocupadas, el cliente debe colgar el telé-
fono (es decir, abandona el sistema). Si alguna de las lı́neas telefónicas se encuentra
libre, el cliente la ocupa y escucha una grabación, en la que se le ofrece la opción
de recibir información sobre uno de los tres tipos de producto. Los clientes escogen
entre las tres opciones A, B y C con probabilidad 0.76, 0.16 y 0.08, respectivamente.
El tiempo empleado en esta actividad está distribuido uniformemente entre 0.1 y
0.6 minutos.
A continuación, el cliente escucha la grabación correspondiente al tipo de pro-
ducto que ha escogido. Durante la grabación, se le pide que introduzca determinados
datos empleando el teclado telefónico. El tiempo que tarda el cliente en completar
la audición de la grabación depende del tipo de producto y de las elecciones que ha
ido haciendo a través del teclado. El tiempo que dura la audición correspondiente
a cada producto está distribuido TRIA(10, 15, 18), TRIA(8, 15, 20) y TRIA(7, 10,
12) minutos, respectivamente.
La sistema de atención telefónica funciona durante 8 horas al dı́a. La frecuencia de
llegada de llamadas se supone constante. El tiempo entre llamadas está distribuido
exponencialmente con media 1 minuto. El tiempo que transcurre entre la apertura
del sistema y la primera llamada también está distribuido exponencialmente con
media 1 minuto.
Se supone que al comenzar el dı́a no hay ninguna llamada en el sistema y los
recursos libres. La condición de finalización es que el tiempo simulado alcance el
valor 8 horas, que es el tiempo que permanece el sistema en funcionamiento cada
dı́a.
El objetivo del estudio es medir el grado de satisfacción de los clientes con el
servicio. Con este fin, se desea estimar el número de clientes que han encontrado
todas las lı́neas ocupadas y que han tenido que colgar sin ser atendidos.

218
MODELADO CON ARENA

Ejercicio 3.5

Se pretende estudiar mediante simulación el funcionamiento de un servicio tele-


fónico que presta soporte técnico sobre tres tipos de producto, que llamaremos 1, 2
y 3. La sistema de atención telefónica funciona once horas al dı́a, desde las 8 AM
hasta las 7 PM.
El cliente accede a este servicio llamando a un número telefónico central, que es
atendido por 26 lı́neas telefónicas. El tiempo entre llamadas sucesivas está distribuido
exponencialmente, con media 1 minuto. El tiempo que transcurre desde las 8 AM
hasta que se recibe la primera llamada también está distribuido EXPO(1) minutos.
Si un cliente llama en un instante en que las 26 lı́neas se encuentran ocupadas,
entonces recibe la señal de comunicando y debe colgar el teléfono. Si, por el contrario,
alguna lı́nea se encuentra libre, entonces el cliente la ocupa y escucha una grabación,
en la que se le pregunta sobre qué producto desea realizar la consulta: 1, 2 ó 3. Esta
actividad requiere un tiempo distribuido uniformemente entre 0.1 y 0.5 minutos. Los
porcentajes de consultas acerca de cada uno de los tres tipos de producto son 25 %,
34 % y 41 %, respectivamente.
En el sistema trabajan 11 técnicos. Sin embargo no todos ellos están cualificados
para responder preguntas sobre los tres tipos de producto. Cada técnico trabaja 8
horas al dı́a y dispone de media hora para comer (no incluida en las 8 horas). En
la siguiente tabla se muestra el horario de trabajo de cada técnico y se indica a qué
tipo de producto puede prestar soporte.

Técnico Tipo de Periodo de tiempo (30 minutos)


núm. producto 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
1 1 • • • • • • • • • • • • • • • •
2 1 • • • • • • • • • • • • • • • •
3 1,3 • • • • • • • • • • • • • • • •
4 1,2,3 • • • • • • • • • • • • • • • •
5 1,2,3 • • • • • • • • • • • • • • • •
6 2 • • • • • • • • • • • • • • • •
7 2 • • • • • • • • • • • • • • • •
8 2 • • • • • • • • • • • • • • • •
9 3 • • • • • • • • • • • • • • • •
10 3 • • • • • • • • • • • • • • • •
11 3 • • • • • • • • • • • • • • • •

219
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Cada cliente necesita soporte técnico acerca de un tipo en particular de producto.


Si un técnico cualificado para ese tipo de producto se encuentra libre, entonces el
cliente es atendido. Si ninguno de los técnicos cualificados para ese producto está
libre, entonces el cliente entra en una cola electrónica, en la que escucha música
hasta que un técnico cualificado para atenderle queda libre.
El tiempo necesario para contestar una pregunta técnica acerca de cualquiera de
los tres tipos de producto está distribuido TRIA(3,6,18), con independencia del tipo
de producto. Una vez contestada la consulta, el cliente abandona el sistema (cuelga
el teléfono).
En el instante inicial de la simulación el sistema se encuentra vacı́o. Es decir, no
hay ninguna llamada en el sistema. La condición de finalización de la simulación es
que la duración de la simulación sea 11 horas, que es el tiempo de funcionamiento
diario del servicio.
Interesa estimar los siguientes estadı́sticos, que miden el grado de satisfacción de
los clientes con el servicio:

– El número de clientes que han encontrado todas las lı́neas ocupadas y que han
tenido que colgar sin ser atendidos.

– En función del tipo de producto acerca del que se realiza la consulta:

◦ El tiempo medio que debe esperar el cliente (escuchando música) para


recibir la atención de un técnico.
◦ Número medio de llamadas en espera de ser atendidas.

Asimismo, se desea conocer la utilización de cada una de los técnicos, a fin de


evaluar su carga de trabajo.

220
MODELADO CON ARENA

3.8. SOLUCIONES DE LOS EJERCICIOS

Solución al Ejercicio 3.1

El diagrama de módulos se muestra en la Figura 3.35. Está compuesto de un


módulo Create, dos módulos Process y un módulo Dispose.

Figura 3.35: Diagrama de módulos del modelo.

La llegada de pasajeros a la puerta principal de la terminal se representa mediante


un módulo Create. A continuación, los pasajeros deben ir desde la entrada hasta
el mostrador, lo cual se modela mediante un módulo Process con acción Delay.
Seguidamente, los pasajeros entran en el proceso de facturación, que se representa
mediante un segundo módulo Process. Cada pasajero debe capturar un empleado
(Seize), esperar el tiempo necesario para que se realice la facturación de su equipaje
(Delay) y seguidamente liberar al empleado (Release). Finalmente los pasajeros
abandonan el sistema, lo cual se modela mediante un módulo Dispose.
Circula un único tipo de entidad por el sistema: el pasajero. En la Figura 3.36
se muestra la definición del módulo Create, en la cual se declara el tipo de entidad
y su proceso de llegada. El nombre asignado al tipo de la entidad (Entity Type) es
“pasajero”.

Figura 3.36: Definición del tipo de entidad y de su proceso de llegada.

221
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.37: Módulo que describe el tránsito de la puerta al mostrador.

Figura 3.38: Definición del proceso de facturación.

222
MODELADO CON ARENA

El tránsito de las entidades desde la puerta de la terminal al mostrador de


facturación se modela mediante un bloque Process con acción Delay. Este tipo de
acción no precisa recurso. La definición del proceso se muestra en la Figura 3.37.
La facturación se modela mediante un bloque Process con acción Seize-Delay-
Release, tal como se muestra en la Figura 3.38. Está acción precisa de un recurso,
al que se ha asignado el nombre “empleado”. El número de unidades del recurso
(empleado) que captura cada entidad (pasajero) es igual a uno, por ello en la casilla
Quantity se escribe el valor uno.
La capacidad del recurso varı́a con el tiempo siguiendo una determinada planifi-
cación. Debe definirse la planificación y asignarse dicha planificación a la capacidad
del recurso, tal como se muestra en la Figura 3.39.

– En la columna Type del módulo de datos Resource debe indicarse “Based on


Schedule”. Asimismo, debe asignarse un nombre a la planificación y definir
la regla a seguir en los instantes de reducción de la capacidad. Se asigna
a la planificación el nombre “turnos”. En este caso, la regla seleccionada es
Ignore, ya que los empleados terminan de atender al cliente antes de iniciar su
descanso, reduciéndose en consecuencia la duración del mismo.

– La planificación se define en el módulo de datos Schedule. Haciendo clic sobre


la casilla Durations se abre la ventana donde puede definirse de forma gráfica
la evolución en el tiempo de la capacidad. Pulsando el botón Options se abre
una ventana, donde puede escogerse la unidad de tiempo y también cómo
proceder una vez transcurridas las horas mostradas en la gráfica (When at end
of schedule). Por comodidad, la unidad de tiempo escogida para describir la
planificación ha sido el cuarto de hora (Quarterhours). Dado que la planifica-
ción es igual en los dos turnos, debe seleccionarse “Repeat from beginning”. La
evolución de la capacidad a lo largo de un turno de 8 horas es la siguiente:

• El turno de descanso dura 15 minutos, y comienza a los 90 minutos de


iniciado el turno. Por consiguiente, entre el minuto 90 y el 90+5·15 = 165,
la capacidad del recurso es 4. Ası́ pues, durante los 6 primeros cuartos
de hora la capacidad es 5, y durante los 5 siguientes cuartos de hora, la
capacidad es 4.
• El descanso para la comida comienza a las 3 horas y media (14 cuartos
de hora) de iniciado el turno, y se prolonga durante 10 cuartos de hora,
tiempo durante el cual la capacidad del recurso es 4. La capacidad durante
los 8 cuartos de hora restantes es 5.

223
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.39: Planificación de la capacidad del recurso.

224
MODELADO CON ARENA

Figura 3.40: Definición del experimento.

Se pretende realizar una única réplica de la simulación, con una duración de 16


horas. La unidad de tiempo base es el minuto. Dado que el mostrador de facturación
funciona durante 16 horas al dı́a, se considera que el dı́a consta de 16 horas. La
definición del experimento se muestra en la Figura 3.40. En la Figura 3.41 se muestra
el estado final del sistema tras la simulación.

Figura 3.41: Estado final del modelo.

Consultando el fichero .out que contiene el informe de los resultados de la si-


mulación puede observarse que el tiempo promedio de los pasajeros en el sistema
(pasajero.TotalTime) son 17.560 minutos, el número de pasajeros que han completa-
do la facturación durante el tiempo simulado (facturacion Number Out) ha sido 587
y el número medio de pasajeros que esperan en la cola del mostrador de facturación
(facturacion.Queue.NumberInQueue) es 5.1949.

225
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 3.2

En la Figura 3.42 se muestra el diagrama de módulos, con los módulos ya


parametrizados. Se modela separadamente el proceso de llegada de cada tipo de
pieza y el primer proceso. Circulan en el sistema dos tipos de entidad, que llamaremos
“piezaA” y “piezaB”. En la Figura 3.43 se muestra la definición de los dos procesos
de llegada y de los dos tipos de entidad.

Figura 3.42: Diagrama de módulos.

Figura 3.43: Procesos de llegada de las piezas tipo piezaA y piezaB.

Los dos módulos Assign y el módulo Record se emplean para estimar el tiempo
de ciclo de las piezas. Arena calcula automáticamente el tiempo de ciclo de cada tipo
de entidad (piezaA.TotalTime y piezaB.TotalTime). Sin embargo, se desea calcular
el tiempo de ciclo medio de todas las piezas, con independencia de su tipo. Para
realizar ese cálculo se va a declarar un atributo llamado “tLlegada” en ambos tipos
de pieza, al cual se asigna en los módulos Assign el valor del reloj de la simulación,
TNOW. En el módulo Record se calcula el tiempo de ciclo de cada entidad. La
definición de los módulos se muestra en la Figura 3.44.

226
MODELADO CON ARENA

Figura 3.44: Módulos Assign y Record para calcular el tiempo de ciclo.

El mismo operario realiza el primer proceso a los dos tipos de pieza. Se ha


empleado un módulo Process diferente para describir el primer proceso de cada
tipo de pieza. Cada módulo tiene su propia cola FIFO, con lo cual frente al operario
se forman dos colas. Cuando el operario queda libre y las dos colas FIFO tienen
entidades, el criterio que aplica Arena para decidir qué pieza captura el recurso es
el siguiente: captura el recurso la entidad de las dos colas que lleva más tiempo
esperando en su cola. Ası́ pues, el comportamiento de las dos colas FIFO frente a
un mismo recurso es equivalente al de una única cola FIFO frente al recurso. A
consecuencia de ello, en este modelo las entidades abandonan el sistema en el mismo
orden en que llegaron a él.
En las Figuras 3.45 y 3.46 se muestra la definición de los tres procesos. En
el propio módulo Process se definen las acciones realizadas por la entidad. Para
las acciones Seize y Release, debe especificarse qué tipo de recurso es capturado o
liberado, y cuántas unidades de la capacidad del recurso son capturadas o liberadas
por cada entidad. Para la acción Delay, debe especificarse su duración. El sistema
tiene dos recursos: “operario” y “maquina”. La capacidad de los recursos se define en

227
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.45: Definición del proceso 1 para los dos tipos de pieza.

228
MODELADO CON ARENA

Figura 3.46: Definición del proceso 2 y los recursos.

229
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.47: Definición del experimento.

Figura 3.48: Estado del modelo al finalizar la simulación.

el módulo de datos Resource. En ambos casos es constante e igual a uno (Type =


Fixed Capacity, Capacity = 1).
El experimento se define de la forma mostrada en la Figura 3.47. Ejecutando la
simulación, se obtienen el estado final mostrado en la Figura 3.48. Los resultados
del estudio son los siguientes:

Identifier Average Half Width Minimum Maximum Observations


Tiempo de ciclo 25.906 4.0279 9.6143 60.683 738
piezaA.TotalTime 24.828 3.6344 9.6143 56.686 431
piezaB.TotalTime 27.420 (Insuf) 10.141 60.683 307

Identifier Average Half Width Minimum Maximum


Proceso1 piezaA.Queue.NumberInQueue .97822 (Corr) .00000 4.0000
proceso1 piezaB.Queue.NumberInQueue .83466 .24241 .00000 6.0000

230
MODELADO CON ARENA

Solución al Ejercicio 3.3

El diagrama de módulos se muestra en la Figura 3.49. Está compuesto por


módulos Create, Process y Dispose del panel Basic Process.

Figura 3.49: Diagrama de módulos del modelo del restaurante.

Se define un único tipo de entidad, a la que se ha llamado “cliente”. Se emplean


tres módulos Create para describir las tres formas de llegada de los clientes: andando,
en coche y en autobús. La configuración de los módulos se muestra en la Figura 3.50.
Los tres procesos de llegada se han modelado de la forma siguiente:

– Llegada andando. El tiempo que transcurre entre llegadas sucesivas (Time Bet-
ween Arrivals) está distribuido EXPO(3) minutos. Los clientes llegan de uno
en uno (Entities per Arrival = 1). El instante en que llega la primera entidad
(First Creation) es una observación de la distribución EXPO(3) minutos.

– Llegada en coche. El tiempo que transcurre entre llegadas sucesivas (Time


Between Arrivals) está distribuido EXPO(5) minutos. Las entidades llegan en
grupos. El tamaño del grupo se especifica en la casilla “Entities per Arrival”.
La sintaxis de Arena para describir distribuciones discretas es
DISC(Prob1, Valor1, Prob2, Valor2, . . . )
donde Prob1, Prob2, . . . es la probabilidad acumulada asociada a los valores
Valor1, Valor2, . . . En este modelo, la distribución de probabilidad del número
de clientes que llegan en cada coche se representa
DISC(0.2, 1, 0.5, 2, 0.8, 3, 1.0, 4)

231
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.50: Procesos de llegada de entidades del tipo cliente.

232
MODELADO CON ARENA

– Llegada en autobús. El autobús llega una única vez al dı́a, en un instante


uniformemente entre el minuto 90 y el 180 a partir del inicio de la simulación.
El instante de llegada es el instante de creación de la primera entidad (First
Creation). Una vez creada esa entidad, ya no se crean más entidades (Max Arri-
vals = 1). Se asigna al tiempo entre llegadas sucesivas (Time Between arrivals)
un valor arbitrariamente grande (Type = Constant, Value = 99999999999).

En los cuatro procesos de tránsito la acción es Delay. El tiempo que dura la


acción está distribuido EXPO(0.5) minutos en los tres primeros y EXPO(1) minutos
en el cuarto. Por ejemplo, en la Figura 3.51 se muestra la definición del módulo que
describe el tránsito de la puerta al mostrador.

Figura 3.51: Tránsito de la puerta al mostrador.

El cliente solicita la comida a un empleado del restaurante y a continuación


paga a ese mismo empleado. La acción del proceso de petición es Seize-Delay. La
entidad abandona el proceso “Peticion” con una unidad del recurso capturada. A
continuación, la entidad entra en el proceso Pago, en el cual realiza las acciones
Delay-Release. En la Figura 3.52 se muestra la definición de ambos procesos.
En la Figura 3.53 se muestra la definición de los módulos Process que describen
la recogida de la comida, y sentarse y comer. La acción que realiza la entidad en el
proceso de recogida de la comida es Seize-Delay-Release.

233
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.52: Procesos de petición y pago de la comida. La entidad captura una unidad del recurso
en el primer proceso (Seize-Delay) y la libera en el segundo proceso (Delay-Release).

234
MODELADO CON ARENA

Figura 3.53: Procesos de recogida de la comida, y de sentarse y comer.

235
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.54: Definición de los recursos en el módulo Resource.

Figura 3.55: Definición del experimento.

Para poder comer, la entidad necesita capturar un asiento en el comedor. El


recurso asiento tiene una capacidad igual a 30. De estas 30 unidades de capacidad,
cada entidad sólo captura una. La capacidad de los recursos se define en el módulo
de datos Resource, tal como se muestra en la Figura 3.54.
El experimento se define tal como se muestra en la Figura 3.55. Se simula
el sistema durante 4 horas (Replication Length = 4, Time Units = Hours), que
es la duración del periodo bajo estudio. Se realiza una única réplica (Number of
Replications = 1), tomando el minuto como unidad base de la simulación (Base
Time Units = Minutes). Ejecutando la simulación, en el fichero .out se obtienen
los estadı́sticos pedidos en el enunciado. Para poder sacar conclusiones acerca del
funcionamiento del sistema, serı́a necesario realizar varias réplicas de la simulación.
Esto se explicará con detalle en los temas siguientes.

236
MODELADO CON ARENA

Solución al Ejercicio 3.4

En la Figura 3.56 se muestra el diagrama de módulos. Se ha empleado el módulo


Queue del panel Blocks para representar la cola con balking. Se han empleado los
bloques Seize y Delay del panel Blocks para representar las acciones de capturar una
de las lı́neas telefónicas y escuchar la primera grabación. Debe emplearse el módulo
Seize del panel Blocks, no el del panel Advanced Process, ya que éste último trae
automáticamente incorporada una cola que no permite modelar el balking.

Figura 3.56: Diagrama de módulos del servicio de atención telefónica.

Se define un único tipo de entidad, al que se ha denominado “llamada”. En la


Figura 3.57 se muestra el módulo Create que describe de llegada de llamadas. El
tiempo transcurrido entre llegadas sucesivas de llamadas y el instante de llegada
de la primera llamada están distribuidos EXPO(1) minutos. Las llamadas llegan al
sistema de una en una.
El sistema tiene un único recurso, cuya capacidad es constante e igual a 10.
El nombre asignado a este recurso ha sido “linea telefonica”. En el bloque Seize la
entidad captura una unidad de capacidad del recurso. La cola representada por el
bloque Queue tiene una capacidad igual a cero, ya que si toda la capacidad del
recurso está ocupada (las 10 lı́neas telefónicas están ocupadas) la llamada entrante
no espera, sino que abandona el sistema.
En el módulo Queue debe indicarse el nombre de la cola (Queue ID) y definirse
su capacidad máxima (Capacity), que en este caso es igual a cero. Cuando en los
módulos del panel Blocks se hacer referencia a un nuevo objeto, como en este caso la
cola, Arena no define automáticamente el objeto. Es preciso definirlo explı́citamente
en el módulo de datos correspondiente. En este caso, debe definirse la cola en el
módulo de datos Queue, del panel Basic Process.

237
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.57: Llegada de llamadas al sistema.

En el módulo Seize debe indicarse a qué concepto (Allocation) se asigna el tiempo


de espera en cola. En este caso el concepto es Wait. También debe indicarse el
nombre del recurso capturado, que es “linea telefonica”, y la capacidad capturada
(Number of units), que es una. Arena no define un nuevo recurso por el hecho de
hacer referencia a él desde un módulo Seize del panel Blocks. Es preciso definir el
recurso en el módulo de datos Resource, del panel Basic Process. Al definirlo, se
asigna al recurso una capacidad fija, igual a 10.
En el módulo Delay del panel Blocks debe indicarse la distribución de proba-
bilidad del tiempo que dura la acción, que en este modelo es UNIF(0.1,0.6), y el
concepto (Allocation) al cual se desea asignar este tiempo. Se escoge en este caso
ValueAdded. En la Figura 3.58 se muestra la definición de los tres bloques del panel
Blocks, del recurso y de la cola.
En el bloque Decide, del panel Basic Process, el flujo de las entidades se divide
en tres posibles caminos. Tal como se muestra en la Figura 3.59, el tipo (Type) de
decisión es “N-way by chance”. En la casilla Percentages se indican los porcentajes
de probabilidad de que la entidad salga por el primer camino y por el segundo. El
porcentaje restante hasta el 100 % corresponde al tercer camino.
En la Figura 3.60 se muestra el módulo Process del panel Basic Process que
describe la escucha de la grabación correspondiente al producto A. La entidad tiene
ya capturado el recurso, con lo cual las acciones del proceso son Delay-Release.
Las llamadas perdidas fluyen por la salida situada en la parte inferior derecha
del módulo Queue y se dirigen a un módulo Dispose del panel Basic Process, que
representa su salida del sistema.

238
MODELADO CON ARENA

Figura 3.58: Bloques Queue, Seize y Delay del panel Blocks, y definición de la cola y el recurso
en los bloques de datos Queue y Resource del panel Basic Process.

239
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.59: Bloque Decide con tres salidas para el flujo de entidades.

Figura 3.60: Escuchar la información del producto A y colgar el teléfono.

Figura 3.61: Módulo Record para contabilizar las llamadas perdidas.

240
MODELADO CON ARENA

Figura 3.62: Definición del experimento.

Figura 3.63: Estado del modelo al finalizar la simulación.

Dado que se desea contabilizar el número de llamadas perdidas, es necesario


insertar un módulo Record antes del módulo Dispose. El módulo Record se configura
de manera que defina un estadı́stico del tipo (Type) Count. La cantidad en que
debe incrementarse el estadı́stico (Value) con el paso de cada entidad es 1. En la
Figura 3.61 se muestra la definición del módulo.
El experimento se define de la forma indicada en la Figura 3.62. Realizando una
única réplica de la simulación, de 8 horas de duración, se obtiene que de las 476
llamadas que han abandonado el sistema, 181 no han sido atendidas. Es decir, casi
el 40 % de las llamadas. En la Figura 3.63 puede verse cuál es el estado del modelo
al finalizar la simulación.

241
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 3.5

En la Figura 3.64 se muestra el diagrama de módulos del modelo. La primera


parte del modelo, hasta el módulo de decisión, es conceptualmente igual a la del
Ejercicio 3.4. El tipo de entidad generada en el módulo Create se ha denominado
“llamada”. La entidad captura en el bloque Seize una unidad de capacidad del recurso
“linea telefonica”, cuya capacidad es 26. La capacidad del recurso de define en el
módulo Resource, del panel Basic Process (véase la primera fila en la Figura 3.65).

Figura 3.64: Diagrama de módulos del servicio telefónico de soporte técnico.

Las entidades que salen por cualquiera de las tres ramas del módulo de decisión
tienen ya capturada una unidad del recurso “linea telefonica”. Ahora necesitan,
además, capturar a un técnico cualificado. Esta acción puede modelarse mediante
un bloque Seize del panel Advanced Process, el cual lleva internamente incorporada
una cola. A continuación, la entidad realiza la acción Delay (mientras el técnico
proporciona la información), y seguidamente la acción Release, liberando los 2
recursos que tiene capturados: la lı́nea telefónica y el técnico. Finalmente, la entidad
abandona el sistema.
Cada uno de los 11 técnicos se modela como un recurso, cuya capacidad está
planificada de acuerdo a su horario de trabajo. La capacidad de cada técnico es
1 durante su turno de trabajo y 0 durante el tiempo previsto para la comida y
durante las horas del dı́a en las que no trabaja. Los 11 recursos, llamados “tecnico1”
. . . “tecnico11”, se definen en el módulo de datos Resource (véase la Figura 3.65).
Las correspondientes once planificaciones se definen en el módulo de datos Schedule.
La regla escogida para las planificaciones es Ignore.
Dado que el sistema funciona durante 11 horas al dı́a, en la definición del expe-
rimento (véase la Figura 3.70) debe indicarse que el dı́a tiene 11 horas (Hours Per
Day = 11).

242
MODELADO CON ARENA

Figura 3.65: Definición de los recursos.

Figura 3.66: Planificación de la capacidad de los recursos.

243
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Al definir en el módulo Schedule las planificaciones resulta útil escoger la media


hora (halfhours) como unidad de tiempo (Time Units) para las duraciones (Du-
rations). La definición de las duraciones debe hacerse indicando explı́citamente la
capacidad a lo largo de las 11 horas del dı́a. Por ejemplo, la ventana de diálogo de la
planificación “turno1” se muestra en la parte derecha de la Figura 3.66. Es necesario
indicar que la capacidad de este recurso es cero durante los últimos 5 periodos
de media hora del dı́a. En caso contrario, si se deja sin especificar la capacidad
en ese periodo, Arena comenzarı́a a repetir, a partir del periodo de tiempo 18, la
planificación de nuevo desde el principio.
A continuación se definen los siguientes 3 conjuntos, cada uno compuesto por los
técnicos que están capacitados para atender consultas de uno de los tres productos.

Número de técnico
1 2 3 4 5 6 7 8 9 10 11
grupo1 • • • • •
grupo2 • • • • •
grupo3 • • • • • •

El propósito de definir los conjuntos es especificar cuáles son los recursos de


cada uno de los módulos Seize conectados en las salidas del módulo Decide. Ası́,
los recursos del módulo Seize conectado a la salida con porcentaje 25 % son los
miembros del conjunto “grupo1”. Es decir, las llamadas que hacen referencia al tipo
de producto 1, sólo pueden ser atendidas por los recursos miembros del conjunto
“grupo1”. Análogamente, los recursos del módulo Seize conectado a la salida con
porcentaje 34 % son los miembros del conjunto “grupo2”. Igualmente, los recursos
del módulo Seize conectado a la salida Else del módulo Decide son los miembros del
conjunto “grupo3”.
Los conjuntos se definen en el módulo de datos Set, que se encuentra en el panel
Basic Process. En la Figura 3.67 se muestra la definición de los tres conjuntos de este
modelo. En la parte derecha de la figura se muestra en qué orden se han definido los
elementos del conjunto “grupo2”. El orden en el que se han definido los miembros de
los conjuntos es tal que aquellos técnicos que están capacitados para atender más
de un producto son listados en último lugar. El orden es el siguiente:

grupo1 tecnico1 tecnico2 tecnico3 tecnico4 tecnico5


grupo2 tecnico6 tecnico7 tecnico8 tecnico4 tecnico5
grupo3 tecnico9 tecnico10 tecnico11 tecnico3 tecnico4 tecnico5

En la Figura 3.68 se muestra la definición del módulo Seize correspondiente a


los productos del tipo 1. Para definir cada uno de los tres módulos Seize del panel

244
MODELADO CON ARENA

Figura 3.67: Definición de los conjuntos.

Figura 3.68: Seize (Advanced Process) que describe consultas de productos tipo 1.

Advanced Process, debe indicarse el nombre (Name) que se desea dar al módulo, el
concepto (Allocation) al cual se desea asignar el tiempo de espera en cola, y el tipo
de la cola (Queue type) y su nombre (Queue Name). En la definición del recurso
debe indicarse:

– El tipo (Type) de recurso, que es Set por tratarse de un conjunto.

– El nombre del conjunto (Name) y el número de unidades de capacidad (Quan-


tity) que capta la entidad.

– La regla que debe seguirse para seleccionar el miembro del conjunto (Selection
Rule) cuando existan varias posibles opciones. En este caso se escoge “Preferred
order”, que indica que debe tenerse en cuenta el orden en el que se han definido
los miembros del conjunto y escogerse el primero de la lista que se encuentre

245
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 3.69: Release (Advanced Process) tras consulta de productos tipo 1.

Figura 3.70: Definición del experimento.

246
MODELADO CON ARENA

libre. De esta forma, se favorece que se ocupen en primer lugar aquellos técnicos
cualificados para un menor número de productos.

– A la hora de liberar al técnico en el módulo Release, será necesario saber


qué técnico en concreto tiene capturada la entidad. El ı́ndice del miembro del
conjunto que ha capturado la entidad se almacena en un atributo de la entidad
cuyo nombre debe indicarse en la casilla “Save Attribute”.

Una vez la entidad ha capturado a un técnico, entra en un módulo Delay y


permanece en el módulo durante un tiempo distribuido TRIA(3,6,18) minutos. A
continuación, la entidad entra en el módulo Release, donde la entidad libera al
técnico y la lı́nea telefónica. En la Figura 3.69 se muestra la definición del módulo
Release para las consultas referentes al producto tipo 1. Obsérvese que al liberar el
técnico debe especificarse cuál es el miembro del conjunto que se libera. Para ello,
en la casilla “Set Index” debe indicarse el nombre del atributo de la entidad que
contiene esa información. En este caso es el atributo “Indice del tecnico”.
La definición del experimento se muestra en la Figura 3.70. El fichero .out gene-
rado por Arena contiene la información para contestar a las preguntas planteadas
en el enunciado del ejercicio.

247
TEMA 4

MODELADO DE LAS ENTRADAS ALEATORIAS

4.1. Introducción
4.2. Conceptos básicos de probabilidad
4.3. Distribuciones de probabilidad
4.4. Independencia y homogeneidad de los datos
4.5. Tarea I: Selección de la familia de distribuciones
4.6. Tarea II: Estimación de los parámetros
4.7. Tarea III: Medida de la bondad del ajuste
4.8. Selección de la distribución en ausencia de datos
4.9. Procesos estocásticos de llegada
4.10. Modelado de las entradas usando Arena
4.11. Modelado de las entradas usando R
4.12. Lecturas recomendadas
4.13. Ejercicios de autocomprobación
4.14. Soluciones de los ejercicios
MODELADO DE LAS ENTRADAS ALEATORIAS

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Discutir qué es una variable aleatoria, qué son su densidad de probabilidad


y su probabilidad acumulada, qué son los cuantiles, la mediana, la media, la
varianza y la desviación estándar, y cómo se calculan los estimadores de la
media y la varianza de un conjunto de datos. Construir intervalos de confianza
para la media y la varianza.

– Discutir qué técnicas pueden emplearse, cuando se dispone de un conjunto de


muestras experimentales de una variable aleatoria de entrada, para generar
observaciones de dicha variable con las que alimentar el modelo.

– Reconocer algunas de las distribuciones teóricas continuas y discretas más


comunes.

– Construir distribuciones empı́ricas a partir de datos experimentales. Desplazar


y truncar distribuciones.

– Discutir técnicas para el análisis de la independencia y homogeneidad de los


datos.

– Seleccionar la familia de distribuciones teóricas que mejor se ajusta a un


conjunto de datos, empleando para ello consideraciones teóricas, estadı́sticos
de los datos, histogramas y gráficas cuantil-cuantil.

– Discutir los principios en los que se basa el cálculo de los estimadores de


máxima verosimilitud de los parámetros de las distribuciones teóricas continuas
y discretas.

– Aplicar técnicas gráficas para medir la bondad del ajuste a los datos de una dis-
tribución de probabilidad. Discutir los fundamentos de los tests chi-cuadrado
y de Kolmogorov-Smirnov.

– Discutir técnicas para la selección de las distribuciones en ausencia de datos.

– Discutir qué es un proceso de Poisson estacionario, no estacionario y compues-


to. Modelar procesos estocásticos de llegada.

– Realizar análisis y modelos sencillos de los datos usando Arena y R.

251
MODELADO DE LAS ENTRADAS ALEATORIAS

4.1. INTRODUCCIÓN

Los modelos descritos en el Tema 3 son de tipo estocástico: los tiempos entre
llegadas sucesivas de las entidades, los tiempos de proceso, los tiempos entre fallos
y la duración de estos, etc. obedecen determinadas distribuciones de probabilidad.
También, en los puntos de decisión del flujo de entidades, las entidades siguen con
una cierta probabilidad un camino u otro a través del sistema. Especificar cómo
están distribuidas las entradas aleatorias forma parte de la descripción del modelo.
Al ejecutar la simulación, Arena va generando observaciones independientes de estas
distribuciones y con estas observaciones va “alimentando” el modelo.
Modelar adecuadamente las entradas aleatorias al modelo es tan importante para
el éxito del estudio como lo son la construcción del modelo o el posterior análisis
de los resultados. Decidir que una entrada al modelo está distribuida de acuerdo
a una determinada distribución de probabilidad es una hipótesis de modelado que
se realiza basándose en consideraciones teóricas, datos medidos del sistema, etc.
Aunque la estructura del modelo sea válida, si las hipótesis acerca de las entradas
aleatorias no son correctas, entonces los resultados obtenidos de la simulación no
serán correctos y las decisiones tomadas en base a ellos serán erróneas.
La recogida de los datos experimentales del sistema es a menudo una de las tareas
más costosas y delicadas en el proceso de modelado. Una vez se dispone de muestras
experimentales de una variable aleatoria de entrada, pueden aplicarse básicamente
las tres técnicas descritas a continuación.

– Usar directamente los datos en la simulación. Por ejemplo, si los datos


representan el tiempo entre fallos de una máquina, entonces se usa uno de
estos datos cada vez que se necesita un intervalo entre fallos en la simulación.

– Definir una distribución de probabilidad empı́rica a partir de los


datos experimentales. Por ejemplo, si los datos representan el tiempo entre
fallos, se muestreará de esta distribución cuando se necesite un tiempo entre
fallos en la simulación.

– Ajustar los datos experimentales a una distribución teórica. El proceso


de ajuste consta tı́picamente de las tres tareas siguientes:
Tarea I Selección de la familia de distribuciones.
Tarea II Estimación de los parámetros de la distribución.
Se calcula qué valor de los parámetros de la familia de distri-
buciones proporciona el mejor ajuste a los datos. Con ello, se
selecciona una única distribución de la familia de distribuciones.

253
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Tarea III Medida de la bondad del ajuste.


Pretende cuantificar en qué medida la distribución ajustada
reproduce los datos experimentales.

El procedimiento comúnmente más aceptado consiste en tratar en primer lugar


de modelizar la probabilidad de la variable de entrada mediante una distribución
teórica, recurriendo a las distribuciones empı́ricas sólo como último recurso. Algunos
de los motivos por los que puede ser preferible usar una distribución teórica, en lugar
de una empı́rica, son los siguientes:

– La forma de las distribuciones empı́ricas puede ser considerablemente irregu-


lar, particularmente cuando se dispone de un número pequeño de datos. Sin
embargo, en ocasiones la naturaleza del fenómeno que se está modelando no
justifica estas irregularidades, que más bien son debidas a la propia naturaleza
aleatoria de la recogida de datos del sistema. En estos casos puede ser preferible
modelar el fenómeno “suavizando” los datos, mediante una distribución teórica.

– En aquellos casos en que existan fundamentos teóricos para modelar deter-


minado fenómeno usando una determinada familia teórica de distribuciones,
suele ser recomendable usar ese tipo de distribución teórica ajustada a los datos
experimentales. No hay que olvidar que los datos experimentales recogidos son
en sı́ aleatorios, con lo cual una distribución empı́rica obtenida a partir de un
conjunto de observaciones puede diferir mucho de la obtenida a partir de otro
conjunto de observaciones del mismo proceso.

– Las distribuciones teóricas son una forma compacta de representar los datos.
Por el contrario, si se dispone de n valores experimentales, la distribución
empı́rica está definida mediante 2 · n valores: los datos y las correspondientes
probabilidades acumuladas. Si el conjunto de datos es grande, el almacena-
miento de los datos puede ser una dificultad añadida.

Existen situaciones en que ninguna distribución teórica proporciona un ajuste


adecuado a los datos. En estos casos suele ser preferible modelar la entrada aleatoria
empleando una distribución empı́rica, construida a partir de los datos experimen-
tales, en lugar de usar directamente los datos experimentales. Esta última técnica
presenta fundamentalmente dos desventajas. La primera es que la simulación sólo
puede reproducir lo que ha sucedido históricamente. La segunda es que raramente se
dispone del número de datos suficiente para realizar todas las réplicas independientes
de la simulación que requiere el estudio.

254
MODELADO DE LAS ENTRADAS ALEATORIAS

A pesar de lo anterior, en determinadas fases de la validación del modelo sı́ es


aconsejable emplear directamente los datos experimentales obtenidos del sistema
real. Supongamos, por ejemplo, que se desea validar el modelo de una oficina. El
objetivo del estudio es estimar el tiempo medio de espera de los clientes en una cierta
franja horaria de máxima actividad. Se dispone de datos medidos en el sistema real
de los intervalos entre llegadas de los clientes y de los tiempos de servicio, ası́ como
observaciones experimentales del tiempo medio de espera. Para validar el modelo
puede ser útil emplear durante la simulación los datos medidos de los intervalos
entre llegadas y de los tiempos de servicio. Con ello se consigue que las entradas del
modelo simulado sean iguales a los correspondientes valores medidos en el sistema
real. De este modo puede compararse más fielmente el comportamiento del modelo y
del sistema real. La comparación puede realizarse empleando las técnicas estadı́sticas
para la comparación de dos sistemas que se describirán en el Tema 6.
En este tema se ofrece una introducción al modelado de las entradas aleatorias.
El orden seguido en la exposición es el siguiente.

1. Se repasan algunos conceptos básicos de probabilidad y de las distribuciones


de probabilidad teóricas más comúnmente empleadas, y se muestra cómo
definir distribuciones empı́ricas. También, se explica cómo desplazar y truncar
distribuciones.

2. Se describen métodos estadı́sticos para contrastar la independencia y la homo-


geneidad de los datos experimentales.

3. Las tres siguientes secciones están dedicadas a la descripción de las tareas


propias del ajuste de distribuciones teóricas a los datos experimentales: la
selección de la familia de distribuciones, la estimación de los parámetros y la
medida de la bondad del ajuste realizado.

4. Se exponen algunas consideraciones que pueden ser útiles para seleccionar las
distribuciones de entrada cuando no se dispone de datos del sistema.

5. Se describen algunos modelos probabilı́sticos de la llegada de las entidades al


sistema.

6. Finalmente, se muestra cómo emplear Arena y el lenguaje R para seleccionar


las distribuciones de probabilidad de entrada del modelo.

255
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.2. CONCEPTOS BÁSICOS DE PROBABILIDAD

La aplicación de conocimientos de probabilidad y estadı́stica es necesaria en dis-


tintas fases de un proyecto de simulación en el cual se empleen modelos estocásticos.
Algunas de estas fases son la selección de las distribuciones de las entradas de la
simulación, la generación de variables aleatorias de acuerdo con estas distribuciones,
la validación de los modelos estocásticos, el análisis estadı́stico de los resultados de la
simulación y el diseño de los experimentos a realizar sobre el modelo. En esta sección
se repasan algunos conceptos básicos de probabilidad sobre los cuales se asientan las
explicaciones dadas en este tema y los siguientes.

4.2.1. El significado de “probabilidad”

Existen varias definiciones del concepto de probabilidad. La definición clásica


es la siguiente. La probabilidad de un evento A es un número, que representaremos
Prob {A} y que puede calcularse de la manera siguiente:

NA
Prob {A} = (4.1)
N
donde N es el número de posibles resultados del experimento y NA es el número de
estos resultados que producen el evento A.
En el experimento consistente en lanzar una moneda, los resultados posibles
son {“cara”, “cruz”}, con lo cual hay una probabilidad 0.5 de obtener “cara” y una
probabilidad 0.5 de obtener “cruz”.
Sin embargo, esta definición sólo es válida cuando el número de casos posibles es
finito y además todos ellos son equiprobables. Por ejemplo, serı́a erróneo calcular la
probabilidad de que ocurra un accidente de avión de la forma siguiente. Los casos
posibles son {“Accidente”, “No accidente”}, con lo cual la probabilidad de que ocurra
el accidente es 0.5.
Obsérvese también que al afirmar que “la definición clásica de probabilidad es
sólo aplicable cuando todos los eventos posibles son igualmente probables”, se está
empleando en la definición el concepto definido. Este aparente error conceptual se
salva mediante la aplicación de un principio denominado de razón insuficiente, que
dicta que cuando no se posee ningún conocimiento a priori, se debe asumir que los
posibles resultados del experimento son equiprobables.

256
MODELADO DE LAS ENTRADAS ALEATORIAS

Otra definición del concepto de probabilidad define ésta como una frecuencia
relativa. La probabilidad Prob {A} de que suceda el evento A se define de la forma
siguiente:

nA
Prob {A} = lı́m (4.2)
n→∞ n
donde nA es el número de experimentos en que ocurre A y n es el número total de
experimentos. Sin embargo, puesto que un experimento fı́sico no puede repetirse
infinitas veces, en la práctica se aplica la definición (inherentemente imprecisa)
siguiente:

Si el experimento se realiza n veces y el evento A ocurre nA veces,


entonces puede afirmarse con un alto grado de certeza que la frecuencia
relativa nnA con que sucede el evento A está próxima a Prob {A} siempre
que n sea suficientemente grande.

Esta interpretación es imprecisa, ya que los términos “con alto grado de certeza”,
“próxima” y “suficientemente grande” no tienen un significado claro. A menudo en la
práctica no puede evitarse esta falta de precisión en la estimación de la probabilidad
de que se produzca un determinado evento.
Se han propuesto otras definiciones del concepto de probabilidad. Por ejemplo,
Kolmogoroff propuso en 1933 la siguiente definición axiomática, que se basa
únicamente en los siguientes tres postulados:

1. La probabilidad Prob {A} de un evento A es un número positivo asignado a


ese evento: Prob {A} ≥ 0.

2. La probabilidad de un evento, E, que se obtiene como resultado de todas las


repeticiones del experimento, es igual a uno: Prob {E} = 1.

3. La unión A + B de dos eventos, A y B, es un evento que se produce cuando


sucede A, cuando sucede B o cuando suceden ambos simultáneamente.
Se dice que dos eventos son mutuamente excluyentes cuando el hecho de que
ocurra uno impide que ocurra el otro. Si dos eventos A y B son mutuamente
excluyentes, entonces:

Prob {A + B} = Prob {A} + Prob {B} (4.3)

257
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.2.2. Probabilidad condicionada

El concepto de probabilidad condicionada surge para responder a preguntas


del tipo: “se sabe que se ha producido el evento A2 , entonces ¿cuál es la probabilidad
de que suceda A1 ?” Esta probabilidad de que suceda A1 , condicionada al hecho de
que suceda A2 , se representa Prob {A1 |A2 } y satisface:

Prob {A1 · A2 }
Prob {A1 |A2 } = (4.4)
Prob {A2 }

De la expresión anterior se deduce que la probabilidad de que suceda tanto A1 co-


mo A2 , Prob {A1 · A2 }, es igual a la probabilidad de que suceda A2 , Prob {A2 }, mul-
tiplicada por la probabilidad de que suceda A1 habiendo sucedido A2 , Prob {A1 |A2 }.

Prob {A1 · A2 } = Prob {A1 |A2 } · Prob {A2 } (4.5)

Se dice que A1 y A2 son eventos independientes cuando el hecho de que ocurra


uno de los dos eventos no afecta a la probabilidad de que ocurra el otro. Cuando los
eventos A1 y A2 son independientes, se satisface:

Prob {A1 |A2 } = Prob {A1 } (4.6)

El concepto de independencia estadı́stica entre eventos es un concepto clave, sobre


el que se basa el desarrollo matemático de la teorı́a de la probabilidad. Como regla
general, puede considerarse que la independencia fı́sica es una indicación suficiente de
la independencia estadı́stica. Por consiguiente, puede suponerse que aquellos eventos
entre los cuales no existe ninguna relación fı́sica son estadı́sticamente independientes.

4.2.3. El teorema fundamental de la probabilidad

Supongamos un experimento con dos posibles resultados: {“Se produce el evento


A”, “No se produce el evento A”}. Sea p la probabilidad de que se produzca el
evento A. El teorema establece que si se repite el experimento n veces, entonces la
probabilidad de que el suceso A ocurra exactamente nA veces (en cualquier orden)
es:

258
MODELADO DE LAS ENTRADAS ALEATORIAS

( )
A ocurre nA veces de n, n!
Prob = · pnA · (1 − p)n−nA (4.7)
en cualquier orden nA ! · (n − nA )!

La aplicación práctica de la Ecuación (4.7) es muy problemática, dado que la


función factorial crece muy rápidamente y enseguida desborda el máximo número
representable en calculadoras u ordenadores. Por este motivo, se han desarrollado
aproximaciones a esta fórmula que permiten su aplicación práctica, tales como el
teorema de DeMoivre-Laplace y el teorema de Poisson. El error cometido con estas
aproximaciones es razonablemente pequeño siempre y cuando se satisfagan unas
ciertas condiciones particulares a cada aproximación. Por ejemplo, la aproximación
de DeMoivre-Laplace proporciona resultados tanto más próximos al valor exacto
cuanto mayor sea el producto n · p · (1 − p). En el lı́mite n → ∞, el error cometido
con esta aproximación es cero. Por su parte, la aproximación de Poisson es tanto
más exacta cuanto menor sea p, si además nA es del orden de n · p.

4.2.4. El concepto de variable aleatoria

El espacio muestral S de un experimento aleatorio es el conjunto de todos


los resultados posibles del experimento. Los elementos del espacio deben excluirse
mutuamente. Es decir, sólo uno de ellos puede ser el resultado del experimento cada
vez.
Una variable aleatoria, X, es una función que asocia un número a cada uno
de los elementos del espacio muestral, S. Las variables aleatorias se clasifican en
discretas y continuas.
Las variables aleatorias discretas son aquellas cuyo espacio muestral es un
conjunto numerable de elementos. Por tanto, este tipo de variables aleatorias sólo
puede tomar un conjunto de valores finito o bien un conjunto de valores infinito
numerable.
En la Figura 4.1 se muestra un ejemplo, en el cual el espacio muestral S consta de
cuatro elementos y la variable aleatoria X asocia un número a cada uno de ellos. En
la figura se llama x al número asociado a uno de los elementos de S. La probabilidad
de que una observación de la variable aleatoria X valga x se representa Prob{X = x}
y es un número real en el intervalo [0, 1].

259
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

X
x
Prob{X=x}
0 1

Figura 4.1: Espacio muestral S, variable aleatoria X y probabilidad.

Las variables aleatorias continuas son aquellas cuyo espacio muestral es un


conjunto no numerable de elementos. Las variables aleatorias continuas son una
idealización matemática, ya que cualquier procedimiento de medida que se emplee
tendrá un lı́mite de precisión. Igualmente, al programar cualquier algoritmo de gene-
ración de números aleatorios éstos se obtendrán con un determinado número finito
de cifras decimales. Con lo cual, en la práctica el espacio muestra será numerable.

4.2.5. Probabilidad acumulada y densidad de probabilidad

El número de elementos del espacio muestral S, tales que la variable aleatoria


les asocia un número menor que un cierto valor x, va aumentando al aumentar el
número x. La función de probabilidad acumulada de la variable aleatoria X se
representa FX (x). Dicha función admite como argumento un número x y devuelve
un número en el intervalo [0, 1], que es igual a la suma de las probabilidades de
todos los elementos del espacio muestral a los cuales la variable aleatoria les asigna
un valor menor o igual a x.

FX (x) = Prob {X ≤ x} (4.8)

La función densidad de probabilidad de la variable aleatoria continua X se


representa fX (x) y satisface:

Z b
Prob {a ≤ X ≤ b} = fX (x) · dx (4.9)
a

260
MODELADO DE LAS ENTRADAS ALEATORIAS

La relación entre las funciones densidad de probabilidad y probabilidad acumu-


lada es:

Z x
FX (x) = fX (u) · du (4.10)
−∞
dFX (x)
fX (x) = (4.11)
dx

4.2.6. Cuantiles y mediana

Se denomina percentil o cuantil q de una variable aleatoria X al número xq


más pequeño que satisface:

q = Prob {X ≤ xq } = FX (xq ) (4.12)

Ası́ pues, los cuantiles de una variable aleatoria se calculan de la inversa de la


función de probabilidad acumulada de la forma siguiente:

xq = FX−1 (q) (4.13)

El dominio de la función inversa, FX−1 , es el intervalo 0 ≤ q ≤ 1 y su rango el eje


real.
La mediana de una variable aleatoria X es el número más pequeño, m, que
satisface:

FX (m) = Prob {X ≤ m} = 0.5 (4.14)

Ası́ pues, la mediana es el cuantil 0.5.

4.2.7. Media, varianza y desviación estándar

La media o valor esperado de una variable aleatoria X se representa indistin-


tamente E {X} o µX . Se define de la forma siguiente:

261
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Z ∞
E {X} = x · fX (x) · dx (4.15)
−∞

Si la variable aleatoria X es de tipo discreto y toma valores {x1 , x2 , . . . } con


probabilidad {pX (x1 ) , pX (x2 ) , . . . }, entonces la media puede expresarse de la forma:

X
E {X} = xi · pX (xi ) donde pX (xi ) = Prob {X = xi } (4.16)
i

2
La varianza de una variable aleatoria X se representa σX o var {X}. Se define
de la forma siguiente:

2
= E (x − E {X})2 = E x2 − (E {X})2
 
σX (4.17)

En el caso continuo, se calcula de la forma siguiente:

Z ∞
2
σX = (x − E {X})2 · fX (x) · dx (4.18)
−∞

En el caso discreto:

X
2
σX = (xi − E {X})2 · pX (xi ) (4.19)
i

La desviación estándar, σX , de una variable aleatoria X se define como la raı́z


cuadrada de la varianza:

q
2
σX = σX (4.20)

4.2.8. Estimadores de la media y la varianza

Dado un conjunto de n observaciones independientes, x1 , . . . , xn , de una variable


aleatoria X, se definen los dos estadı́sticos siguientes:

n
P
xi
i:1
X̄ (n) = (Media aritmética) (4.21)
n

262
MODELADO DE LAS ENTRADAS ALEATORIAS

n
P 2
xi − X̄ (n)
2 i:1
SX (n) = (4.22)
n−1

Estos dos estadı́sticos, que a su vez son variables aleatorias, son estimadores
no sesgados de la media y la varianza de X, respectivamente. El estimador de un
parámetro es no sesgado si el valor esperado del estimador coincide con el parámetro.


E X̄ (n) = µX (4.23)
 2 2
E SX (n) = σX (4.24)

La varianza de los estimadores, que proporciona una medida de su dispersión


respecto a su media, puede estimarse de la forma siguiente:

2
2SX (n)
σ̂X̄(n) = (4.25)
n
2 2
 2 2 · (SX (n))
var SX (n) = (4.26)
n−1

Aumentando n (el tamaño de la muestra), disminuye la varianza de los estima-


dores. La Figura 4.2 pretende ilustrar que cuanto mayor es n, menor es la dispersión
respecto a µX de la distribución de la media aritmética de las muestras de X.

n pequeño n grande

f X (n) f X (n)

µX µX

Figura 4.2: La varianza de X̄ (n) disminuye al aumentar n.

263
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.2.9. Teorema del lı́mite central

Supongamos que la variable aleatoria X está distribuida de acuerdo a una cierta


2
distribución de probabilidad con media µX y varianza σX . Se realizan n observaciones
independientes, x1 , . . . , xn , de la variable aleatoria. Sea X̄ (n) la media aritmética
de las observaciones. El teorema del lı́mite central establece que:

Si el tamaño n de la muestra es lo suficientemente grande, entonces


 la
2
σX
variable aleatoria X̄ (n) está distribuida aproximadamente N µX , n .
Es decir, como una variable aleatoria normal, con media µX y varianza
2
σX
n
. Esta aproximación es una igualdad en el lı́mite cuando n tiende a
infinito.

Obsérvese que el teorema no impone ninguna condición acerca de la distribu-


ción de X. Se satisface con independencia de la forma en que esté distribuida X.
Asimismo, afirmar que

2
 
σX
la distribución de X̄ (n) tiende a N µX , cuando n → ∞
n

es equivalente a afirmar que

X̄ (n) − µX
la distribución de q
2
tiende a N (0,1) cuando n → ∞
σX
n

2 2
y también es equivalente (dado que SX (n) → σX cuando n → ∞) a afirmar que

X̄ (n) − µX
la distribución de q
2
tiende a N (0,1) cuando n → ∞.
SX (n)
n

4.2.10. Intervalos de confianza para la media

El punto crı́tico z1− α2 de una distribución normal estándar (media cero y


varianza unidad) se define de la forma siguiente:


Prob −z1− α2 ≤ X ≤ z1− α2 = 1 − α donde X ∼ N (0, 1) (4.27)

264
MODELADO DE LAS ENTRADAS ALEATORIAS

Es decir, la probabilidad de obtener muestras de X comprendidas en el intervalo


[−z1− α2 , z1− α2 ] es 1 − α. En la última fila de la Tabla 4.1 pueden encontrarse los
puntos crı́ticos de la distribución normal estándar.
En virtud del teorema del lı́mite central,

X̄ (n) − µX
la distribución de q
2
tiende a N (0, 1) cuando n → ∞
SX (n)
n

y, en consecuencia, cuando n es grande se satisface

 
 X̄ (n) − µX 
Prob −z1− α2 ≤ q
2
≤ z1− α2 ≈1−α (4.28)
 SX (n) 
n

o equivalentemente

( r r )
2 2
SX (n) SX (n)
Prob X̄ (n) − z1− α2 · ≤ µX ≤ X̄ (n) + z1− α2 · ≈ 1 − α (4.29)
n n

De lo anterior se deduce que, si n es grande,

r
2
SX (n)
X̄ (n) ± z1− α2 · (4.30)
n

es un intervalo de confianza del 100 · (1 − α) % para la media, µX .


Una dificultad asociada a esta definición es determinar en cada caso qué significa
que n sea “suficientemente grande”. Cuanto más sesgada (no simétrica) sea la distri-
bución de X, mayor necesita ser n para que la distribución de X̄(n)−µ
r
2
X
se aproxime a
S (n)
X
n
N (0, 1). Si n es demasiado pequeño, el intervalo obtenido será demasiado pequeño.
Es decir, la confianza del intervalo será en realidad menor que 100 · (1 − α) %.
Un comentario acerca del concepto de intervalo de confianza. Para un determi-
nado conjunto x1 , . . . , xn de muestras de una variable aleatoria X, los extremos del
intervalo de confianza para µX obtenidos de aplicar la Ecuación (4.30) son números.
El intervalo calculado de la muestra o bien contiene a la media µX , o no la contiene.
Es decir, no hay nada aleatorio acerca de un intervalo obtenido de un determinado

265
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

conjunto de datos. La correcta interpretación acerca de qué es un intervalo de


confianza es la siguiente:

Si se construye un número muy grande de intervalos independientes


con una confianza del 100 · (1 − α) %, cada uno basado en n muestras
independientes de X, donde n es suficientemente grande, la proporción
de estos intervalos que contienen a µX es 1 − α.

Supongamos ahora que X está distribuida de forma normal. Si las observaciones


x1 , . . . , xn de X son independientes, n es mayor o igual a 2, y X está distribuido
N(µX , σX 2
), entonces la variable aleatoria X̄(n)−µ
q X
S 2 (n)
está distribuida t de Student
n
con n − 1 grados de libertad y además

r
2
SX (n)
X̄ (n) ± tn−1,1− α2 · (4.31)
n

es un intervalo de confianza exacto del 100 · (1 − α) % para µX , donde tn−1,1− α2 es


el punto crı́tico para la distribución t de Student con n − 1 grados de libertad.

 α
Prob Tn−1 ≤ tn−1,1− α2 = 1 − (4.32)
2
En la Figura 4.3 se muestra el significado de los puntos crı́ticos de la distribución
t de Student. Al ser simétrica respecto al origen, tn−1, α2 = −tn−1,1− α2 .

1−α

α α
2 2

t α t α
n −1 , n −1 , 1−
2 2

Figura 4.3: Puntos crı́ticos de la distribución t de Student con n − 1 grados de libertad.

266
MODELADO DE LAS ENTRADAS ALEATORIAS

0.4

0.4

0.4
N(0,1) N(0,1) N(0,1)
fX ( x) fX ( x) fX ( x)

0.3

0.3
0.3
0.2

0.2

0.2
t1 t5 t 10

0.1

0.1
0.1
0.0

0.0

0.0
-10 -5 0 5 10 -10 -5 0 5 10 -10 -5 0 5 10
x x x
0.4

0.4

0.4
N(0,1) N(0,1) N(0,1)
fX ( x) fX ( x) fX ( x)
0.3

0.3

0.3
0.2

0.2

0.2
t 15 t 20
0.1

0.1

0.1
t 50
0.0

0.0

0.0
-10 -5 0 5 10 -10 -5 0 5 10 -10 -5 0 5 10
x x x
Figura 4.4: Distribuciones N(0,1), y t de Student con 1, 5, 10, 15, 20 y 50 grados de libertad.

En la Tabla 4.1 pueden encontrarse los puntos crı́ticos de la distribución t de


Student. A medida que el número de grados de libertad tiende a infinito, la distri-
bución t de Student va aproximándose a una distribución normal. En la Figura 4.4
se compara la densidad de probabilidad de la distribución normal estándar, N(0,1),
con la densidad de probabilidad de la distribución t de Student con 1, 5, 10, 15, 20
y 50 grados de libertad.
En la práctica, la distribución de la que se muestrean las observaciones x1 , . . . , xn
raramente es normal. Si no es normal, el intervalo de confianza representado por la
Ecuación (4.31) no es exacto, sino aproximado.
La distribución t de Student es más baja y abierta que la distribución N(0,1)
(véase la Figura 4.4). Por ello, los intervalos de confianza de la distribución t de
Student siempre son más anchos que los de la distribución normal estándar:

tn−1,1− α2 > z1− α2 (4.33)

Al ser más anchos, frecuentemente los intervalos t tienen un recubrimiento más


próximo al nivel de confianza deseado, por eso suele ser más recomendable su uso
aun cuando las muestras no estén distribuidas normalmente. Por otra parte, como
puede verse en la Figura 4.4, la diferencia entre la distribución t y la normal estándar
es relevante sólo para valores de n pequeños.

267
268
Tabla 4.1: Puntos crı́ticos tν,γ para la distribución t, con ν grados de libertad. La última fila (donde ν = ∞) son los puntos crı́ticos, zγ , de la
distribución normal estándar.

γ
ν 0.6000 0.7000 0.8000 0.9000 0.9333 0.9500 0.9600 0.9667 0.9750 0.9800 0.9833 0.9875 0.9900 0.9917 0.9938 0.9950
1 0.325 0.727 1.376 3.078 4.702 6.314 7.916 9.524 12.706 15.895 19.043 25.452 31.821 38.342 51.334 63.657
2 0.289 0.617 1.061 1.886 2.456 2.920 3.320 3.679 4.303 4.849 5.334 6.205 6.965 7.665 8.897 9.925
3 0.277 0.584 0.978 1.638 2.045 2.353 2.605 2.823 3.182 3.482 3.738 4.177 4.541 4.864 5.408 5.841
4 0.271 0.569 0.941 1.533 1.879 2.132 2.333 2.502 2.776 2.999 3.184 3.495 3.747 3.966 4.325 4.604
5 0.267 0.559 0.920 1.476 1.790 2.015 2.191 2.337 2.571 2.757 2.910 3.163 3.365 3.538 3.818 4.032
6 0.265 0.553 0.906 1.440 1.735 1.943 2.104 2.237 2.447 2.612 2.748 2.969 3.143 3.291 3.528 3.707
7 0.263 0.549 0.896 1.415 1.698 1.895 2.046 2.170 2.365 2.517 2.640 2.841 2.998 3.130 3.341 3.499
8 0.262 0.546 0.889 1.397 1.670 1.860 2.004 2.122 2.306 2.449 2.565 2.752 2.896 3.018 3.211 3.355
9 0.261 0.543 0.883 1.383 1.650 1.833 1.973 2.086 2.262 2.398 2.508 2.685 2.821 2.936 3.116 3.250
10 0.260 0.542 0.879 1.372 1.634 1.812 1.948 2.058 2.228 2.359 2.465 2.634 2.764 2.872 3.043 3.169
11 0.260 0.540 0.876 1.363 1.621 1.796 1.928 2.036 2.201 2.328 2.430 2.593 2.718 2.822 2.985 3.106
12 0.259 0.539 0.873 1.356 1.610 1.782 1.912 2.017 2.179 2.303 2.402 2.560 2.681 2.782 2.939 3.055
13 0.259 0.538 0.870 1.350 1.601 1.771 1.899 2.002 2.160 2.282 2.379 2.533 2.650 2.748 2.900 3.012
14 0.258 0.537 0.868 1.345 1.593 1.761 1.887 1.989 2.145 2.264 2.359 2.510 2.624 2.720 2.868 2.977
15 0.258 0.536 0.866 1.341 1.587 1.753 1.878 1.978 2.131 2.249 2.342 2.490 2.602 2.696 2.841 2.947
16 0.258 0.535 0.865 1.337 1.581 1.746 1.869 1.968 2.120 2.235 2.327 2.473 2.583 2.675 2.817 2.921
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

17 0.257 0.534 0.863 1.333 1.576 1.740 1.862 1.960 2.110 2.224 2.315 2.458 2.567 2.657 2.796 2.898
18 0.257 0.534 0.862 1.330 1.572 1.734 1.855 1.953 2.101 2.214 2.303 2.445 2.552 2.641 2.778 2.878
19 0.257 0.533 0.861 1.328 1.568 1.729 1.850 1.946 2.093 2.205 2.293 2.433 2.539 2.627 2.762 2.861
20 0.257 0.533 0.860 1.325 1.564 1.725 1.844 1.940 2.086 2.197 2.285 2.423 2.528 2.614 2.748 2.845
21 0.257 0.532 0.859 1.323 1.561 1.721 1.840 1.935 2.080 2.189 2.277 2.414 2.518 2.603 2.735 2.831
22 0.256 0.532 0.858 1.321 1.558 1.717 1.835 1.930 2.074 2.183 2.269 2.405 2.508 2.593 2.724 2.819
23 0.256 0.532 0.858 1.319 1.556 1.714 1.832 1.926 2.069 2.177 2.263 2.398 2.500 2.584 2.713 2.807
24 0.256 0.531 0.857 1.318 1.553 1.711 1.828 1.922 2.064 2.172 2.257 2.391 2.492 2.575 2.704 2.797
24 0.256 0.531 0.856 1.316 1.551 1.708 1.825 1.918 2.060 2.167 2.251 2.385 2.485 2.568 2.695 2.787
26 0.256 0.531 0.856 1.315 1.549 1.706 1.822 1.915 2.056 2.162 2.246 2.379 2.479 2.561 2.687 2.779
27 0.256 0.531 0.855 1.314 1.547 1.703 1.819 1.912 2.052 2.158 2.242 2.373 2.473 2.554 2.680 2.771
28 0.256 0.530 0.855 1.313 1.546 1.701 1.817 1.909 2.048 2.154 2.237 2.368 2.467 2.548 2.673 2.763
29 0.256 0.530 0.854 1.311 1.544 1.699 1.814 1.906 2.045 2.150 2.233 2.364 2.462 2.543 2.667 2.756
30 0.256 0.530 0.854 1.310 1.543 1.697 1.812 1.904 2.042 2.147 2.230 2.360 2.457 2.537 2.661 2.750
40 0.255 0.529 0.851 1.303 1.532 1.684 1.796 1.886 2.021 2.123 2.203 2.329 2.423 2.501 2.619 2.704
50 0.255 0.528 0.849 1.299 1.526 1.676 1.787 1.875 2.009 2.109 2.188 2.311 2.403 2.479 2.594 2.678
75 0.254 0.527 0.846 1.293 1.517 1.665 1.775 1.861 1.992 2.090 2.167 2.287 2.377 2.450 2.562 2.643
100 0.254 0.526 0.845 1.290 1.513 1.660 1.769 1.855 1.984 2.081 2.157 2.276 2.364 2.436 2.547 2.626
∞ 0.253 0.524 0.842 1.282 1.501 1.645 1.751 1.834 1.960 2.054 2.127 2.241 2.326 2.395 2.501 2.576
MODELADO DE LAS ENTRADAS ALEATORIAS

El siguiente ejemplo pretende ilustrar el cálculo del intervalo de confianza para


la media a partir de un conjunto de datos. Supongamos que se han realizado las
siguientes 10 observaciones independientes de una distribución normal con media y
varianza desconocida.

0.202 0.498 0.680 0.888 0.486


0.089 -0.048 0.583 0.553 -0.497

Se desea construir un intervalo de confianza del 90 % para la media. El valor


de α se obtiene despejándolo de: 100 · (1 − α) = 90. Se obtiene que α = 0.1. Los
estimadores de la media y varianza, calculados del conjunto de observaciones son
2
X̄ (10) = 0.343 y SX (10) = 0.167. El intervalo es:

r r
2
SX (10) 0.167
X̄ (10) ± t9,0.95 · = 0.343 ± 1.833 · = 0.343 ± 0.237 (4.34)
10 10

Ası́ pues, puede afirmarse con un 90 % de confianza que µX se encuentra en el


intervalo [0.106,0.580].

4.2.11. Intervalos de confianza para la varianza de una distribución nor-


mal

Sea x1 , . . . , xn un conjunto de observaciones independientes, obtenidas mues-


2 (n)
(n−1)·SX
2
treando la distribución N (µX , σX ). Entonces, la variable aleatoria 2
σX
está
2
distribuida χn−1 , es decir, chi-cuadrado con n − 1 grados de libertad.
Esta propiedad permite construir intervalos de confianza para la varianza de las
distribuciones normales. Para ello, se emplea de nuevo el concepto de punto crı́tico
de la distribución. Se define el punto crı́tico χ2n−1,α de la distribución chi-cuadrado
con n − 1 grados de libertad de la forma siguiente (véase la Figura 4.5):

Prob χ2n−1 ≤ χ2n−1,α = α



(4.35)

De lo anterior, se deduce:

2
 
(n − 1) · SX (n)
Prob χ2n−1, α ≤ 2
≤ χ2n−1,1− α = 1−α (4.36)
2 σX 2

269
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

0.15
χ 52 fX ( x) 1−α
0.10
χ 102
fX ( x) χ 202 α
χ 302
0.05

2 α
2
0.00

0 10 20
x
30 40 50 χ2 α χ2 α
n −1, n −1,1−
2 x 2

Figura 4.5: Densidad de probabilidad de las distribuciones chi-cuadrado con 5, 10, 20 y 30 grados
de libertad (izqda). Puntos crı́ticos de la distribución chi-cuadrado con n − 1 grados de libertad
(drcha).

de donde se obtiene el intervalo de confianza para la varianza:

( )
2 2
(n − 1) · SX (n) 2 (n − 1) · SX (n)
Prob 2
≤ σX ≤ 2
=1−α (4.37)
χn−1,1− α χn−1, α
2 2

En la Tabla 4.2 se muestran los puntos crı́ticos de la distribución chi-cuadrado.


El siguiente ejemplo ilustra el cálculo de los intervalos de confianza para la media y
la varianza. Consideremos las siguientes 16 muestras:

5.176 5.075 4.694 4.889 4.920 4.929 4.800 5.216


5.157 4.986 4.790 4.810 5.207 4.996 5.166 4.972

Los estimadores de la media y la desviación estándar son: X̄ (16) = 4.986,


SX (16) = 0.166. Los intervalos de confianza del 95 % para la media y la varianza
2
son: 4.898 ≤ µX ≤ 5.074 y 0.015 ≤ σX ≤ 0.066, dado que:

r r
2
SX (n) 0.1662
X̄ (n) ± tn−1,1− α2 · = 4.986 ± 2.131 · = 4.986 ± 0.088 (4.38)
n 16
2 2
(n − 1) · SX (n) 2 (n − 1) · SX (n) 15 · 0.1662 2 15 · 0.1662
≤ σX ≤ → ≤ σX ≤
χ2n−1,1− α χ2n−1, α 27.488 6.26
2 2
(4.39)

270
MODELADO DE LAS ENTRADAS ALEATORIAS

Tabla 4.2: Puntos crı́ticos χ2ν,γ de la distribución chi-cuadrado con ν grados de libertad.

γ
ν 0.250 0.500 0.750 0.900 0.950 0.975 0.990
1 0.102 0.455 1.323 2.706 3.841 5.024 6.635
2 0.575 1.386 2.773 4.605 5.991 7.378 9.210
3 1.213 2.366 4.108 6.251 7.815 9.348 11.345
4 1.923 3.357 5.385 7.779 9.488 11.143 13.277
5 2.675 4.351 6.626 9.236 11.070 12.833 15.086
6 3.455 5.348 7.841 10.645 12.592 14.449 16.812
7 4.255 6.346 9.037 12.017 14.067 16.013 18.475
8 5.071 7.344 10.219 13.362 15.507 17.535 20.090
9 5.899 8.343 11.389 14.684 16.919 19.023 21.666
10 6.737 9.342 12.549 15.987 18.307 20.483 23.209
11 7.584 10.341 13.701 17.275 19.675 21.920 24.725
12 8.438 11.340 14.845 18.549 21.026 23.337 26.217
13 9.299 12.340 15.984 19.812 22.362 24.736 27.688
14 10.165 13.339 17.117 21.064 23.685 26.119 29.141
15 11.037 14.339 18.245 22.307 24.996 27.488 30.578
16 11.912 15.338 19.369 23.542 26.296 28.845 32.000
17 12.792 16.338 20.489 24.769 27.587 30.191 33.409
18 13.675 17.338 21.605 25.989 28.869 31.526 34.805
19 14.562 18.338 22.718 27.204 30.144 32.852 36.191
20 15.452 19.337 23.828 28.412 31.410 34.170 37.566
21 16.344 20.337 24.935 29.615 32.671 35.479 38.932
22 17.240 21.337 26.039 30.813 33.924 36.781 40.289
23 18.137 22.337 27.141 32.007 35.172 38.076 41.638
24 19.037 23.337 28.241 33.196 36.415 39.364 42.980
25 19.939 24.337 29.339 34.382 37.652 40.646 44.314
26 20.843 25.336 30.435 35.563 38.885 41.923 45.642
27 21.749 26.336 31.528 36.741 40.113 43.195 46.963
28 22.657 27.336 32.620 37.916 41.337 44.461 48.278
29 23.567 28.336 33.711 39.087 42.557 45.722 49.588
30 24.478 29.336 34.800 40.256 43.773 46.979 50.892
40 33.660 39.335 45.616 51.805 55.758 59.342 63.691
50 42.942 49.335 56.334 63.167 67.505 71.420 76.154
75 66.417 74.334 82.858 91.061 96.217 100.839 106.393
100 90.133 99.334 109.141 118.498 124.342 129.561 135.807

271
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.3. DISTRIBUCIONES DE PROBABILIDAD

Al final del libro hay dos apéndices con información acerca de algunas de las
distribuciones de probabilidad teóricas continuas y discretas más comúnmente usa-
das. Se recomienda en este punto leer ambos apéndices, para saber qué tipo de
información contienen y para qué tipo de consultas pueden resultar útiles. Aparte
de esas, existen otras distribuciones teóricas ampliamente usadas, como pueden ser
las distribuciones continuas de Pearson, log-logı́stica y de Johnson.

4.3.1. Parámetros de las familias de distribuciones teóricas continuas

En la densidad de probabilidad de cada familia de distribuciones teóricas apa-


recen parámetros que son caracterı́sticos de la familia. La asignación de valor a
estos parámetros permite especificar una distribución en concreto, del conjunto
de distribuciones que componen la familia. Por ejemplo, indicando el valor de los
parámetros a y b, se especifica una distribución en concreto de la familia U(a, b).
Atendiendo a su interpretación fı́sica o geométrica, la mayorı́a de los parámetros
de las familias de distribuciones pueden clasificarse en parámetros de posición, escala
y forma.

– Parámetros de posición. Especifican la posición en el eje de abscisas (eje


x) del rango de valores de la distribución. Comúnmente el parámetro es el
punto medio del rango o su extremo inferior. Una variación en el valor de
un parámetro de posición supone un desplazamiento de la distribución, a la
derecha o a la izquierda, sin variar ninguna otra de sus caracterı́sticas.

– Parámetros de escala. Determinan la escala (o unidades) de medida de los


valores en el rango de la distribución. Cambios en el valor de los parámetros de
escala hacen que se comprima o expanda la distribución, sin alterar su forma
básica.

– Parámetros de forma. Determinan, con independencia de la posición y


la escala, la forma básica de la distribución dentro de la familia general de
distribuciones de interés. Un cambio en uno de los parámetros de forma ge-
neralmente altera las propiedades de la distribución más profundamente que
un cambio en su posición o escala. Algunas familias de distribuciones, como
la exponencial y la normal, no tienen parámetro de forma, mientras que otras
tienen uno o varios (por ejemplo, la distribución beta tiene dos).

272
MODELADO DE LAS ENTRADAS ALEATORIAS

Consideremos dos variables aleatorias X e Y , que están distribuidas de acuerdo


a dos distribuciones pertenecientes a una misma familia de distribuciones.

– Se dice que difieren sólo en la posición cuando existe un número real, γ, tal
que γ + X e Y tienen la misma distribución.

– Se dice que difieren sólo en la escala cuando existe algún real positivo, β, tal
que β · X tiene la misma distribución que Y .

– Se dice que difieren en la posición y en la escala cuando existen dos reales, γ


y β, tales que γ + β · X tiene la misma distribución que Y .

– Si X e Y tienen diferente valor de un parámetro de forma, no podrá hacerse


que tengan la misma distribución mediante un cambio de escala y de posición.

4.3.2. Distribuciones empı́ricas continuas

Los datos del sistema pueden ser usados para definir una distribución em-
pı́rica. En el caso de las distribuciones empı́ricas continuas, el procedimiento de
definición depende de si se dispone de las observaciones originales, o bien sólo se
dispone de los datos agrupados. Es decir, del número de observaciones que caen
dentro de cada uno de una serie de intervalos en que se divide el rango de la variable
aleatoria.
Si se dispone de los datos originales, x1 , . . . , xn , a partir de ellos puede definirse
una función de probabilidad acumulada FX (x), continua y lineal a tramos. Para ello
deben seguirse los pasos siguientes:

1. Deben ordenarse crecientemente las observaciones. La i-ésima menor muestra


se representa de la forma siguiente: x(i) . Es decir: x(1) ≤ x(2) ≤ · · · ≤ x(n) .

2. Se define la función de probabilidad acumulada de la manera siguiente (véase


la parte izquierda de la Figura 4.6):


 0 si x < x(1)


i−1 x−x si x(i) ≤ x < x(i+1)
FX (x) = + (n−1) x (i) −x (4.40)


n−1 ( (i+1) (i) ) para i = 1, 2, . . . , n − 1

1 si x ≥ x(n)

273
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejemplo (n = 6) Ejemplo (k = 5)
1.0

1.0
de X de X

de X de X
n5
n

0.8
0.8

acumulada
acumulada

n4

Probabilidad acumulada
Probabilidad acumulada

0.6
0.6

n
n3
n

0.4
0.4

Probabilidad
Probabilidad

n2
n

0.2
0.2

n1
n
0.0

0.0
x(1) x( 2) x( 3) x( 4 ) x(5) x( 6 ) a0 a1 a2 a3 a4 a5

Figura 4.6: Distribuciones empı́ricas construidas a partir de datos individuales (izqda) y de los
datos agrupados (drcha).

Una desventaja de este tipo de distribución empı́rica es que las variables alea-
torias generadas durante la simulación no podrán tener valores menores que x(1) ni
mayores que x(n) .
Si se dispone de los datos agrupados en forma de histograma, puede aplicarse
un método similar al anterior. Supóngase que los datos experimentales están agru-
pados en k intervalos adyacentes: [a0 , a1 ) , [a1 , a2 ) , . . . , [ak−1 , ak ), de modo que el
intervalo j-ésimo contiene nj observaciones. El número total de observaciones es:
n1 + n2 + ... + nk = n. Normalmente los valores aj están equiespaciados, si bien el
método para obtener la distribución empı́rica que se va a describir a continuación
no requiere que se satisfaga esta condición.
El valor de la función de distribución acumulada, FX (x), puede definirse en
los extremos de los intervalos de la forma siguiente (véase la parte derecha de la
Figura 4.6):

FX (a0 ) = 0 (4.41)
n1 + n2 + ... + nj
FX (aj ) = para j : 1, 2, . . . , k (4.42)
n

El valor de la función en los puntos internos a los intervalos puede calcularse


mediante interpolación lineal de la manera siguiente:

274
MODELADO DE LAS ENTRADAS ALEATORIAS



 0 si x < a0


x−aj−1 si aj−1 ≤ x ≤ aj
FX (x) = FX (aj−1 ) + aj −aj−1
(FX (aj ) − FX (aj−1 ))

 para j : 1, 2, . . . , k

1 si ak ≤ x

(4.43)
Igual que en el caso anterior, las variables aleatorias generadas mediante estas
distribuciones no pueden tomar valores menores que a0 ni mayores que ak .
Estos dos métodos son sólo dos de los muchos posibles para definir distribucio-
nes empı́ricas de variables aleatorias continuas. Existe gran variedad de métodos,
entre ellos cabe destacar aquellos que introducen en uno o a ambos lados una cola
exponencial para eliminar el problema de la acotación en los valores de la variable
aleatoria.

4.3.3. Distribuciones empı́ricas discretas

Cuando se dispone de los datos originales, la distribución empı́rica discreta


puede definirse de la manera siguiente: para cada posible valor x, la probabilidad
p (x) es la proporción de los datos que son iguales a x.
Cuando dispone de los datos agrupados en forma de histograma, puede defi-
nirse la probabilidad de modo que la suma de las probabilidades p (x) sobre todos
los posibles valores de x en el intervalo sea igual a la proporción de las medidas
que se encuentra en dicho intervalo. Si hay varios valores de x en el intervalo, el
histograma no informa acerca de cómo repartir la probabilidad entre ellos, con lo
cual debe hacerse arbitrariamente.

4.3.4. Desplazamiento y truncado de distribuciones

En algunas ocasiones debe redefinirse el rango (es decir, el conjunto de valores


posibles) de las distribuciones teóricas, ya que de otro modo no representan adecua-
damente el proceso. Por ejemplo, supongamos un servicio de atención al público en el
cual el tiempo requerido para atender al cliente se modela mediante una distribución
gamma. El rango de la distribución gamma es [0, ∞), sin embargo, en la práctica
es imposible atender al cliente en menos de 30 segundos. La forma de recoger este
hecho en el modelo consiste en modificar la distribución de probabilidad, de modo

275
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

que la probabilidad de obtener tiempos de servicio inferiores a 30 segundos sea cero.


Existen varias formas de modificar el rango de las distribuciones. A continuación se
explican dos: desplazar la distribución y truncarla.
Un modo de modificar el rango de una distribución consiste en desplazar la dis-
tribución. Por ejemplo, para desplazar hacia la derecha la distribución gamma(α,
β) una distancia γ > 0, debe sustituirse x por (x − γ), es decir:

 (x−γ)α−1 ·e−( x−γ
β )

fX (x) = β α ·Γ(α)
si x > γ (4.44)
 0 en cualquier otro caso

Si se emplea la distribución desplazada, este parámetro de posición γ deberá


estimarse a partir de los datos experimentales de la misma manera que los demás
parámetros de la distribución. La forma más adecuada de realizar esta estimación
depende de la distribución. Por ejemplo, en el caso de la exponencial desplazada es
fácil estimar γ̂ y β̂ empleando el método de la máxima verosimilitud. Sin embargo,
para la distribución gamma es preciso emplear métodos numéricos para estimar los
3 parámetros.
Otro método de modificar el rango de la distribución consiste en truncar la dis-
tribución. La densidad de probabilidad truncada al intervalo [x1 , x2 ] se representa
como fX∗ (x) y puede calcularse a partir de la densidad de probabilidad sin truncar,
fX (x), de la forma siguiente:

( R x2
fX (x)
si x ∈ [x1 , x2 ] , donde a (x1 , x2 ) = fX (x) · dx
fX∗ (x) = a(x1 ,x2 ) x1
(4.45)
0 en cualquier otro caso

En general, la densidad de probabilidad truncada, fX∗ (x), es discontinua en x =


x1 y x = x2 . Por ejemplo, en x = x1 la densidad de probabilidad truncada salta de
fX (x1 )
0 a fX∗ (x1 ) = a(x 1 ,x2 )
.
Un método práctico para decidir a partir de qué valor o valores debe truncarse
la distribución es mediante la inspección visual del histograma de las observaciones
experimentales.

276
MODELADO DE LAS ENTRADAS ALEATORIAS

4.4. ANÁLISIS DE LA INDEPENDENCIA Y HOMOGENEIDAD


DE LOS DATOS EXPERIMENTALES

Algunas de las técnicas estadı́sticas que se aplican en el ajuste de distribuciones a


los datos experimentales asumen que éstos son independientes entre sı́ (por ejemplo,
la estimación de máxima verosimilitud y el test chi-cuadrado). Por consiguiente, si
las muestras no son independientes, no es correcto aplicar estas técnicas (aunque
siempre podrán aplicarse técnicas heurı́sticas como son los histogramas, etc.). Desde
este punto de vista, resulta de gran importancia saber contrastar la independencia
de las observaciones experimentales.
Por otra parte, en ocasiones se recogen diferentes conjuntos independientes de
observaciones de determinado fenómeno aleatorio y es preciso saber si estos conjuntos
de datos son homogéneos (pueden considerarse idénticamente distribuidos) y por
tanto se pueden juntar en una única muestra. Para ello, es preciso conocer técnicas
para contrastar la homogeneidad de varios conjuntos de observaciones.

4.4.1. Análisis de la independencia de los datos experimentales

Los datos experimentales presentan en ocasiones una correlación temporal. Por


ejemplo, si se mide experimentalmente el tiempo que deben esperar los clientes en
una cola, se comprobará que las observaciones están correlacionadas. Por ejemplo,
si un cliente ha debido esperar mucho tiempo para ser atendido (el sistema está
congestionado), cabe esperar que el cliente situado tras él en la cola también haya
debido esperar mucho tiempo.
Considérese una secuencia de datos experimentales, x1 , . . . , xn , dispuestos en el
mismo orden que han sido recogidos. Una técnica gráfica para analizar si los datos
de esta secuencia son independientes consiste en representar las parejas de puntos
(xi , xi+1 ), para i = 1, . . . , n − 1. Si los datos son independientes, los puntos estarán
distribuidos aleatoriamente. Si los datos están correlacionados, los puntos tenderán
a alinearse.
Como ilustración de aplicación de esta técnica, en la parte izquierda de la Fi-
gura 4.7 se han representado 200 observaciones independientes e idénticamente
distribuidas (aproximadamente de forma exponencial con media 10). En la parte
derecha de la Figura 4.7 se muestran 200 observaciones correlacionadas entre sı́.

277
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

40

40
30

30
xi +1
20

20
xi +1

10
10
0

0
0 10 20 30 40 0 10 20 30 40

xi xi
Figura 4.7: Ejemplo de evaluación de independencia de los datos.

Esta técnica gráfica es sólo una de las múltiples técnicas que existen. Se volverá
sobre esta cuestión en el Tema 5, cuando se expliquen los tests para contrastar la
independencia de las secuencias de números pseudoaleatorios.

4.4.2. Análisis de la homogeneidad de los datos experimentales

Supóngase que se han recogido k conjuntos independientes de muestras y que


las muestras de cada conjunto son independientes entre sı́. Cada conjunto puede
contener un número diferente de muestras.

x1,1 , . . . , x1,n1 (conjunto 1, compuesto por n1 muestras)


x2,1 , . . . , x2,n2 (conjunto 2, compuesto por n2 muestras)
... ...
xk,1 , . . . , xk,nk (conjunto k, compuesto por nk muestras)

Con el fin de contrastar la homogeneidad de estos conjuntos de datos, se plantean


las hipótesis nula (H0 ) y alternativa (H1 ) siguientes:

H0 : Las distribuciones de todos los conjuntos de muestras son idénticas.


H1 : Al menos la distribución de uno de los conjuntos de muestras tiende
a producir valores mayores que al menos la distribución de otro de
los conjuntos de muestras.

Uno de los tests que puede emplearse para contrastar la hipótesis nula H0 es el
test de Kruskal-Wallis.

278
MODELADO DE LAS ENTRADAS ALEATORIAS

4.5. TAREA I: SELECCIÓN DE LA FAMILIA DE DISTRIBUCIONES

Supongamos que se pretende emplear una distribución de probabilidad teórica


para modelar una entrada aleatoria de la simulación. El primer paso en la selección de
la distribución teórica es decidir qué familia de distribuciones parece más apropiada.
Esta decisión se toma en base al análisis de la forma de la distribución, sin tener en
cuenta el valor de los parámetros de la distribución.
En esta sección se describen algunas técnicas para investigar qué familia de
distribuciones permite representar más adecuadamente una determinada variable
aleatoria de entrada.

4.5.1. Consideraciones teóricas

En ocasiones, se dispone a priori del suficiente conocimiento acerca del proceso a


modelar como para poder seleccionar una familia de distribuciones, o al menos para
poder descartar algunas otras. A continuación se discuten varias recomendaciones
sobre el uso de algunas distribuciones teóricas continuas.

– Uniforme. Resulta adecuada cuando la entrada toma con igual probabilidad


cualquier valor de cierto intervalo.
Se usa también como primera aproximación para una variable que se supone
que varı́a aleatoriamente en determinado intervalo y de la que no se sabe nada
más. Su empleo en este caso se justifica mediante el razonamiento siguiente:
dado que no tengo ninguna razón para pensar lo contrario, asumiré igual
probabilidad para todos los posibles resultados. No obstante, el uso en estos
casos de la distribución uniforme no está exento de polémica. Hay autores que
afirman no haber encontrado ningún proceso real (y ni tan siquiera ser capaces
de imaginarlo) que esté distribuido uniformemente. En su lugar, recomiendan
usar la distribución triangular, con la moda en el punto central del rango, o una
distribución normal, cuya media sea el punto central del rango y la desviación
estándar un cuarto del rango (es decir, rango = 4 · σ). Si se usa la distribución
normal, a menudo es preciso truncarla para evitar obtener valores demasiado
grandes o demasiado pequeños.

– Triangular. Se usa como primera aproximación en ausencia de datos, cuando


se pretende representar un proceso para el cual pueden establecerse unos
lı́mites (mı́nimo y máximo) y el valor más probable (moda).

279
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

– Gamma. Suele emplearse para modelar el tiempo necesario para completar


una tarea. Esta distribución puede tomar una gran variedad de formas, en
función del valor de su parámetro de forma.

– Exponencial. Se usa para representar el intervalo de tiempo entre eventos


independientes, por ejemplo, la llegada de entidades al sistema. Si el número
de eventos por intervalo de tiempo es una variable aleatoria discreta de Poisson
de media λ, entonces los intervalos de tiempo entre llegadas están distribuidos
exponencialmente con media β = λ1 . Cuando la variable aleatoria representa
un intervalo de tiempo, la distribución exponencial posee una propiedad única:
no tiene memoria. Todo ello se explicará con detalle en el Tema 5.

– Weibull. Se usa en los modelos de fiabilidad, para representar los tiempos


de vida (tiempo hasta el fallo) de dispositivos en los cuales el uso afecta a su
tiempo esperado de vida (dispositivos eléctricos, muelles, etc.). En ocasiones,
se usa también para representar el tiempo necesario para completar una tarea.

– Normal. Se emplea para describir fenómenos que son suma o promedio de


una gran cantidad de variables aleatorias independientes entre sı́, y tales que
cada una de ellas realiza una pequeña contribución a la suma. Por ejemplo,
si se reemplazan los tiempos de proceso de varios subprocesos independientes
por un único tiempo de proceso, que es la suma de aquellos, el tiempo de
proceso resultante tiene una distribución que se aproxima a la normal al
aumentar el número de subprocesos. Esto se cumple con independencia de
qué distribuciones de probabilidad tengan los tiempos de los subprocesos.

Seguidamente se proporcionan recomendaciones sobre el uso de algunas distribu-


ciones teóricas discretas:

– Bernoulli. La variable aleatoria representa el resultado de un experimento


con dos únicos posibles resultados. Este tipo de experimentos se conocen como
experimento de Bernoulli.

– Uniforme discreta. La variable aleatoria es el resultado de un experimento


con varios posibles resultados, todos ellos igualmente probables.

– Binomial. Es adecuada cuando se pretende estudiar el número de miembros de


un grupo de individuos que poseen cierta caracterı́stica. El grupo de individuos
ha sido escogido aleatoriamente, y posee un tamaño fijo, conocido a priori.
Cada individuo tiene la misma probabilidad de poseer la caracterı́stica. El
hecho de que un individuo posea la caracterı́stica es independiente del hecho

280
MODELADO DE LAS ENTRADAS ALEATORIAS

de que otro la posea: saber que ciertos individuos poseen la caracterı́stica no


ayuda a decidir si otro individuo en concreto la tiene.

– Geométrica. Es aplicable cuando se pretende estudiar el número de repeti-


ciones de un experimento de Bernoulli que deben hacerse hasta que se produce
uno determinado de los dos posibles resultados.

– Negativa binomial. Es adecuada para describir el número de experimentos


de Bernoulli “fallidos” antes de que se dé, un determinado número de veces,
uno determinado de los dos posibles resultados.

– Poisson. Es adecuada para modelizar el número de eventos aleatorios que


suceden en un intervalo de tiempo fijo.

4.5.2. Estadı́sticos

Los valores de algunos estadı́sticos de la muestra experimental, tales como la


media, la mediana y la varianza, pueden guiar en la elección de qué familia de
distribuciones describe mejor la muestra. Sin embargo, debe tenerse presente que el
valor del estadı́stico calculado de la muestra es una observación aleatoria. Por ello, el
valor calculado generalmente no va a coincidir con el valor verdadero del estadı́stico
de la distribución (desconocida) de la cual realmente han sido muestreados los
datos. A continuación se muestran algunos ejemplos de cómo los estadı́sticos pueden
orientar en la selección de la familia de distribuciones.
Si la media y la mediana de los datos difieren significativamente entre sı́, es
indicación de que probablemente la distribución de la cual se han muestreado los
datos no sea simétrica.
Un estadı́stico que puede proporcionar información muy útil acerca del tipo
de distribución es el coeficiente de variación. Se define como el cociente de la
desviación estándar y la media.


σ2
cv = (4.46)
µ

Dado un conjunto de observaciones, x1 , ..., xn , el coeficiente de variación puede


estimarse de la expresión siguiente:

p
S 2 (n)
cv
ˆ = (4.47)
X̄ (n)

281
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

donde los estimadores de la media y la varianza son respectivamente:

n
P 2
n xi − X̄ (n)
1 X i:1
X̄ (n) = · xi S 2 (n) = (4.48)
n i:1
n−1

El coeficiente de variación de una distribución exponencial vale cv = 1, con


independencia del valor de la media de la distribución. Si el valor del coeficiente
obtenido de la muestra experimental está próximo a uno, tiene fundamento realizar
la hipótesis de que la distribución es exponencial.
Supongamos que el histograma de los datos experimentales tiene una forma
similar a la mostrada en la Figura 4.8.

fX ( x)

Figura 4.8: Una forma tı́pica de la densidad de probabilidad.

En esta situación, cabe preguntarse qué tipo de distribución será más adecuada.
Por ejemplo, la distribución gamma o la distribución de Weibull tienen esa forma
cuando el parámetro de forma es mayor que uno. También tiene una forma similar
la distribución lognormal. En este caso, el coeficiente de variación puede servir de
orientación, ya que:

– Las distribuciones gamma y Weibull cuya densidad de probabilidad tiene


una forma parecida a la mostrada en la Figura 4.8 (es decir, aquellas cuyo
parámetro de forma es mayor que uno) satisfacen: cv < 1.

– La densidad de probabilidad de la distribución lognormal tiene siempre una


apariencia similar a la mostrada en la Figura 4.8 y su coeficiente de variación
puede ser cualquier número real positivo.

Por consiguiente, si la densidad de probabilidad de los datos tiene una forma


similar a la mostrada en la Figura 4.8 y el valor del coeficiente de variación estimado

282
MODELADO DE LAS ENTRADAS ALEATORIAS

de los datos experimentales es mayor que uno, entonces es recomendable usar la


distribución lognormal, en lugar de la distribución gamma o la distribución de
Weibull.
El estadı́stico

σ2
τ= (4.49)
µ

juega para las distribuciones discretas un papel similar al coeficiente de variación


para las distribuciones continuas. Igualmente, puede calcularse una estimación a
partir de los datos experimentales de la forma siguiente:

S 2 (n)
τ̂ = (4.50)
X̄ (n)

Este estadı́stico es útil para discriminar entre la distribución de Poisson (tiene


τ = 1), binomial (tiene τ < 1) y binomial negativa (tiene τ > 1).
Otro estadı́stico útil es el coeficiente de simetrı́a, también denominado sesgo.
Proporciona una medida de la simetrı́a de la distribución. En las distribuciones
simétricas, como la normal, el sesgo vale cero. El sesgo ν se define como el tercer
momento de la distribución dividido por el cubo de la desviación estándar:

E (X − µ)3

ν= (4.51)
σ3
Dado un conjunto de observaciones, x1 , . . . , xn , puede estimarse el valor del sesgo
de la forma siguiente:

m̂3 (n)
ν̂ = (4.52)
(S 2 (n))3/2

donde

n
P 3
xi − X̄ (n)
i:1
m̂3 (n) = (4.53)
n

283
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.5.3. Histogramas

El histograma es básicamente una estimación gráfica de la densidad de probabili-


dad de los datos experimentales, x1 , ..., xn . Las funciones de densidad de probabilidad
de las distribuciones teóricas tienen formas reconocibles, con lo cual, el histograma
sirve de ayuda para seleccionar qué familia o familias de distribuciones tiene sentido
emplear para modelar los datos. Para ello, debe compararse la forma del histograma
con la forma de la distribución teórica, sin considerar la escala o la posición.
Puede construirse el histograma de una variable aleatoria continua de la forma
siguiente:

1. Dividir el rango de valores de los datos experimentales en k intervalos disjun-


tos, adyacentes y de igual longitud: [b0 , b1 ) , [b1 , b2 ) , . . . , [bk−1 , bk ). Cada uno
de estos intervalos se denomina una clase o categorı́a. A continuación, se
agrupan los datos pertenecientes a cada clase.

2. Sea qj la frecuencia de la clase j. Es decir, la proporción de los datos experi-


mentales, x1 , ..., xn , que se encuentran en el intervalo [bj−1 , bj ). El histograma
es la siguiente función constante a tramos:

 0 si x < b0

h(x) = qj si bj−1 ≤ x < bj , para j = 1, ..., k (4.54)

 0 si b ≤ x
k

Dado que al agrupar los datos se destruyen sus detalles originales, la elección del
número de clases del histograma es importante. Tres de las recomendaciones que
más comúnmente se encuentran en la literatura son las siguientes.

– Es recomendable escoger un número de clases entre 5 y 20 (lo más habitual es


usar entre 8 y 12 clases), pero teniendo siempre al menos 5 observaciones en
cada clase.

– La regla de Sturges proporciona el siguiente criterio: el número de clases, k,


debe escogerse de acuerdo a la Ecuación 4.55, donde ⌊x⌋ representa el mayor
número entero que es menor o igual a x.
   
k = 1 + log (n) = 1 + 3.322 · log (n) (4.55)
2 10

284
MODELADO DE LAS ENTRADAS ALEATORIAS

– Otra recomendación es ir probando diferentes anchuras de intervalo y escoger


aquella que proporciona un histograma “suave”, con una forma similar a alguna
distribución teórica.

Puede observarse que la construcción de los histogramas tiene cierta componente


subjetiva, lo cual constituye su principal desventaja. La construcción del histograma
de variables aleatorias discretas, también denominado diagrama de barras, es más
sencilla, ya que no es preciso definir ni los intervalos ni agrupar los datos.
En la Figura 4.9 se muestran cuatro histogramas, con diferente número de clases,
de los mismos 600 datos experimentales. Estos datos corresponden a medidas del
tiempo necesario para atender a un cliente. Se han reescalado los histogramas, de
modo que representen una densidad de probabilidad: la suma de los áreas de todas
las barras es igual a uno.
0.0 0.1 0.2 0.3 0.4 0.5 0.6
0.3
0.2
0.1
0.0

0 1 2 3 4 5 6 0 1 2 3 4 5 6
x x
0.0 0.1 0.2 0.3 0.4 0.5 0.6

0.8
0.6
0.4
0.2
0.0

0 1 2 3 4 5 6 1 2 3 4 5 6
x x
Figura 4.9: Histogramas de un mismo conjunto de datos.

Se observa que el histograma tiene dos modos (máximos de la densidad de


probabilidad) locales, uno entorno a 1 minuto y otro entorno a 3 minutos. Esto
implica que existen esencialmente dos tipos de servicio, con distinta duración, que
puede requerir el cliente.

285
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Debe tenerse en cuenta esta bimodalidad al ajustar los datos experimenta-


les. Las observaciones pueden separarse en dos grupos, siendo pj la proporción de
observaciones del grupo j (con j = 1, 2). Las observaciones del grupo j se usan
para ajustar la distribución teórica fj (x). La densidad de probabilidad global, que
considera ambos tipos de servicio, se calcula, a partir de las dos densidades anteriores,
de la forma siguiente:

f (x) = p1 · f1 (x) + p2 · f2 (x) (4.56)

4.5.4. Gráficas cuantil-cuantil

La función de distribución acumulada de una variable aleatoria X, también


llamada probabilidad acumulada de X, se define:

FX (x) = Prob {X ≤ x} (4.57)

Por ello, si los datos experimentales x1 , . . . , xn están distribuidos de la misma


forma que la variable aleatoria X, una aproximación razonable a FX (x) es la pro-
porción de los datos experimentales que son menores o iguales que x.
Ası́ pues, cabrı́a plantearse comparar la distribución de probabilidad acumulada
obtenida a partir de los datos experimentales, con las distribuciones de probabilidad
acumulada de las distribuciones estándar. Sin embargo, éstas suelen tener forma de
“S”, con lo cual la comparación visual no suele ser demasiado esclarecedora.
Existen técnicas para reducir el problema de la comparación de funciones dis-
tribución de probabilidad acumulada a decidir cuál, de entre varias gráficas, se
asemeja más a una recta. Una de estas técnicas, denominada gráfica cuantil-cuantil
o abreviadamente gráfica Q-Q, está basada en la comparación de los cuantiles o
puntos crı́ticos de las distribuciones continuas.
Recuérdese que el cuantil q (con 0 < q < 1) de una distribución FX (x) es un
número xq que satisface:

FX (xq ) = q (4.58)

Representando FX−1 a la función inversa de la probabilidad acumulada, una


definición equivalente del cuantil es:

286
MODELADO DE LAS ENTRADAS ALEATORIAS

xq = FX−1 (q) (4.59)

La técnica gráfica Q-Q se basa en las dos propiedades siguientes:

– Si las variables aleatorias X e Y están igualmente distribuidas, entonces sus


densidades de probabilidad y sus cuantiles son iguales: yq = xq . La representa-
ción gráfica de los puntos (xq , yq ), para q ∈ (0, 1), es una recta con pendiente
unidad que pasa por el origen.

– Si las variables aleatorias X e Y pertenecen a la misma familia de distribuciones


y sus densidades acumuladas difieren en el valor  los parámetros de posición
y−γ
(γ) y escala (β), es decir, FY (y) = FX β , entonces la relación entre
los cuantiles de las distribuciones es: yq = γ + β · xq . Consiguientemente,
la representación gráfica de los puntos (xq , yq ), para q ∈ (0, 1), es una recta
con pendiente β que no pasa por el origen.

A la vista de las dos propiedades anteriores, la representación de los pares de


puntos (xq , yq ) es una herramienta útil para comparar las distribuciones de X e
Y . En el contexto que nos ocupa, dicha representación nos permitirá comparar la
distribución empı́rica obtenida de los datos experimentales con una distribución
teórica. A efectos de la aplicación de la técnica, sólo es relevante el parámetro de
forma de la distribución teórica. Los parámetros de escala y posición son irrelevantes,
con lo cual pueden escogerse de la forma que resulte más sencilla.
Los dos pasos a seguir para comparar la distribución empı́rica de un conjunto de
datos experimentales, x1 , ..., xn , con la distribución FX son los siguientes:

1. Construir una función de probabilidad acumulada empı́rica, F̃ , a


partir de los datos experimentales. Para ello, es preciso ordenar crecientemente
los datos experimentales. Sean x(1) ≤ x(2) ≤ · · · ≤ x(n) los datos ordenados,
donde x(i) representa el dato que ocupa la i-ésima posición. El valor de la
distribución empı́rica en uno cualquiera de los datos experimentales, x(i) , es
igual al número de datos menor o igual que él mismo:

 i
F̃ x(i) = para i : 1, . . . , n (4.60)
n
Esta definición presenta la desventaja de que la probabilidad acumulada vale
uno para el valor experimental mayor, ya que F̃ x(n) = nn = 1. Una forma de


287
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

12
0.20

Datos ordenados
8 10
0.15

6
0.10

4
0.05

2
0.00

0
0 2 4 6 8 10 12 0.0 0.2 0.4 0.6 0.8 1.0

x Cuantiles distribución uniforme


12

12
Datos ordenados

Datos ordenados
8 10

8 10
6

6
4

4
2

2
0

-2 -1 0 1 2 0 1 2 3 4 5

Cuantiles distribución normal Cuantiles distribución exponencial

Figura 4.10: Ejemplo de aplicación de las gráficas Q-Q.

evitar este inconveniente es modificar de la forma siguiente la definición de la


probabilidad acumulada empı́rica:

 i − 0.5
F̃ x(i) = para i : 1, . . . , n (4.61)
n
2. Construir la gráfica Q-Q. Puesto que xq = x(i) es el cuantil q = i−0.5 n
de la
distribución empı́rica, la gráfica consiste en la representación de los puntos:
  
−1 i − 0.5
x(i) , FX para i : 1, . . . , n (4.62)
n

Si estos puntos se ajustan razonablemente bien a una recta, con independencia


de su pendiente o de si pasa o no por el origen, entonces está justificada la
hipótesis de que la familia y el factor de forma de la distribución de la que
están muestreados los datos experimentales y de FX coinciden.

En la Figura 4.10 se muestra un ejemplo sencillo de aplicación de esta técnica. Se


ha recogido una muestra de 100 datos experimentales. En primer lugar, se dibuja el

288
MODELADO DE LAS ENTRADAS ALEATORIAS

histograma de los datos. Se observa que el histograma es aproximadamente simétrico.


Esta observación puede contrastarse estimando el sesgo a partir de los datos experi-
mentales. Por ello, tiene sentido realizar comparaciones con la distribución normal o
con la distribución beta con α1 = α2 . Como puede observarse de la segunda gráfica
Q-Q, la comparación con la distribución normal es bastante satisfactoria. Sobre las
gráficas Q-Q se ha dibujado la recta ajustada en cada caso. Como referencia del
comportamiento de la gráfica Q-Q cuando la distribución empı́rica y teórica tienen
una forma considerablemente diferente, se han comparado los datos experimentales
con la distribución uniforme y exponencial (primera y tercera gráfica Q-Q, respecti-
vamente).

4.6. TAREA II: ESTIMACIÓN DE LOS PARÁMETROS

Una vez seleccionada una familia de distribuciones, hay que escoger aquella
distribución en concreto de la familia que mejor se ajusta a los datos experimentales.
La forma de seleccionar la distribución es asignar valor a los parámetros de la misma.
Existen diferentes métodos para ello. En esta sección se explica uno de ellos: los
estimadores de máxima verosimilitud.
Los fundamentos conceptuales sobre los que se basan los estimadores de máxima
verosimilitud se comprenden mejor en el caso de las variables aleatorias discretas.
Se pretende ajustar a los datos experimentales la probabilidad pX (x, θ) de la variable
aleatoria discreta X. El ajuste consiste en determinar el valor de θ.
La función verosimilitud, L (θ), se define a partir de los datos experimentales
x1 , . . . , xn (los mismos usados en la Tarea I) de la manera siguiente:

L (θ) = pX (x1 , θ) · pX (x2 , θ) · ... · pX (xn , θ) (4.63)

Puesto que los datos x1 , . . . , xn son independientes, L (θ) es igual a la probabi-


lidad de haber obtenido ese conjunto de datos al realizar n observaciones indepen-
dientes de la distribución. Obsérvese que el valor de la función de verosimilitud L
depende del valor del parámetro θ.
Se define el estimador de máxima verosimilitud (MLE) del parámetro des-
conocido θ como el valor de θ que maximiza L (θ). El estimador del parámetro θ
se representa: θ̂. Una consecuencia inmediata de la definición del estimador es la
siguiente propiedad:

289
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

 
L (θ) ≤ L θ̂ para todos los posibles valores de θ (4.64)

Vemos, por ejemplo, cuál es el estimador de máxima verosimilitud del


parámetro de la distribución geométrica. La probabilidad de la distribución
es (véase el Apéndice B):

pX (x) = b · (1 − b)x si x ∈ {0, 1, ...} (4.65)

Se trata de estimar el valor del parámetro b ∈ (0, 1). La función de verosimilitud


de n observaciones independientes x1 , ..., xn distribuidas geom(b) es la siguiente:

n
P
x1 xn xi
n
L (b) = b · (1 − b) · ... · b · (1 − b) = b · (1 − b)i:1 (4.66)

Puesto que el valor de b que maximiza L (b) es el mismo que maximiza ln (L (b)),
a fin de simplificar los cálculos es preferible resolver el problema de puntos extremos
del logaritmo de la expresión anterior. Aplicando la función logaritmo a ambos lados
de la igualdad en la Ecuación (4.66), se obtiene:

n
X
ln (L (b)) = n · ln (b) + xi · ln (1 − b) (4.67)
i:1

Para calcular el estimador del parámetro b se procede de la manera siguiente:

1. Se calcula la primera derivada de la Ecuación (4.67) con respecto al parámetro


b. Se obtiene:

n
P
xi
d ln (L (b)) n i:1
= − (4.68)
db b 1−b

2. Se calcula qué valor del parámetro b hace cero la primera derivada. Sea b̂ dicho
valor del parámetro.

n
P
xi
n i:1 1 1
− =0 de donde b̂ = n = (4.69)
b̂ 1 − b̂
P
xi X̄ (n) + 1
i:1
n
+1

290
MODELADO DE LAS ENTRADAS ALEATORIAS

3. Se calcula la segunda derivada de la Ecuación (4.67), derivando para ello


nuevamente la Ecuación (4.68), y se examina su signo para el valor del punto
crı́tico b̂ obtenido en la Ecuación (4.69). Se obtiene que el signo de la segunda
derivada es siempre negativo, con lo cual el punto crı́tico es un máximo:

n
P
xi
d2 ln (L (b)) n i:1
=− 2 − <0 (4.70)
db2 b (1 − b)2

En consecuencia, el estimador de máxima verosimilitud del parámetro de la


distribución geométrica es:

1
b̂ = (4.71)
X̄ (n) + 1

En el caso de las variables aleatorias continuas, no puede darse una expli-


cación tan intuitiva, ya que la probabilidad de que una variable aleatoria tome un
valor determinado es siempre cero. En el caso continuo, si fX (x, θ) es la densidad
de probabilidad de la distribución con un parámetro desconocido θ, la función de
verosimilitud se define de la forma siguiente:

L (θ) = fX (x1 , θ) · fX (x2 , θ) · ... · fX (xn , θ) (4.72)

El estimador de máxima verosimilitud, θ̂, del parámetro desconocido θ, se define


como el valor de θ que maximiza L (θ) para todos los valores permitidos de θ.
El estimador de máxima verosimilitud es único para los parámetros de la mayorı́a
de las familias de distribuciones. Es decir, no hay varios valores del parámetro
para los cuales se obtenga el mismo valor de la función verosimilitud y éste sea
máximo. Más aun, generalmente los estimadores máximo-verosı́miles pueden ob-
tenerse mediante métodos de cálculo, ya que el máximo relativo de la función de
verosimilitud obtenido derivando L (θ) con respecto a θ e igualando la derivada a
cero es generalmente el máximo absoluto. En los Apéndices A y B, situados al final
del libro, se indican los estimadores de máxima verosimilitud de los parámetros de
las distribuciones más frecuentemente usadas.
Los estimadores de máxima verosimilitud pueden ser estimadores sesgados. Es
decir, el valor esperado del estimador θ̂ puede no coincidir con el valor verdadero
(desconocido) del parámetro θ. Sin embargo, la distribución asintótica del estimador
θ̂, cuando el tamaño n de la muestra tiende a infinito, es una distribución normal

291
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

cuya media es igual a θ. Esta propiedad permite obtener intervalos de confianza para
los estimadores.
Es importante pensar en los parámetros de entrada de la simulación en términos
de sus intervalos de confianza. No debe olvidarse que los estimadores de estos
parámetros son variables aleatorias, cuya distribución depende del tamaño de la
muestra que se ha usado para calcularlos. Cuanto mayor es el tamaño n de la
muestra, menor es la varianza de la distribución del estimador y, por tanto, menor
es la longitud de su intervalo de confianza.
En ocasiones, la respuesta del modelo puede ser muy sensible frente a variaciones
en el valor de determinado parámetro de entrada. Esta posibilidad debe ser analizada
para cada modelo en concreto. Para ello, debe simularse el sistema no sólo para el
valor estimado de los parámetros de entrada, sino también para los valores extremos
de sus intervalos de confianza (frecuentemente del 90 %, 95 % ó 99 %) y comparar las
respuestas obtenidas. Si se observara que la dependencia de la respuesta del sistema
respecto a un parámetro, cuando éste varı́a dentro de su intervalo de confianza, es re-
levante para las conclusiones del estudio de simulación, debe estimarse el parámetro
con mayor precisión a fin de reducir la longitud de su intervalo de confianza.

4.7. TAREA III: MEDIDA DE LA BONDAD DEL AJUSTE

Una vez estimados los parámetros de la distribución a partir de los datos ex-
perimentales x1 , . . . , xn , cabe preguntarse en qué medida los datos experimentales
responden a la distribución ajustada, F̂X (x). Se trata de responder a la pregunta:
¿cabrı́a haber obtenido los datos experimentales muestreando la distribución F̂X (x)
o, por el contrario, existen grandes discrepancias entre la distribución ajustada y
los datos experimentales? Para intentar responder a esta pregunta se usan técnicas
gráficas y tests estadı́sticos.
Las técnicas gráficas son una herramienta muy potente de análisis. Común-
mente se usan el mismo tipo de representaciones que para seleccionar la familia de
distribuciones (Tarea I). Es decir, histogramas y gráficas Q-Q.
En la Figura 4.11 se muestra un ejemplo. Se han tomado 100 muestras de un
proceso de llegada (tiempos entre llegadas sucesivas). Apoyándose en razonamien-
tos teóricos y en la gráfica Q-Q (véase la gráfica Q-Q de la parte izquierda de
la Figura 4.11), se ha realizado la hipótesis de que los datos están distribuidos
exponencialmente. El estimador del parámetro de la distribución se calcula de los
datos experimentales: β̂ = 4. A continuación, se compara la distribución ajustada

292
MODELADO DE LAS ENTRADAS ALEATORIAS

20

0.00 0.05 0.10 0.15 0.20 0.25 0.30


15
Datos ordenados
10
5
0

0 1 2 3 4 5 0 5 10 15 20
Cuantiles expo(1) x

Figura 4.11: Ejemplo. Gráfica Q-Q (izqda). Histograma y densidad (drcha).

con los datos experimentales. Para ello, se representa el histograma de los datos
experimentales escalado como una densidad de probabilidad (la suma del área de las
barras vale uno) y la densidad de probabilidad de la distribución ajustada: expo (4).
Este gráfico se muestra en la parte derecha de la Figura 4.11.
Los tests de ajuste pretenden contrastar la hipótesis nula de que las ob-
servaciones x1 , . . . , xn están distribuidas F̂X (x). La mayorı́a de los tests no son
demasiado potentes. Cuando se dispone de pocas observaciones, son poco sensibles
a discrepancias entre los datos y la distribución ajustada. Sin embargo, cuando se
dispone de muchas observaciones, una pequeña discrepancia puede hacer que se
rechace el ajuste. El hecho de que un test no rechace un ajuste no debe considerarse
como una fuerte evidencia de que la distribución escogida sea un buen ajuste. En la
práctica conviene complementar el uso de los tests con el análisis visual del ajuste
usando técnicas gráficas.
La bibliografı́a sobre tests de ajuste es muy extensa. Dos de los tests más co-
múnmente empleados son el test chi-cuadrado y el test de Kolmogorov-Smirnov.
El test χ2 (chi-cuadrado) puede considerarse un método formal para, en el
caso continuo, comparar el histograma (escalado como densidad) de un conjunto de
datos experimentales independientes, x1 , . . . , xn , con la densidad de probabilidad de
determinada distribución fˆX (x). En el caso discreto, el test compara la probabilidad
experimental de cada valor de la variable aleatoria (obtenida de un conjunto de datos

293
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

experimentales independientes x1 , . . . , xn ) con la correspondiente probabilidad de


determinada distribución p̂X .
El test de Kolmogorov-Smirnov (abreviadamente test K-S) compara la fun-
ción de probabilidad acumulada empı́rica obtenida de los datos x1 , . . . , xn ,

número de xi ’s ≤ x
FX (x) = (4.73)
n

con determinada probabilidad acumulada, F̂ (x). La hipótesis H0 que contrasta el


test K-S es que las distribuciones F (x) y F̂ (x) son iguales.
La decisión acerca de cuál de estos dos tests usar depende de la naturaleza de la
distribución y del tamaño de la muestra x1 , . . . , xn .

– El test K-S es sólo válido para distribuciones continuas, mientras que el test
chi-cuadrado es aplicable tanto a distribuciones discretas como continuas.

– El test chi-cuadrado requiere la clasificación de los datos de la muestra en


clases. Dado que se recomienda que haya al menos 5 observaciones por clase
y conviene tener un número razonablemente grande de clases, el test chi-
cuadrado no es aplicable a muestras pequeñas. Por el contrario, el test K-S
es aplicable a cualquier tamaño de muestra.

4.8. SELECCIÓN DE LA DISTRIBUCIÓN EN AUSENCIA DE DA-


TOS

En algunos estudios de simulación no se dispone de datos para estimar la dis-


tribución de probabilidad de las entradas aleatorias. Las recomendaciones ofrecidas
en esta sección pueden ayudar a seleccionar la distribución en ausencia de datos. Se
contemplan tres situaciones diferentes, en las cuales se supone es posible estimar:
1) la media y la variabilidad; 2) el rango; y 3) el rango y la moda.
Supongamos en primer lugar que se dispone que una estimación de la media
y la variabilidad de la distribución. Si el proceso tiene muy poca variabilidad
y se conoce su valor medio, puede sustituirse en el modelo la entrada aleatoria por
un parámetro determinista cuyo valor sea el valor medio.
Cuando un proceso estocástico de llegada cumple determinadas condiciones (que
se discutirán en la próxima sección), suele usarse una distribución exponencial
para generar los intervalos de tiempo entre llegadas sucesivas. No obstante, las

294
MODELADO DE LAS ENTRADAS ALEATORIAS

distribuciones exponenciales deben usarse con cautela, ya que tienen una variabilidad
muy grande. Por ejemplo, normalmente una distribución exponencial no resulta
adecuada para modelar tiempos de servicio, ya que frecuentemente la duración de
los mismos no tiene una variabilidad tan grande como representa la distribución
exponencial.
Si se conoce la media y se sabe que la variabilidad del proceso es cierto porcentaje
de la misma, puede usarse en primera aproximación una distribución uniforme o
triangular simétrica. Por ejemplo, si se sabe que la media es 100 y que la variabilidad
está entorno al 30 %, puede usarse U (70, 130) o bien triang (70, 130, 100).
Debe tenerse en cuenta que los resultados obtenidos dependen fuertemente de la
distribución seleccionada. Para ilustrar este hecho, se han obtenido 10.000 muestras
independientes de cada una de las tres distribuciones siguientes: expo(100), U(70,
130) y triang(70, 130, 100). En la tabla mostrada a continuación se indica el valor de
la media, mediana, desviación estándar, el máximo y el mı́nimo de cada una de estas
tres conjuntos de 10.000 datos. En la Figura 4.12 se muestran los boxplots de las
muestras. Obsérvese que la distribución exponencial tiene una variabilidad mucho
mayor que la triangular y la uniforme.

Media Mediana Desv. Std. Mı́nimo Máximo


expo (100) 101.1192 69.1468 101.0142 0.0069 1010.9270
triang (70, 130, 100) 100.0656 100.1020 12.2538 70.2129 129.4429
U (70, 130) 99.9758 100.3433 17.2262 70.0022 129.9875
800 1000
600
400
200
0

expo triang uniforme


Figura 4.12: Boxplots de 10.000 muestras de expo(100), triang(70, 130, 100) y U(70, 130).

295
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Cuando se dispone sólo de estimaciones de los valores máximo y mı́nimo


del proceso, puede usarse una distribución uniforme o una distribución triangular
con la media en el punto central del rango. Otra posibilidad es usar una distribución
normal, con media en el punto medio del rango y desviación estándar igual a un
cuarto del rango. El problema se usar una distribución normal es que su rango es
(−∞, ∞). En la mayorı́a de las situaciones un rango infinito no tiene sentido, ya que
puede dar lugar a valores no realistas. Una forma de resolver el problema es truncar
la distribución al rango estimado, para evitar la generación de valores demasiado
grandes o demasiado pequeños.
Vemos un ejemplo. Supongamos que el rango del proceso es [80, 120] y que se
modela mediante las tres distribuciones siguientes: U (80, 120), triang (80, 120, 100)
y N µ = 120+80 120−80

2
= 100, σ = 4
= 10 . Se han generado 10.000 muestras indepen-
dientes de cada distribución. En la tabla mostrada a continuación se indica el valor
de la media, mediana, desviación estándar, el máximo y el mı́nimo de cada una de
estas tres conjuntos de 10.000 datos. Los boxplots de los tres conjuntos de datos
se muestran en la Figura 4.13. Se observa que el resultado obtenido depende de
la distribución escogida, si bien la dependencia no es tan pronunciada como en el
ejemplo anterior.

Media Mediana Desv. Std. Mı́nimo Máximo


N (100,10) 100.0424 100.1015 10.1002 137.7396 56.8264
triang (80, 120, 100) 100.1135 100.0185 8.0703 119.6908 80.1268
U (80, 120) 99.9957 100.0066 11.6050 119.9972 80.0082
140
120
100
80
60

normal triang uniforme


Figura 4.13: Boxplots de 10.000 muestras de N(100, 10), triang(80, 120, 100) y U(80, 120).

296
MODELADO DE LAS ENTRADAS ALEATORIAS

Cuando se conoce el mı́nimo, el máximo y la moda, posiblemente la mejor


opción es usar las distribuciones triangular, beta o normal. La distribución triangular
es la más cómoda de usar, ya que el máximo, mı́nimo y la moda son directamente
los parámetros de la distribución.
La distribución beta que se usa frecuentemente para modelar el tiempo requerido
para completar una tarea. Esta distribución ofrece mucha flexibilidad de modelado,
debido a la gran variedad de formas que la distribución beta puede asumir.
El rango de la distribución beta(α1 , α2 ) es [0, 1]. Si es preciso reescalar y desplazar
la distribución, se hace de la forma siguiente. Si la variable X está distribuida
beta(α1 , α2 ) y su rango es [0, 1], entonces la variable aleatoria Y , definida de la
forma Y = a + (b − a) · X, está distribuida beta(α1 , α2 ) en el rango [a, b].
Si se dispone de una estimación del mı́nimo (a), el máximo (b) y la moda (m) de
la distribución beta, puede estimarse la media de la distribución beta(α1 , α2 ) en el
rango [a, b] de la forma siguiente:

a+4·m+b
µ̃ = (4.74)
6
y los parámetros α1 y α2 ,

(µ̃ − a) · (2 · m − a − b)
α̃1 = (4.75)
(m − µ̃) · (b − a)
b − µ̃
α̃2 = · α̃1 (4.76)
µ̃ − a

4.9. PROCESOS ESTOCÁSTICOS DE LLEGADA

Consideremos una secuencia de instantes aleatorios t1 , t2 , . . . , que satisfacen


0 ≤ t1 ≤ t2 ≤ .... Supongamos que en cada uno de estos instantes de tiempo sucede
un determinado evento, como puede ser la llegada de una entidad al sistema. Su-
pongamos también que todos los instantes de tiempo ti son muestras independientes
de una determinada distribución de probabilidad. Entonces, los intervalos de tiempo
entre llegadas sucesivas, definidos como:

Ai = ti − ti−1 con i : 1, 2, . . . y donde t0 = 0 (4.77)

297
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

son observaciones independientes de variables aleatorias idénticamente distribuidas.


Hemos supuesto que en cada instante ti se produce un único evento. Por ello,
el número total de eventos N que se han producido hasta el instante t (inclusive)
puede calcularse de la forma siguiente:

N (t) = máx {i tal que ti ≤ t} (4.78)

En aquellos casos en que los eventos son llegadas de entidades al sistema, se dice
que el proceso estocástico {N (t) , t ≥ 0} es un proceso estocástico de llegada.

4.9.1. Procesos de Poisson

El proceso estocástico de llegada {N (t) , t ≥ 0} se dice que es un proceso de


Poisson cuando cumple las tres condiciones siguientes:

1. Las entidades llegan de una en una al sistema. Es decir, en cada instante ti se


produce la llegada de una única entidad. Esta condición no se cumple si las
entidades llegan en grupos de diferente tamaño.

2. El número de llegadas que se produce en el intervalo de tiempo (t, t + s],


es decir N (t + s) − N (t), es independiente de cómo se haya desarrollado el
proceso con anterioridad al instante de tiempo t. Esta condición no se cumple,
por ejemplo, si un cliente deja de enviar solicitudes de compra (entidades
que llegan al sistema) cuando el sistema tiene una larga cola de solicitudes
pendientes de atender.

3. El proceso es estacionario. La distribución del número de llegadas N (t + s) −


N (t) que se producen en el intervalo (t, t + s] es independiente del instante de
tiempo t en que comience el intervalo. Esta condición debe satisfacerse para
cualquier valor de t y para cualquier longitud s del intervalo. Esto implica que
la frecuencia de llegadas es siempre constante, cosa que en muchos sistemas
reales no se cumple debido a que la frecuencia depende de la hora del dı́a, la
época del año u otros factores.

A continuación se van a enunciar dos teoremas y una propiedad, relativos a los


procesos de Poisson, que resultan especialmente útiles. El primero de estos teoremas
explica el origen del nombre “procesos de Poisson”.

298
MODELADO DE LAS ENTRADAS ALEATORIAS

Teorema 4.9.1. Si {N (t) , t ≥ 0} es un proceso de Poisson, entonces el número de


llegadas en cualquier intervalo de tiempo de longitud s es una variable aleatoria de
Poisson con parámetro λ · s, donde λ es un número real positivo. Se satisface:

e−λ·s · (λ · s)k k = 0, 1, 2, . . .
Prob {(N (t + s) − N (t)) = k} = para (4.79)
k! t, s ≥ 0

Se cumple: E {N (s)} = λ · s. En particular: E {N (1)} = λ. Por consiguiente,


λ es el número esperado de llegadas en cualquier intervalo de tiempo de longitud
unidad. El parámetro λ se denomina frecuencia de llegada del proceso y se mide
en entidades por unidad de tiempo.
Teorema 4.9.2. Si {N (t) , t ≥ 0} es un proceso de Poisson con frecuencia λ, enton-
ces sus correspondientes intervalos entre llegadas A1 , A2 , . . . son variables aleatorias
independientes distribuidas exponencialmente de media β = λ1 .
Lo inverso también es cierto. Si los intervalos de tiempo, A1 , A2 , . . . , entre llega-
das de un proceso de llegadas {N (t) , t ≥ 0} son variables aleatorias independientes,
distribuidas exponencialmente con media β = λ1 , entonces {N (t) , t ≥ 0} es un
proceso de Poisson con frecuencia λ.
Propiedad 4.9.1. Suponga que se observa un proceso de Poisson durante un inter-
valo de tiempo [0, T ], donde la longitud T del intervalo se fija antes de iniciar las
observaciones. En diferentes instantes de tiempo a lo largo del intervalo,t1 , t2 , ..., tn ,
se van produciendo los eventos. Los instantes de tiempo satisfacen: 0 ≤ t1 ≤ t2 ≤
· · · ≤ tn ≤ T . Pues bien, los valores t1 , t2 , . . . , tn son indistinguibles, desde el punto
de vista estadı́stico de n números que han sido obtenidos muestreando independiente-
mente una distribución U (0, T ) y posteriormente ordenados en orden creciente.

Esta propiedad proporciona un procedimiento para contrastar la hipótesis de


que cierta secuencia observada de eventos está generada por un proceso de Poisson.
El procedimiento consiste en contrastar si los instantes de los eventos t1 , t2 , . . . , tn
parecen ser observaciones independientes muestreadas de la distribución U (0, T ).

4.9.2. Procesos de Poisson no estacionarios

La frecuencia de llegada de las entidades a muchos sistemas reales es una función


del tiempo, λ (t), con lo cual no se satisface la tercera condición. En este caso, los
intervalos entre llegadas A1 , A2 , . . . no están idénticamente distribuidos.

299
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Aquellos procesos estocásticos de llegada, {N (t) , t ≥ 0}, que satisfacen la pri-


mera y segunda condición, pero no la tercera, puesto que la frecuencia varı́a con el
tiempo, se denominan procesos de Poisson no estacionarios.
En los procesos de Poisson no estacionarios, el valor esperado del número de
eventos que se producen en el intervalo [0, t] es función del valor de t.
La frecuencia de llegada, λ (t) puede definirse formalmente como la derivada
temporal del valor esperado del número de llegadas que se producen en el intervalo
[0, t]:

dΛ (t)
λ (t) = donde Λ (t) = E {N (t)} (4.80)
dt
Teorema 4.9.3. Si {N (t) , t ≥ 0} es un proceso de Poisson no estacionario, en el
cual Λ (t) = E {N (t)} es una función continua del tiempo, entonces se satisface:

k = 0, 1, 2, . . .
e−b(t,s) · (b (t, s))k
Prob {(N (t + s) − N (t)) = k} = donde t, s ≥ 0
k!
b (t, s) = Λ (t + s) − Λ (t)
(4.81)

Este teorema significa que en un proceso de Poisson no estacionario, el número


de llegadas que se producen en el intervalo (t, t + s] es una variable aleatoria de
Poisson cuyo parámetro, b (t, s), depende de la longitud del intervalo y del tiempo.
Veamos cómo puede estimarse en la práctica la frecuencia de llegada de las
entidades, λ (t). Consideremos, por ejemplo, un servicio de atención al cliente que
funciona 8 horas al dı́a. La llegada de clientes se modela como un proceso de Poisson
no estacionario. Para estimar la evolución de la frecuencia de llegada a lo largo
de la jornada laboral, se miden los instantes de llegada de los clientes durante m
dı́as. El análisis de los datos se realiza dividiendo la jornada laboral en k intervalos
y calculando la media de las llegadas que se producen en cada intervalo en los m
dı́as. Dividiendo el número medio de llegadas de cada intervalo por la longitud del
intervalo se obtiene una estimación de la frecuencia de llegada en el mismo. En la
Figura 4.14 se muestra la representación de la frecuencia de este proceso calculada
para k = 8.

300
MODELADO DE LAS ENTRADAS ALEATORIAS

100
frecuencia (clientes/hora)
80
60
40
20
0

0 1 2 3 4 5 6 7 8
tiempo (horas)
Figura 4.14: Ejemplo de estimación de la evolución temporal de la frecuencia.

4.9.3. Procesos de Poisson compuestos

En algunos sistemas, las llegadas se producen en grupos compuestos de un número


aleatorio de entidades, con lo que no se cumple la primera condición. En algunos de
estos casos, el proceso de llegada puede modelarse de la manera siguiente:

– Si los intervalos entre llegadas están distribuidos aproximadamente de manera


exponencial y son independientes, entonces los instantes de llegada de los
grupos de entidades se modelan como un proceso de Poisson: {N (t) , t ≥ 0}.
En este caso, N (t) representa el número de grupos de entidades que han llegado
durante el intervalo [0, t].

– Sea Bi el número de entidades que compone el grupo que llega en el instante


ti . En algunos casos, puede considerarse que los tamaños Bi de los grupos son
observaciones independientes de cierta distribución discreta de probabilidad.

De este modo, el número de entidades X (t) que han llegado en el intervalo [0, t] se
calcula sumando las entidades de todos los grupos que han llegado en dicho intervalo
de tiempo:

N (t)
X
X (t) = Bi para t ≥ 0 (4.82)
i:1

301
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Se dice que el proceso estocástico {X (t) , t ≥ 0} es un proceso de Poisson


compuesto si se cumplen las condiciones siguientes:

1. Las variables aleatorias Bi son independientes entre sı́ y están idénticamente


distribuidas.

2. Las variables aleatorias Bi son independientes del proceso de llegada {N (t) , t ≥ 0}.

3. El proceso {N (t) , t ≥ 0} es de Poisson.

4.9.4. Modelado usando Arena

El módulo Create permite el modelado de los procesos de llegada de las entidades


al sistema. El tiempo entre llegadas puede ser constante o estar distribuido de
acuerdo a cualquier expresión basada en las distribuciones de probabilidad que
soporta Arena. Igualmente, el número de entidades por llegada (Entities per Arrival)
puede ser constante o estar distribuido aleatoriamente. Por consiguiente, los procesos
de llegada de Poisson son un caso particular dentro de los procesos de llegada que
permite modelar Arena.
En los procesos de Poisson estacionarios, el intervalo de tiempo entre lle-
gadas sucesivas está distribuido exponencialmente, con media constante. Para par-
ticularizar un módulo Create a este tipo de proceso, puede seleccionarse Random
(Expo) como tipo (Type) del tiempo entre llegadas (Time Between Arrivals).
Para modelar procesos de Poisson no estacionarios, en el módulo Create de-
be seleccionarse Schedule en el tipo (Type) de tiempo entre llegadas (Time Between
Arrivals). A continuación, debe especificarse la evolución temporal de la frecuencia
en el módulo de datos Schedule. Se realiza de forma equivalente a la planificación
de la capacidad de los recursos, con la única diferencia de que en la columna Type
de la fila correspondiente debe seleccionarse Arrival, en lugar de Capacity.
Cada par de valores “Value - Duration” de la planificación indica la frecuencia,
expresada en número de llegadas por hora, que se produce durante el periodo de
tiempo indicado. La duración del periodo de tiempo se expresa en las unidades
indicadas en la casilla Time Units.
Por ejemplo, consideremos la planificación descrita en la Tabla 4.3. Cada par
de valores “Value” - “Duration” especifica la frecuencia, medida en entidades por
hora, durante el periodo de tiempo indicado. Suponiendo que el dı́a consta de 24
horas (este dato se introduce al definir el experimento), la planificación establece que

302
MODELADO DE LAS ENTRADAS ALEATORIAS

Tabla 4.3: Ejemplo de planificación de un proceso de llegada

Name Llegada de clientes


Type Arrival
Time Units days
Scale Factor 1
Value 25, 40, 55, 70, 60, 20, 5
Duration 1, 1, 1, 1, 1, 1, 1

durante el primer dı́a llegarán aproximadamente 25 · 24 = 600 entidades, durante el


segundo dı́a 40 · 24 = 960, durante el tercero 55 · 24 = 1320 y ası́ sucesivamente, de
modo que el séptimo dı́a llegarán 5 · 24 = 120 entidades.
Una forma incorrecta de modelar un proceso de Poisson no estacionario consiste
en definir como tiempo entre llegadas (Time Between Arrivals), en el módulo Create,
una distribución exponencial con un valor para la media igual a una función del
tiempo definida por el usuario. Esta forma (incorrecta) de modelar el proceso de
Poisson no estacionario proporciona una solución aproximada si la variación de
la frecuencia entre intervalos es pequeña. Sin embargo, si la variación es grande,
este método proporciona resultados significativamente erróneos. El siguiente ejemplo
pretende ilustrar este problema.
Supongamos un proceso en el cual la variación temporal de la frecuencia se
describe empleado únicamente k = 2 intervalos, de 30 minutos de duración cada
uno.

Intervalo Frecuencia Tiempo medio entre llegadas


1 3 llegadas/hora 20 minutos
2 60 llegadas/hora 1 minuto

Si la última llegada del primer periodo se produjo en el instante 29 minutos,


entonces se generará el siguiente instante de llegada usando el tiempo medio entre
llegadas 20 minutos. Usando una distribución exponencial con media 20, es probable
obtener un valor mayor que 31 para el siguiente intervalo, con lo cual no se obtendrı́a
ninguna llegada durante el segundo intervalo, cuando en realidad el valor esperado
del número de llegadas en este segundo intervalo es 30.
Este método (erróneo) para generar los procesos de Poisson no estacionarios
produce una infraestimación en el número de llegadas cuando entre un intervalo y el
siguiente se produce un aumento en la frecuencia, y una sobreestimación en el número
de llegadas cuando entre un intervalo y el siguiente se produce una disminución en
la frecuencia.

303
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.10. MODELADO DE LAS ENTRADAS USANDO ARENA

En la práctica, el ajuste de las distribuciones de probabilidad a los datos suele


realizarse usando herramientas software. Puede emplearse software estadı́stico de
propósito general, como por ejemplo R, o bien paquetes software con este propósito
especı́fico, como puede ser ExpertFit (puede descargarse gratuitamente una versión
de demostración de http://www.averill-law.com/). También los entornos de simula-
ción incorporan sus propias herramientas para el modelado de las entradas aleatorias.
Este es el caso de la herramienta Input Analyzer, que se distribuye junto con Arena.
El entorno de simulación Arena proporciona las capacidades necesarias para
realizar la selección de la distribución y el ajuste de los datos, facilitando que las
distribuciones ajustadas (teóricas o empı́ricas, continuas o discretas) puedan ser
usadas directamente en el modelo. El modelado de las entradas aleatorias se realiza
siguiendo los cuatro pasos siguientes:

1. Crear un fichero de texto que contenga las observaciones experimentales.

2. Ajustar una o más distribuciones a los datos.

3. Seleccionar qué distribución desea usarse.

4. Copiar la expresión generada por Input Analyzer en el campo apropiado del


modelo en Arena.

Fichero de datos. El formato del fichero de texto que contiene los datos
experimentales x1 , . . . , xn es libre. Los datos pueden estar separados por un número
arbitrario de espacios en blanco, tabuladores y retornos de carro. Pueden existir
tantas observaciones por lı́nea del fichero como se desee y cada lı́nea puede tener un
número variable de observaciones. La extensión por defecto del fichero es “.dst”.
Arranque de Input Analyzer. Debe seleccionarse Tools / Input Analyzer en
el menú de Arena. Al hacerlo se abre la ventana Input Analyzer, en la cual se trabaja
a partir de este punto.
Carga del fichero de datos. Lo primero es crear una nueva sesión de trabajo
(File / New) y a continuación cargar el fichero de datos (File / Data File / Use
Existing ...). Los datos cargados pueden visualizarse seleccionando Window / Input
Data.
Histograma. Al cargar el fichero con las muestras experimentales, se muestra
automáticamente el histograma de las mismas. Puede modificarse el número de

304
MODELADO DE LAS ENTRADAS ALEATORIAS

clases y el rango del histograma seleccionando Options / Parameters / Histogram


... La modificación del rango del histograma permite restringir las muestras que
van a ser estudiadas y a las que se va a realizar el ajuste: sólo son consideradas
aquellas contenidas en el intervalo indicado. Esta capacidad es útil para el estudio
de muestras multimodales.
Ajuste de una distribución. La opción Fit permite seleccionar qué distribu-
ción desea ajustarse de entre determinado conjunto de posibles distribuciones. Por
ejemplo, en la Figura 4.15 se muestra el ajuste de una distribución normal a un
conjunto de 125 datos experimentales.

Figura 4.15: Ajuste a los datos de una distribución normal.

La densidad de probabilidad de la distribución ajustada se dibuja superpuesta al


histograma. Los datos resultado del ajuste no sólo se muestra en la pantalla, además
queda automáticamente grabado en un fichero que lleva el nombre de la familia de
la distribución ajustada y tiene extensión “.out”. Esta información es la siguiente:

– Distribution. Familia de la distribución ajustada.

– Expression. Es la expresión exacta que debe usarse en el modelo de Arena para


representar la distribución ajustada. Puede copiarse al modelo mediante: Edit
/ Copy Expression. Esta opción es especialmente útil cuando se ajusta una
distribución empı́rica.

– Square Error. Es el error cuadrático medio. Se calcula como el promedio del


cuadrado del error cometido en las clases del histograma:

kH
e2i
P
i:1
(4.83)
kH
donde kH es el número de clases del histograma. El error cometido en la clase
i, ei , es la diferencia entre la frecuencia relativa observada en esa clase y la
frecuencia relativa predicha por la distribución ajustada. Cuanto mayor es el

305
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

error cuadrático medio, más se desvı́a la distribución ajustada de los datos


observados y, en consiguiente, peor es el ajuste.

– Chi-square test. Resultado de la aplicación del test chi-cuadrado para contras-


tar la bondad del ajuste. Se indica el número de clases del test, el número
de grados de libertad, el valor del estadı́stico χ2 y el correspondiente p-value.
Arena compara el estadı́stico χ2 con el punto crı́tico de la distribución χ2k−m−1 ,
donde k es el número de clases del test (en general diferente del número de
clases del histograma) y m es el número de parámetros de la distribución que
se han ajustado usando las observaciones.
El p-value es la probabilidad de muestrear de la distribución ajustada un
conjunto de observaciones más inconsistente con la distribución que los datos
experimentales x1 , . . . , xn .
Cuanto mayor es el valor del p-value (siempre vale entre 0 y 1), mejor es
el ajuste. Como en el caso de cualquier test estadı́stico, obtener un valor
elevado del p-value no constituye una prueba de la bondad del ajuste, sino
una indicación que no existe evidencia para refutar el ajuste.
Si el valor del p-value del ajuste de una o varias distribuciones teóricas es
suficientemente grande (por ejemplo, mayor que 0.10), entonces se pueden
usar estas distribuciones teóricas (siempre que el tamaño de la muestra sea
lo suficientemente grande como para considerar significativos los resultados de
los tests). Si el valor de los p-values de los ajustes de las distribuciones teóricas
son bajos, entonces es preferible emplear una distribución empı́rica.

– Kolmogorov-Smirnov test. Resultado obtenido de aplicar el test de Kolmogorov-


Smirnov. El analizador de entradas indica el valor del estadı́stico del test y el
correspondiente valor del p-value.

Ajuste de todas las distribuciones. Seleccionando Fit / Fit All, Arena realiza
automáticamente el ajuste de todas las familias de distribuciones soportadas por
Input Analyzer. Se genera un informe que contiene el valor del error cuadrático
medio obtenido en cada caso. Por ejemplo, el informe correspondiente a los datos
mostrados en la Figura 4.15 es el siguiente:

306
MODELADO DE LAS ENTRADAS ALEATORIAS

Function Sq Error
Beta 0.00492
Normal 0.00705
Weibull 0.0101
Gamma 0.0155
Erlang 0.0167
Lognormal 0.0243
Triangular 0.0343
Uniform 0.103
Exponential 0.138

Debe tenerse en cuenta que los valores obtenidos de este error dependen del nú-
mero de clases del histograma. El informe puede visualizarse seleccionando Window
/ Fit All Summary. Asimismo, los resultados se almacenan en un fichero llamado
SUMMARY.OUT. También se muestran los datos del ajuste de la distribución con
el menor error cuadrático medio (en el ejemplo anterior, la distribución beta).
En ocasiones existen varias distribuciones, pertenecientes a distintas familias, que
se ajustan razonablemente bien a los datos experimentales. En estos casos, pueden
considerarse los siguientes factores a la hora de escoger una u otra:

– Si durante el estudio de simulación se planea modificar el valor de los pa-


rámetros de esta distribución de entrada, por ejemplo para realizar estu-
dios de sensibilidad o para evaluar diferentes escenarios, conviene escoger
una distribución cuyos parámetros tengan un significado conceptual claro. Por
ejemplo, para representar los intervalos entre llegadas, puede encontrarse que
una distribución exponencial y una de Weibull proporcionan ajustes similares
a los datos experimentales. En este caso, es mucho más sencillo trabajar (por
ejemplo, modificar la frecuencia de llegadas) con la distribución exponencial
que con la de Weibull.

– Es una buena práctica evaluar la sensibilidad de los resultados de la simulación


frente a variaciones en las distribuciones de entrada. En particular, si existen
varias distribuciones candidatas, puede ejecutarse la simulación para cada una
de ellas y analizar en qué medida difieren los resultados obtenidos.

307
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4.11. MODELADO DE LAS ENTRADAS USANDO R

El lenguaje R proporciona muchas ayudas para el modelado de datos. A conti-


nuación se resumen algunas de ellas.

4.11.1. Funciones estadı́sticas

R proporciona las funciones estadı́sticas más habituales. Se muestran algunas de


ellas en la Tabla 4.4.
Tabla 4.4: Algunas funciones estadı́sticas de R.

Función Descripción
mean(x) Media
median(x) Mediana
sd(x) Desviación estándar
var(x) Varianza
quantile(x,probs) Cuantiles
min(x) Mı́nimo
max(x) Máximo

La función quantile(x,probs) acepta como argumentos el vector numérico x del


cual se desean calcular los cuantiles y un vector numérico prob con probabilidades
en [0, 1]. Por ejemplo, los percentiles 0.25 y 0.75 de x pueden calcularse de la forma:
> y <- quantile(x, c(0.25,0.75))

Asimismo, R proporciona funciones de probabilidad que permiten generar datos


y calcular valores de la probabilidad. El nombre de las funciones de probabilidad
de R sigue el convenio siguiente. El nombre de la función comienza por una de las
cuatro letras siguientes:

d Densidad
p Función de distribución
q Función cuantil
d Generación aleatoria de observaciones

y a continuación se escribe el nombre abreviado correspondiente a la distribución de


probabilidad. En la Tabla 4.5 se muestran los nombres de algunas de las distribu-
ciones de probabilidad de R.

308
MODELADO DE LAS ENTRADAS ALEATORIAS

Tabla 4.5: Algunas distribuciones de probabilidad.

Distribución Nombre Distribución Nombre


Beta beta Geométrica geom
Binomial binom Lognormal lnorm
Binomial negativa nbinom Normal norm
Cauchy cauchy Poisson pois
Chi-cuadrado chisq T t
Exponencial exp Uniforme unif
Gamma gamma Weibull weibull

Por ejemplo, las sentencias mostradas a continuación dibujan la densidad de


probabilidad de la distribución normal, tal como se muestra en la Figura 4.16.

> x <- pretty(c(-3,3),60)


> y <- dnorm(x)
> plot(x,y,type="l",xlab="x",ylab="f(x)",yaxs="i",
main="Densidad de probabilidad N(0,1)")

Figura 4.16: Densidad de probabilidad de la distribución normal estándar.

Veamos algunos otros ejemplos. El área que queda a la izquierda de z = 2, bajo


la densidad de probabilidad N(0,1) (véase nuevamente la Figura 4.16), es:

> pnorm(2)
[1] 0.9772499

309
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

El valor del percentil 90 de la distribución N(50,10) es:

> qnorm(0.9, mean=50, sd=20)


[1] 75.63103

La sentencia siguiente genera 6 observaciones independientes de la distribución


N(50,10):

> rnorm(6, mean=50, sd=20)


[1] 42.79969 60.27908 70.79518 31.82367 51.92393 50.23364

Cada vez que R genera observaciones de una distribución de probabilidad emplea


una semilla diferente, con lo cual los valores generados son diferentes. Si se desea
reproducir los mismos resultados, es necesario especificar la semilla mediante la
función set.seed(). A continuación se muestra un ejemplo.

> rnorm(6, mean=50, sd=20)


[1] 38.50520 39.06736 38.71096 32.19924 40.45615 30.03227
> rnorm(6, mean=50, sd=20)
[1] 34.47492 51.28918 69.18988 47.79429 39.77981 31.77609
> set.seed(1234)
> rnorm(6, mean=50, sd=20)
[1] 25.858685 55.548585 71.688824 3.086046 58.582494 60.121118
> set.seed(1234)
> rnorm(6, mean=50, sd=20)
[1] 25.858685 55.548585 71.688824 3.086046 58.582494 60.121118

4.11.2. Histogramas

La función hist() permite crear un histograma. La opción freq=FALSE crea el


histograma basándose en la densidad de probabilidad, en lugar de en la frecuencia
relativa. La opción breaks controla el número de clases.
En el ejemplo siguiente se crea un objeto con 100 observaciones de una distri-
bución normal con media 10 y desviación estándar 2. A continuación se dibuja
el histograma basado en la densidad de probabilidad, con 10 clases, añadiendo
pequeñas lı́neas bajo el histograma que señalan los datos. Finalmente, se dibuja
sobre el histograma una estimación de la densidad de probabilidad de los datos y
una caja que rodea el gráfico. Se emplea la función lines() para dibujar encima
del gráfico (si se empleara plot(), se comenzarı́a un nuevo gráfico). El resultado se
muestra en la Figura 4.17.

310
MODELADO DE LAS ENTRADAS ALEATORIAS

Figura 4.17: Histograma basado en la densidad de probabilidad.

> x <- rnorm(100, mean=10, sd=2)


> hist(x, freq=FALSE, breaks=10,
xlab="x distribuido N(10,2)",
main="Histograma de 100 observaciones N(10,2)")
> rug(jitter(x))
> lines(density(x), col="blue", lwd=2)
> box()

4.11.3. Gráficas Q-Q

Las gráficas Q-Q son una herramienta muy útil para comparar un conjunto de
datos con una distribución teórica. El objetivo de la comparación es determinar si
aparentemente los datos podrı́an haber sido muestreados de dicho tipo de distribu-
ción.
Existen varias funciones en R para la representación de gráficas Q-Q. Una de ellas
es chart.QQPlot(). Esta función se encuentra en el paquete PerformanceAnalytics,
con lo cual para poder usarla es necesario primero instalar el paquete y a continuación
cargarlo.
Esta función dibuja los cuantiles empı́ricos en el eje Y y el eje X contiene los
valores del modelo teórico. Se dibuja también una lı́nea recta con una inclinación

311
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Figura 4.18: Gráficas Q-Q de un conjunto de datos para las distribuciones normal, exponencial
y uniforme. Aparentemente los datos pueden haber sido muestreados de una distribución normal.

de 45 grados. Si los datos provienen de la distribución teórica, los puntos caerán


aproximadamente sobre esta lı́nea. Cuanto mayor sea la distancia entre los datos y
la lı́nea, mayor será la evidencia de que los datos no provienen de la distribución
teórica en cuestión. Por ejemplo, el resultado de la ejecución del código mostrado
más abajo puede verse en la Figura 4.18.

> par(mfrow=c(1,3))
> x <- rnorm(100,20,2)
> chart.QQPlot(x, envelope=0.95,
main = "NORMAL", distribution = ’norm’)
> chart.QQPlot(x, envelope=0.95,
main = "EXPONENCIAL", distribution = ’exp’)
> chart.QQPlot(x, envelope=0.95,
main = "UNIFORME", distribution = ’unif’)

4.11.4. Ajuste de los datos

La función fitdistr(), que se encuentra en el paquete MASS, calcula estimadores


de máxima verosimilitud para los parámetros de las distribuciones de probabilidad.
Los parámetros que al menos deben pasarse a la función son el nombre del objeto
donde se encuentran los datos y en nombre de la distribución a ajustar. Posi-
bles nombre son: "beta", "cauchy", "chi-squared", "exponential", "f", "gamma",
"geometric", "lognormal", "logistic", "negative binomial", "normal", "Poisson",
"t" y "weibull". A continuación se muestra un ejemplo.

312
MODELADO DE LAS ENTRADAS ALEATORIAS

> x <- rnorm(500,20,3)


> fitdistr(x,"normal")
mean sd
20.05327880 2.87399628
( 0.12852902) ( 0.09088374)
> fitdistr(x,"exponential")
rate
0.049867157
(0.002230127)

4.11.5. Medida de la bondad del ajuste

Pueden emplearse técnicas gráficas para evaluar la bondad del ajuste. Una de
ellas consiste en dibujar el histograma con los datos y sobre éste la densidad de
probabilidad de la distribución teórica ajustada.
Además de las técnicas gráficas, pueden realizarse tests de ajuste para contrastar
la hipótesis de que los datos provienen de la distribución ajustada. Entre los tests
soportados por funciones en R están el test chi-cuadrado y el test de Kolmogorov-
Smirnov.

4.12. LECTURAS RECOMENDADAS

Las explicaciones acerca de los conceptos básicos de probabilidad descritos en


este tema han sido extraı́dos de (Papoulis 1991). En ese texto puede ampliarse
información.
En (Bratley et al. 1987) se describen otros métodos para definir distribuciones
empı́ricas de variables aleatorias continuas. Por ejemplo, métodos en los cuales se
introducen en uno o a ambos lados una “cola exponencial” para eliminar el problema
de la acotación en los valores de la variable aleatoria.
Las consideraciones teóricas para el modelado de las entradas aleatorias han
sido extraı́das básicamente de (Pedgen et al. 1995), (Banks et al. 1996), (Fishman
2001), (Bratley et al. 1987) y (Hoover & Perry 1989). En estos textos se ofrecen
explicaciones más amplias y detalladas.
Puede encontrarse una discusión detallada en (Law & Kelton 2000) acerca del
uso de estadı́sticos para la selección de la familia de distribuciones que mejor modela
unos datos experimentales.

313
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

La construcción de histogramas, en particular los criterios para la selección del


número de clases, se aborda con detalle en (Pedgen et al. 1995) y en (Law & Kelton
2000).
En (Law & Kelton 2000) se discuten las ventajas del estimador de máxima
verosimilitud frente a otras técnicas para la estimación de los parámetros de la
distribución. También puede encontrarse en ese texto la explicación de propiedades
importantes del estimador de máxima verosimilitud.
En (Pedgen et al. 1995) se discuten ampliamente diferentes técnicas para la me-
dida de la bondad del ajuste (Tarea III). En (Law & Kelton 2000) puede encontrarse
una amplia discusión acerca de los tests estadı́sticos de ajuste.
En los textos (Pedgen et al. 1995) y (Law & Kelton 2000) se ofrecen abundantes
recomendaciones acerca de la selección de la distribución en ausencia de datos. El
ajuste a la distribución beta se explica detalladamente en (Pedgen et al. 1995).
En el texto (Kelton et al. 2002) puede encontrarse más información sobre el
modelado de las entradas usando Input Analyzer de Arena.

314
MODELADO DE LAS ENTRADAS ALEATORIAS

4.13. EJERCICIOS DE AUTOCOMPROBACIÓN

Ejercicio 4.1

Dibuje en una misma gráfica la densidad de probabilidad de cuatro distribuciones


normales con media cero, pero con desviaciones estándar 14 , 12 , 1 y 2 respectivamente.

Ejercicio 4.2

Dibuje la probabilidad de la distribución de Poisson correspondiente a cada uno


de los siguientes cuatro valores del parámetro α: 12 , 1, 2 y 4.

Ejercicio 4.3

Dibuje en una misma gráfica la densidad de probabilidad de dos distribuciones


exponenciales, la primera con λ = 0.6 y la segunda con λ = 1.2.

Ejercicio 4.4

En una lı́nea de ensamblaje de coches se emplea un robot para colocar las puertas.
Se sospecha que el tiempo de instalación obedece una distribución normal. El robot
es capaz de medir de manera precisa el tiempo que tarda en instalar cada puerta. Se
tomaron automáticamente 20 medidas del tiempo de instalación, obteniéndose los
siguientes tiempos (medidos en segundos):

99.79 99.56 100.17 100.33


100.26 100.41 99.98 99.83
100.23 100.27 100.02 100.47
99.55 99.62 99.65 99.82
99.96 99.90 100.06 99.85

Dibuje el histograma de los datos experimentales y realice el ajuste de una


distribución normal usando la herramienta Input Analyzer. A continuación, dibuje
el gráfica Q-Q comparando los datos experimentales con una distribución normal.
Discuta si el gráfico Q-Q soporta la hipótesis de que los datos están distribuidos
normalmente.

315
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejercicio 4.5

Calcule el estimador de máxima verosimilitud del parámetro de escala de la


distribución exponencial.

Ejercicio 4.6

Se ha contabilizado el número de vehı́culos que llegan a determinado semáforo


durante un periodo de 5 minutos, entre las 7:00 AM y las 7:05 AM. Las medidas
se han realizado todos los dı́as laborables, durante 20 semanas. Las observaciones
obtenidas son las siguientes:

Llegadas Frecuencia Llegadas Frecuencia


por periodo por periodo
0 12 6 7
1 10 7 5
2 19 8 5
3 17 9 3
4 10 10 3
5 8 11 1

Dibujar el histograma de los datos experimentales y realizar el ajuste a una


distribución de Poisson.

316
MODELADO DE LAS ENTRADAS ALEATORIAS

4.14. SOLUCIONES DE LOS EJERCICIOS

Solución al Ejercicio 4.1

En la Figura 4.19 se muestra la densidad de probabilidad de la distribución


normal para los cuatro valores pedidos de la desviación estándar. La densidad de
probabilidad de la distribución normal es:

1 −(x−µ)2
fX (x) = √ ·e 2·σ 2 para todos los números reales x (4.84)
2 · π · σ2
1.5

1
σ=
4
1.0
fX(x)

1
σ=
0.5

σ =1 2
σ =2
0.0

-6 -4 -2 0 2 4 6
x
Figura 4.19: Densidades de probabilidad de la distribución normal.

317
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 4.2

La probabilidad de la distribución de Poisson con media α es (véase la Figu-


ra 4.20):

e−α ·αx
(
x!
si x ∈ {0, 1, . . .}
pX (x) = (4.85)
0 en cualquier otro caso
0.0 0.1 0.2 0.3 0.4 0.5 0.6

0.0 0.1 0.2 0.3 0.4 0.5 0.6


α = 0.5 α =1
p X(x)

p X(x)

0 1 2 3 4 5 6 0 1 2 3 4 5 6
x x
0.0 0.1 0.2 0.3 0.4 0.5 0.6

0.0 0.1 0.2 0.3 0.4 0.5 0.6

α =2 α =4
p X(x)
p X(x)

0 2 4 6 8 0 2 4 6 8 10
x x
Figura 4.20: Densidades de probabilidad de la distribución de Poisson.

318
MODELADO DE LAS ENTRADAS ALEATORIAS

Solución al Ejercicio 4.3

La densidad de probabilidad de la distribución exponencial con media λ es (véase


la Figura 4.21):

( x
1
λ
· e− λ si x ≥ 0
fX (x) = (4.86)
0 en cualquier otro caso
1.5
1.0
fX(x)
0.5
0.0

0 1 2 3 4 5 6
x
Figura 4.21: Densidades de probabilidad de la distribución exponencial.

319
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 4.4

Para estudiar los datos usando Input Analyzer, pueden seguirse los pasos si-
guientes. En primer lugar, es preciso guardar los datos en un fichero de texto. Por
ejemplo, ”datos.dst”. A continuación, hay que arrancar Input Analyzer, crear una
nueva sesión de trabajo (File / New) e importar el fichero de texto con los datos
(File / Data File / Use Existing ...).
Al cargar los datos, Input Analyzer muestra el histograma de los mismos. Pueden
modificarse los parámetros del histograma mediante Options / Parameters / Histo-
gram ... Por ejemplo, puede escogerse: número de intervalos: 6, valor inferior: 99.4,
valor superior: 100.6. Se realiza el ajuste a la distribución normal seleccionando Fit /
Normal. En la Figura 4.22 se muestran el histograma y la densidad de probabilidad
de la distribución normal ajustada.

Figura 4.22: Ajuste de una distribución normal usando Input Analyzer.

Los resultados del ajuste son los siguientes:

Distribution Summary

Distribution: Normal
Expression: NORM(100, 0.276)
Square Error: 0.019239

Chi Square Test


Number of intervals = 2
Degrees of freedom = -1
Test Statistic = 1.04
Corresponding p-value < 0.005

Kolmogorov-Smirnov Test
Test Statistic = 0.108
Corresponding p-value > 0.15

Data Summary

320
MODELADO DE LAS ENTRADAS ALEATORIAS

Number of Data Points = 20


Min Data Value = 99.5
Max Data Value = 100
Sample Mean = 100
Sample Std Dev = 0.283

Histogram Summary

Histogram Range = 99.4 to 101


Number of Intervals = 6

La distribución normal ajustada a los datos tiene media µ = 100 y desviación


estándar σ = 0.276. Cuando el número de medidas experimentales es pequeña, como
en este caso, la gráfica Q-Q es una herramienta más potente que el histograma y los
tests estadı́sticos de uniformidad. En la Figura 4.23 se muestra el gráfico cuantil-
cuantil de los datos experimentales frente a la distribución normal estándar.
99.8 100.0 100.2 100.4
Datos experimentales
99.6

-2 -1 0 1 2
Cuantiles de la distribución normal estándar
Figura 4.23: Gráfico Q-Q de los datos con la distribución normal estándar.

A la vista del histograma es difı́cil decidir si los datos están bien representados
mediante una distribución normal. Sin embargo, la percepción de una lı́nea recta es
bastante clara en el gráfico Q-Q, lo cual apoya la hipótesis de la distribución normal.
A la hora de evaluar la linealidad del gráfico Q-Q, es útil tener en cuenta las
siguientes tres consideraciones:

– Los valores observados nunca van a caer sobre una lı́nea recta.

– Los valores observados no son independientes, ya que han sido ordenados. Por
ello, si un punto está por encima de la lı́nea recta, es probable que el siguiente
punto se encuentre también por encima de la lı́nea. Es muy improbable que
los puntos se alternen a un lado y otro de la lı́nea.

321
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

– Las varianzas de los extremos del gráfico (valores más pequeños y mayores) son
mucho mayores que las varianzas en la parte central. Por ello, son aceptables
grandes discrepancias en los extremos. La linealidad de los puntos en el medio
del gráfico es mucho más importante que la linealidad en los extremos.

Solución al Ejercicio 4.5

Dado un conjunto de n observaciones independientes, la función de verosimilitud


del parámetro de escala de la distribución exponencial es:

Pn
      xi
1 − x1 1 − x2 1 − xn 1 i:1
L (β) = ·e β · ·e β · ... · ·e β = n · e− β (4.87)
β β β β

Puesto que el valor de β que maximiza L (β) es el mismo que maximiza ln (L (β)),
con el fin de simplificar los cálculos se resolverá el problema de extremos del logaritmo
de la Ecuación (4.87). Tomando el logaritmo de ambos lados de la igualdad de la
Ecuación (4.87), se obtiene:

n
1X
ln (L (β)) = −n · ln (β) − xi (4.88)
β i:1

La derivada de la Ecuación (4.88) respecto a β es:

n
d ln (L (β)) 1 1 X
= −n · + 2 xi (4.89)
dβ β β i:1

Igualando a cero la Ecuación (4.89), se obtiene el valor de la única raı́z de la


ecuación, que coincide con la media de los datos:

n
P
n xi
1 1 X i:1
−n · + xi = 0 → β̂ = = X̄ (n) (4.90)
β̂ β̂ 2 i:1
n

Para analizar si la raı́z de la primera derivada es un máximo, un mı́nimo o un


punto de inflexión de la función (4.88), en primer lugar es preciso calcular la segunda
derivada de la Ecuación (4.88). Para ello, debe derivarse la Ecuación (4.89):

322
MODELADO DE LAS ENTRADAS ALEATORIAS

n
d2 ln (L (β)) 1 2 X
= +n · − xi (4.91)
dβ 2 β 2 β 3 i:1

A continuación, debe evaluarse la Ecuación (4.91) para el valor de β̂ obtenido de


la Ecuación (4.90):

n n
1 2 X 1 2 X
n· − xi = n ·  n 2 −  n 3 xi
β̂ 2 β̂ 3 i:1
P
xi
P
xi i:1
 i:1   i:1 
n n

n3 2 · n3
=  2 −  2
Pn n
P
xi xi
i:1 i:1
3
n
= − 2 < 0 (4.92)
n
P
xi
i:1

El resultado obtenido es un número negativo, con lo cual la raı́z de la primera


derivada es un máximo. Se trata, por tanto, del estimador de máxima verosimilitud
del parámetro.

323
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 4.6

En la Figura 4.24 se muestra el histograma de los datos experimentales y el


histograma de la distribución de Poisson ajustada, cuya media es α = 3.64. Se ha
empleado para ello Input Analyzer.

Figura 4.24: Histograma de los datos y de la distribución de Poisson ajustada.

El test chi-cuadrado aplicado por Output Analyzer rechaza la hipótesis nula de


que la variable está distribuida Poisson con media 3.64:

Distribution: Poisson
Expression: POIS(3.64)
Square Error: 0.025236

Chi Square Test


Number of intervals = 6
Degrees of freedom = 4
Test Statistic = 19.8
Corresponding p-value < 0.005

Ası́ pues, el test rechaza la hipótesis nula con un nivel de significación 0.05. Es
conveniente buscar otro tipo de distribución a la cual ajustar los datos o bien emplear
una distribución empı́rica.

324
TEMA 5

GENERACIÓN DE LAS ENTRADAS ALEATORIAS

5.1. Introducción
5.2. Generación de números aleatorios
5.3. Tests empı́ricos
5.4. Métodos para generar observaciones de variables aleatorias
5.5. Observaciones de variables aleatorias continuas
5.6. Observaciones de variables aleatorias discretas
5.7. Generación de procesos de llegada
5.8. Lecturas recomendadas
5.9. Ejercicios de autocomprobación
5.10. Soluciones de los ejercicios
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Describir algunos generadores fı́sicos de números aleatorios. Discutir las dife-


rencias entre los generadores fı́sicos y aritméticos desde el punto de vista de
su aplicación a la simulación.

– Discutir el significado de la uniformidad e independencia de una secuencia de


números.

– Discutir las caracterı́sticas de diferentes tipos de generadores aritméticos, in-


cluyendo los generadores congruenciales lineales y cuadráticos, los generadores
combinados y de Tausworthe.

– Discutir cuál es la finalidad de los tests empı́ricos de uniformidad e indepen-


dencia.

– Discutir los métodos fundamentales para la generación de observaciones de


variables aleatorias. Aplicar los métodos de la transformación inversa, de com-
posición y convolución, y de aceptación/rechazo para generar observaciones de
distribuciones de probabilidad.

– Aplicar algoritmos para generar observaciones de variables aleatorias conti-


nuas, discretas y de procesos estocásticos de llegada.

327
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

5.1. INTRODUCCIÓN

La generación de números aleatorios es un tema complejo y de suma importancia,


ya que constituye el corazón de la simulación estocástica. La simulación de cualquier
modelo que contenga entradas aleatorias requiere de la aplicación de un método para
la generación de muestras independientes de estas variables con las que alimentar el
modelo.
Estas muestras son obtenidas mediante determinadas transformaciones, depen-
dientes de la distribución de probabilidad de la variable aleatoria, a partir de números
distribuidos U (0, 1). Estos números independientes, distribuidos uniformemente en
el intervalo [0, 1], reciben el nombre de números aleatorios.
Para ilustrar el empleo de los números aleatorios en la generación de observa-
ciones de variables aleatorias, consideremos el lanzamiento de un dado ideal con las
caras numeradas entre 1 y 6. Si se dispone de una fuente de números aleatorios,
podrı́a simularse el lanzamiento del dado asociando los números aleatorios con las
caras del dado de la forma indicada en la Figura 5.1. Simplemente cambiando la
probabilidad asociada a cada una de las caras podrı́a simularse el lanzamiento de
un dado “trucado”.

Número 0 1/6 2/6 3/6 4/6 5/6 1


aleatorio

Valor
del dado

Figura 5.1: Asociación entre el número aleatorio y la cara del dado en la simulación del
lanzamiento de un dado ideal.

Existen dos grandes clases de generadores de números aleatorios: los generadores


fı́sicos y los generadores aritméticos. La elección acerca de cuál de los dos resulta
más adecuado depende de la aplicación.

– Generadores fı́sicos. Son dispositivos fı́sicos que emplean fuentes externas,


como son la desintegración de un material radioactivo o el ruido eléctrico,
para generar números aleatorios. Los más frecuentemente usados están ba-
sados en circuitos eléctricos dotados de una fuente de ruido (frecuentemente
una resistencia o un diodo semiconductor) que es amplificada, muestreada y
comparada con una señal de referencia para producir secuencias de bits. Por

329
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

ejemplo, si el ruido es menor que la referencia se produce un 0 y si es mayor


un 1. Frecuentemente, en las secuencias de bits ası́ obtenidas los 1’s no tienen
la misma probabilidad que los 0’s, con lo cual deben ser post-procesadas para
obtener secuencias de bits aleatorios. Para su aplicación, estos bits aleatorios se
unen para formar bytes, números enteros o números reales, según sea preciso.

– Generadores aritméticos. Son algoritmos deterministas ejecutados median-


te el ordenador. Los buenos generadores aritméticos producen secuencias de
números que son indistinguibles de realizaciones independientes de variables
distribuidas U(0,1). Existen dos grandes familias de generadores aritméticos:
los generadores lineales y los no lineales. En simulación los generadores más
comúnmente usados son los lineales.

Se han desarrollado tests estadı́sticos para contrastar la bondad de los ge-


neradores. Es decir, para contrastar si la secuencia de números generada puede
“confundirse” con observaciones independientes de la distribución U (0, 1). Existen
dos tipos diferentes de tests: los tests empı́ricos y los tests teóricos.

– Tests empı́ricos. Permiten analizar una secuencia de números obtenida del


generador, con el fin de calcular con qué probabilidad cabrı́a haberla obtenido
muestreando una distribución U (0, 1). El resultado del test sólo tiene validez
para la secuencia analizada, no pudiéndose afirmar nada acerca de otras se-
cuencias que pudieran ser obtenidas del mismo generador y sobre las que no
se ha aplicado el test.

– Tests teóricos. Analizan el generador basándose en el valor de sus parámetros,


sin necesidad de generar un solo número aleatorio. Sus resultados son globales.
Es decir, son aplicables a cualquier secuencia obtenida del generador. Se trata
de tests sofisticados y matemáticamente complejos.

5.2. GENERACIÓN DE NÚMEROS ALEATORIOS

La metodologı́a para la generación de números aleatorios tiene una historia larga


e interesante. Los métodos más antiguos se realizaban esencialmente a mano: tirar
dados, usar cartas, extraer bolas de una urna “perfectamente agitada”, etc.
Durante la primera mitad del siglo veinte se construyeron dispositivos mecánicos
y eléctricos para la generación de números aleatorios, tales como discos giratorios o
circuitos eléctricos basados en tubos de vacı́o con pulsaciones aleatorias. Durante la

330
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

segunda mitad del siglo veinte aparecieron gran cantidad de trabajos proponiendo
generadores fı́sicos de números aleatorios. En algunos casos, los números aleatorios
eran publicados en forma de tablas, de modo que pudieran ser usados en la aplicación
de los métodos de Monte Carlo por otros investigadores. En paralelo, desde mediados
del siglo veinte, se han venido desarrollaron generadores aritméticos de números
aleatorios.

5.2.1. Generadores fı́sicos

La tabla de números aleatorios más ampliamente usada ha sido la tabla de 1


millón de dı́gitos aleatorios de RAND Corporation, publicada en el año 1955.
Una de las ventajas de esta tabla frente a las disponibles hasta aquella fecha era su
gran tamaño: un millón de dı́gitos aleatorios. Disponer de secuencias suficientemente
largas de números aleatorios resultaba esencial. La razón era que, cuando el tamaño
de la tabla era insuficiente, ésta debı́a reutilizarse varias veces durante la simulación,
con el consiguiente peligro de introducir correlaciones que falsearan los resultados
del estudio.
Los dı́gitos aleatorios de la tabla de RAND Corporation se obtuvieron aleatori-
zando los dı́gitos obtenidos de un circuito eléctrico cuyo funcionamiento se asemejaba
al de una ruleta. El circuito consistı́a en una fuente de pulsos de frecuencia aleatoria,
que proporcionaba un promedio de 100.000 pulsos por segundo. Una vez por segundo
se conectaba este tren de pulsos aleatoriamente espaciados a un contador de 5 bits. La
cuenta se realizaba durante un intervalo de tiempo constante, inferior a 1 segundo.
Una vez el contador habı́a alcanzado su valor máximo (es decir, 31), al recibir el
siguiente pulso adquirı́a el valor 0, a continuación el 1 y ası́ sucesivamente. Esta
cuenta cı́clica se asemeja al comportamiento de una ruleta de 32 números que gira
repetidas veces, recorriendo todos los números, hasta que finalmente se detiene en
uno de ellos.
El tiempo durante el cual se contaban los pulsos fue calculado de modo que en
promedio el contador daba aproximadamente 3000 vueltas. Una vez finalizado el
intervalo de tiempo de cuenta de los pulsos, el número almacenado en el contador
(comprendido entre 0 y 31) era convertido a decimal. Cuando el número era mayor
que 20 se descartaba. Si era menor que 20, el dı́gito menos significativo del número
constituı́a el dı́gito aleatorio. Este dı́gito era almacenado grabándolo en una tarjeta
perforada. En la Figura 5.2 se representa esquemáticamente el proceso de generación
de un dı́gito aleatorio.

331
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Decimal
Contador de 5 bits ≤ 20
Fuente pulsos
1 0 0 0 1
1 7 7
frec. aleatoria > 20
Ruleta
(3000 vueltas) Se desprecia
1s

Figura 5.2: Generación de un dı́gito aleatorio mediante el método de RAND Corporation.

Figura 5.3: Comienzo de la tabla de un millón de dı́gitos aleatorios de RAND Corporation.

Los circuitos tuvieron que ser modificados y ajustados repetidamente, hasta que
la secuencia de dı́gitos obtenida adquirió unas propiedades estadı́sticas adecuadas.
Es decir, era capaz de superar determinados tests estadı́sticos. En la Figura 5.3 se
muestra el principio de la tabla de RAND Corporation. Las lı́neas de la tabla están
numeradas desde 00000 hasta 19999. Para usar la tabla, hay que determinar una
posición de comienzo al azar y leer la tabla de la misma forma que se leerı́a un
libro. Puede aumentarse el tamaño de la tabla modificando la dirección de lectura al
reutilizarla en una misma simulación: leyendo por columnas en lugar de por lı́neas,
leyendo la tabla hacia atrás, leyendo las hojas de arriba abajo y las lı́neas de derecha
a izquierda, etc.
Otro generador fı́sico de gran importancia histórica es el generador de bits
aleatorios de Vincent. En el año 1970, Vincent propuso el siguiente método para
la generación de bits aleatorios: contar el número de pulsos generados aleatoriamente
durante un determinado intervalo de tiempo y, en función de que la suma obtenida
sea par o impar, seleccionar 0 ó 1 respectivamente. Los pulsos pueden obtenerse
midiendo con un detector una fuente radioactiva o bien, más convenientemente,
mediante un circuito que detecte los picos que superan determinado valor, conectado

332
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Contador de 1 bit
Fuente pulsos 1 Suma PAR : 0
frec. aleatoria Suma IMPAR: 1

s s

Figura 5.4: Esquema del funcionamiento del generador de Vincent.

a la salida de una fuente de ruido. En la Figura 5.4 se muestra un esquema del


procedimiento para la generación de bits aleatorios.
Yarza y Martı́nez propusieron en 1978 un circuito para generar pulsos aleato-
riamente espaciados, usando como fuente de ruido un diodo Zener polarizado en
el codo de su curva caracterı́stica. La señal de ruido era amplificada y comparada
con un nivel umbral, que actuaba como señal de control. Variando el valor de esta
señal de control puede modificarse la frecuencia promedio de los pulsos. Finalmente,
la señal aleatoria binaria que se obtiene a la salida del comparador es muestreada
por el tren de pulsos del reloj, obteniéndose un tren de pulsos aleatorio. En teorı́a
el diodo polarizado en inversa deberı́a ser capaz de aleatoriedad perfecta, dado que
su respuesta está determinada por múltiples eventos aleatorios a escala atómica.
Otros generadores fı́sicos se basan en la descomposición de muestras radio-
activas. Existen procedimientos, basados en la medida de la emisión de muestras
radioactivas, para generar un tren de pulsos con la siguiente propiedad: el intervalo
de tiempo entre cada dos pulsos consecutivos es aleatorio e independiente de los
intervalos de tiempo entre los demás pulsos.
Un generador de este tipo se consigue midiendo la transición de Kriptón-85 a
Rubidio. Esta transición se produce espontáneamente, de tal modo que la vida
media del Kriptón-85 son 10.73 años. Esto significa que si se tiene una muestra
con 100 millones de átomos de Kriptón-85, transcurridos 10.73 años la mitad de
ellos se habrán transformado en átomos de Rubidio. Pese a este hecho, no existe
forma de predecir cuando un determinado átomo a Kriptón-85 sufrirá la transfor-
mación. En eso se basa el procedimiento para la generación de números aleatorios,
ya que dada una muestra de átomos de Kriptón-85 no hay forma de predecir en qué
preciso instante se producirá la siguiente transición. El instante en que se produce
la emisión radioactiva puede detectarse mediante un tubo Geiger-Müller conectado
a un ordenador. El tubo Geiger-Müller emite un pulso cada vez que detecta una
emisión.

333
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Fuente radioactiva
85
Kr → 85 Rb + β − + γ
(Vida media: 10.73 años)

T1 > T2 : 0
T1 T2
T1 < T2 : 1
Figura 5.5: Funcionamiento del generador del proyecto Hotbit.

Un procedimiento para generar bits aleatorios, a partir del tren de pulsos (de
frecuencia variable) obtenido, es el propuesto en el proyecto HotBit. Para generar
un bit se espera hasta que ocurra la primera cuenta y se mide el tiempo T1 que
transcurre hasta que se produce la siguiente. Se espera hasta que se produzca un
tercer pulso y se mide el tiempo transcurrido T2 desde el segundo pulso. De este
modo se obtiene el valor de dos intervalos de tiempo aleatorios: T1 y T2 . Si ambos
intervalos son iguales, se desprecia la medida y se intenta de nuevo. Si T1 es menor
que T2 , entonces el bit generado es un 0, en caso contrario, un 1. En la práctica,
con el fin de evitar algún posible sesgo en los aparatos de medida, se intercambia
el signo de la comparación con cada bit generado. En la Figura 5.5 se muestra un
esquema del método.
Otro procedimiento para obtener secuencias de pulsos aleatoriamente espaciados
entre sı́ se basa en emplear las señales de radio recibidas al sintonizar un receptor
de radio a una frecuencia en la que nadie está emitiendo. Un ejemplo de ello
es el siguiente procedimiento, empleado en el proyecto Random.org. La señal del
ruido atmosférico recibida por el receptor es introducida en un ordenador, donde es
muestreada y digitalizada a una palabra de 8 bits. Los 7 bits más significativos de
cada palabra son descartados, mientras que el bit menos significativo es almacenado.
La secuencia de bits obtenida de esta forma debe ser “corregida”, a fin de ga-
rantizar que el número aproximado de ceros y unos sea el mismo. Existe varios
algoritmos para la corrección del sesgo. Cabe destacar uno de ellos, que es
debido a von Neumann y elimina completamente el sesgo hacia 0 o hacia 1 de los
datos. Consiste en los pasos siguientes. Se leen los bits de dos en dos.

– Si existe una transición entre sus valores (es decir, los bits son 01 ó 10), el
primero de ellos se considera un bit aleatorio y el segundo se descarta.

334
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

– Si no existe transición entre los dos bits (es decir, son 00 ó 11), entonces se
descartan los dos bits y se leen los dos siguientes.

El interés en la construcción de máquinas generadoras de números aleatorios sigue


ciertamente vigente hoy en dı́a. No obstante, la aplicación de los generadores
fı́sicos en los estudios de simulación presenta algunas desventajas:

– Podrı́a conectarse directamente la máquina generadora de números aleatorios


al ordenador. La desventaja de esta técnica es que no permite reproducir
exactamente las secuencias de números aleatorios previamente generadas. Esto
es necesario, por ejemplo, para poder aplicar las técnicas de reducción de la
varianza.

– Podrı́an almacenarse en una tabla los números generados por este tipo de
máquinas y leer la tabla durante la simulación. Sin embargo, para poder
aplicar esta técnica a estudios de simulación complejos, en los que se requiere
millones de números aleatorios, hace falta usar memorias de gran capacidad.
Por otra parte, la lectura de los datos desde la tabla hace que la ejecución de
la simulación sea más lenta.

5.2.2. Generadores aritméticos

La ventaja del empleo de tablas de números aleatorios es su reproducibilidad. La


desventaja es la lentitud y el riesgo de agotar la tabla. En vista de estas dificultades,
John von Neumann sugirió en el año 1951 un procedimiento aritmético para la
generación de números aleatorios, denominado método de los cuadrados medios,
que puede considerarse el precursor de los generadores aritméticos actuales.
El procedimiento empleado en el método de los cuadrados medios para obtener
un nuevo número es extraer los dı́gitos centrales del resultado de elevar al cuadrado
el último número de la secuencia. Por ejemplo, si se están generando números de 4
dı́gitos, el número siguiente a 5232 se obtiene elevando éste al cuadrado, 52322 =
27373824, y extrayendo los 4 dı́gitos centrales, es decir, 3738. Análisis posteriores
han demostrado que el método de los cuadrados medios no tiene buenas propiedades
estadı́sticas, con lo que no debe ser empleado.
Una caracterı́stica de los métodos aritméticos es que son secuenciales. Esto
es, cada nuevo número se calcula a partir de uno o varios de sus predecesores,
aplicando una determinada fórmula matemática. Por ello, los números generados
mediante los generadores aritméticos no son aleatorios, si se entiende como tal que

335
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

sean impredecibles. Conocido el algoritmo empleado para generar los números y


el estado interno del mismo, se pueden predecir todos los números obtenidos en
las siguientes llamadas al algoritmo. Por el contrario, con números genuinamente
aleatorios, el conocimiento de un número, o de una secuencia arbitrariamente larga
de números, resulta inútil para predecir el valor del siguiente número generado. Por
este motivo, los números generados usando generadores aritméticos se denominan
números pseudoaleatorios.
Algunos generadores aritméticos tienen una gran calidad, entendiendo como tal
que las secuencias de números obtenidas parecen muestras independientes de la
distribución uniforme U (0,1). Es decir, superan todos los tests estadı́sticos ideados
para distinguir secuencias aleatorias de aquellas que contienen algún patrón u orden
interno. La hipótesis nula de estos tests es que los números son muestras indepen-
dientes de una distribución U(0,1). La dificultad fundamental de la generación de
números aleatorios, ya sea mediante técnicas fı́sicas o aritméticas, es que si bien
existen muchas maneras de probar que una secuencia de números no es aleatoria,
no existe ninguna forma de probar que sı́ lo es.
Dos conceptos fundamentales en la generación de números pseudoaleatorios son
la uniformidad y la independencia de una secuencia de números u1 , u2, . . . . Se definen
a continuación.
La uniformidad de una secuencia de números u1 , u2 , . . . puede examinarse de
la forma siguiente:

1. Los números, cuando se representan como puntos en un segmento de lı́nea que


va del 0 al 1, deben estar aproximadamente distribuidos uniformemente.

2. Las sucesivas parejas {u1 , u2}, {u3 , u4}, . . . , cuando se tratan como puntos
en el cuadrado de lado unidad, deben estar aproximadamente uniformemente
distribuidos.

. ...

n. Las sucesivas tuplas de n números {u1 , u2 , ..., un }, {un+1 , un+2, ..., u2n }, . . . ,
cuando se tratan como puntos en un hipercubo n-dimensional, deben estar
aproximadamente distribuidos uniformemente.

Una generador puede considerarse suficientemente uniforme a efectos prácticos


si su salida satisface estas n condiciones, para un valor de n suficientemente grande
para la aplicación en cuestión. En la práctica, la carga computacional de aplicar
tests empı́ricos generalmente es prohibitiva para valores de n por encima de 10.

336
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Una posible definición de independencia de una secuencia de números u1, u2 , . . .


es la siguiente. La secuencia es independiente si no puede ser especificada mediante
un algoritmo más corto que propia secuencia en sı́. Esta definición de independencia,
aunque es interesante desde el punto de vista matemático, no sugiere ningún método
para el diseño de generadores de números aleatorios.
Desde un punto de vista práctico, con vistas a su aplicación a la simulación, las
propiedades que deberı́a tener un generador son las siguientes:

– Propiedad 1. Los números generados deben parecer estar distribuidos unifor-


memente en el intervalo [0, 1] y no deben mostrar ninguna correlación entre
ellos. Si no se cumplen estas dos condiciones (uniformidad e independencia),
los resultados de la simulación pueden ser completamente erróneos.

– Propiedad 2. Desde un punto de vista práctico, el generador debe ser rápido y


no precisar de grandes capacidades de almacenamiento de datos.

– Propiedad 3. Debe ser posible reproducir exactamente la secuencia de nú-


meros aleatorios, al menos por dos razones. La primera es que en ocasiones
esto facilita el depurado de los programas. La segunda, y más importante,
es que frecuentemente se requiere el uso de exactamente la misma secuencia
de números aleatorios para simular diferentes modelos, a fin de obtener una
comparación más precisa entre ellos.

– Propiedad 4. El generador debe permitir la generación de varias secuencias


separadas de números pseudoaleatorios. Una secuencia es un segmento de
los números producidos por el generador, de modo que una secuencia termina
donde comienza la siguiente. De este modo, puede dedicarse una secuencia
diferente para cada fuente de aleatoriedad del modelo. Por ejemplo, una se-
cuencia para los intervalos entre llegadas de un tipo de entidad, otra secuencia
para los tiempos de proceso de un determinado recurso, etc.

La reproducibilidad de la secuencia es una caracterı́stica deseable cuando se


usa en simulación y en este sentido los números pseudoaleatorios son adecuados para
este propósito. No es éste el caso, por ejemplo, de las aplicaciones en criptografı́a,
en las cuales es fundamental que la secuencia de números sea impredecible.
La mayorı́a de los generadores aritméticos son muy rápidos, requieren de muy
poca capacidad de almacenamiento de datos y puede reproducirse fácilmente una
determinada secuencia de números pseudoaleatorios. De este modo, las Propiedades
2 y 3 son casi universalmente satisfechas. Más aun, muchos generadores (entre los que

337
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

se encuentran los incluidos en los entornos de simulación) soportan la capacidad de


producir múltiples secuencias, con lo que satisfacen la Propiedad 4. Sin embargo, hay
muchos generadores que no satisfacen la Propiedad 1 (uniformidad e independencia),
que es absolutamente necesaria para obtener resultados correctos de la simulación.
Se describen a continuación algunos de los generadores aritméticos más común-
mente usados. Posteriormente se discutirán algunos tests empı́ricos de uniformidad
e independencia.

5.2.3. Generadores congruenciales lineales

Los generadores congruenciales lineales (GCL) fueron introducidos por D.


H. Lehmer en el año 1951. Es el tipo de generador aritmético más frecuentemente
usado hoy en dı́a en simulación. La secuencia de números pseudoaleatorios se genera
de la forma siguiente:

1. Se obtiene una secuencia de números enteros aplicando la fórmula:

zi = (a · zi−1 + c) (mód m) para i = 1, 2, . . . (5.1)

El valor de los parámetros m (módulo), a (multiplicador) y c (incremento)


diferencia un generador de otro, determinando también la calidad estadı́stica
del generador. Estos parámetros deben ser números enteros no negativos. Debe
satisfacerse que el valor del módulo (m) sea mayor que el multiplicador (m >
a), que el incremento (m > c) y que el número con el que se inicia la secuencia
(m > z0 ). Este valor inicial con el que se comienza la secuencia se denomina
semilla.

2. Puesto que zi se define como el resto de la división de a · zi−1 + c por m, se


satisface: 0 ≤ zi ≤ m−1 para i : 1, 2, . . . . Para obtener números en el intervalo
[0, 1), es preciso dividir los enteros obtenidos por m:

zi
ui = para i = 1, 2, . . . (5.2)
m
La lógica que subyace en este algoritmo es que en la multiplicación y en la división
los dı́gitos de orden más bajo son más difı́ciles de predecir, no exhibiendo un patrón
o una secuencia evidente.
En función del valor del incremento, los GCL se clasifican en los siguientes
dos tipos: mixtos y multiplicativos. Los GCL mixtos son aquellos GCL con el

338
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

incremento diferente de cero: c > 0. Los GCL multiplicativos son aquellos GCL
con el incremento igual a cero: c = 0.
Cabrı́a plantear dos objeciones a los generadores congruenciales lineales. La pri-
mera es común a todos los generadores aritméticos: los números generados mediante
la Ecuación (5.1) no son aleatorios, ya que son predecibles. En efecto, cualquier
número zi de la secuencia queda completamente fijado, una vez se han establecido
los valores de m, a, c y de la semilla (z0 ):

c · (ai − 1)
 
i
zi = a · z0 + (mód m) (5.3)
a−1

Como se ha discutido anteriormente, en realidad esto no es una desventaja en


las aplicaciones en simulación, sino una ventaja. La segunda objeción es que los
números pseudoaleatorios ui sólo pueden tomar valores entre los números racionales
siguientes:

 
1 2 m−1
0, , , . . . , (5.4)
m m m

En la práctica esto no supone una limitación seria, ya que el valor de m puede


escogerse muy grande, de modo de que el conjunto de valores posibles sea muy denso
en el intervalo [0, 1).
El concepto de periodo de un generador se explica mediante el siguiente ejem-
plo. Consideremos el siguiente GCL (se trata únicamente de un ejemplo académico,
ya que en la práctica nadie usarı́a un GCL con un valor de m tan pequeño):

zi = (5 · zi−1 + 3) (mód 16) (5.5)

Se escoge la semilla z0 = 7. La secuencia formada por los primeros 33 números


generados es la siguiente:

7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4
7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4
7 6

Obsérvese que z1 = z17 = z33 = 6, z2 = z18 = 1 y ası́ sucesivamente. Este compor-


tamiento cı́clico es inevitable. Si se genera un valor que ya ha aparecido previamente,
entonces se obtiene la misma secuencia de valores que se obtuvo previamente y el
ciclo de repite sin fin. Esto es debido a que zi sólo depende del valor anterior en la

339
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

secuencia, zi−1 . La longitud del ciclo se llama periodo del generador y se representa:
p. Puesto que 0 ≤ zi ≤ m − 1, se satisface: p ≤ m.
Cuando p = m, se dice que el GCL tiene periodo completo. Éste es el caso del
generador del ejemplo anterior. En un generador con periodo completo, cualquier
semilla z0 que se escoja de entre los números enteros {0, 1, . . . , m − 1} produce el
ciclo entero en algún orden determinado. En cambio, en los generadores que no
tienen periodo completo, la longitud del ciclo depende de la elección de la semilla.
Es deseable que los generadores tengan periodo completo. En particular, el hecho
de que cada entero entre 0 y m − 1 aparezca exactamente una vez en cada ciclo,
contribuye a la uniformidad de los números generados. Pese a esto, los generadores
con periodo completo pueden presentar comportamiento no uniforme en segmentos
dentro del ciclo. Por ejemplo, una secuencia de números de longitud m/2 puede no
estar uniformemente distribuida, dejando grandes huecos en el conjunto de valores
posibles {0, 1, . . . , m − 1}.
El siguiente teorema indica las condiciones necesarias y suficientes para que un
GCL tenga periodo completo.

Teorema 5.2.1. Un GCL tiene periodo completo si y sólo si se satisfacen las


siguientes tres condiciones:

1. El único entero positivo que divide (exactamente) tanto a c como a m es el


uno.

2. Si q es un número primo (es decir, es divisible únicamente por sı́ mismo y por
uno) que divide a m, entonces q divide a − 1.

3. Si 4 divide a m, entonces 4 divide a − 1.

De este teorema se deduce que los GCL multiplicativos no pueden tener periodo
completo, ya que no satisfacen la primera condición.

5.2.4. Generadores congruenciales lineales mixtos

El módulo m del GCL mixto suele escogerse de modo que dé lugar a periodo
completo. También interesa que el ciclo sea largo, con lo cual m es tı́picamente un
número grande. Sin embargo, escoger m grande acarrea una dificultad: hace que

340
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

la división por m, que es necesaria para generar los números zi , sea una operación
relativamente lenta.
Con el fin de poder escoger m grande y a la vez evitar tener que realizar explı́ci-
tamente la división por m, se ha desarrollado una técnica denominada división por
rebosamiento. Para poder aplicarla, el valor del módulo debe escogerse de modo
que satisfaga:

m = 2b (5.6)

donde b es el número de bits de la palabra binaria en la memoria el ordenador,


descontando el bit de signo. Por ejemplo, si el ordenador almacena los datos en
palabras de 32 bits y el más significativo se reserva para el signo, entonces se escogerı́a
b = 31, con lo cual m = 231 ≈ 2.15E + 9.
Escogiendo m = 2b , puede calcularse el resto de la división por m sacando partido
del rebosamiento. El mayor entero que puede representar una palabra de b bits es
2b − 1. Si se intenta almacenar un entero w mayor (con h bits, donde h > b), se
producirá una pérdida de los h − b bits más significativos. Los b bits que quedan
almacenados son precisamente el resultado de la operación w mód 2b .


Veamos un ejemplo. Supongamos que se pretende programar en un ordenador de


4 bits/palabra (sin considerar el bit de signo) el generador que se usó para ilustrar el
concepto de periodo de un generador y que está descrito mediante la Ecuación (5.5).
¿Cómo puede utilizarse el rebosamiento para obtener z7 = 12, a partir de z6 = 5?
La representación binaria de 5 · z6 + 3 = 28 es la palabra 11100. Como el ordenador
sólo puede almacenar palabras de 4 bits, el bit más significativo se pierde. Queda
almacenado 1100, que es la representación binaria de z7 = 12.
Por los motivos expuestos anteriormente, aparentemente m = 2b es una buena
elección para el módulo. Escogiendo el módulo de acuerdo a ese criterio, para que
el generador mixto sea de periodo completo el multiplicador a debe satisfacer las
dos condiciones siguientes:

1. Ser impar (primera condición del Teorema 5.2.1).

2. a−1 debe ser divisible por 4 (condiciones segunda y tercera del Teorema 5.2.1).

En los primeros trabajos que aparecieron sobre GCL se prestó mucha atención
a la eficiencia en el cálculo del producto a · zi−1 . Esto condujo a expresiones del
multiplicador de la forma a = 2k + 1, donde k es un entero positivo. El motivo de
esta elección es que puede calcularse

341
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

a · zi−1 = 2k · zi−1 + zi−1 (5.7)

desplazando a la izquierda k bits la representación binaria de zi−1 y sumando zi−1


al número obtenido del desplazamiento. No obstante, más adelante se descubrió
que este tipo de generadores tiene propiedades estadı́sticas pobres, con lo cual no
conviene usarlo.
En vista de ello, ¿cómo puede entonces escogerse a y c, cuando m = 2b , pa-
ra obtener buenos GCL mixtos? Una respuesta indirecta a esta pregunta es que
generalmente es preferible usar los generadores multiplicativos a los mixtos. Los
generadores multiplicativos presentan similares prestación y son más sencillos de
usar y de entender. Por este motivo, son ampliamente usados. En cualquier caso,
existen generadores mixtos de probado buen comportamiento tales como:

zi = (515 · zi−1 + 1) (mód 235 ) para b = 35


31
(5.8)
zi = (314159269 · zi−1 + 453806245) (mód 2 ) para b = 31

5.2.5. Generadores congruenciales lineales multiplicativos

La gran ventaja de los generadores multiplicativos es su sencillez, ya que por


definición c = 0. Su desventaja es que no tienen periodo completo, ya que no
satisfacen la primera condición del Teorema 5.2.1. No obstante, en la práctica esta
desventaja no supone ninguna limitación, ya que escogiendo m y a adecuadamente
puede conseguirse un periodo de longitud m − 1.
Podrı́a pensarse que escoger m = 2b podrı́a resultar ventajoso, ya que evita
realizar explı́citamente la división. Sin embargo, puede demostrarse que con esta
elección el periodo del generador multiplicativo es a lo sumo 2b−2 . Es decir, a lo
sumo se generan un cuarto de los enteros {0, 1, . . . , m − 1}. Dado que no se sabe a
priori dónde van a caer estos m/4 enteros, existe el riesgo de que formen grandes
huecos en la secuencia {0, 1, . . . , m − 1}. Por este motivo, la elección m = 2b es
desaconsejable en el caso de los generadores multiplicativos.
Las condiciones que deben satisfacerse para que el GCL multiplicativo tenga un
periodo de longitud m − 1 son las enunciadas en el Teorema 5.2.2. Los generadores
multiplicativos en los que m y a se escogen de la forma indicada en dicho teorema
se llaman GCL multiplicativos de módulo primo.

342
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Teorema 5.2.2. El periodo del GCL multiplicativo es igual a m − 1 si se cumplen


las dos condiciones siguientes:

1. El módulo m es un número entero primo. Por ejemplo, igual al mayor número


primo que sea menor que 2b .

2. El multiplicador a es una raı́z primitiva de m. Es decir, el número entero k


más pequeño para el cual ak − 1 es divisible por m es k = m − 1.

Los GCL multiplicativos de módulo primo tienen la propiedad de que se obtiene


cada uno de los números {1, 2, . . . , m − 1} una vez en cada ciclo (obsérvese que se
ha excluido el cero), con lo cual la semilla puede ser cualquiera de estos números.
Surge entonces la cuestión siguiente: ¿cómo se obtiene una raı́z primitiva del
módulo m? Desde el punto de vista computacional, la tarea no es fácil. Puede
recurrirse a valores ya calculados, que se encuentran disponibles. Por ejemplo:

– Para b = 35. El mayor número primo que es menor que 235 es m = 235 − 31 =
34, 359, 738, 337. Una raı́z primitiva de m = 235 − 31 es a = 55 = 3125.

– Para b = 31. El mayor número primo que es menor que 231 es m = 231 − 1 =
2, 147, 483, 647. Simplemente como curiosidad indicar que los números primos
de la forma 2p − 1, donde p es un número entero, se llaman números primos
de Mersenne. Dos posibles buenas elecciones de a son:

a1 = 75 = 16807 y a2 = 630, 360, 016 (5.9)

El generador de números aleatorios que usaba Arena hasta la versión 5 era un


GCL multiplicativo con m = 231 − 1 = 2, 147, 483, 647 y a = 75 = 16807. La
longitud del ciclo de ese generador es m − 1. Este generador fue reemplazado
en las versiones posteriores a la 5 por otro generador con mejores propiedades,
que será descrito en la Sección 5.2.7.

El valor de m se escoge de la forma: m = 2b − q, donde q es un número entero


positivo. Puesto que m 6= 2b , no puede usarse el desbordamiento entero para calcular
la división módulo m. En su lugar, se ha desarrollado una técnica denominada
división simulada cuyo objetivo es calcular:

mód 2b − q

zi = (a · zi−1 ) (5.10)

343
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

siendo conocido zi−1 . Para ello, en primer lugar se calcula zi∗ , que está definido de
la forma siguiente:

zi∗ = (a · zi−1 ) mód 2b



(5.11)

Para calcular zi∗ se emplea la técnica del rebosamiento. A continuación, una vez
conocido zi∗ , puede calcularse zi de la expresión siguiente:

(
zi∗ + k · q si zi∗ + k · q < 2b − q
zi =  (5.12)
zi∗ + k · q − 2b − q si zi∗ + k · q ≥ 2b − q

donde k es el mayor número entero menor o igual que a · zi−1 /2b .

5.2.6. Otros generadores congruenciales

Aparte de los GCL, existen otros tipos de generadores desarrollados para obtener
periodos más largos y mejores propiedades estadı́sticas. Sin embargo, un GCL con
parámetros adecuados puede tener iguales e incluso mejores caracterı́sticas que estas
alternativas más complicadas.
Los GCL pueden considerarse un caso particular de un tipo más general de
generadores, definidos mediante expresiones del tipo:

zi = g (zi−1 , zi−2 , . . .) (mód m) (5.13)

donde g es una función determinista denominada función generatriz. Como en el


caso del GCL, los números obtenidos mediante esta fórmula son enteros comprendi-
dos entre 0 y m−1. A partir de ellos, se obtienen números distribuidos en el intervalo
[0, 1) mediante la transformación ui = zi /m.
Los generadores congruenciales cuadráticos son una generalización obvia
de los generadores lineales. Poseen la función generatriz siguiente:

g (zi−1 , zi−2 , ...) = a′ · zi−1


2
+ a · zi−1 + c (5.14)

Puesto que zi sólo depende de zi−1 , no de números anteriores, y dado que 0 ≤


zi ≤ m − 1, el periodo de un generador congruencial cuadrático es a lo sumo m. El
motivo es que en cuanto se genere un número que ya ha aparecido previamente, se

344
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

repite la secuencia obtenida a partir de aquel. Dado que no hay más que m posibles
números diferentes (los enteros de 0 a m − 1), el periodo es a lo sumo m.
Una elección diferente de la función generatriz g es mantener la linealidad,
pero usando más valores previos:

g (zi−1 , zi−2 , . . . , zi−q ) = a1 · zi−1 + a2 · zi−2 + · · · + aq · zi−q (5.15)

donde a1 , . . . , aq son constantes. Escogiendo los parámetros adecuadamente pueden


conseguirse periodos tan grandes como mq − 1.
Un caso particular de este tipo de generadores es el generador de Fibonacci,
cuyo uso es desaconsejable debido a sus malas propiedades estadı́sticas:

zi = (zi−1 + zi−2 ) (mód m) (5.16)

Otra lı́nea para la generalización de los GCL ha consistido en modificar el


multiplicador (a) y el incremento (c) antes de generar el nuevo zi . Estos generadores
permiten obtener periodos enormes.

5.2.7. Generadores combinados

Algunos investigadores han propuesto métodos para combinar dos o más gene-
radores independientes, por ejemplo dos o tres GCL, de modo que el generador
resultante tenga mejores propiedades estadı́sticas que cada uno de los generadores
independientes que lo componen. La desventaja de este método es que aumenta
el coste computacional de generar cada número pseudoaleatorio. Un generador
combinado bien conocido, que emplea dos GCL, es el siguiente:

1. Inicialmente se llena un vector V = (v1 , v2 , . . . , vk ) secuencialmente con los


primeros k números obtenidos del primer GCL. Comúnmente se emplea k =
128.

2. El segundo GCL se usa para obtener un entero I distribuido uniformemente


entre los enteros {1, 2, ..., k}. Este número entero I es el ı́ndice del elemento
del vector V que se toma como primer número pseudoaleatorio obtenido por
el generador compuesto: vI .

3. Usando el primer GCL se genera un número para reemplazar a vI en el vector


V.

345
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

4. Se usa el segundo generador para obtener el ı́ndice del elemento de V que será
el siguiente número obtenido por el generador compuesto y ası́ sucesivamente.

Este método emplea un segundo generador para muestrear una secuencia obteni-
da por un primer generador. Es de esperar que rompa cualquier tipo de correlación
que exista en las secuencias de los generadores individuales y que también extienda
considerablemente el periodo. Se ha demostrado que es posible obtener generadores
combinados con muy buenas propiedades estadı́sticas usando GCL con propiedades
estadı́sticas pobres. Sin embargo, se ha demostrado que se obtiene poca mejorı́a
cuando se usan buenos GCL. Asimismo, se ha demostrado que se obtienen resultados
igualmente buenos usando vectores de longitud k = 2 a los obtenidos usando vectores
considerablemente más largos.
Se han propuesto otros muchos tipos de generadores combinados. Algunas de las
estrategias que emplean son usar un único generador para muestrear la secuencia
obtenida de él mismo, aplicar permutaciones fijas a la secuencia (con lo que sólo es
preciso usar un generador), etc.
Un problema de los generadores combinados es que no es posible realizar saltos
en la secuencia de números sin generar todos los valores intermedios, cosa que sı́
puede hacerse con los GCL. Supongamos por ejemplo que se desean obtener varias
secuencias, de un millón de números cada una, para simular diferentes entradas
aleatorias de un modelo. Se usa una secuencia diferente para cada proceso de llegada,
para la fase delay de cada proceso, etc. Si se emplea un GCL, puede usarse z0 como
semilla para la primera secuencia, z1,000,000 como semilla para la segunda secuencia,
z2,000,000 para la tercera y ası́ sucesivamente.
Existen formas de combinar varios generadores que no presentan esta dificultad.
Por ejemplo, si {z1,i } y {z2,i } representan las secuencias de números enteros obtenidas
de dos GCL con diferente módulo, la secuencia de números del generador compuesto
puede calcularse de la forma siguiente:

zi = (z1,i − z2,i ) (mód m) (5.17)

Esta idea puede extenderse a más de dos generadores y tiene varias ventajas: el
periodo puede ser muy grande (al menos tan grande como 1018 ), los multiplicadores
de cada uno de los generadores pueden ser pequeños, el generador compuesto es
rápido y tiene buenas propiedades estadı́sticas.
El generador de números pseudoaleatorios de Arena a partir de la versión
5.0 es del tipo denominado generador recursivo combinado múltiple. Tiene un

346
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

ciclo de longitud 3.1 · 1057 . Para iniciar la recursión, hace falta una semilla, que es
un vector de 6 componentes: {A0 , A1 , A2 , B0 , B1 , B2 }. Opera de la manera siguiente:

1. Comienza con las siguientes dos fórmulas recursivas separadas, que puede
considerarse que son operadas en paralelo:

An = (1403580 · An−2 − 810728 · An−3 ) (mód 4294967087) (5.18)


Bn = (527612 · Bn−1 − 1370589 · Bn−3 ) (mód 4294944443) (5.19)

2. Se combinan los dos valores obtenidos anteriormente de la forma siguiente:

Zn = (An − Bn ) (mód 4294967087) (5.20)

3. Se calcula el número pseudoaleatorio de la manera siguiente:


(
Zn /4294967088 si Zn > 0
Un = (5.21)
4294967087/4294967088 si Zn = 0

Resulta útil separar el ciclo del generador en secuencias adyacentes, no solapadas.


Para definir estas secuencias es necesario definir vectores semilla lo suficientemente
espaciados entre sı́. El generador de Arena permite separar de forma sencilla su ciclo,
de 3.1 · 1057 números, en 1.8 · 1019 secuencias, cada una de ellas de longitud 1.7 · 1038 .
A su vez, cada una de estas secuencias es dividida en 2.3 · 1015 sub-secuencias de
longitud 7.6 · 1022 números.
Cuando en un modelo de Arena se generan observaciones a partir de una distribu-
ción, puede especificarse qué secuencia de números aleatorios se desea emplear para
ello. La forma de hacerlo consiste en añadir el número de secuencia a continuación
de los parámetros de la distribución. Por ejemplo, para generar observaciones de
una distribución exponencial con media 6.7 usando la secuencia 4 debe escribirse
EXPO(6.7, 4).
Si no se especifica el número de la secuencia, Arena usa por defecto la número 10.
Asimismo, Arena usa la secuencia 10 para generar los números aleatorios necesarios
para los procesos de llegada no estacionarios o los módulos Decide. Por este motivo,
cuando el usuario escoge una secuencia, conviene que no sea la número 10.
Cuando se realizan múltiples réplicas de la simulación del modelo, con cada
nueva réplica Arena salta automáticamente al comienzo de la siguiente sub-secuencia
dentro de cada secuencia, de modo que cada réplica se realice con una sub-secuencia
diferente de números pseudoaleatorios.

347
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

5.2.8. Generadores de Tausworthe

Los generadores de Tausworthe operan directamente con los bits para formar
números pseudoaleatorios. Se define una secuencia b1 , b2 , . . . de dı́gitos binarios (bits)
mediante una fórmula del tipo siguiente:

bi = (c1 · bi−1 + c2 · bi−2 + · · · + cq · bi−q ) (mód 2) (5.22)

donde c1 , c2 , . . . , cq son constantes que pueden tomar el valor 0 ó 1. El periodo


máximo del generador puede obtenerse a partir de los razonamientos siguientes:

– El valor del bit generado depende de los q bits anteriores de la secuencia. Con
lo cual, una vez que los q bits anteriores tomen un valor que ya ha aparecido
anteriormente, se repite la secuencia.

– Con q bits se pueden formar 2q palabras diferentes.

– La palabra con todos los bits a cero debe excluirse del ciclo, ya que una vez
que aparece, los sucesivos bits generados son cero.

En consecuencia, el periodo máximo de este tipo de generadores es igual a 2q − 1.


Es decir, el número de palabras posibles menos la palabra cero.
En la inmensa mayorı́a de las aplicaciones sólo dos de los coeficientes son dife-
rentes de cero. En estos casos, la fórmula del generador es la siguiente:

bi = (bi−r + bi−q ) (mód 2) donde r, q son enteros, tales que 0 < r < q (5.23)

Para inicializar la secuencia es preciso proporcionar los primeros q bits, b1 , . . . , bq ,


que constituyen la semilla. Por ejemplo, escogiendo r = 3, q = 5 y b1 = b2 = b3 =
b4 = b5 = 1, los primeros 42 bits obtenidos son los mostrados a continuación. El
periodo de este generador es 2q − 1 = 31.

1111100011011101010000100101100
11111000110

Existen diferentes métodos de transformar la secuencia de bits b1 , b2 , . . . en


números distribuidos en el intervalo [0, 1). Un método consiste en agrupar las

348
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

cadenas de i bits consecutivos para formar el entero binario de i bits entre 0 y 2i − 1,


que es entonces dividido por 2i . En este caso, i no debe ser superior al tamaño de
palabra del ordenador. Si en la secuencia del ejemplo anterior se escoge i = 4, resulta
la secuencia siguiente: 15 , 8 , 13 , 13 , 4 , 2 , 5 , 9 , 15 , 1 , . . .
16 16 16 16 16 16 16 16 16 16

Otra posibilidad es usar los i primeros bits consecutivos de la secuencia para


obtener el primer entero, saltar cierto número de los bits siguientes, obtener el
siguiente entero de los siguientes i bits, volver a saltar y ası́ sucesivamente.
Los generadores de Tausworthe ofrecen ciertas ventajas sobre los GCL. Una de
ellas es que son esencialmente independientes del tamaño de a palabra del ordenador.
Otra es que pueden obtenerse periodos inimaginablemente largos, tales como 2521 −
1 > 10156 .
El ingrediente fundamental de los generadores de Tausworthe es una secuencia
de bits, que puede ser generada de diferentes formas. Una forma alternativa a la
expuesta anteriormente de generar la secuencia de bits es la siguiente:

1. Sean p y q números primos grandes, con p − 3 y q − 3 ambos divisibles por 4.

2. Los números p y q son usados para calcular un módulo, m = p · q, que se usa


para obtener una secuencia de números enteros usando la fórmula siguiente:

xi = x2i−1 (mód m) (5.24)

3. Se define la secuencia de bits de la forma siguiente:

bi = bit menos significativo de xi (5.25)

Esta secuencia de bits es prácticamente impredecible, ya que descubrir la no


aleatoriedad (es decir, descubrir de forma precisa cuál es el valor de un bit que falta)
es computacionalmente equivalente a factorizar m en p · q, un problema que requiere
ingentes recursos de computación.

5.3. TESTS EMPÍRICOS

La manera más sencilla de analizar un generador es usarlo para obtener una


secuencia de números y a continuación estudiar con qué probabilidad estos números
podrı́an haber sido obtenidos muestreando una distribución U (0, 1). Puesto que
sólo se examina un segmento del ciclo, una consecuencia evidente es que no se puede

349
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

afirmar nada acerca del resto del ciclo que no ha sido estudiado. Existen innumerables
tests de este tipo, los cuales se denominan genéricamente tests empı́ricos.
Existen algunas pruebas sencillas que, si bien no constituyen tests estadı́sticos,
pueden proporcionar cierta confianza acerca de la calidad del generador o bien des-
pertar serias dudas. Por ejemplo, cuando se genera una larga secuencia de números
pseudoaleatorios, pueden obtenerse a partir de ella estimaciones muy precisas de la
media, la varianza y el factor de autocorrelación, que deberı́an estar muy próximas
a los valores teóricos, que son:

1
E {U} = (5.26)
2
1
Var {U} = (5.27)
12
1
E {Ui · Ui+1 } = E {Ui } · E {Ui+1 } = (5.28)
4

Por ejemplo, consideremos el generador

z0 = 23311 (5.29)
zi = (25173 · zi−1 + 13849) (mód 65536) (5.30)

que fue propuesto por Grogorno para ordenadores de 16 bits. Si se generan 10, 000
números y se normalizan al intervalo unidad, se obtienen los estimadores mostrados
a continuación, los cuales están muy próximos a los valores teóricos.

Z̄ (10000) = 0.5019 (5.31)


SZ2 (10000) = 0.08412 (5.32)
9999
1 X
· zi · zi+1 = 0.2526 (5.33)
10000 i:1

Las dos propiedades que deben tener las secuencias de números pseudoaleatorios
son uniformidad e independencia. Se han desarrollado tests de uniformidad y
de independencia, para contrastar si una determinada secuencia de números posee
estas propiedades.

350
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

La hipótesis nula (aquella que se desea contrastar mediante el test) de los tests de
uniformidad es que los números están distribuidos uniformemente en el intervalo
[0, 1]. Dos tests de uniformidad ampliamente usados son el test de Kolmogorov-
Smirnov y el test chi-cuadrado. El test serie (“serial test” en lengua inglesa) es una
generalización del test chi-cuadrado a dimensiones superiores a uno. Agrupando
cada d números consecutivos de la secuencia, se define un punto en el espacio d-
dimensional por cada uno de estos grupos. El test contrasta si estos puntos están
uniformemente distribuidos en un cubo d-dimensional de lado uno.
La hipótesis nula en los tests de independencia es que los números de la
secuencia son independientes entre sı́. Supongamos que una secuencia está compuesta
por 100 números tales que los 10 primeros están en el rango 0.01−0.1, los 10 siguien-
tes están en el rango 0.11 − 0.20, y ası́ sucesivamente. Esta secuencia pasará los tests
de uniformidad con facilidad, pero la ordenación de los números producida por el
generador no es aleatoria. Los tests de independencia han sido ideados precisamente
para descubrir las dependencias entre los números de la secuencia. Existen muchos
tipos diferentes de tests de independencia. Algunos de ellos son los tests de las
carreras, de autocorrelación, de los huecos y del poker.
Cuando al aplicar un test de uniformidad o un test de independencia se falla en
refutar la hipótesis nula, significa que no se ha encontrado evidencia de uniformidad o
dependencia empleando ese determinado test en concreto. No obstante, siempre que-
da abierta la posibilidad de que se descubra desuniformidad o dependencia usando un
test diferente. Como ya se adelantó al comienzo del tema, la dificultad fundamental
que debe afrontarse en la búsqueda de la aleatoriedad es que mientras existen muchas
formas de probar que una secuencia no es aleatoria, no existe forma alguna de probar
que sı́ lo es.
Un procedimiento para analizar mediante test empı́ricos un generador de números
pseudoaleatorios consiste en obtener a partir de él un determinado número de
secuencias de números y contrastar la uniformidad e independencia de cada una de
ellas. Para ello, generalmente no se aplica un único test de uniformidad y un único
test de independencia, sino que se aplica un conjunto de ellos. Es decir, una baterı́a
de tests. Al analizar los resultados obtenidos, deben tenerse en consideración los
hechos siguientes.
El nivel de significación α del test es la probabilidad de que el test rechace la
hipótesis nula si ésta es verdadera. Frecuentemente se escoge el nivel de significación
igual a 0.01 ó a 0.05. Si se realizan varios tests sobre una misma secuencia de números,
la probabilidad de rechazar la hipótesis nula en al menos un test, únicamente por
azar, aumenta. En concreto, la probabilidad de que en uno de N test rechace la

351
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

N
P
hipótesis nula, siendo ésta verdadera, es igual a αi . Este hecho se ilustra en el
i:1
siguiente ejemplo. Si se realizan 5 tests sobre una misma secuencia de números y el
nivel de significación de cada uno de los tests es α = 0.05, entonces la probabilidad
de rechazar la hipótesis nula en uno de los tests únicamente por azar es igual a 0.25.
Si se realiza un test repetidamente sobre varias secuencias de un mismo generador,
la probabilidad de rechazar la hipótesis nula por azar en al menos uno de estos
tests aumenta al aumentar el número de secuencias testeadas. Por ejemplo, si se
analizan 100 secuencias diferentes de un mismo generador, aplicando a cada una
de ellas un test con un nivel de significación α = 0.05, entonces cabe esperar que
aproximadamente 5 de estos tests fallen únicamente por azar. En consecuencia, si
el número de secuencias en las que el test rechaza la hipótesis nula está próximo a
100 · α = 5, entonces ésta no es razón suficiente para descartar el generador.
Para analizar los resultados obtenidos de aplicar una baterı́a de tests a un conjun-
to de secuencias, puede construirse una tabla de doble entrada. Las filas representan
los tests y las columnas las secuencias. La tabla se rellena con las respuestas de los
distintos tests a las distintas secuencias, indicando si la secuencia pasa (S) o no pasa
(N) el test. Se considera aceptable que una tabla tenga “unos pocos” elementos de
resultado negativo. Por ejemplo, no serı́an aceptables generadores tales que todas
las secuencias fallaran un determinado test o tales que una secuencia falle todos los
tests. En la Figura 5.6 se muestra un ejemplo: las tablas obtenidas al aplicar una
baterı́a de 8 tests empı́ricos a 10 secuencias obtenidas de dos generadores.

Serie Serie
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
1 S S S S S S S S N S 1 S S S N S S S S N S
2 S S S S S S S S S S 2 S S S N S S N S S S
3 S N S S S S S S S S 3 S N S N S S N S S S
S S S S S S S S S S S S S S S S S S S S
Test

Test

4 4
5 S S S N S S S S S S 5 N N N N S N N N N S
6 S S S S S S S N S S 6 S S S N S S N N S S
7 S S S S S S S S S S 7 N N N N N S N N N N
8 S S S S S S S S S S 8 S S S S S S N S S S
a) b)
Figura 5.6: Baterı́a de tests aplicada a dos generadores: a) pasa; y b) no pasa.

352
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

5.4. MÉTODOS PARA GENERAR OBSERVACIONES DE VARIA-


BLES ALEATORIAS

Como se ha explicado anteriormente, generar números pseudoaleatorios es ob-


tener observaciones de variables aleatorias distribuidas U(0,1). En esta sección se
explica cómo pueden obtenerse observaciones de variables aleatorias distribuidas de
acuerdo a otras distribuciones de probabilidad. En todos los casos, sea cual sea el
algoritmo empleado y la distribución de probabilidad a muestrear, el método conlleva
la generación de números pseudoaleatorios.
Caracterı́sticas deseables de los métodos para la generación de observaciones de
variables aleatorias son las siguientes:

– Exactitud. Es deseable que el algoritmo proporcione en la medida de lo


posible (dadas las limitaciones de precisión del ordenador, la inexactitud del
generador de números aleatorios, etc.) observaciones de la variable aleatoria
con exactamente la distribución deseada. En la actualidad existen algoritmos
con esta propiedad para la mayorı́a de las distribuciones comúnmente usadas.

– Eficiencia. Es deseable que el algoritmo sea de ejecución rápida y que no


requiera de un gran espacio de memoria.

– Complejidad. Es deseable que la comprensión conceptual del algoritmo y su


programación no resulten extremadamente complejos.

– Robustez. Es deseable que el algoritmo sea igualmente eficiente para cualquier


valor admisible de los parámetros de la distribución.

Algunos de los procedimientos más ampliamente usados para la generación de


observaciones de variables aleatorias son el método de la transformación inversa,
las técnicas de composición y convolución, y el método de aceptación/rechazo. A
continuación se explican sus fundamentos.

5.4.1. Método de la transformación inversa

La exposición de los fundamentos del método se ha estructurado en función del


tipo de distribución de la variable aleatoria. De esta forma, se han distinguido tres
casos: distribuciones continuas, distribuciones continuas truncadas y distribuciones
discretas. A continuación se discute cada uno de ellos.

353
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.0
0.8
u

0.6
FX(x)
0.4
0.2
0.0
X

x
Figura 5.7: Método de la transformación inversa para variables aleatorias continuas.

Supongamos que el objetivo es generar observaciones de una variable aleatoria


continua X tal que su función de probabilidad acumulada FX (x) es continua y
estrictamente creciente para todos los valores de x tales que 0 < FX (x) < 1. El
método de la transformación inversa consiste en los dos siguientes pasos (véase la
Figura 5.7):

1. Generar un número pseudoaleatorio, u.

2. Devolver x = FX−1 (u), donde FX−1 es la función inversa de FX .

Puesto que FX (x) es una función continua y estrictamente creciente, FX−1 (u)
está definido y es único para valores de u en el intervalo [0, 1]. La demostración
del método se basa en que, como FX (x) es una función monótona creciente, la
desigualdad xi ≤ xj es equivalente a FX (xi ) ≤ FX (xj ):

Prob {X ≤ x} = Prob FX FX−1 (U) ≤ FX (x) = Prob {U ≤ FX (x)}


 
(5.34)

Una dificultad en la aplicación del método a algunas distribuciones continuas,


como por ejemplo las distribuciones normal y gamma, es que la inversa de su
probabilidad acumulada no tiene expresión analı́tica. En estos casos deben emplearse
métodos numéricos para calcular x = FX−1 (u).
Veamos, por ejemplo, cómo puede aplicarse el método para generar observaciones
de variables aleatorias distribuidas exponencialmente. La probabilidad acumulada de
la distribución exponencial es la siguiente:

354
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

x
(
1 − e− β si x ≥ 0
FX (x) = → FX−1 (u) = −β · ln (1 − u) (5.35)
0 si x < 0

El procedimiento para la generación de muestras de una variable aleatoria expo-


nencial es el siguiente:

1. Generar un número pseudoaleatorio, u.

2. Calcular la observación de la variable aleatoria exponencial:

x = −β · ln (u) (5.36)

Obsérvese que en la Ecuación (5.36) se usa u, en lugar de 1 − u, que es lo


que aparece en la Ecuación (5.35). La razón de ello es optimizar el cálculo. La
justificación es que si la variable aleatoria U está distribuida uniformemente en el
intervalo unidad, entonces 1 − U también lo está.
El método es fácilmente aplicable a distribuciones truncadas. La densidad de
probabilidad truncada al intervalo [a, b] de la variable aleatoria continua X y la co-
rrespondiente probabilidad acumulada pueden calcularse a partir de la probabilidad
sin truncar de la forma siguiente:

(
fX (x)
si a ≤ x ≤ b
fX∗ (x) = FX (b)−FX (a)
(5.37)
0 en cualquier otro caso


 0 si x < a
FX (x)−FX (a)
FX∗ (x) = FX (b)−FX (a)
si a ≤ x ≤ b (5.38)

1 si b < x

El algoritmo para generar observaciones distribuidas FX∗ (x) es el siguiente:

1. Generar un número pseudoaleatorio u.

2. Calcular v = FX (a) + (FX (b) − FX (a)) · u. Obsérvese que V está distribuida


U (FX (a) , FX (b)).

3. Devolver x = FX−1 (v).

355
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1.0
p X ( x5 )

0.8
u p X ( x4 )
0.6
p X ( x3 )
FX(x)
0.4

p X ( x2 )
0.2

p X ( x1 )
0.0

x1 x2 x3 x4 x5
X

x4
Figura 5.8: Método de la transformación inversa para variables aleatorias discretas.

Veamos ahora cómo aplicar el método de la transformación inversa para generar


observaciones de una variable aleatoria discreta X. Supongamos que el rango
(es decir, el conjunto de valores posibles) de la variable aleatoria X es el conjunto
de valores {x1 , x2 , . . .}, los cuales están ordenados crecientemente x1 < x2 < . . . . La
probabilidad acumulada de X se define de la forma:

X
FX (x) = Prob {X ≤ x} = pX (xi ) (5.39)
{i:1,2,... tal que xi ≤x}

donde pX (xi ) es la probabilidad de que X valga xi . La generación de observaciones


de la variable aleatoria X, empleando el método de la transformación inversa, se
realiza de la forma siguiente:

1. Generar un número pseudoaleatorio u.

2. Determinar el menor número entero positivo, I, tal que: u ≤ FX (xI ). Devolver


el valor xI .

Este método es muy intuitivo (véase la Figura 5.8). Se divide el intervalo [0, 1]
en subintervalos contiguos de longitud pX (x1 ) , pX (x2 ) , . . . El valor de X se calcula
en función del subintervalo en el cual está contenido el número pseudoaleatorio. Si u

356
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

está contenido en el subintervalo i-ésimo (de longitud pX (xi )), entonces se devuelve
el valor xi .
La demostración del método consiste en comprobar que la probabilidad de obte-
ner xi aplicando el método es efectivamente pX (xi ) para i : 1, 2, . . . . La comproba-
ción es la siguiente:

– Caso i = 1. Se obtiene x1 si y sólo si

u ≤ FX (x1 ) = pX (x1 ) (5.40)

con lo cual la probabilidad de obtener x1 es la correcta.

– Caso i ≥ 2. El algoritmo devuelve xi si y sólo si

FX (xi−1 ) < u ≤ FX (xi ) (5.41)

por lo que la probabilidad de obtener xi es:

Prob {X = xi } = Prob {FX (xi−1 ) < U ≤ FX (xi )}


= FX (xi ) − FX (xi−1 )
= pX (xi ) (5.42)

A continuación se muestra un ejemplo de aplicación del método. En un modelo


de la gestión del inventario, el tamaño de los pedidos se representa mediante una
variable aleatoria discreta X, con rango {1, 2, 3, 4} y probabilidad:

1 1 1 1
pX (1) = pX (2) = pX (3) = pX (4) = (5.43)
6 3 3 6
Para generar realizaciones de esa variable aleatoria discreta, se sigue el procedi-
miento siguiente:

1. Se genera un número pseudoaleatorio u.

2. Se devuelve la observación de la variable aleatoria discreta, de acuerdo con el


criterio siguiente:

357
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1
u≤ → x=1 (5.44)
6
1 1
<u≤ → x=2 (5.45)
6 2
1 5
<u≤ → x=3 (5.46)
2 6
5
<u → x=4 (5.47)
6

5.4.2. Composición

El método es aplicable cuando la probabilidad acumulada F (x) de la variable


aleatoria puede expresarse como combinación lineal de las probabilidades acumula-
das de otras variables aleatorias:

N
X N
X
F (x) = pj · Fj (x) satisfaciéndose que pj = 1 (5.48)
j:1 j:1

En esta situación, pueden generarse observaciones de la distribución F (x) me-


diante el siguiente algoritmo, denominado algoritmo de composición:

1. Sea J una variable aleatoria discreta con rango {1, . . . , N} y probabilidad


Prob {J = j} = pj . Generar una observación de la variable aleatoria J. Sea
j dicha observación. Este número se emplea para seleccionar la distribución
j-ésima del conjunto {F1 (x) , . . . , FN (x)}.

2. Generar una observación de la distribución Fj (x). Devolver el número gene-


rado.

5.4.3. Convolución

Supongamos que la variable aleatoria X puede expresarse como la suma de otras


m variables aleatorias independientes:

X = Y1 + Y2 + · · · + Ym (5.49)

358
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

En estos casos, puede emplearse el algoritmo de convolución para obtener


observaciones de la variable aleatoria X. El procedimiento es el descrito a continua-
ción:

1. Generar una observación independiente de cada una de las variables aleatorias


Y1 , Y2 , . . . , Ym . Los valores generados se representan y1 , y2 , . . . , ym .

2. Devolver x = y1 + y2 + · · · + ym .

5.4.4. Método de aceptación/rechazo

El siguiente ejemplo pretende ilustrar el fundamento de la técnica de acepta-


ción/rechazo. Supongamos que se desean generar observaciones de una variable
aleatoria X que está distribuida uniformemente entre 41 y 1. El procedimiento para
ello puede ser el siguiente:

1. Generar un número pseudoaleatorio u.

2. Si u ≥ 41 , entonces ir al Paso 3. En caso contrario, rechazar u y volver al Paso 1.

3. Devolver x = u. Si se desea obtener más observaciones de X, ir al Paso 1. En


caso contrario, terminar.

Cada número pseudoaleatorio u es aceptado o rechazado dependiendo de si


satisface o no un determinado criterio, que en este caso es ser mayor o igual que
1
4
. La distribución de los números x devueltos en el Paso 3 es U (0, 1) condicionada
al evento U ≥ 14 . Aplicando este método, la probabilidad de obtener números


comprendidos entre a y b, donde 14 ≤ a < b ≤ 1, es la siguiente:

 
1 Prob {a < U ≤ b} b−a
Prob a < U ≤ b ≤ U ≤ 1 =
= (5.50)
3/
1
4 Prob 4 ≤ U ≤ 1 4

que concuerda con la probabilidad para una distribución U( 14 , 1).


Como se ha mostrado en el ejemplo, el concepto básico de la técnica de aceptación
y rechazo es el siguiente. Se generan observaciones de variables aleatorias distribuidas
de una determinada forma hasta que la observación satisface cierta condición, en
cuyo caso se devuelve el valor obtenido.

359
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Para generar observaciones de la distribución U 14 , 1 , resulta más eficiente em-




plear el método de la transformación inversa que el método de aceptación/rechazo.


Sin embargo, existen distribuciones de probabilidad importantes (normal, gamma,
beta, etc.) para las cuales la inversa de la función de probabilidad acumulada no tiene
expresión analı́tica, con lo cual hay que emplear métodos numéricos para aplicar el
método de la transformación inversa. En esta situación, es más eficiente generar
observaciones empleando el método de aceptación/rechazo que la transformación
inversa. Por ejemplo, en la Sección 5.6 se aplica la técnica de aceptación/rechazo a
la generación de variables aleatorias de Poisson.

5.5. OBSERVACIONES DE VARIABLES ALEATORIAS CONTINUAS

En esta sección se exponen algunos algoritmos para la generación de observacio-


nes de variables aleatorias continuas.

5.5.1. Uniforme

Puede aplicarse el algoritmo siguiente para generar de observaciones de X ∼


U (a, b). El sı́mbolo ∼ significa “está distribuida”.

1. Generar un número pseudoaleatorio u.

2. Devolver:
x = a + (b − a) · u (5.51)

5.5.2. Exponencial

Generación de observaciones de X ∼ expo (β):

1. Generar un número pseudoaleatorio u.

2. Devolver:
x = −β · ln (u) (5.52)

360
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

5.5.3. Normal

Generación de observaciones de X ∼ N (µ, σ 2 ):

1. Aplicar el algoritmo de Box y Muller para generar dos observaciones


distribuidas N (0, 1):

a) Generar dos números pseudoaleatorios, u1 y u2 .


b) z1 y z2 , calculados de la forma siguiente:
p
z1 = −2 · ln (u1 ) · cos (2 · π · u2 ) (5.53)
p
z2 = −2 · ln (u1 ) · sin (2 · π · u2 ) (5.54)

son observaciones independientes de la distribución N (0, 1).

2. Cada una de estas dos observaciones, z1 y z2 , puede transformarse en una


observación de la distribución N (µ, σ 2 ) de la forma siguiente:

x= µ+σ·z (5.55)

5.5.4. Lognormal

Generación de observaciones de X ∼ LN (µ, σ 2 ):

1. Generar una observación y de una variable aleatoria Y distribuida N (µ, σ 2 ).

2. Devolver:
x = ey (5.56)

5.5.5. Triangular

Generación de observaciones de X ∼ triang (a, b, c):

1. Generar un número pseudoaleatorio u.


c−a
2. Generar una observación distribuida triang (0, 1, c∗), con c∗ = b−a
, mediante
la transformación siguiente:
( √
c∗ · u si u ≤ c∗
y= p (5.57)
1 − (1 − c∗ ) · (1 − u) en cualquier otro caso

361
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

3. Generar una observación distribuida triang (a, b, c) usando la propiedad si-


guiente:

Y ∼ triang 0, 1, c−a
b−a → X ∼ triang (a, b, c) (5.58)
X = a + (b − a) · Y

es decir, mediante la transformación siguiente

x = a + (b − a) · y (5.59)

5.5.6. Distribución empı́rica

Si se dispone de observaciones individuales x1 , . . . , xn , pueden generarse


observaciones de X de la forma siguiente:

1. Generar un número pseudoaleatorio u.

2. Ordenar crecientemente las observaciones x1 , . . . , xn . Las observaciones orde-


nadas se representan x(1) , . . . , x(n) . Es decir, la observación con número de
orden i se representa x(i) .

3. Devolver:

x = x(i) + (p − i + 1) · x(i+1) − x(i) (5.60)

donde:

p = (n − 1) · u (5.61)
i = ⌊p⌋ + 1 (5.62)

⌊z⌋ representa el mayor entero que es menor o igual que el número real z.

Si se dispone de las observaciones agrupadas en k intervalos adyacentes


[a0 , a1 ), [a1 , a2 ), . . . , [ak−1 , ak ], donde el intervalo j-ésimo contiene nj observaciones.
En este caso, pueden generarse observaciones de X de la forma siguiente:

1. Obtener la probabilidad acumulada empı́rica, FX (x), a partir de las observa-


ciones agrupadas.

2. Generar un número pseudoaleatorio, u.

362
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

3. Encontrar el entero no negativo j, tal que se satisface:

FX (aj ) ≤ u < FX (aj+1 ) donde 0 ≤ j ≤ k − 1 (5.63)

4. Devolver:
u − FX (aj )
x = aj + · (aj+1 − aj ) (5.64)
FX (aj+1 ) − FX (aj )

5.6. OBSERVACIONES DE VARIABLES ALEATORIAS DISCRETAS

En esta sección se describen algunos algoritmos que permiten muestrear algunas


de las distribuciones discretas más comúnmente usadas en simulación.

5.6.1. Distribución Bernoulli

Puede emplearse el algoritmo siguiente para obtener observaciones de X ∼


Bernoulli (b).

1. Generar un número pseudoaleatorio, u.

2. Si u ≤ b, entonces devolver x = 1. En caso contrario, devolver x = 0.

5.6.2. Distribución discreta uniforme

Puede emplearse el algoritmo siguiente para obtener observaciones de X ∼


DU (i, j).

1. Generar un número pseudoaleatorio, u.

2. Devolver:
x = i + ⌊(j − i + 1) · u⌋ (5.65)

5.6.3. Distribución binomial

Puede emplearse el algoritmo siguiente para obtener observaciones de X ∼


bin (t, b).

363
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

1. Generar t observaciones independientes, y1 , . . . , yt , distribuidas

Yi ∼ Bernoulli (b) (5.66)

2. Devolver:
x = y1 + y2 + · · · + yt (5.67)

5.6.4. Distribución geométrica

El algoritmo para generar observaciones de X ∼ geom (b) está basado en la


siguiente relación entre las variables aleatorias geométricas y las de Bernoulli. Si se
realiza una secuencia de observaciones independientes y1 , y2, . . . de variables aleato-
rias distribuidas Yi ∼ Bernoulli (b), entonces el número de observaciones anteriores
a la primera que vale “1” es una observación de una variable aleatoria X ∼ geom (b).
El algoritmo consta de los pasos siguientes:

1. Asignar i = 0.

2. Generar un número aleatorio u, independiente de los anteriormente generados.

3. Si u ≤ b, entonces devolver x = i. En caso contrario, reemplazar i por i + 1 y


volver al Paso 2.

5.6.5. Distribución negativa binomial

Puede emplearse el algoritmo siguiente para obtener observaciones de X ∼


negbin (t, b).

– Generar t observaciones independientes, y1 , y2 , . . . , yt , de variables aleatorias


distribuidas: Yi ∼ geom (b).

– Devolver:
x = y1 + y2 + · · · + yt (5.68)

5.6.6. Distribución de Poisson

El algoritmo para obtener observaciones de X ∼ Poisson (λ) está basado en


la propiedad siguiente. Sea y1 , y2 , . . . una secuencia de observaciones de variables

364
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

aleatorias Y1 , Y2, . . . independientes e idénticamente distribuidas. Sea una variable


aleatoria X cuyas realizaciones se calculan de la forma siguiente:

( i
)
X
x = máx i : yj ≤ 1 (5.69)
j:1

i
P
Es decir, x es igual al mayor número entero i tal que yj ≤ 1. Entonces,
j:1
 
1
Yi ∼ expo ↔ X ∼ Poisson (λ) (5.70)
λ

Las observaciones y1 , y2, . . . , distribuidas Yi ∼ expo λ1 , pueden obtenerse a




partir de números pseudoaleatorios u1 , u2, . . . aplicando la Ecuación (5.52). Es decir,


yi = −1
λ
· ln (ui ). En consecuencia, la fórmula para generar observaciones distribuidas
Poisson (λ) es la siguiente:

( i
) ( i
)
X Y
x = máx i : yj ≤ 1 = máx i : uj ≥ e−λ (5.71)
j:1 j:1

El algoritmo (de aceptación/rechazo) es:

1. Asignar a = e−λ , b = 1, i = 0.

2. Generar un número aleatorio u, independiente de los generados anteriormente.

3. Reemplazar b por b · u.

4. Si el nuevo valor de b satisface b < a, entonces devolver x = i. En caso


contrario, reemplazar i por i + 1 y volver al paso 2.

5.6.7. Distribución empı́rica

Sea X una variable aleatoria discreta, cuyo rango es {0, 1, 2, . . .}. La probabilidad
de que una observación de X valga x = i es igual a: Prob {X = i} = pX (i), donde i
pertenece al rango de X. Pueden generarse observaciones de X aplicando el método
de la transformación inversa:

1. Generar un número pseudoaleatorio u.

365
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

2. Devolver x = k, donde k es el entero no negativo que satisface:


k−1
X k
X
pX (j) ≤ u < pX (j) (5.72)
j:0 j:0

5.7. GENERACIÓN DE PROCESOS DE LLEGADA

A continuación se describen algunos algoritmos para generar los instantes de


llegada t1 , t2 , . . . en los procesos de Poisson.

5.7.1. Proceso de Poisson estacionario

En un proceso de Poisson estacionario de frecuencia λ > 0, los intervalos de tiem-


po entre llegadas consecutivas siguen una distribución expo λ1 . Sacando partido de


esta propiedad, puede generarse una secuencia de instantes de llegada de la forma


siguiente:

1. Asignar t0 = 0 e i = 1.

2. Generar un número pseudoaleatorio, u, independiente de los anteriormente


generados.

3. Devolver:
1
ti = ti−1 − · ln (u) (5.73)
λ
4. Sustituir i por i + 1 y volver al paso 2.

Este algoritmo puede modificarse fácilmente de modo que los intervalos de tiempo
entre llegadas sean realizaciones de variables aleatorias distribuidas de acuerdo a
cualquier distribución de probabilidad. Basta para ello con modificar el segundo
paso del algoritmo.

5.7.2. Proceso de Poisson no estacionario

Se supone que la frecuencia de llegada es una función del tiempo, λ (t), y que
además está acotada. Es decir, que existe λ∗ tal que λ∗ = max {λ (t)} y es finito.
t

366
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

El algoritmo consiste esencialmente en generar primeramente un proceso de


Poisson estacionario, con frecuencia λ∗ . Sea {t∗1 , t∗2 , . . .} la secuencia de instantes de
llegada obtenidos. A continuación, se eliminan instantes de llegada de la secuencia
{t∗1 , t∗2 , . . .} atendiendo al criterio aleatorio siguiente La probabilidad de eliminar el
instante t∗i de la secuencia es:
λ (t∗i )
1− (5.74)
λ∗
De esta forma, es más probable eliminar el instante de llegada t∗i cuando la
frecuencia λ (t∗i ) en ese instante es pequeña. Por el contrario, a medida que la
frecuencia en ese instante se aproxima al máximo λ∗ la probabilidad de eliminar
el instante tiende a cero.
El siguiente algoritmo es la aplicación del método anteriormente expuesto:

1. Asignar t = ti−1 .

2. Generar dos números pseudoaleatorios, u1 y u2 , independientes entre sı́ e


independientes de los previamente generados.

3. Reemplazar t por:
1
t− · ln (u1 ) (5.75)
λ∗
λ(t)
4. Si u2 ≤ λ∗
, entonces devolver ti = t. En caso contrario, volver al paso 2.

5.7.3. Proceso de Poisson con llegadas en grupo

Se supone que las entidades llegan en grupos de dimensión aleatoria. El número


de entidades del grupo que llega en el instante ti es una variable aleatoria discreta
Bi . El algoritmo para generar el tamaño de los grupos se aplica en conjunción con
el algoritmo para generar los instantes de llegada.

1. Generar el siguiente instante de llegada, ti .

2. Generar una realización independiente de la variable aleatoria discreta Bi . El


número entero obtenido es el número de entidades que llegan en el instante ti .

367
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

5.8. LECTURAS RECOMENDADAS

En el texto (Law & Kelton 2000) se citan referencias bibliográficas acerca de la


generación de números aleatorios empleando generadores fı́sicos.
Una buena referencia acerca de la la tabla de 1 millón de dı́gitos aleatorios de
RAND Corporation es (RAND Corporation 1955).
Las técnicas para el estudio de la uniformidad e independencia de una secuencia
de números están descritas con detalle en (Bratley et al. 1987).
Las explicaciones sobre GCL dadas en este tema han sido extraı́das fundamen-
talmente de (Law & Kelton 2000). En ese texto puede encontrarse información
adicional. Puede conocerse más acerca del generador de números pseudoaleatoios
de Arena consultando (Kelton et al. 2002).
Se han citado los números primos de Mersenne. En el momento de escribir este
texto sólo se conocen 48. El mayor de ellos fue encontrado en enero del año 2013. Se
trata de 257,885,161 −1, un número de más de 17 millones de dı́gitos. Puede encontrarse
información interesante sobre este tema en http://www.mersenne.org/
Pueden encontrase en Internet programas con baterı́as de test empı́ricos, que
pueden ser aplicadas para contrastar la validez de los generadores. Entre éstas des-
taca Diehard, una baterı́a de tests desarrollada por G. Marsaglia. Puede encontrarse
información en la dirección http://stat.fsu.edu/ geo/diehard.html
Los textos (Banks et al. 1996) y (Law & Kelton 2000) son excelentes referencias
sobre tests empı́ricos. En el texto (Guasch et al. 2002) se discuten aspectos prácticos
de la aplicación de baterı́as de tests a conjuntos de secuencias.
En este tema se han descrito algoritmos para generar observaciones de algunos
tipos de distribución. En (Law & Kelton 2000) pueden encontrarse algoritmos para
las distribuciones gamma, Weibull y beta. También es ese texto se describen mé-
todos para generar observaciones de distribuciones empı́ricas discretas que son más
eficientes que el método de la transformación inversa.
Los textos (Fishman 2001), (Bratley et al. 1987), (Hoover & Perry 1989), (Banks
et al. 1996) y (Tyszer 1999) son excelentes referencias para ampliar la información
dada en este tema acerca de la generación de números pseudoaleatorios y de obser-
vaciones de variables aleatorias.

368
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

5.9. EJERCICIOS DE AUTOCOMPROBACIÓN

Ejercicio 5.1

Aplique “manualmente” el algoritmo de corrección del sesgo propuesto por von


Neumann a la secuencia de bits siguiente:

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

A continuación, escriba un programa en lenguaje R que aplique el algoritmo a


la secuencia. Compruebe que los resultados obtenidos manualmente y mediante el
programa coinciden.

Ejercicio 5.2

Realice un programa en lenguaje R que aplique el algoritmo de los cuadrados


medios para generar números de 4 dı́gitos. Ejecútelo escogiendo un número de 4
dı́gitos como semilla y genere una secuencia de 10 números.

Ejercicio 5.3

Programe el generador congruencial lineal usando el lenguaje R. Ejecute el pro-


grama para obtener una secuencia de 10 números pseudoaleatorios a partir del
generador siguiente: a = 17, c = 43 y m = 100. Emplee como semilla z0 = 27.

Ejercicio 5.4

Realice un programa en lenguaje R que, trabajando conjuntamente con el progra-


ma que ha realizado en el Problema 5.3, calcule el periodo del generador. Aplı́quelo
al caso particular siguiente: calcular el periodo del generador multiplicativo definido
por los parámetros a = 13 y m = 26 = 64, para los siguientes 4 valores de la semilla:
z0 = 1, 2, 3 y 4.

369
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Ejercicio 5.5

Se han realizado 100 observaciones del tiempo necesario para reparar una má-
quina. Los datos obtenidos son los siguientes:

Tiempo (horas) Número de observaciones


0 ≤ x ≤ 0.5 31
0.5 < x ≤ 1.0 10
1.0 < x ≤ 1.5 25
1.5 < x ≤ 2.0 34

1. A partir de estos datos, defina la probabilidad acumulada empı́rica.

2. Se sabe que, por muy rápido que se realice una reparación, dura al menos 15
minutos. Defina la probabilidad acumulada empı́rica, truncando el rango de la
variable aleatoria al intervalo [0.25, 2] horas.

3. Explique detalladamente cómo aplicar el método de la transformación inversa


para generar observaciones de esta distribución empı́rica truncada.

Ejercicio 5.6

Se ha observado que una variable aleatoria discreta puede tomar los valores 0, 1
y 2, con probabilidad 0.50, 0.30 y 0.20, respectivamente. Describa cómo aplicarı́a el
método de la transformación inversa para generar observaciones de esa distribución
empı́rica discreta.

Ejercicio 5.7

La probabilidad de una variable aleatoria discreta X es:

2·x
pX (x) = para x = 1, 2, . . . , k (5.76)
k · (k + 1)

1. Calcule la probabilidad acumulada de X.

2. Explique detalladamente cómo pueden obtenerse observaciones de X mediante


el método de la transformación inversa.

370
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Ejercicio 5.8

Puede demostrarse que una variable aleatoria X distribuida Erlang con pará-
metros (K, θ) es la suma de K variables aleatorias exponenciales independientes
1
X1 , . . . , XK , cada una de las cuales tiene una media igual a K·θ . Explique cómo
generar observaciones de X mediante el método de la convolución.

371
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

5.10. SOLUCIONES DE LOS EJERCICIOS

Solución al Ejercicio 5.1

El algoritmo de corrección del sesgo de von Neumann consiste en los pasos


siguientes. Se leen los bits de dos en dos.

– Si existe una transición entre sus valores (es decir, los bits son 01 ó 10), el
primero de ellos se considera un bit aleatorio y el segundo se descarta.

– Si no existe transición entre los dos bits (es decir, son 00 ó 11), entonces se
descartan los dos bits y se leen los dos siguientes.

Aplicándolo a la secuencia dada en el enunciado, se obtiene:

0 1 1 0 0 1 0 1 1 1

El siguiente programa aplica el algoritmo a la secuencia:

> S1 <- c(0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1,


1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1)
> S2 <- numeric(0)
> for (i in seq(1,(length(S1)-1),2))
if ( S1[i] != S1[i+1] )
S2 <- c(S2, S1[i])
> S2
[1] 0 1 1 0 0 1 0 1 1 1

372
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Solución al Ejercicio 5.2

El algoritmo, aplicado a números de 4 dı́gitos, consiste en elevar al cuadrado


el último número de la secuencia y conservar los 4 dı́gitos centrales. El siguiente
programa ejecuta este algoritmo:

> x <- 1234 # Semilla


> n <- 10 # Número de números a generar
> for (i in c(2:n)) {
aux1 <- as.integer(x[i-1]^2/100)
aux2 <- 10000*(aux1/10000 - as.integer(aux1/10000))
x <- c(x, aux2)
}
> x
[1] 1234 5227 3215 3362 3030 1809 2724 4201 6484 422

Solución al Ejercicio 5.3

El siguiente programa genera los números:

> n <- 10 # Número de números a generar


> x <- 27 # Semilla
> a <- 17 # Parámetros del GCL
> c <- 43
> m <- 100
> for (i in c(2:n))
x <- c(x, (a*x[i-1]+c)%%m)
> u <- x/m
> u
[1] 0.27 0.02 0.77 0.52 0.27 0.02 0.77 0.52 0.27 0.02

Como puede observarse, para esa elección de la semilla el periodo es realmente


pequeño.

373
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 5.4

El cálculo del nuevo número se realiza empleando sólo el número anterior de


la secuencia. Por tanto, cuando el primer número de la secuencia se repita se ha
completado un periodo.

> periodo <- function(x) {


ind <- c(1:length(x))[x == x[1]]
if (length(ind)==1) return(0) else return(ind[2]-1)
}
> n <- 65
> x <- 1
> a <- 13
> c <- 0
> m <- 64
> for (i in c(2:n))
x <- c(x, (a*x[i-1]+c)%%m)
> u <- x/m
> p <- periodo(u)

Los resultados obtenidos son los siguientes:

semilla 1 2 3 4
periodo 16 8 16 4

374
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Solución al Ejercicio 5.5

La distribución empı́rica, que se ha dibujado en la parte izquierda de la Figura 5.9,


se ha obtenido a partir de la información mostrada en la tabla siguiente.

Tiempo Número de Frecuencia Frecuencia


(horas) observaciones relativa acumulada
0 ≤ x ≤ 0.5 31 0.31 0.31
0.5 < x ≤ 1.0 10 0.10 0.41
1.0 < x ≤ 1.5 25 0.25 0.66
1.5 < x ≤ 2.0 34 0.34 1.00
0.0 0.2 0.4 0.6 0.8 1.0

(2.00,1.00) 0.0 0.2 0.4 0.6 0.8 1.0 (2.00,1.00)


Probabilidad acumulada
Probabilidad acumulada

(1.5,0.66) (1.5,0.66)

(1.00,0.41) (1.00,0.41)
(0.50,0.31) (0.50,0.31)

(0,0) (0.25,0)
0.0 0.5 1.0 1.5 2.0 0.0 0.5 1.0 1.5 2.0
Tiempo de reparación (horas) Tiempo de reparación (horas)

Figura 5.9: Probabilidad acumulada empı́rica de los tiempos de reparación.

Esta distribución empı́rica satisface:

F̂X (x) = 0 para x < 0 (5.77)


F̂X (x) = 1 para x > 2 horas (5.78)

y por consiguiente la variable aleatoria “tiempo de reparación” (X) puede tomar


valores arbitrariamente próximos a cero. Esta suposición no es realista, ya que el
tiempo mı́nimo necesario para realizar una reparación se ha estimado que es 15
minutos. El rango de X debe ser el intervalo [0.25, 2] horas. Para ello, el punto (0, 0)
debe sustituirse por el punto (0.25, 0), como se muestra en la parte derecha de la
Figura 5.9.
La técnica de la transformación inversa puede emplearse para generar observacio-
nes del tiempo de reparación. Para ello, hay que generar un número pseudoaleatorio

375
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

u y leer el valor de X a que da lugar en el gráfico de la parte derecha de la Figura 5.9:


x = FX−1 (u).
Por ejemplo, si u = 0.83, puesto que u está entre 0.66 y 1.00, es preciso calcular
x de la interpolación lineal entre 1.5 y 2.0. Esto es:

u − 0.66
x = 1.5 + · (2.0 − 1.5) = 1.75 (5.79)
1.00 − 0.66

Para todos los valores de u en el intervalo (0.66, 1.00), es preciso emplear el


2.0−1.5 ∆x
valor a4 = 1.00−0.66 para calcular x. El valor a4 es la pendiente ∆u de la función
−1
x = F̂X (u). Las pendientes de los cuatro segmentos de lı́nea son:

0.5−0.25 1.0−0.5
a1 = 0.31−0.00
= 0.81 a2 = 0.41−0.31
= 5.00
1.5−1.0 2.0−1.5 (5.80)
a3 = 0.66−0.41
= 2.00 a4 = 1.00−0.66
= 1.47

El algoritmo para generar observaciones de X, empleando el método de la trans-


formación inversa, es el siguiente:

1. Generar u.

2. Calcular el intervalo i en el cual está u. Es decir, calcular i tal que ui ≤ u ≤


ui+1 , donde: u1 = 0, u2 = 0.31, u3 = 0.41, u4 = 0.66 y u5 = 1.00.

3. Calcular x de la expresión siguiente:

x = xi + ai · (u − ui ) (5.81)

donde: x1 = 0.25, x2 = 0.5, x3 = 1.0, x4 = 1.5 y x5 = 2.0.

Como ejemplo, supóngase que u = 0.33. Puesto que u está en el intervalo de


pendiente a2 :

x = x2 + a2 · (u − u2 ) = 0.5 + 5.0 · (0.33 − 0.31) = 0.6 (5.82)

376
GENERACIÓN DE LAS ENTRADAS ALEATORIAS

Solución al Ejercicio 5.6

La probabilidad acumulada de una variable aleatoria discreta siempre consiste


en segmentos horizontales de lı́nea. Los saltos entre estos segmentos se producen
en los valores que puede tomar la variable aleatoria y tienen una altura igual a la
probabilidad de que la variable tome ese valor.
En la Figura 5.10 se muestra la probabilidad acumulada de la variable discreta X
y también un ejemplo de generación de una observación de X empleando el método
de la transformación inversa: el número pseudoaleatorio u = 0.73 es transformado
en x = 1.
1.0
Probabilidad acumulada
0.8

u = 0.73
0.6
0.4
0.2

x=1
0.0

0 1 2 3
X
Figura 5.10: Probabilidad acumulada empı́rica de la variable aleatoria discreta.

La aplicación del método de la transformación inversa es análogo al caso de las


variables aleatorias continuas, con la excepción de que en este caso se elimina el
paso de la interpolación lineal. El esquema de generación puede resumirse de la
forma siguiente:


 0
 si u ≤ 0.5
x= 1 si 0.5 < u ≤ 0.8 (5.83)

 2 si 0.8 < u ≤ 1.0

377
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Solución al Ejercicio 5.7

La probabilidad acumulada viene dada por la expresión siguiente:

x
X 2·i
FX (x) = (5.84)
i=1
k · (k + 1)
x
2 X
= i (5.85)
k · (k + 1) i=1
2 x · (x + 1)
= · (5.86)
k · (k + 1) 2
x · (x + 1)
= para x = 1, 2, . . . , k (5.87)
k · (k + 1)

Para generar una observación de X, hay que generar un número pseudoaleatorio


u y calcular x resolviendo la desigualdad siguiente:

(x − 1) · x x · (x + 1)
FX (x − 1) = <u≤ = FX (x) (5.88)
k · (k + 1) k · (k + 1)

o lo que es lo mismo, resolviendo:

(x − 1) · x < u · k · (k + 1) ≤ x · (x + 1) (5.89)

para x = 1, 2, . . . , k.

Solución al Ejercicio 5.8

K
P
En el enunciado se indica que X = Xi . La forma de generar observaciones
i:1
de una distribución exponencial a partir de números aleatorios es −β · ln (u). Como
consecuencia de estos dos hechos, se concluye que puede generarse una observación
de una variable aleatoria Erlang de la forma siguiente:

K K K
!
X X −1 −1 Y
x= xi = · ln (ui) = · ln ui (5.90)
i:1 i:1
K · θ K · θ i:1

378
TEMA 6

ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

6.1. Introducción
6.2. Comportamiento transitorio y estacionario
6.3. Simulaciones con condición de finalización
6.4. Simulaciones en el estacionario
6.5. Intervalos de confianza para varias magnitudes
6.6. Comparación entre dos sistemas
6.7. Comparación entre más de dos sistemas
6.8. Análisis usando Arena
6.9. Análisis usando R
6.10. Lecturas recomendadas
6.11. Ejercicios de autocomprobación
6.12. Soluciones de los ejercicios
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

OBJETIVOS DOCENTES

Una vez estudiado el contenido del tema y realizados los ejercicios prácticos,
deberı́a saber:

– Discutir las diferencias entre los estudios de simulación con terminación y los
estudios en el estacionario, ası́ como entre el comportamiento transitorio y el
comportamiento en el estacionario del modelo.

– Construir intervalos de confianza para la media de magnitudes representati-


vas del comportamiento del sistema, tanto en los estudios con condición de
terminación como en los estudios en el estacionario.

– Discutir y aplicar las técnicas para comparar dos o más sistemas.

– Analizar las salidas de un único sistema y comparar varios sistemas usando


Arena.

– Comparar las salidas de varios sistemas usando R.

381
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

6.1. INTRODUCCIÓN

Un ejemplo de mala planificación en un estudio de simulación serı́a invertir


una gran cantidad de tiempo y dinero en el desarrollo y programación del modelo
estocástico, y sin embargo dedicar muy poco esfuerzo a analizar adecuadamente los
datos de salida de la simulación: realizar una única réplica de la simulación, de lon-
gitud arbitraria, y considerar (erróneamente) que se han obtenido las caracterı́sticas
“verdaderas” del modelo.
En realidad, debido al carácter estocástico de la simulación, las estimaciones
de las caracterı́sticas del modelo obtenidas de la simulación son observaciones de
variables aleatorias, cuyas distribuciones posiblemente tengan grandes varianzas.
En consecuencia, las estimaciones obtenidas en una única réplica de la simulación
pueden diferir enormemente de las caracterı́sticas “verdaderas” del modelo y, por
tanto, conducir a inferencias erróneas acerca del sistema bajo estudio.
El siguiente ejemplo pretende ilustrar este hecho. Supongamos que se desea
estudiar el funcionamiento de una oficina de atención al público, en la que trabaja
un único empleado. Se supone que el intervalo de tiempo entre llegadas sucesivas de
clientes está distribuido expo(1/λ) y el tiempo de servicio está distribuido expo(1/ω),
satisfaciéndose λ/ω = 0.9. Se pretende estimar el tiempo medio de espera de los
clientes en la cola, para lo cual se realizan 10 réplicas independientes de la simulación.
Inicialmente la cola está vacı́a y el empleado libre. La condición de finalización de
cada réplica es que 25 clientes hayan abandonado la cola. Para cada réplica se calcula
el tiempo medio de espera en la cola. En la Figura 6.1 se muestra el boxplot de estos
10 valores.
6
5
4
3
2
1

Figura 6.1: Tiempo medio de espera en cola obtenido en cada una de las 10 réplicas independientes
de la simulación. Valores: 1.051, 6.438, 2.646, 0.805, 1.505, 0.546, 2.281, 2.822, 0.414 y 1.307. La
lı́nea punteada indica el valor exacto del tiempo medio de espera en cola.

383
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

La media, la varianza y la mediana de las diez estimaciones del tiempo medio de


espera en cola son:

Media: 1.9815 Varianza: 3.1720 Mediana: 1.4060

El valor esperado exacto del tiempo medio en cola en este modelo y estas con-
diciones experimentales, calculado empleando técnicas analı́ticas, es 2.124. Este
valor se ha representado en la Figura 6.1 mediante una lı́nea horizontal punteada.
Puede observarse que algunas de las observaciones del tiempo medio en cola difieren
enormemente del valor esperado exacto.
La conclusión es que, puesto que la simulación de un modelo estocástico es un ex-
perimento de muestreo realizado mediante ordenador, si se desea extraer resultados
válidos es preciso emplear técnicas estadı́sticas adecuadas para diseñar y analizar
los experimentos de simulación.
Las técnicas a emplear dependen de si el experimento tiene o no condición de
finalización. Lo cual a su vez depende del objetivo del estudio de simulación. La
diferencia entre ambos tipos de experimento radica en que exista o no una condición
que establezca la finalización de la simulación.
En las simulaciones con condición de finalización las medidas del compor-
tamiento del modelo son relativas al intervalo de tiempo simulado [0, TE ], donde TE
es el instante (posiblemente aleatorio) en que sucede el evento de finalización E.
En general, las medidas del comportamiento del modelo durante el intervalo [0, TE ]
dependen del estado del modelo en el instante inicial de la simulación.
Por el contrario, en las simulaciones sin condición de finalización, también llama-
das simulaciones en el estacionario, la finalidad es estudiar las caracterı́sticas del
modelo cuando el tiempo simulado tiende a infinito. Es decir, cuando el proceso ha
alcanzado su estado estacionario y por tanto sus caracterı́sticas son independientes
del estado inicial.

6.2. COMPORTAMIENTO TRANSITORIO Y ESTACIONARIO

Con el fin de clarificar el significado de los conceptos “comportamiento transi-


torio” y “comportamiento estacionario” de un proceso estocástico, consideremos un
proceso estocástico Y1 , Y2 , . . . . La probabilidad acumulada de la variable aleatoria
Yi del proceso, condicionada a que el estado inicial del sistema sea I, se representa
de la manera siguiente:

384
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

FYi (yi |I ) = Prob {Yi ≤ yi |I } (6.1)

Al tender el tiempo simulado a infinito (es decir, i → ∞), en algunos procesos


las distribuciones de las variables aleatorias Yi tienden a determinada distribución,
F , con independencia del estado inicial I del sistema. Entonces, se dice que F es la
distribución en el estacionario del proceso estocástico Y1 , Y2 , . . .
Si bien la distribución en el estacionario se obtiene en el lı́mite i → ∞, a efectos
prácticos puede considerarse que a partir de cierto valor k + 1 del ı́ndice temporal, la
distribución es esencialmente la misma. Se dice entonces que el estado estacionario
del proceso comienza en el instante correspondiente al ı́ndice temporal k + 1.
Obsérvese que el estado estacionario no significa que las observaciones de las
variables aleatorias Yk+1 , Yk+2, . . . vayan a tomar el mismo valor en una determinada
réplica de la simulación. Significa que todas ellas están aproximadamente distribuidas
de la misma forma.
Si bien la distribución en el estacionario F no depende del estado inicial I del sis-
tema, la velocidad con que las distribuciones FYi (yi |I ) convergen a F normalmente
sı́ depende del estado inicial.
A continuación se muestra un ejemplo. Supongamos que se desea estudiar el
tiempo de espera de las entidades en una cola. Sea la variable aleatoria Yi el tiempo
de espera en la cola de la entidad i-ésima que entra en la cola. Se realizan 100 réplicas
independientes de la simulación, todas ellas partiendo del mismo estado inicial del
modelo. Para cada réplica se usa un conjunto de números aleatorios independiente
de los conjuntos de números aleatorios usados en las demás réplicas. Además, los
contadores estadı́sticos son inicializados al comienzo de cada réplica. La condición de
finalización de cada réplica de la simulación es que 31 entidades hayan abandonado
la cola. Los 31 tiempos de espera obtenidos en las 100 réplicas son:

Observación de Y1 Observación de Y2 ... Observación de Y31


Réplica 1 y1,1 y1,2 ... y1,31
Réplica 2 y2,1 y2,2 ... y2,31
.. .. .. .. ..
. . . . .
Réplica 100 y100,1 y100,2 ... y100,31

En general, las observaciones de una réplica en particular (fila) no son indepen-


dientes entre sı́ y además no están idénticamente distribuidas, ya que son realiza-
ciones de diferentes variables aleatorias. Sin embargo, las observaciones y1,i, y2,i ,

385
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

. . . , y100,i (columna) de una misma variable aleatoria Yi son independientes y están


idénticamente distribuidas. La independencia entre las réplicas de la simulación es la
clave para poder aplicar los métodos estadı́sticos (relativamente simples) descritos
en este tema. El objetivo del análisis estadı́stico de este proceso estocástico es usar
las observaciones obtenidas mediante simulación para realizar inferencias acerca de
las distribuciones de probabilidad de las variables aleatorias Y1 , Y2 , . . . , Y31 .
En la Figura 6.2 se ha representado el boxplot de las 100 observaciones de cada
una de las variables aleatorias. Se observa que a partir de k+1 ≈ 22 el proceso alcanza
aproximadamente el estado estacionario. Se puede emplear el test de Kruskal-Wallis
para contrastar la hipótesis de que las variables aleatorias Y22 , Y23 , . . . , Y31 están
idénticamente distribuidas. Si se hubieran realizado las réplicas de la simulación
partiendo de un estado inicial I diferente, en general las distribuciones transitorias
hubieran sido diferentes, ası́ como el valor del ı́ndice temporal a partir del cual se
hubiera podido considerar que se ha alcanzado (aproximadamente) el estacionario.
Existen procesos estocásticos Y1 , Y2 , . . . en los cuales, cuando el tiempo simulado
tiende a infinito, las distribuciones de las variables aleatorias no convergen a una
determinada distribución en el estado estacionario. Por ejemplo, en la Figura 6.3 se
muestran 100 observaciones de cierto proceso estocástico en el que Yi representa el
tiempo en cola del cliente i en un servicio de atención al público mal dimensionado,
en el cual el número de clientes en la cola y el tiempo de espera de éstos aumenta
más y más al avanzar el tiempo simulado.
También puede suceder que el proceso estocástico Y1 , Y2 , . . . tenga un compor-
tamiento oscilante. Supóngase que se divide el eje temporal en intervalos de igual
C
longitud, denominados ciclos, y que se denomina Yi j a la variable aleatoria i del
ciclo j. El proceso tiene un comportamiento oscilante si satisface:

C
– Las distribuciones de las variables Y1 j tienden, cuando el número de ciclos
tiende a infinito, j → ∞, a cierta distribución F1 .
C
– Las distribuciones de las variables Y2 j tienden, cuando el número de ciclos
tiende a infinito, j → ∞, a cierta distribución F2 .

– Etc.

A efectos prácticos, a partir de determinado ciclo, k + 1, puede considerarse que:

C
– Las variables aleatorias Y1 j , con j : k + 1, k + 2, . . . , están idénticamente
distribuidas.

386
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

6TCPUKVQTKQ 'UVCEKQPCTKQ
CRTQZ

Figura 6.2: Proceso esto-


cástico con estado estacio-
Yi nario.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Figura 6.3: Proceso esto-


cástico sin estado estacio-
Yi
nario.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

%KENQFGJQTCU
25
20

Figura 6.4: Proceso esto-


15

cástico oscilante.
10
5

1 9 17 25 33 41 48

6WTPQ 6WTPQ 6WTPQ

387
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

C
– Las variables aleatorias Y2 j , con j : k + 1, k + 2, . . . , están idénticamente
distribuidas.

– Etc.

A continuación se muestra un ejemplo. En una cadena de montaje de electrodo-


mésticos, que funciona 24 horas al dı́a, los trabajadores están distribuidos en 3 turnos
de 8 horas cada dı́a. Dado que las condiciones que rodean el trabajo de cada uno de
los turnos son diferentes, es de prever que el número de electrodomésticos producidos
por hora oscile con un periodo de 24 horas. En la Figura 6.4 se representan 100
muestras del proceso estocástico. Se ha escogido una ventana de tiempo en la cual
el sistema ha alcanzado un comportamiento cı́clico estacionario.

6.3. SIMULACIONES CON CONDICIÓN DE FINALIZACIÓN

Consideremos de nuevo el estudio de simulación en el cual se querı́a estimar el


tiempo de espera en una cola. En este caso la condición de finalización es diferente:
que el tiempo simulado alcance 8 horas. El número total de clientes que abandonan
la cola durante la simulación es una variable aleatoria M. El tiempo medio de espera
en cola también es una variable aleatoria X.
Para estimar el valor esperado µX de la variable aleatoria X se realizan n réplicas
independientes de la simulación, todas ellas con la misma condición inicial. El
número de clientes que abandonan la cola en la j-ésima réplica de la simulación
es una observación mj de la variable aleatoria M. La observación de X obtenida en
la j-ésima réplica de la simulación es:

mj
1 X
xj = · yj,i con j = 1, . . . , n (6.2)
mj i=1

donde yj,i es el tiempo de espera en la cola del i-ésimo cliente de la j-ésima réplica
de la simulación.
De las n réplicas de la simulación, se obtienen n observaciones x1 , x2 , . . . , xn de
X. La media aritmética de estas n observaciones,

n
1 X
X̄ (n) = · xj (6.3)
n j=1

388
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

es un estimador no sesgado de µX . Si la variable aleatoria X está distribuida de


2
forma normal, X ∼ N (µX , σX ), entonces:

r
2
SX (n)
X̄ (n) ± tn−1,1− α2 · (6.4)
n

es un intervalo del 100 · (1 − α) % de confianza para µX . Se observa en la Expre-


sión (6.4) que la anchura del intervalo de confianza depende del tamaño n de la
muestra, que en este caso corresponde con el número de réplicas de la simulación.
Cabe plantearse el problema inverso: ¿cuántas réplicas deberán realizarse para
obtener un intervalo de confianza de una determinada anchura? Una forma de
proceder puede ser la siguiente:

1. Realizar inicialmente n0 réplicas de la simulación. Es conveniente realizar al


menos entre 3 y 5 réplicas, a fin de estimar la variabilidad de las observaciones
de X. Al hacerlo se obtienen n0 observaciones independientes de X: x0 , . . . , xn0 .
A partir de estas observaciones, se emplea la Expresión (6.4) para calcular un
intervalo de confianza para el valor esperado de X.

2. Si el intervalo de confianza es demasiado ancho, es necesario realizar un cierto


número de réplicas adicionales de la simulación. En concreto, si se desea que
la anchura del intervalo sea inferior a un determinado valor h, el número n1
de réplicas de la simulación necesario puede estimarse de la forma siguiente:

2
∼ 2 SX (n0 )
n1 = z1− ·
α (6.5)
2 h2
2
donde SX (n0 ) es el estimador de la varianza de X, calculado de las n0 ob-
servaciones x0 , . . . , xn0 . Obsérvese que para obtener esta aproximación se ha
sustituido el valor crı́tico de la distribución t por el valor crı́tico de la distribu-
ción normal. Ambos valores crı́ticos están próximos para tamaños de muestra
superiores a 30.
Obsérvese que el número de réplicas es inversamente proporcional al cuadrado
de la anchura del intervalo. Esto implica que para reducir el intervalo a la
mitad, es necesario disponer de cuatro veces más datos. Esto resulta lógico, ya
que al crecer el número de réplicas cada réplica tiene una contribución menor
al “conocimiento acumulado”.

3. Realizar n1 − n0 réplicas adicionales independientes de la simulación. Cal-


cular el intervalo de confianza para el valor esperado de X, usando las n1

389
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

observaciones y la Expresión (6.4). Si el intervalo de confianza obtenido de las


n1 observaciones es demasiado amplio, entonces debe repetirse el cálculo del
número de réplicas necesario:

2
∼ 2 SX (n1 )
n2 = z1− ·
α (6.6)
2 h2
donde el estimador de la varianza se calcula de las n1 observaciones disponibles.

4. Realizar las n2 − n1 réplicas adicionales, calcular el intervalo de confianza


usando las n2 observaciones y la Expresión (6.4), y ası́ sucesivamente.

6.4. SIMULACIONES EN EL ESTACIONARIO

Supóngase que se desea estimar la media de la distribución en el estacionario


de un determinado proceso estocástico, Y1 , Y2 , . . . , Ym . Para realizar este cálculo es
preciso excluir la parte transitoria del proceso. Es decir, si se considera que el proceso
alcanza el estacionario a partir del ı́ndice temporal k + 1, la media de la distribución
en el estacionario se estimará de la forma siguiente:

m
1 X
Ȳ (m, k) = · yi (6.7)
m − k i:k+1

Surge inmediatamente la cuestión siguiente: ¿cómo deben escogerse los valores de


k y m para que el estimador sea no sesgado? El método gráfico de Welch proporciona
una respuesta a esta pregunta.

6.4.1. Método gráfico de Welch

El método de Welch es una técnica gráfica para determinar el valor k del ı́n-
dice temporal a partir del cual puede considerarse que las medias de las variables
aleatorias Yi han alcanzado aproximadamente un valor estacionario, µY . Es decir:

E {Yi } ≈ µY para todo i > k (6.8)

Dada la inherente variabilidad de las observaciones del proceso Y1 , Y2 , . . . , Ym ,


el método requiere la realización de n réplicas independientes de la simulación. La
técnica de Welch consta de los 4 pasos siguientes:

390
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

1. Realizar n réplicas independientes de la simulación (con n ≥ 5), cada una de


longitud m (m debe ser grande). Se obtienen las siguientes observaciones:

y1,1 y1,2 ... y1,m


y2,1 y2,2 ... y2,m
.. .. .. .. (6.9)
. . . .
yn,1 yn,2 . . . yn,m

donde yj,i es la observación de la variable aleatoria Yi obtenida en la réplica j.

2. A partir de las n observaciones aleatorias de cada variable Yi , calcular el


estimador del valor esperado de Yi . El cálculo se realiza de la forma siguiente:

n
1 X
Ȳi (n) = · yj,i para i = 1, . . . , m (6.10)
n j:1

La media y la varianza del estimador Ȳi (n) de la media son respectivamente:


E Ȳi (n) = E {Yi } (6.11)
 var {Yi}
var Ȳi (n) = (6.12)
n

Cuanto mayor es el número n de réplicas de la simulación, menor es la varianza


del estimador y por tanto menor es la dispersión de sus observaciones respecto
al valor verdadero E {Yi }. El siguiente ejemplo ilustra este hecho. En la Figu-
ra 6.5 aparecen graficados los valores de Ȳi (n) obtenidos en una simulación
de duración m = 200, para diferentes valores del número n de réplicas. Al
aumentar n, la dispersión del estimador de la media se reduce.

3. Calcular la media móvil de Ȳi (n), con una ventana w, para cada instante
i. La finalidad de ello es suavizar las oscilaciones de alta frecuencia en la
gráfica Ȳi (n) vs i, de modo que sea más fácil interpretar la tendencia de baja

frecuencia. La media móvil Ȳi (n) w se calcula:

 w
P
 Ȳi+s (n)
s:−w
si i : w + 1, . . . , m − w

 jmk
2·w+1

Ȳi (n) w = i−1 para w ≤


P
Ȳi+s (n) 2
s:−(i−1)
si i : 1, . . . , w

2·i−1
(6.13)

391
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

Yi (n ) vs i
w = 0, n= 5 , m = 200 w = 0, n= 10 , m = 200 w = 0, n= 20 , m = 200
10

10

10
8

8
6

6
4

4
2

2
0

0
0

0 50 100 150 200 0 50 100 150 200 0 50 100 150 200

w = 0, n= 40 , m = 200 w = 0, n= 80 , m = 200 w = 0, n= 160 , m = 200


10

10

10
8

8
6

6
4

4
2

2
0

0 50 100 150 200 0 50 100 150 200 0 50 100 150 200

Figura 6.5: Aumentar la muestra disminuye la dispersión del estimador.

donde ⌊x⌋ es el mayor número entero que es menor o igual que x. Obsérvese que

si i no está próximo al comienzo del proceso, entonces Ȳi (n) w es simplemente
el promedio de las 2 · w + 1 observaciones siguientes:

Ȳi−w (n) , . . . , Ȳi (n) , . . . , Ȳi+w (n) (6.14)

Por ejemplo, las expresiones para el cálculo de la media móvil con w = 2 son:
i 1 2 3 ... i ... m−3 m−2
Ȳi (n) Ȳ1 (n) Ȳ2 (n) Ȳ3 (n) ... Ȳi (n) ... Ȳm−3 (n) Ȳm−2 (n)
3
P 5
P i+2
P m−1
P m
P
Ȳj (n) Ȳj (n) Ȳj (n) Ȳj (n) Ȳj (n)
j:1 j:1 j:i−2 j:m−5 j:m−4
Ȳi (n) w Ȳ1 (n) 3 5 ... 5 ... 5 5

392
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

Yi (n ) w vs i

w = 0, n= 10 , m = 200 w = 2 , n = 10 , m = 200 w = 4 , n = 10 , m = 200

10

10
10

8
8

6
6
4

4
2

2
0

0
0 50 100 150 200 0 50 100 150 200 0 50 100 150 200

w = 8 , n = 10 , m = 200 w = 16 , n = 10 , m = 200 w = 32 , n = 10 , m = 200


10
10

10
8

8
6

6
4

4
2

2
0

0 50 100 150 0 50 100 150 0 50 100 150

Figura 6.6: Aumentar la anchura w de la ventana suaviza la curva.


4. Representar Ȳi (n) w vs i, para i : 1, 2, . . . , m − w. Con ayuda de esta gráfi-

ca, escoger el valor de k a partir del cual Ȳi (n) w parece alcanzar un nivel
constante. A continuación se muestra un ejemplo.

En la Figura 6.6 se muestran las gráficas Ȳi (n) w vs i del mismo proceso
representado en la Figura 6.5. Se ha calculado la media móvil empleando 6
valores diferentes del tamaño de ventana. Puede observarse que el suavizado
de la curva aumenta con el tamaño de la ventana y facilita la localización del
instante a partir del cual comienza el comportamiento estacionario.

Pueden ofrecerse las siguientes recomendaciones para la elección de los paráme-


tros n, m y w:

1. Realizar inicialmente n = 5 ó n = 10 réplicas de la simulación (en función


de la carga computacional que tenga la ejecución del modelo), tan largas (es
decir, con m tan grande) como sea razonablemente posible. En particular,

393
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

m debe ser mucho más grande que el valor que se presuponga que tiene k
(ı́ndice temporal donde comienza aproximadamente el estado estacionario) y
además m debe ser lo suficientemente grande como para permitir que eventos
infrecuentes (por ejemplo, la rotura de maquinas, etc.) ocurran un número
razonable de veces.

2. Representar Ȳi (n) w vs i para varios valores del tamaño w de ventana. Escoger
el valor de w más pequeño para el cual la gráfica es razonablemente suave. Usar
esa gráfica para estimar (visualmente) el valor de k.

3. Si ninguno de los valores de w del Paso 3 del método de Welch es satisfac-


torio, realizar 5 ó 10 réplicas adicionales de longitud m. Repetir el Paso 2
empleando todas las observaciones disponibles. Para un valor fijo de w, el

gráfico Ȳi (n) w vs i será más suave al aumentar el número n de réplicas.

6.4.2. Media de la distribución en el estacionario

Existen varias técnicas para estimar un intervalo de confianza para la media de la


distribución en el estacionario. Puede establecerse una primera clasificación de estas
técnicas atendiendo al número de réplicas de la simulación que requieran. Existen
métodos, como el de réplicas/eliminación, que están basados en la realización de
n réplicas independientes de la simulación, cada una de ellas con longitud m. Por el
contrario, otros métodos se basan en la realización de una única réplica larga de la
simulación. Un método que pertenece a este segundo tipo y que es conceptualmente
muy sencillo es el método de las medias por lotes.
Al aplicar cualquiera de estas técnicas, puede escogerse un tamaño de muestra
inicial, construir el intervalo de confianza usando estos datos e ir aumentando de
forma secuencial el tamaño de la muestra hasta obtener un intervalo de confianza
de longitud aceptable. Por ejemplo, en las técnicas basadas en una única réplica de
la simulación, puede irse aumentando la longitud m de la simulación hasta que se
obtenga un intervalo de confianza de longitud admisible.

Método de réplicas/eliminación

Supongamos que, empleando por ejemplo la técnica gráfica de Welch, se ha


obtenido una estimación de la longitud k del transitorio del proceso estocástico.

394
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

Para ello, se han realizado n réplicas independientes de longitud m de la simulación,


donde m es mucho mayor que k.
Eliminando las k primeras observaciones obtenidas de cada réplica de la simu-
lación y calculando la media de las restantes observaciones de cada réplica, pueden
obtenerse las siguientes estimaciones (una por réplica) de la media de la distribución
en el estacionario:

m
1 X
Ȳj (m, k) = · yj,i para j = 1, 2, . . . , n (6.15)
m − k i:k+1

Es decir, se calcula para cada réplica la media de las observaciones correspon-


dientes al estado estacionario:

y1,k+1 y1,k+2 . . . y1,m → Ȳ1 (m, k)


... (6.16)
yn,k+1 yn,k+2 . . . yn,m → Ȳn (m, k)

Asumiendo que los estadı́sticos Ȳ1 (m, k) , . . . , Ȳn (m, k) son independientes y es-
tán idénticamente distribuidos, entonces:

Ȳ1 (m, k) + · · · + Ȳn (m, k)


Ȳ (n) = (6.17)
n
es un estimador aproximadamente no sesgado de µY . Asimismo,

r
S 2 (n)
Ȳ (n) ± tn−1,1− α2 · (6.18)
n

es un intervalo del 100 · (1 − α) % de confianza para µY . S 2 (n) es el estimador de


la varianza de la muestra Ȳ1 (m, k) , . . . , Ȳn (m, k).

Método de las medias por lotes

A diferencia del método de réplicas/eliminación, en el que deben realizarse n


réplicas independientes de la simulación, el método de las medias por lotes se basa
en la realización de una única simulación larga. La ventaja de este método es que
sólo se simula el transitorio una vez, con lo cual el coste computacional para obtener
observaciones “útiles” (observaciones en el estacionario) es menor que si se realizan

395
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

n réplicas de la simulación, en cuyo caso se simula n veces el transitorio. El método


de las medias por lotes consta de los pasos siguientes:

1. Considérese el proceso estocástico Y1 , Y2 , . . . , Ym de covarianza estacionaria.


Éste puede ser, o bien el proceso completo obtenido de la simulación, o bien el
proceso con la parte transitoria eliminada. Se dividen las m observaciones en
n grupos (denominados “lotes”) de igual longitud m n
y se calcula la media de
las observaciones de cada lote:

m m/n
n X
Ȳi = · y(i−1)· mn +j (6.19)
n m j:1

Se obtiene:
m

y1 y2 ... y mn → Ȳ1 n
Lote 1
m
y mn +1 y mn +2 ... y2· mn → Ȳ2 n
Lote 2
.. .. .. .. .. .. .. (6.20)
. . . . . . .
m

y(n−1)· mn +1 y(n−1)· mn +2 . . . ym → Ȳn n
Lote n

m
2. Si n
es suficientemente grande, entonces los estadı́sticos

m m m


Ȳ1 , Ȳ2 , . . . , Ȳn (6.21)
n n n
son aproximadamente independientes y están distribuidos aproximadamente
de forma normal. Ası́ pues, si se representan Ȳ (n) y S 2 (n) los estimadores de la
media y la varianza de los n estadı́sticos anteriores, entonces puede construirse
un intervalo del 100 · (1 − α) % de confianza para µY de la forma siguiente:
r
S 2 (n)
Ȳ (n) ± tn−1,1− α2 · (6.22)
n

6.5. INTERVALOS DE CONFIANZA PARA VARIAS MAGNITUDES

En las anteriores secciones de este tema se ha explicado cómo construir un


intervalo de confianza para una única magnitud. Sin embargo, en la mayorı́a de
las aplicaciones prácticas es necesario conocer simultáneamente el comportamiento
de varias magnitudes del sistema.

396
ANÁLISIS DE LOS RESULTADOS DE LA SIMULACIÓN

Supóngase que en un estudio de simulación, con condición de terminación o en


el estacionario, existen s magnitudes de interés:

µ 1 , . . . , µs (6.23)

y que se desea construir un intervalo de confianza para cada una de ellas. Sea Ii
el intervalo del 100 · (1 − αi ) % de confianza para µi, con i : 1, . . . , s. Entonces,
sean o no Ii independientes, únicamente puede afirmarse que la probabilidad de
que todos los intervalos de confianza contengan simultáneamente sus respectivos
valores verdaderos satisface la siguiente desigualdad, conocida como desigualdad
de Bonferroni:

s
X
Prob {µi ∈ Ii para todo i : 1, . . . , s} ≥ 1 − αi (6.24)
i:1

Esto tiene implicaciones serias en los estudios de simulación, como se ilustra en


el ejemplo siguiente. Supongamos que se construyen intervalos del 90 % de confianza
para 10 medidas diferentes del comportamiento del sistema. Entonces, únicamente
puede afirmarse que la probabilidad de que simultáneamente cada uno de los 10
intervalos contenga el valor verdadero de su magnitud es mayor o igual que 1 − 10 ·
0.10 = 0. En consecuencia, no cabe tener mucha confianza en los resultados de este
estudio.
Cuando el número s de magnitudes de interés es pequeño, una posible solución
para que el nivel de confianza asociado conjuntamente a los s intervalos sea 100 ·
(1 − α) %, consiste en escoger los valores de αi de modo que se satisfaga:

s
X
αi = α (6.25)
i:1

Por ejemplo, se pueden construir 10 intervalos del 99 % de confianza y tener una


confianza global del 90 %. Obsérvese que los valores de αi no tienen forzosamente que
ser iguales. De hecho normalmente se emplean αi menores para aquellas magnitudes
más importantes.

397
MODELADO Y SIMULACIÓN DE EVENTOS DISCRETOS

6.6. COMPARACIÓN ENTRE DOS SISTEMAS

Hasta ahora las explicaciones se han centrado en cómo analizar los resultados
obtenidos de la simulación de un único modelo. Sin embargo, en ocasiones el objetivo
del estudio de simulación no es estimar el comportamiento de un único modelo, sino
comparar el comportamiento de dos o más modelos alternativos. El objetivo de este
tipo de estudios puede ser comparar diferentes diseños, polı́ticas de gestión, etc.
La comparación entre los dos sistemas se hace basándose en el valor esperado
de una determinada magnitud aleatoria en cada uno de ellos. Sean X1 y X2 las