Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290...

329

Transcript of Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290...

Page 1: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 2: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 3: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Simulación empresarialcon aplicacionesde Visual BasicHernando Castro Piñeres

1

Page 4: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Proceso de arbitraje1.er concepto Evaluación: 1 de junio de 2017

2.o conceptoEvaluación: 27 de octubre de 2017

© Universidad Católica de Colombia

© Hernando Castro Piñeres

Primera edición, Bogotá, D. C. Marzo de 2018

Dirección Editorial Stella Valbuena García

Coordinación Editorial María Paula Godoy Casasbuenas

Corrección de estilo John Fredy Guzmán

Diseño de colección Mauricio Salamanca

Diagramación Mauricio Salamanca

Publicación digital Hipertexto Ltda. www.hipertexto.com.co Bogotá, D. C., Colombia

Impresión Xpress Estudio Gráfico y Digital S.A. Bogotá, D. C., Colombia

Facultad de IngenieríaDiagonal 46 N° 15B-10Bogotá, D. C.

EditorialUniversidad Católica de ColombiaAv. Caracas N° 46-72, piso 5Bogotá, D. [email protected]

Hecho el depósito legal© Derechos reservados

Todos los derechos reservados. Esta publicación no puede ser reproducida ni total ni parcialmente o transmitida por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sin el permiso previo del editor.

Castro Piñeres, Hernando Simulación empresarial con aplicaciones de Visual Basic / Hernando Castro PiñeresBogotá: Universidad Católica de Colombia, 2018

326 páginas ; 21.5 x 21.5 cm.—(Colección Facultad de Ingeniería) ISBN: 978-958-5456-06-8 (impreso) ISBN: 978-958-5456-07-5 (digital)

I. Título II. Serie 1. ADMINISTRACIÓN DE EMPRESAS-SIMULACIÓN 2. TOMA DE DECISIONES-SIMULA-CIÓN 3. SIMULACIÓN POR COMPUTADORES

Dewey : 658.40352 SCDD ed. 21

Page 5: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

A mi esposa Elizabeth, a mis hijos y a mis nietos,

por quitarles tiempo familiarpara que este libro se

hiciera realidad.

Page 6: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 7: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Contenido

Prólogo ...................................................................................................................15

Introducción .........................................................................................................17

Capítulo 1. Introducción a la simulación .........................................................21¿Qué se entiende por simulación? ..................................................................................... 21Pasos de un proyecto de simulación ................................................................................. 23Probabilidad e incertidumbre en los modelos de simulación......................................... 26Aplicaciones de Visual Basic (VBA) para realizar una simulación ................................ 28Macro para determinar la media, la varianza y la desviación estándar de una

distribución empírica discreta ................................................................................... 32Cálculo del número de corridas de simulaciones ............................................................. 35Cálculo del número de réplicas .......................................................................................... 36Ejercicios ............................................................................................................................... 40

Capítulo 2. Generación de números aleatorios con aplicaciones de Visual Basic .....................................................................................................43

Generación de números aleatorios mediante función estadística .................................. 44Algoritmo de cuadrados medios ........................................................................................ 46Algoritmo de productos medios ........................................................................................ 50

Page 8: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

6

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Algoritmo multiplicador constante ................................................................................... 53Algoritmo de congruencia lineal ........................................................................................ 56Algoritmo de congruencia multiplicativo ......................................................................... 59Algoritmo de congruencia aditivo ..................................................................................... 62Algoritmo de congruencia cuadrático ............................................................................... 64Comprobación de la uniformidad y aleatoriedad de los generadores de números

pseudoaleatorios .......................................................................................................... 66Ejercicios ............................................................................................................................... 83

Capítulo 3. Generación de variables aleatorias mediante la técnica de Montecarlo ...........................................................................................................85

Simulación de inventario de modelo de pedido único mediante la técnica de Montecarlo ................................................................................................................... 92

Simulación de un sistema inventario de punto de reorden con demanda y tiempo de entrega aleatorios mediante la técnica de Montecarlo.....................100

Ejercicios .............................................................................................................................108

Capítulo 4. Generación de variables aleatorias continuas ............................113Método de la transformada inversa .................................................................................113Método de composición ....................................................................................................137Método de convolución.....................................................................................................153Generación de variables aleatorias mediante la distribución normal ..........................168Generación de variables aleatorias mediante la distribución lognormal ....................172Ejercicios .............................................................................................................................180

Capítulo 5. Generación de variables aleatorias discretas ..............................185Distribución probabilidad de Bernoulli ..........................................................................186Distribución de probabilidad geométrica .......................................................................188Distribución de probabilidad binomial ...........................................................................192

Page 9: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

CONTENIDO

7

Cole

cción

1

Distribución de probabilidad hipergeométrica ..............................................................198Distribución de probabilidad Poisson .............................................................................202Ejercicios .............................................................................................................................210

Capítulo 6. Modelos de simulación de líneas de espera con distribución de probabilidad teórica ........................................................213

Elementos de simulación para los modelos de líneas de espera ..................................213Modelo de líneas de espera con un solo servidor ...........................................................215Modelo de líneas de espera con varios servidores en serie ............................................231Modelo de líneas de espera con varios servidores en paralelo ......................................236Ejercicios .............................................................................................................................243

Capítulo 7. Modelos de simulación de problemas de inventarios con distribución de probabilidad teórica ...............................................................247

Modelo de punto de reorden con demanda aleatoria y tiempo de entrega aleatorio ...................................................................................................248

Modelo de revisión periódica con demanda aleatoria ...................................................261Ejercicios .............................................................................................................................273

Capítulo 8. Validación de resultados y diseño de experimentos de simulación ...........................................................................................................275

Validación del modelo de simulación .............................................................................275Diseño de experimentos de simulación ...........................................................................297Ejercicio ...............................................................................................................................325

Page 10: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 11: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Índice de macros

Capítulo 1. Introducción a la simulación .........................................................21Procedimiento 1.1. Macro para determinar la media, la varianza y la desviación

estándar de una distribución empírica .................................................................... 33 Procedimiento 1.2. Macro para calcular el número de corridas ................................... 36Procedimiento 1.3. Macro para generar variable aleatoria con réplicas ....................... 39

Capítulo 2. Generación de números aleatorios con aplicaciones de Visual Basic .....................................................................................................45

Procedimiento 2.1. Macro para “limpiar” la hoja de cálculo generar números aleatorios .................................................................................................................... 45

Procedimiento 2.2. Macro para cuadricular (todos los bordes) celdas para generar números aleatorios ..................................................................................................... 45

Procedimiento 2.3. Macro para generar números aleatorios mediante la instrucción Rnd ................................................................................................................................ 46

Procedimiento 2.4. Macro para cuadricular (todos los bordes) las celdas para el algoritmo de cuadrados medios ................................................................................. 48

Procedimiento 2.5. Macro para generar números aleatorios por el algoritmo de cuadrados medios ........................................................................................................ 49

Procedimiento 2.6. Macro para generar aleatorios mediante los productos medios ... 52

Page 12: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

10

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 2.7. Macro para generar números aleatorios mediante el algoritmo multiplicador constante .............................................................................................. 55

Procedimiento 2.8. Macro para generar mediante el algoritmo congruencia lineal .... 58Procedimiento 2.9. Macro para generar números aleatorios mediante al algoritmo

congruencial multiplicativo ....................................................................................... 61Procedimiento 2.10. Macro para generar números aleatorios mediante el algoritmo

congruencial aditivo .................................................................................................... 63Procedimiento 2.11. Macro para generar números aleatorios mediante el algoritmo

congruencial cuadrático ............................................................................................. 65Procedimiento 2.12. Macro para realizar pruebas de medias ......................................... 69Procedimiento 2.13. Macro para hacer prueba de varianzas a números aleatorios ..... 71Procedimiento 2.14. Macro para realizar prueba Chi-cuadrado

a números aleatorios ................................................................................................... 74Procedimiento 2.15. Macro para hacer prueba Kolmogorov-Smirnov ......................... 78Procedimiento 2.16. Macro para hacer prueba de rachas ............................................... 81

Capítulo 3. Generación de variables aleatorias mediante la técnica de Montecarlo ...........................................................................................................85

Procedimiento 3.1. Macro para generar la demanda aleatoria mediante técnica de Montecarlo ................................................................................................................... 88

Procedimiento 3.2. Macro que simula un sistema de inventario de pedido único mediante la técnica de Montecarlo con los datos iniciales ..................................... 94

Procedimiento 3.3. Macro que simula un sistema de inventario de pedido único mediante la técnica de Montecarlo para generar la demanda y las demás variables ........................................................................................................................ 98

Procedimiento 3.3. Macro para determinar probabilidades mediante técnica de Montecarlo .................................................................................................................102

Procedimiento 3.4. Macro para la simulación de un sistema de inventario con distribución empírica mediante técnica de Montecarlo .......................................105

Page 13: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

ÍNDICE DE MACROS

11

Cole

cción

1

Capítulo 4. Generación de variables aleatorias continuas ............................113Procedimiento 4.1. Macro para generar una variable aleatoria empírica ...................115Procedimiento 4.2. Macro para generar variables exponenciales sin el valor

mínimo .......................................................................................................................118Procedimiento 4.3. Macro para generar variables exponenciales con el valor

mínimo .......................................................................................................................120Procedimiento 4.4. Macro para generar variables uniformes .......................................124Procedimiento 4.5. Macro para generar variables exponenciales y uniformes ..........126Procedimiento 4.6. Macro para un programa maestro de producción .......................129Procedimiento 4.7. Macro para generar variables Weibull sin el valor mínimo ........134Procedimiento 4.8. Macro para generar variables Weibull con valor mínimo ..........136Procedimiento 4.9. Macro para generar variables triangulares ....................................143Procedimiento 4.10. Macro para generar variables trapezoidales................................149Procedimiento 4.11. Macro para generar variables trapezoidales del ejemplo 4.7 ....151Procedimiento 4.12. Macro para generar variables de tipo Erlang sin el valor

mínimo .......................................................................................................................156Procedimiento 4.13. Macro para generar variables de tipo Erlang con valor

mínimo ......................................................................................................................158Procedimiento 4.14. Macro para generar variables de tipo Gamma sin el valor

mínimo .......................................................................................................................161Procedimiento 4.15. Macro para generar variables de tipo Beta con valor mínimo y

valor máximo .............................................................................................................163Procedimiento 4.16. Macro para realizar un control de calidad ..................................166Procedimiento 4.17. Macro para generar variables con distribución normal ............170Procedimiento 4.18. Macro para desarrollar proceso de dos etapas en serie .............177

Capítulo 5. Generación de variables aleatorias discretas ..............................185Procedimiento 5.1. Macro para generar variables aleatorias de tipo Bernoulli ..........187Procedimiento 5.2. Macro para generar variables aleatorias de tipo geométrica ......190

Page 14: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

12

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 5.3. Macro para generar variables binomiales por el método de convolución ................................................................................................................194

Procedimiento 5.4. Macro para generar variables binomiales por el método de Montecarlo .................................................................................................................196

Procedimiento 5.5. Macro para generar variables de tipo hipergeométrica por el método de convolución ............................................................................................200

Procedimiento 5.6. Macro para generar variables aleatorias de tipo Poisson por el método de convolución ............................................................................................204

Procedimiento 5.7. Macro para desarrollar ejemplo inventario de equipos médicos ...................................................................................................206

Capítulo 6. Modelos de simulación de líneas de espera con distribución de probabilidad teórica ...........................................................................................213

Procedimiento 6.1. Macro de líneas de espera con un solo servidor ...........................216Procedimiento 6.2. Macro para simulación de líneas de espera con formato

horario ........................................................................................................................220Procedimiento 6.3. Macro para la simulación de llegadas de varios tipo de piezas ...225Procedimiento 6.4. Macro para la simulación de varios servidores en serie ..............232Procedimiento 6.5. Macro para la simulación de líneas de espera con

dos servidores en paralelo ........................................................................................238

Capítulo 7. Modelos de simulación de problemas de inventarios con distribución de probabilidad teórica ...............................................................247

Procedimiento 7.1. Macro para simular problema de inventario de modelo de punto de reorden ..................................................................................................................252

Procedimiento 7.2. Macro para simulación de inventario de modelo de punto de reorden con tamaño de lote formulado .................................................................257

Procedimiento 7.3. Macro para simular modelo de inventario con tiempo de revisión periódica anticipado fijo ...........................................................................................263

Page 15: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

ÍNDICE DE MACROS

13

Cole

cción

1

Procedimiento 7.4. Macro para simular modelo de inventario con tiempo de revisión periódica anticipado calculado ................................................................................268

Capítulo 8. Validación de resultados y diseño de experimentos de simulación ...........................................................................................................275

Procedimiento 8.1. Macro para realizar la prueba Chi-cuadrado con aplicación de Montecarlo .................................................................................................................277

Procedimiento 8.2. Macro para realizar la prueba F para un modelo simulado ........281Procedimiento 8.3. Macro para realizar prueba t de Student para un modelo

simulado .....................................................................................................................285Procedimiento 8.4. Macro para realizar prueba U de Mann-Whitney .......................290Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución de

probabilidad teórica ..................................................................................................293Procedimiento 8.6. Macro para realizar diseño de experimento con Anova ..............300Procedimiento 8.7. Macro para simular un modelo de línea de espera con réplicas

para realizar diseño de experimento .......................................................................312Procedimiento 8.8. macro para realizar el análisis bifactorial

del procedimiento 8.7 ...............................................................................................318

Page 16: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 17: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Prólogo

Tengo el agrado de presentar este libro, cuyo autor no solo es un colega, sino también el amigo que comparte la misma vocación para enseñar en las univer-sidades. En esta obra, usted encontrará la información más actualizada sobre

la simulación con aplicaciones de Visual Basic de Excel, además de una guía fácil para aprender un conjunto de técnicas procedimentales y conceptos que se emplean en esta herramienta en un ambiente computacional.

A través de la simulación en un lenguaje de Visual Basic en Excel, se puede obtener un conocimiento profundo de sistemas complejos, al igual que construir y conducir expe-rimentos para entender el comportamiento de algunos sistemas discretos o continuos.

Aunque en los últimos años se han escrito varios libros sobre simulación, en mi opi-nión, este libro presenta una novedad porque se pueden hacer experimentos sencillos a través de los cuales se explican acontecimientos muy complejos que nos permiten a los lectores (aun sin conocimiento específicos del tema) comprender sin mayores difi-cultades el tema elegido.

El ideal del presente libro es compartir experiencias para que, por medio de él, usted logre fácilmente lo que al autor le ha costado tanto: crear sus propios programas y utili-zarlos para obtener así un mayor rendimiento de la hoja de cálculo, al usar los modelos de simulación. Por consiguiente, este libro resultará de utilidad al investigador, al inge-niero industrial, a los otros ingenieros, al administrador de empresas y, especialmente, al docente universitario.

Page 18: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

16

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

El trabajo original de este libro comenzó en la Universidad Católica de Colombia, donde el profesor Hernando Castro Piñeres impartió un curso de simulación en la Facultad de Ingeniería, específicamente en el programa de Ingeniería Industrial; tengo entendido que también ha dictado cursos de simulación en la Universidad Libre de Colombia, en la Facultad de Ingeniería, por varios años.

A fin de que no se tenga la idea de que este libro abarca todo el campo de la simulación, agregaré que constituye en sí mismo una simulación estática en hoja de cálculo con la ayuda del lenguaje Visual Basic en Excel, y de ninguna manera se trata de simulación animada; para eso hay muchos libros en el mercado. Por tanto, como toda simulación en ambiente computacional, en el mejor de los casos, reduce una situación compleja a proporciones sencillas y manipulables, lo cual produce un entendimiento del sistema que se está simulando. Este libro cumple con la expectativa anterior y constituye un gran aporte a las publicaciones sobre la simulación en ambiente computacional.

Agradezco el espacio para compartir con los lectores los sentimientos que me generó este libro y felicitar al autor por su excelente trabajo.

Manuel Barón MolinaM.Sc. e ingeniero industrial

Profesor de tiempo completo de laUniversidad Católica de Colombia

Page 19: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Introducción

Este libro tiene como propósito desarrollar una metodología procedimental para planear, diseñar y llevar a cabo experimentos de simulación por medio de aplica-ciones de Visual Basic, como complemento para que el usuario cree sus propios

aplicativos o soporte de software sobre el tema. En la obra se ha introducido una serie de programas o procedimientos escritos en

lenguaje de Visual Basic de Excel, escogido por ser el más utilizado en este tiempo y por tener una herramienta que ayuda a programar: el grabador de macros. En los programas se incluyen instrucciones para borrar contenidos anteriores, cuadricular (‘todos los bordes’) celdas con sus respectivas cabeceras de columnas, resaltados en colores y las instrucciones del modelado de simulación para que los resultados tengan una buena presentación.

Usuario: este no es un libro para leerlo, es un libro de trabajo. Requiere una partici-pación activa para sacarle todo el rendimiento posible. Se describen problemas prácticos y teóricos que surgen cuando se planean y se implementan experimentos de simulación. Se describen estos problemas porque tienen soluciones al utilizar aplicaciones de Visual Basic que pueden resolverse en forma automática. Así, el usuario puede crearlas, utili-zarlas y obtener así un mayor rendimiento de la hoja de cálculo al utilizar los modelos de simulación.

El público al que va dirigido este libro es de espectro amplio. Lo encontrarán útil profesores, ingenieros y universitarios que desean completar su formación empresarial.

Page 20: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

18

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

A las personas se les hace ver que los modelos de simulación permiten observar el com-portamiento de un fenómeno real, que al poder experimentar con ellos se puede recoger información de cómo respondería ese fenómeno ante hipotéticos cambios producidos en él. Sin embargo, es sabido que para diseñar y llevar a cabo experimentos de simula-ción, se deben tener conocimientos mínimos de la teoría de probabilidad, estadísticas y manejo de Excel.

En este libro se describen las técnicas alternativas para modelar en simulación con el fin de alcanzar un objetivo particular. En el modelado de simulación no puede subesti-marse la importancia de tener métodos alternativos disponibles, ya que a menudo el tipo de situación dicta los métodos que pueden aplicarse. Se han incluido macros de Excel que se escriben siempre en Visual Basic con instrucciones precisas, para que los modelos de simulación y los experimentos hagan más rápida la transición de las ideas teóricas al uso práctico. El usuario debe darse cuenta de que estas macros tienen un propósito descriptivo y que tiene la libertad para alterarlas, ampliarlas o modificarlas de la forma que desee, a fin de alcanzar los mismos objetivos en forma más eficiente.

Por lo que respecta a simulación, que es el contenido de este libro, esta se dividirá en dos grandes categorías: la simulación de Montecarlo y la simulación por eventos discretos a través de hoja de cálculo. La simulación de Montecarlo describirá un sistema probabilístico que no cambia con el tiempo; en cambio, la simulación por eventos dis-cretos es un programa que reproduce el comportamiento de un sistema real siguiendo el patrón de eventos e interacciones. En el primer capítulo, tras describir lo que se entiende por simulación y dejar en claro tanto las ventajas como los inconvenientes de su uso, se repasa algo de estadística, aplicando macros para determinar los parámetros más relevantes.

El segundo capítulo analiza cómo los números aleatorios y pseudoaleatorios permi-ten introducir en los modelos de simulación la incertidumbre que ellos conllevan y su generación mediante diferentes métodos, mediante la utilización de macros de Excel. Seguidamente, se aplican técnicas para hacer pruebas estadísticas de aleatoriedad e independencia.

Page 21: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN

19

Cole

cción

1

El tercer capítulo aborda la generación de variables aleatorias por la técnica de Mon-tecarlo, al tiempo que propone una reflexión acerca de la importancia de esta técnica para hacer simulaciones en la empresa. El cuarto capítulo está dedicado a la generación de variables aleatorias continuas, en tanto el quinto está dedicado a generar variables aleatorias discretas a través de diferentes métodos. En estos capítulos se emplean ejerci-cios que sirven de base para hacer simulaciones en macro de Excel que están estrecha-mente relacionadas con la empresa.

El sexto capítulo brinda los elementos para hacer simulaciones de líneas de espera que se complementan por medio de macros. En cambio, el séptimo capítulo aborda los modelos de inventarios, que también se complementan por medio de macros; en ambos capítulos, el usuario pueda analizar las afirmaciones que se hacen en el texto a través de los procedimientos o programas que se presentan y utilizarlas como referencia para la elaboración de los programas que se necesiten en el diseño de sus propios modelos de simulación.

El octavo capítulo ofrece las herramientas para realizar las validaciones de los resul-tados y diseñar experimentos por medio de macros de Excel, desde un punto vista prác-tico, y expone al usuario las bases necesarias para consultar sobre los temas de diseño de experimentos y aplicarlos al planear experimento de simulación.

Finalmente, para concluir esta introducción, deseo agradecer profundamente al director del programa de Ingeniería Industrial de la Universidad Católica de Colombia, Javier Arturo Moreno Carvajal, y a Isaac Huertas, por darme apoyo y la valiosa guía para desarrollar este proyecto de libro.

Hernando Castro Piñeres

Page 22: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución
Page 23: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Introducción a la simulación

¿Qué se entiende por simulación?

Simulación es el proceso de reproducir aproximadamente un sistema real a través de un modelo computarizado y llevar a cabo experiencias con él, con la finalidad de aprender el comportamiento del sistema o de evaluar diversas estrategias para su funcionamiento.

El objeto de una simulación es generar variables aleatorias cuya interpretación redunda en una mejor comprensión del sistema que se está simulando. Las variables aleatorias son elementos que conforman un modelo de simulación, por lo cual representa una forma simplificada de un sistema real. Por otra parte, un sistema debe entenderse como una representación de un conjunto de objetos o ideas que están interrelacionados como una unidad para la consecución de un fin.

El modelado de la simulación es, por tanto, una metodología aplicada y experimental que intenta:

• Describir el comportamiento de sistemas.• Postular teorías o hipótesis que expliquen el comportamiento observado.• Usar estas teorías para predecir un comportamiento futuro, es decir, los

efectos que se producirán mediante cambios en el sistema o en su método de operación.

1

Page 24: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

22

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Aplicaciones de la simulación

Para comenzar, se puede analizar una serie de situaciones en las cuales es apropiado el uso de la simulación. Estas situaciones fueron puestas de manifiesto por Shannon (1975). La simulación es conveniente cuando:

• No existe una formulación matemática analíticamente resoluble. Muchos sis-temas reales no pueden ser modelados matemáticamente con las herramientas actualmente disponibles; por ejemplo, la conducta de un cliente de un banco.

• Existe una formulación matemática, pero es difícil obtener una solución analítica. Los modelos matemáticos utilizados para modelar un reactor nuclear o una planta química son imposibles de resolver en forma analítica sin realizar serias simplificaciones.

• No existe el sistema real. Es problema del ingeniero, que tiene que diseñar un sistema nuevo; el diseño del sistema mejorará notablemente si se cuenta con un modelo adecuado para realizar experimentos.

• Los experimentos son imposibles debido a impedimentos económicos, de seguridad, de calidad o éticos. En este caso, el sistema real está disponible para realizar experimentos, pero la dificultad de estos hace que se descarte esta opción. Un ejemplo de esto es la imposibilidad de provocar fallas en un avión real para evaluar la conducta del piloto; tampoco se puede variar el valor de un impuesto para evaluar la reacción del mercado.

• El sistema evoluciona muy lentamente o muy rápidamente. Un ejemplo de dinámica lenta es el problema de los científicos que estudian la evolución del clima. Ellos deben predecir la conducta futura del clima, pero, dadas las condiciones actuales, no pueden esperar a que un tornado arrase una ciudad para luego dar el mensaje de alerta. Por el contrario, existen fenómenos muy rápidos que deben ser simulados para poder observarse en detalle, por ejemplo, una explosión.

Page 25: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

23

Cole

cción

1

En la simulación de un ambiente computacional, existen básicamente dos pro-cedimientos para obtener representaciones de un sistema real: el análisis numérico y el análisis experimental. En el análisis numérico, se realiza inicialmente un estudio cualitativo de los fenómenos de cualquier tipo que caracterizan el comportamiento dinámico y estático del sistema, para plasmarse posteriormente, con ayuda de las leyes fundamentales de la ciencia, en relaciones matemáticas concretas. Una vez introducidas las simplificaciones consideradas en principio como pertinentes, se determina el grupo de ecuaciones descriptivas del proceso (sistema). Ahora bien, a veces las herramientas matemáticas no son suficientemente potentes para ofrecer soluciones analíticas genera-les a sistemas tan complicados como los que se presentan en el mundo que nos rodea. La alternativa consiste en utilizar un acercamiento al análisis experimental, que puede resumirse en construir un modelo de simulación animada o estática a partir de medidas realizadas directamente sobre el sistema. Este modelo es una descripción detallada que muestra el comportamiento de una realidad; por ende, se llevan a cabo experiencias para poder contestar a preguntas específicas acerca del sistema representado en el modelo.

Pasos de un proyecto de simulación

El proceso para creación y desarrollo de un modelo de simulación se pude resumir en los siguientes pasos:

a. Formulación del problema. En este paso se debe comenzar con una descripción del problema o del sistema. Debe existir una correcta identificación del objetivo, las variables de decisión, las restricciones, la medida de efectividad y las variables no controlables y su comportamiento estadístico. En este paso debe quedar perfectamente establecido el objeto de la simulación:• Los resultados que se esperan del simulador.• El plan de experimentación.

Page 26: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

24

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

• El tiempo disponible.• Las variables de interés.• El tipo de perturbaciones por estudiar.• El tratamiento estadístico de los resultados.• La complejidad de la interfaz del simulador.

b. Recolección de datos. Se deben describir las interacciones entre las variables de decisión, de tal suerte que interactúen dentro del sistema; lo mismo con las restricciones del sistema y las medidas de efectividad que se van utilizar para definir y estudiar el sistema y los resultados que se espera obtener. La naturaleza y cantidad de datos necesarios están determinadas por la formulación del pro-blema y del modelo. Los datos pueden ser provistos por:• Registros históricos.• Experimentos de laboratorios.• Mediciones realizadas en el sistema real.

Estos datos deberán ser procesados adecuadamente para darles la forma exigida por el modelo.

c. Construcción del modelo. En este paso se genera un modelo de simulación de base con el cual se obtendrán los resultados deseados mediante las interacciones entre las variables que forman parte del sistema y sus relaciones lógico-matemáticas que describan en forma completa al modelo.

Selección del programa computarizado: con el modelo definido, el siguiente paso es cómo implementar el modelo en un ambiente computacional para procesarlo.

Verificación:• Consiste en analizar el modelo con entidades familiarizadas con la opera-

ción del sistema.• Es el proceso de demostración de que el modelo trabaja como se intentó.

Page 27: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

25

Cole

cción

1

• Lenguaje por utilizar o qué paquete, para procesarlo en la computadora y obtener los resultados deseados.

Esta es una etapa de traducción del modelo a un lenguaje de programación, por ejemplo, macro de Excel.

d. Realización de corridas piloto. Obtener el tamaño de la muestra de simulación que depende generalmente del tipo de distribución que se intenta simular. Este paso se divide en:• Codificación del modelo: consiste en generar las instrucciones o código

computacional necesario para lograr que el modelo pueda ser ejecutado en un ambiente computacional.

• Validación del modelo: a través de este paso es posible detallar deficiencias en la formulación del modelo o en los datos alimentados a este. La validación se lleva a cabo mediante la comparación estadística entre los resultados del modelo y los resultados reales.

e. Diseño de experimentos. La experimentación determina las diversas alternativas que deben ser evaluadas, seleccionando las variables de entrada y sus diferentes niveles, con la finalidad de optimizar las variables de respuestas del sistema real. En este paso se utilizan las técnicas de diseño de experimento y superficies de respuestas para realizar análisis de sensibilidad de los índices requeridos.

f. Análisis de datos de salida. Una vez seleccionada la mejor alternativa, es impor-tante generar el modelo final para llevarlo a la práctica, listo para realizar la simulación y estudiar el comportamiento del proceso.

Page 28: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

26

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Probabilidad e incertidumbre en los modelos de simulación

Un concepto fundamental asociado a la incertidumbre es el de experimento aleatorio, entendido como cualquier situación en la cual se pueden enumerar de antemano los resultados posibles sin que se conozca cuál de ellos se va presentar, aunque sí sus probabi-lidades, y este se pueda realizar en las mismas condiciones un número indefinido de veces.

Se supondrá al lector familiarizado con el concepto de probabilidad y se desarrolla-rán brevemente los conceptos de variable aleatoria, función de distribución y función de densidad.

Sea X una variable aleatoria, se denomina función de distribución acumulada aso-ciada a esa variable aleatoria, F(x):

F(x) = P (X≤ x)

Se comprueba que:

a)

b) F(x) es una función no decreciente de x.

c) F(x) es continua por la derecha.

Sea f (x) la función de densidad de probabilidad (fdp) de una variable aleatoria, y:

a) f(x) ≥ 0

b)

Además de la relación , se sigue que .

Page 29: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

27

Cole

cción

1

Por lo que gráficamente la función de distribución en un punto, x0, representa el área delimitada por la función de densidad y la recta y = x0.

Gráficamente se tiene:

Figura 1.1. Función de densidad de probabilidad

Además:

Luego, P (a < X ≤ b) representa el área bajo la función de densidad entre los puntos es x = a y x = b.

Page 30: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

28

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 1.2. Función de densidad entre dos puntos

La media de una distribución de probabilidad se define como:

para distribuciones discretas.

para distribuciones continuas.

La varianza de una distribución de probabilidad se define como:

para distribuciones discretas.

para distribuciones continuas.

Aplicaciones de Visual Basic (VBA) para realizar una simulación

Es claro que una forma de abordar el problema de la programación de experimentos de simulación consiste en escribir un programa especial para simular cada sistema que

Page 31: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

29

Cole

cción

1

se desea estudiar. Para ello, se utiliza una de las bien conocidas aplicaciones de Visual Basic, que consiste en un lenguaje de macro de Microsoft de Visual Basic con aplicacio-nes bajo Windows.

Se puede decir con seguridad que esta alternativa ofrece máxima flexibilidad para el programador de simulación: a) en el diseño y la formulación de modelos matemáticos para el sistema bajo estudio; b) en la utilización del grabador de macros que facilita la programación; c) en el tipo de formato de los reportes de salida que se generan, y d) en la clase de experimentos de simulación que se realizan con el modelo.

No obstante, la dificultad que se experimenta al escribir programa de simulación utilizando un lenguaje de macros de Microsoft de Visual Basic constituye la principal deficiencia de este enfoque. A continuación, se brindan unas definiciones básicas para tenerse en cuenta al momento de programar experimentos de simulación a través de un lenguaje macro de Visual Basic.

¿Qué es una macro de MS-Excel?

Una macro son un conjunto de instrucciones que sirven para automatizar la hoja de cálculo de Ms-Excel. El uso de macros permite la automatización de tareas repetitivas, como, por ejemplo, la programación de experimentos de simulación.

¿Qué es un procedimiento en VBA?

Es un conjunto de instrucciones o sentencias que ejecutan una tarea específica. Tiene un nombre o identificador y puede recibir o no parámetros. Se puede llamar a un procedi-miento desde distintos lugares del código. Luego de su ejecución, el control del flujo del programa regresa al punto que llamó al procedimiento.

Page 32: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

30

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

¿Cómo se crea una macro?

Para crear una macro se tienen los siguientes pasos:a. Ir al menú Archivo de Ms-Excel y hacer clic para que se despliegue la ventana

de Excel.b. Escoger Opciones.c. Del cuadro anterior, escoger Personalizar cinta de opciones.d. Estando en este cuadro, asignar la casilla de verificación denominado Desarro-

llador y luego hacer clic en Aceptar, que se encuentra en la parte de abajo del cuadro.

e. Inmediatamente, se pone el desarrollador en el menú principal de Ms-Excel. f. Ir al menú principal del Ms-Excel y hacer clic en Desarrollador; se abrirá la

ventana que contiene una pestaña para grabar macro.g. Hacer clic en grabar macro; se abrirá un cuadro de diálogo, donde se le dará un

nombre a la macro por crear, que servirá para llamarla posteriormente.h. Saber que se está grabando una macro cuando aparece un botón llamado detener

grabación y en la barra de estado aparece un mensaje que dice: grabando.i. Después de realizar el proceso, detener la grabación, dando clic en el botón de

la barra de estado detener grabación. Como esta macro se guardó en este libro, solamente se podrá ejecutar en cualquier hoja de este libro.

Insertar un nuevo módulo

Un módulo sirve para agrupar procedimientos y funciones. El procedimiento y la fun-ción son entidades de programación que sirven para agrupar instrucciones de código que realizan una acción concreta. Para insertar un módulo, haga clic en Desarrollador, luego Visual Basic y active opción del menú Insertar/ Módulo. Se activará una nueva ventana; si aparece demasiado pequeña, maximícela.

Page 33: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

31

Cole

cción

1

Ya se ha dicho que un procedimiento es un bloque de instrucciones de código que sirven para llevar a cabo alguna tarea específica. Un procedimiento empieza siempre con la instrucción:

Sub Nombre_Procedimiento ()

Conjunto de instruccionesY termina con la instrucción

End Sub

El editor de Visual Basic es la aplicación que se va a utilizar para construir programas de experimentos de simulación en las macros que interactuarán junto con los libros de trabajo.

Creación de un “botón” de comando, que al hacer clic sobre él llame un procedi-miento o macro.

Para llamar una macro o un procedimiento, se puede hacer a través de uno de los dos tipos de “botones” de comando a saber:

• Un botón de comando de los controles de formulario. • Un botón de comando de los controles ActiveX.

Para crear un botón de comando, se hace lo siguiente:a. Hacer clic en desarrollador y se obtendrá una página para insertar botones.b. Insertar un botón de comando de los controles de formulario o de los controles

de ActiveX.

¿Qué es una variable en una aplicación de Visual Basic?

Una variable es un espacio de memoria reservado para el almacenamiento de valores que pueden cambiar durante la ejecución de un programa. Requiere de un identificador o nombre y un tipo de datos.

Page 34: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

32

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo: Dim v as Integer, Dim x as Double, Dim p as String,Public v1 as Integer, Public v2 as Double.

Ejemplo 1.1

Supóngase que la demanda mensual de un producto es aleatoria, con la siguiente distri-bución de probabilidad empírica.

Tabla 1.1. Demanda mensualDemanda mensual (unidades) Probabilidad de ocurrencia

85 0,05110 0,10130 0,15145 0,20150 0,12165 0,15175 0,13190 0,05200 0,05

Se desea determinar la media, la varianza y la desviación estándar.

Macro para determinar la media, la varianza y la desviación estándar de una distribución empírica discreta

La siguiente macro (código de Visual Basic en Excel) permite determinar la media, la varianza y la desviación estándar de una variable aleatoria. Se crea una macro de nombre Simular que haga lo siguiente:

Page 35: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

33

Cole

cción

1

• Indicar cuántos datos o eventos por introducir.• Indicar cuál es el valor de la variable para cada evento.• Indicar cuál es la probabilidad de cada evento.• Controlar los valores de las probabilidades que no sean menores que 0 o mayores

o iguales que 1.• Las celdas para situar los datos.• Escribir los datos en negrita, tamaño 12, nombre de la fuente en “Arial” y centrados.• Cuadricular (“Todos los bordes”) los datos.• Resaltar las celdas cabeceras en colores (amarillos).• Utilizar las funciones estadísticas en forma de código en Visual Basic.

Procedimiento 1.1. Macro para determinar la media, la varianza y

la desviación estándar de una distribución empírica

Sub Simular()‘Declaración de variablesDim miu, sigma, V As Double, P(1 To 1000) As DoubleDim x(1 To 1000) As Long, n As IntegerLimpiarborrarActiveWindow.DisplayGridlines = FalseRange(“A1:E200”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .ReadingOrder = xlContextEnd WithRange(“B2”).Select: ActiveCell.FormulaR1C1 = “Variable Aleatoria”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range(“B2:C2”).SelectSelection.Interior.ColorIndex = 6inicio:n = InputBox(“Introduzca el número de datos o eventos a introducir:” _

Page 36: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

34

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

& “ (No debe ser mayor que 1000)”)If n > 1000 ThenGoTo inicioEnd If‘cuadricularRange(“B2:C” & (n + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium End WithRange(“B3:C” & (n + 6)).Select: Selection.Interior.ColorIndex = 20 Sum = 0 For i = 1 To n x(i) = InputBox(“Cuál es la variable aleatoria X “ & i) Cells(i + 2, 2).Value = x(i)comenzar:P(i) = InputBox(“Cuál es la probabilidad de la varaible aleatoria X “ & i)If P(i) < 0 Or P(i) > 1 ThenMsgBox “La probabilidad es incorrecta”, vbOKOnly, “! ERROR! “GoTo comenzarEnd IfCells(i + 2, 3).Value = P(i)Sum = Sum + P(i)Next iIf Sum > 1 ThenRange(“B3:C” & (n + 3)).ClearContentsGoTo comenzarEnd If‘cálculo de la mediaRange(“B” & (n + 4)).Select: ActiveCell.FormulaR1C1 = “La media es”miu = Application.SumProduct(Range(“B3:B” & (n + 2)), Range(“C3:C” & (n + 2)))Cells(n + 4, 3).Value = miuRange(“B” & (n + 5)).Select: ActiveCell.FormulaR1C1 = “La Varianza es”For i = 1 To nV = V + ((x(i) - miu) ^ 2) * P(i)Next iCells(n + 5, 3).Value = Round(V, 2)

Page 37: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

35

Cole

cción

1

Range(“B” & (n + 6)).Select: ActiveCell.FormulaR1C1 = “La desviación estándar es”sigma = Sqr(V): Cells(n + 6, 3).Value = Round(sigma, 2)Range(“A1”).SelectEnd SubSub Limpiarborrar()Range(“M7”).Select Selection.Copy Range(“A1:J1000”).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range(“A1”).SelectEnd Sub

Nota: el procedimiento Limpiarborrar se realizó mediante la ayuda del grabador de macros del Excel.

Cálculo del número de corridas de simulaciones

A continuación, se va a indicar una fórmula para determinar el tamaño de una corrida de simulación que depende generalmente del tipo de distribución que se intenta simu-lar; se va a demostrar también la bondad del generador de números aleatorios (R), cuya distribución uniforme se encuentra comprendida entre 0 y 1.

Nomenclatura:n = número de simulaciones o corridas.Z = estadístico normal estándar para cierto valor de alfa.k = desviación absoluta máxima permitida sobre la media de la distribución a simular.σ2 = varianza de la distribución a simular.

Page 38: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

36

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo 1.2

Se requiere determinar el número de corridas que debe realizar un programador de experimentos de simulación para generar una variable aleatoria, de manera tal que la media de la variable no difiera del ± 0,188σ de su valor real, con una confiabilidad del 95%. Para realizar el procedimiento se tiene:

Se declara n como una variable entera y se captura el rango de la variable.La variable Z se obtiene de acuerdo con una función estadística NormSInv (prob).El cálculo de n se procede mediante la fórmula anterior.

Procedimiento 1.2. Macro para calcular el número de corridas

Sub NumeroDeCorrida()Dim n As Integer, sigma As Double, k As DoubleDim Z As Double, confiabilidad As Double, alfa As Doublek = InputBox ("Digite el rango del valor de la variable:")confiabilidad = InputBox ("Digite la confiabilidad en valores decimales:")alfa = (1 - confiabilidad) / 2Z = Application.NormSInv(alfa)n = (Z ^ 2) / (k ^ 2)MsgBox nEnd Sub

La siguiente fórmula sirve para un tamaño de la muestra de 30 o menos datos, la cual modifica la fórmula anterior:

n = número de simulaciones o corridas.t = estadístico de distribución t de student.k = desviación absoluta máxima permitida sobre la media de la distribución a simular.S² = estimador de la varianza de la distribución a simular.

Page 39: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

37

Cole

cción

1

Cálculo del número de réplicas

Cuando se quiere correr un sistema de simulación con corrida muy grande, se debe recurrir a las réplicas para llegar a la estabilización. Para obtener resultados inde-pendientes, hay que repetir varias veces la simulación o corridas de n con diferentes números aleatorios.

Teniendo los resultados de cada una de las réplicas, es necesario tomar estos resulta-dos para calcular los estimadores de media, varianza e intervalo de confianza de acuerdo con el siguiente procedimiento:

• Calcular la media y varianza de las observaciones para cada réplica individual con las fórmulas:

• Con la media y varianza de cada una de las réplicas, encuentre la media y varianza entre las réplicas con las siguientes fórmulas:

rj = réplica tipo j. p = número de réplicas.

Page 40: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

38

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

• Debido a la naturaleza probabilística de los resultados, es indispensable que para cada variable de respuesta se calcule el intervalo de confianza de acuerdo con:

Ejemplo 1.3

Se requiere generar una variable aleatoria cuyo valor oscila entre 6 y 8 unidades. La macro que se mostrará a continuación genera una variable aleatoria con los siguientes aspectos:

a. Se determina el número de corridas (por ejemplo, 20).b. Se determina el número de réplicas (por ejemplo, 10).c. Se posicionan los valores en celdas determinadas por el programador.d. Captura de datos como el número de corridas, número de réplicas, límite infe-

rior (a), límite superior (b) de la variable y R como número aleatorio.e. Se presentan dos macros, una llama a la otra.f. Se genera el valor de la variable mediante:

X = a + (b-a) R

g. Se determinan los promedios, las varianzas y las desviaciones de las corridas y de las réplicas.

Page 41: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

39

Cole

cción

1

Procedimiento 1.3. Macro para generar variable aleatoria con réplicas

Sub Generarvariables03()Dim x As Double, a As Double, b As Double, n As IntegerDim k As Integer, prom(2000), V2(2000), V3 As Double Limpiarborrar ActiveWindow.DisplayGridlines = False Range(“A1:H200”).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter . WrapText = True End With n = InputBox (“Digite el número de corridas:”): Cells (1, 1). Value = n k = InputBox (“Digite el número de réplicas:”) a = InputBox (“Introduzca el valor del límite inferior (a):”) b = InputBox (“Introduzca el valor del límite superior (b):”) Range(“B8:C8,F8:G8”).Select Selection.Interior.ColorIndex = 24 Range(“B9:C” & (n + 8)).Select Selection.Interior.ColorIndex = 19 Range(“F9:G” & (k + 8)).Select Selection.Interior.ColorIndex = 19 Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida” Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria” Range (“F8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.” Range(“G8”). Select: ActiveCell.FormulaR1C1 = “Promedio de variable” Range(“H8”). Select: ActiveCell.FormulaR1C1 = “Varianza de los Promedio de la Variable” Range(Cells(n + 9, 2), Cells(n + 12, 3)).Select Selection.Interior.ColorIndex = 20 Range(Cells(k + 9, 6), Cells(k + 11, 7)).Select Selection.Interior.ColorIndex = 20 Range(“B” & (n + 9)).Select: ActiveCell.FormulaR1C1 = “La media” Range(“B” & (n + 10)).Select: ActiveCell.FormulaR1C1 = “La Varianza” Range(“B” & (n + 11)).Select: ActiveCell.FormulaR1C1 = “Limite inferior” Range(“B” & (n + 12)).Select: ActiveCell.FormulaR1C1 = “Limite superior” Range(“F” & (k + 9)).Select: ActiveCell.FormulaR1C1 = “Promedio” Range(“F” & (k + 10)).Select: ActiveCell.FormulaR1C1 = “Varianza” Range(“F” & (k + 11)).Select: ActiveCell.FormulaR1C1 = “Desviación Estandar”

Page 42: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

40

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

For i = 1 To kVar = “RÉPLICA NÚMERO “+ Str(i)MsgBox Var, vbOKOnly, “RÉPLICAS” For j = 1 To n Cells(j + 8, 2) = j R = Rnd: x = a + (b - a) * R Cells(j + 8, 3).Value = Round(x, 2) Next j Cells(i + 8, 6) = i Cells(n + 9, 3).Value = (a + b) / 2 Cells(n + 10, 3).Value = ((b - a) ^ 2) / 12 Cells(n + 11, 3).Value = a Cells(n + 12, 3).Value = b prom(i) = Application.WorksheetFunction.Average(Range(“C9:C” & (n + 8))) Cells(i + 8, 7) = prom(i) V2(i) = Application.WorksheetFunction.Var_S(Range(“C9:C” & (n + 8))) Cells(i + 8, 8).Value = V2(i) V3 = V3 + (i - 1) * V2(i)Next iCells(k + 9, 7).Value = Application.WorksheetFunction.Average(Range(“G9:G” & (k + 8)))Cells(k + 10, 7).Value = V3 / (k * (n - 1))Cells(k + 11, 7).Value = Sqr(V3 / (k * (n - 1)))Cells(1, 1).SelectEnd Sub

Sub Limpiarborrar()Range("M7").Select Selection.Copy Cells.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range("A1").SelectEnd Sub

Page 43: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

INTRODUCCIÓN A LA S IMULACIÓN

41

Cole

cción

1

Ejercicios

1. Determinar el valor esperado, la varianza y la desviación estándar de la variable aleatoria que tiene la siguiente distribución de probabilidad.

X 100 200 300 400 500 600P(X) 0,30 0,25 0,20 0,15 0,05 0,05

2. El tiempo empleado por el médico en examinar a un paciente es una variable alea-toria con función de densidad:

Si t ≥ 0

Determine el tiempo promedio, la varianza y la desviación estándar.

3. El tiempo de proceso de torneado de una pieza sigue la función de probabilidad:

Si 5 ≤ x ≤ 10

Calcule la media, la varianza y la desviación estándar.

4. El tiempo de operación se comporta como una variable aleatoria con la siguiente distribución de probabilidad:

Page 44: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

42

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Calcule la media, la varianza y la desviación estándar.

5. Determinar la media, la varianza y la desviación estándar de la variable aleatoria que tiene la siguiente distribución de probabilidad:

Page 45: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

2Generación de números aleatorios

con aplicaciones de Visual Basic

Un número es aleatorio si, en principio, no es posible conocer de antemano cuál será su valor. Un número aleatorio es aquel que está comprendido en un rango [0,1]. Los números aleatorios que vayan a describir un proceso dado deben

tener como distribución de probabilidad la misma distribución que rige el proceso en estudio.

Sin embargo, existen procedimientos mucho más prácticos que nos permiten efectuar simulaciones del tipo descrito. Pero antes debemos estudiar la generación de números aleatorios distribuidos uniformemente.

Se entiende por distribución uniforme aquella en la cual la probabilidad de que una variable x caiga en cualquier intervalo dentro de un determinado rango de valores es proporcional al valor de dicho rango. En términos discretos, la probabilidad de que un evento dado ocurra es la misma para cualquier evento.

Existen muchos métodos para generar los números aleatorios entre 0 y 1, a saber:• Generador de números aleatorios mediante función estadística Rnd.• Algoritmo de cuadrados medios.• Algoritmo de productos medios.• Algoritmo multiplicador constante.• Algoritmo de congruencia lineal.• Algoritmo de congruencia multiplicativo.• Algoritmo de congruencia aditivo.• Algoritmo de congruencia cuadrático.

Page 46: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

44

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de números aleatorios mediante función estadística

La función estadística Rnd en un código Visual Basic es una forma muy eficaz para generar números aleatorios, que se realiza acompañada con las siguientes instrucciones:

For i = 1 To n R = Rnd Cells(i + 4 , 2).value = R Next

Pasos:1. Seleccionar una hoja de Excel.2. Seleccionar una columna para números de corridas.3. Seleccionar una columna para números aleatorios.4. Insertar tres botones de comando de control de formulario o de control de

ActiveX.5. Hacer doble clic en cada botón para ir al editor Visual Basic respectivo.6. Escribir código en Visual Basic para cada botón.

Se crean tres macros, a saber:a. Una macro que borre y limpie datos anteriores.b. Una macro que cuadricule (todos los bordes) las celdas que se necesitarán y haga

lo siguiente:• En la celda A4, escribir “Número de corridas”.• En la celda B4, escribir “Número aleatorios”.• Digitar el número de corridas.• Escribir los datos en negrita y centrados.• Las celdas para situar los datos.

c. Una macro que genere números aleatorios.

Page 47: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

45

Cole

cción

1

Procedimiento 2.1. Macro para “limpiar” la hoja de cálculo y generar números aleatorios1

Sub Limpiar()Range("R1").SelectSelection.Copy Cells.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range("A1").SelectEnd Sub

Procedimiento 2.2. Macro para cuadricular (todos los bordes) celdas y generar números aleatorios

Private Sub CommandButton1_Click()Dim N As IntegerActiveWindow.DisplayGridlines = FalseRange("A1:C200").SelectWith Selection .Font.Bold = True .Font.Name = "Arial" .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange("A4").Select: ActiveCell.FormulaR1C1 = "Número de corridas"Range("B4").Select: ActiveCell.FormulaR1C1 = "Números Aleatorios"Range("A4:B4").SelectSelection.Interior. ColorIndex = 46N = InputBox ("Introduzca el número de aleatorios que desea:")Cells(1, 1).Value = NRange(Cells(4, 1), Cells(N + 4, 2)).Select With Selection

1 Este procedimiento se hizo con la ayuda del grabador de macros

Page 48: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

46

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End With Range(“A1”).SelectEnd Sub

Procedimiento 2.3. Macro para generar números aleatorios mediante la instrucción Rnd

Private Sub CommandButton2_Click()Dim N As IntegerN = Cells(1, 1).ValueFor i = 1 To NCells(i + 4, 1).Value = iR = RndCells(i + 4, 2).Value = RNext iEnd Sub

Algoritmo de cuadrados medios

Este método de generación de números aleatorios, fundamentado en unos resultados de Von Neuman y denominado método de los cuadrados medios, consiste en tomar un número al azar (semilla de aleatorización) x0, de 2n cifras, elevarlo al cuadrado, después de tomar de este resultado las 2n cifras centrales y repetir la operación de acuerdo con el número de corridas. Este algoritmo se realiza de la siguiente manera:

X0 = semilla de aleatorización. N = número de corridas.k = número de caracteres que se desea extraer.R = número aleatorio.

Page 49: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

47

Cole

cción

1

Ejemplo 2.1

Generar 10 números aleatorios escogiendo como semilla el número 4122 y extraer 2 caracteres.

Macro para generar pseudoaleatorio mediante los cuadrados medios

Como el método anterior, se crearán tres macros: una que limpie, otra que cuadricule celdas y luego una macro que genere números aleatorios por el metodo de cuadrados medios.

Como macro para “limpiar” la hoja de cálculo, se utilizará el procedimiento 2.1 de Visual Basic, que borre y limpie datos anteriores.

Page 50: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

48

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Macro para hacer cuadrícula (todos los bordes) y generar números aleatorios por el algoritmo de cuadrados medios

A veces en Excel hay que “maquillar” algunos cuadros para lograr una mejor presen-tación. A continuación, se presentará una macro para hacer cuadrícula a través de un procedimiento en Visual Basic.

Procedimiento 2.4. Macro para cuadricular (todos los bordes)

las celdas para el algoritmo de cuadrados medios

Private Sub CommandButton1_Click()Dim N As IntegerActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = "Arial" .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange("F3").Select: ActiveCell.FormulaR1C1 = "Número de corridas"Range("G3").Select: ActiveCell.FormulaR1C1 = "Números Aleatorios"Range("F3:G3").SelectSelection.Interior. ColorIndex = 46N = InputBox ("Introduzca el número de aleatorios que desea:")Cells(1, 1).Value = NRange(Cells(3, 6), Cells(N + 3, 7)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End With Range("A1").SelectEnd Sub

Page 51: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

49

Cole

cción

1

Una vez finalizadas las dos macros anteriores, se insertarán dos botones de comando en la hoja de Excel con su respectivo macro.

Macro para generar números aleatorios por el métodos de cuadrados medios

Para realizar esta macro, se hacen los siguientes pasos:a. Realizar el procedimiento 2.4.b. Captura del número como semilla de aleatorizacion.c. Condicionar el número de dígitos de la semilla.d. Captura del número de caracteres por extraer, por medio de la función Mid.e. Capturar el número de corridas preguntado en la macro anterior.f. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.g. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-

torios por el método de cuadrados medios.

Procedimiento 2.5. Macro para generar números aleatorios por el algoritmo de cuadrados medios

Dim X, Y As Long, n As Integer, k, L As Integer, M As VariantLIMPIARActiveWindow.DisplayGridlines = FalseInicio:X = InputBox ("Introduzca la semilla de aleatorización minimo de tres dígitos:")Cells (2, 2). Value = XIf (X <= 100) ThenMsgBox "La semilla debe ser minimo de tres dígitos", vbOKOnly, "¡¡ERROR!!"GoTo InicioEnd Ifk = InputBox ("Introduzca el número de dígitos de posición Inicial que se desea extraer (mayor o igual que 2:")Cells (3, 1). Value = kL = InputBox ("Introduzca el número de dígitos de centro que se debe devolver:")

Page 52: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

50

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells (3, 2). Value = LFor i = 1 To nCells (3 + i, 6). Value = iY = X ^ 2M = Mid (Y, k, L)Cells (3 + i, 7). Value = M / ((10) ^ (L))X = MNextEnd Sub

Sub LIMPIAR ()Range(“R1”). SelectSelection.Copy Cells.Select Selection.PasteSpecial Paste: =xlPasteFormats, Operation: =xlNone, _ SkipBlanks: =False, Transpose: =False Application.CutCopyMode = False Selection.ClearContents Range(“A1”). SelectEnd Sub

Algoritmo de productos medios

Este método requiere de dos semillas, las cuales se multiplican, y del producto se extrae un número determinado de dígitos centrales; estos formarán otro producto con la otra semilla y el número pseudoaleatorio se construirá con la división 10 elevado al número de dígitos. Este algoritmo se realiza de la siguiente manera:

X0 = primera semilla de aleatorización. Y0 = segunda semilla de aleatorización. N = número de corridas. k = números de caracteres que se desean extraer. R = número aleatorio.

Page 53: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

51

Cole

cción

1

Veamos el siguiente ejemplo: generar 10 números aleatorios, siendo la primera semi-lla de aleatorizacion el número 4578 y la segunda semilla de aleatorizacion el número 5789, extrayendo 2 caracteres.

Macro para generar pseudoaleatorio mediante los productos medios

Para realizar esta macro, se hacen los siguientes pasos:

a. Captura del número como la primera semilla de aleatorizacion.b. Captura del número como la segunda semilla de aleatorizacionc. Condicionar el número de dígitos de la semilla.d. Captura del número de caracteres por extraer, mediante la función Mid.e. Capturar el número de corridas.f. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.

Page 54: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

52

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

g. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-torios por el algoritmo de productos medios.

Procedimiento 2.6. Macro para generar aleatorios mediante los productos medios

Sub GeneradorProductosMedios()Dim n(2000) As Variant, X, Y As LongDim k, L As Integer, R(2000) As VariantDim M As Variant, c As IntegerLIMPIARActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection.Font.Bold = True.Font.Name = “Arial”.Font.Size = 12.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.WrapText = TrueEnd WithInicio:Range(“D1”).SelectActiveCell.FormulaR1C1 = “Semilla de aleatorización 1”Range(“F1”).SelectActiveCell.FormulaR1C1 = “Semilla de aleatorización 2”X = InputBox(“Introduzca la primera Semilla de aleatorización mínimo de tres cifras”)Cells(1, 5).Value = XY = InputBox(“Introduzca la segunda Semilla de aleatorización mínimo de tres cifras”)Cells(1, 7).Value = YIf (X < 100) And (Y < 100) ThenMsgBox “Los números deben ser mayor de tres Dígitos”, vbOKOnly, “ERROR”GoTo InicioEnd IfColumns(“D:E”).EntireColumn.AutoFitcomenzar:k = InputBox(“Introduzca el valor de las primeras posicciones”)Cells(1, 8).Value = kL = InputBox(“Introduzca el número de caracteres de centro que se debe devolver”)Cells(1, 9).Value = LIf (k > L) ThenMsgBox “El número de primeras posiciones debe ser menor que el numero de caracteres centrales”, vbOKOnly, “ERROR”GoTo comenzarEnd If

Page 55: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

53

Cole

cción

1

c = InputBox(“Introduzca el Número Corridas”): Cells(1, 10).Value = cRange(“F3”).SelectActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”).SelectActiveCell.FormulaR1C1 = “Número Aleatorio”Range(“F3:G3”).SelectSelection.Interior.ColorIndex = 46Range(“F3:G” & (c + 3)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithFor i = 1 To cCells(i + 3, 6).Value = iX1 = XY1 = YZ = X1 * Y1M = Mid(Z, k, L)R(i) = (M / (10 ^ (L)))Cells(i + 3, 7).Value = R(i)X = Y1Y = MNextRange(“E1”).SelectEnd Sub

Algoritmo multiplicador constante

Este método requiere dos semillas, pero una debe ser constante; estas se multiplican y del producto se extrae un número determinado de dígitos centrales, los cuales formarán otro producto con la otra semilla, y el número pseudoaleatorio se formará con la divi-sión 10 elevado al número de dígitos. Este algoritmo se realiza de la siguiente manera:

X0 = primera semilla de aleatorización. Y0 = la semilla constante de aleatorización.

Page 56: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

54

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

N = número de corridas. k = números de caracteres que se desean extraer. R = número aleatorio.

Veamos el siguiente ejemplo: generar 10 números aleatorios, siendo la primera semi-lla de aleatorizacion el número 4578 y la semilla constante de aleatorizacion el número 5789, extrayendo 2 caracteres.

Macro para generar pseudoaleatorio mediante el algoritmo multiplicador constante

Para realizar esta macro, se hacen los siguientes pasos:

a. Captura del número como la primera semilla de aleatorizacion.b. Captura del número como la semilla constante de aleatorizacionc. Condicionar el número de dígitos de la semilla.d. Captura del número de caracteres por extraer, mediante la función Mid.

Page 57: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

55

Cole

cción

1

e. Capturar el número de corridas.f. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.g. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-

torios por el algoritmo multiplicador constante.

Procedimiento 2.7. Macro para generar números aleatorios

mediante el algoritmo multiplicador constante

Sub GeneradorMultiplicadorConstante()Dim n(2000) As Variant, X, Y As LongDim k, L As Integer, R(2000) As VariantDim M As Variant, c As IntegerLIMPIARActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection.Font.Bold = True.Font.Name = “Arial”.Font.Size = 12.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.WrapText = TrueEnd WithInicio:Range(“D1”).SelectActiveCell.FormulaR1C1 = “Semilla de aleatorización 1”Range(“F1”).SelectActiveCell.FormulaR1C1 = “Semilla de aleatorización 2”X = InputBox(“Introduzca la primera Semilla de aleatorización mínimo de tres cifras”)Cells(1, 5).Value = XY = InputBox(“Introduzca la Semilla de aleatorización constante mínimo de tres cifras”)Cells(1, 7).Value = YIf (X < 100) And (Y < 100) ThenMsgBox “Los números deben ser mayor de tres Dígitos”, vbOKOnly, “ERROR”GoTo InicioEnd IfColumns(“D:E”).EntireColumn.AutoFit

Page 58: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

56

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

comenzar:k = InputBox(“Introduzca el valor de las primeras posicciones”)Cells(1, 8).Value = kL = InputBox(“Introduzca el número de caracteres de centro que se debe devolver”)Cells(1, 9).Value = LIf (k > L) ThenMsgBox “El número de primeras posiciones debe ser menor que el numero de caracteres centra-les”, vbOKOnly, “ERROR”GoTo comenzarEnd Ifc = InputBox(“Introduzca el Número Corridas”): Cells(1, 10).Value = cRange(“F3”).SelectActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”).SelectActiveCell.FormulaR1C1 = “Número Aleatorio”Range(“F3:G3”).SelectSelection.Interior.ColorIndex = 46Range(“F3:G” & (c + 3)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThinEnd WithFor i = 1 To cCells(i + 3, 6).Value = iX1 = XY1 = YZ = X1 * Y1M = Mid(Z, k, L)R(i) = (M / (10 ^ (L)))Cells(i + 3, 7).Value = R(i)X = MNextRange(“E1”).SelectEnd Sub

Una vez que ha finalizado la corridad de esta macro, se obtiene el siguiente, mostrado en la figura siguiente.

Page 59: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

57

Cole

cción

1

Algoritmo de congruencia lineal

Método propuesto por Lehmer que consiste en generar una secuencia de números enteros partiendo de una semilla (x0) por medio de la siguiente ecuación:

a = constante multiplicativab = constante aditivak = el móduloMod = función de Excel del residuo de la divisiónX0 = semilla de aleatorización

Xi = (aXi – 1 + b) Mod (k) para todo i, i =1,2, 3, …….,n

El número aleatorio se determina mediante la siguiente ecuación:

Veamos el siguiente ejemplo: generar 10 números aleatorios, teniendo como X0 = 39, a = 21, b = 33 y k = 100.

Macro para generar pseudoaleatorio mediante el algoritmo congruencial lineal

Para desarrollar esta macro, se necesita:

a. Realizar el procedimiento 2.4.b. Captura del número como semilla de aleatorizacion.c. Captura de los parámetros a, b y k.d. Condicionar el número de dígitos de la semilla.e. Emplear el operador aritmático Mod para encontrar el resto de la división entera.

Page 60: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

58

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

f. Capturar el número de corridas.g. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.h. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-

torios por el algoritmo de congruencia lineal.

Procedimiento 2.8. Macro para generar mediante el algoritmo congruencia lineal

Sub CongruencialLineal()Dim n, M As Variant, k As IntegerDim X(0 To 10000) As Double, R As DoubleLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:H200”).SelectWith Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithInicio:X (0) = InputBox (“Introduzca una Semilla de aleatorización mínimo de dos cifras”)a = InputBox (“Introduzca la constante multiplicativa (debe ser número entero)”)b = InputBox (“Introduzca la constante aditiva (debe ser número entero)”)k = InputBox (“Introduzca el módulo (debe ser número entero)”)If (X (0) < 10) ThenMsgBox “El número debe ser mayor que 10”, vbOKOnly, “ERROR”GoTo InicioEnd IfRange(“D1”). Select: ActiveCell.FormulaR1C1 = “Semilla de aleatorización”Range(“D2”). Select: ActiveCell.FormulaR1C1 = “La constante multiplicativa”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “La constante aditiva”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “El módulo”Columns(“D:D”).EntireColumn.AutoFitCells(1, 5).Value = X: Cells(2, 5).Value = aCells(3, 5).Value = b: Cells(4, 5).Value = kRange(“F3”). Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Números Aleatorios”Range(“F3:G3”).Select

Page 61: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

59

Cole

cción

1

Selection.Interior.ColorIndex = 6comenzar:c = InputBox (“Introduzca el Número Corridas”): Cells (1, 8).Value = cFor i = 1 To cCells(i + 3, 6).Value = iX(i) = (a * X(i - 1) + b) Mod k

R = X(i) / (k - 1): Cells(i + 3, 7).Value = RNextCuadricularRange("E1").SelectEnd Sub

Algoritmo de congruencia multiplicativo

Si b = 0, el generador de números pseudoaleatorios recibe el nombre de multiplicativo y suele utilizar m = pg, donde p representa la cantidad de dígitos del sistema de numera-ción del computador (p = 2) y g es la cantidad de dígitos de una palabra. El valor de g, en el caso de computador con longitud de palabra variable, se deja a elección del simulador.

Existen estudios que prueban que el periodo máximo que se puede obtener con el generador multiplicativo en computadores es m/4, con m = 2g (g > 2), y se logra con X0 impar y la contante multiplicativa igual a: 8k + 3, donde k = 1, 2, 3. . .

La ecuación para el generador multiplicativo será:

a = constante multiplicativa = 8k +3

X0 = (aXi – 1) Mod (m) i = 1,2, 3,…...n

m= 2g, en donde g es un número entero.El número aleatorio se obtiene con la ecuación:

Page 62: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

60

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Si b ≠ 0, el generador de números pseudoaleatorios recibe el nombre de mixto. La ventaja de este generador de números pseudoaleatorios con respecto al anterior es que, con este, si se hace una elección adecuada de a y b, se puede conseguir que el periodo sea m.

Veamos ahora el siguiente ejemplo:

X0 = 27; g = 5; m = 25 = 32; k = 2; a = 8(2) +13 = 19

Macro para generar pseudoaleatorio mediante el algoritmo congruencial multiplicativo

Para desarrollar esta macro, se necesita:

a. Realizar el procedimiento 2.4.b. Captura del número como semilla de aleatorizacion.c. Captura el parámetro g.d. Determina los parámetros a, k y m.e. Condicionar el número de dígitos de la semilla.f. Emplear el operador aritmático Mod para encontrar el resto de la división entera.g. Capturar el número de corridas.h. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.i. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-

torios por el algoritmo de congruencia multiplicativo.

Page 63: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

61

Cole

cción

1

Procedimiento 2.9. Macro para generar números aleatorios

mediante al algoritmo congruencial multiplicativo

Sub Congruencialmultiplicativo()Dim n, M As Variant, k As IntegerDim X(0 To 10000) As Double, R As DoubleLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:F200”).SelectWith Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd Withk = 2X(0) = InputBox(“Introduzca una Semilla de aleatorización mínimo de dos cifras e impar”)a = 8 * k + 3G = InputBox(“Introduzca un número entero”): M = 2 ^ GRange(“D1”).Select: ActiveCell.FormulaR1C1 = “Semilla de aleatorización”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “La cantidad de dígitos”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “El número entero”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “El constante de a”Range(“D5”).Select: ActiveCell.FormulaR1C1 = “El módulo”Columns(“D:D”).EntireColumn.AutoFitCells(1, 5).Value = X(0): Cells(2, 5).Value = kCells(3, 5).Value = G: Cells(4, 5).Value = aCells(5, 5).Value = MRange(“F3”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Números Aleatorios”Range(“F3:G3”).SelectSelection.Interior.ColorIndex = 6c = InputBox("Introduzca el Número Corridas"): Cells(1, 8).Value = cFor i = 1 To cCells(i + 3, 6).Value = iX(i) = (a * X(i - 1)) Mod MR = X(i) / (M - 1): Cells(i + 3, 7).Value = RNextCuadricularRange("E1").SelectEnd Sub

Page 64: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

62

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Algoritmo de congruencia aditivo

Este método necesita una secuencia previa de n números enteros X1, X2, X3 . . .. Xn para generar una nueva secuencia de números enteros que parte de Xn+1, Xn+2, Xn+3, . . .. Esco-giendo un módulo, la ecuación para generar números pseudoaleatorios será:

Xi = (Xi – 1 + Xi – n ) Mod (m) i =n+1,n+2,n+3,…N

Los números aleatorios pueden ser generados por:

Veamos el siguiente ejemplo:

Sean X1 = 125; X2 = 89; X3 = 95; X4 = 79; X5 = 67 y m = 100

Macro para generar pseudoaleatorio mediante el algoritmo congruencial aditivo

Se crea una macro del mismo nombre del algoritmo, que haga lo siguiente:

a. Realizar el procedimiento 2.4.b. Captura del número de secuencia.c. Captura el valor de cada secuencia.d. Captura el módulo.e. Captura del número de corridas.f. Condicionar el número de dígitos de la semilla.g. Emplear el operador aritmático Mod para encontrar el resto de la división entera.h. Ejecutar la sentencia For-Next de acuerdo con el número de corridas.i. Dentro de la sentencia For-Next, escribir el algoritmo de generar números alea-

torios por el algoritmo de congruencia aditivo.

Page 65: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

63

Cole

cción

1

Procedimiento 2.10. Macro para generar números aleatorios

mediante el algoritmo congruencial aditivo

Sub Congruencialaditivo()Dim n As Long, R As Double, X(1 To 10000) As DoubleLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:H2000”).SelectWith Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd Withn = InputBox (“Introduzca el número de secuencia de número enteros”)For i = 1 To nCells(i, 1).Value = “X” & iX(i) = InputBox (“Introduzca el número de X “ & i & “ de la secuencia”)Cells(i, 2).Value = X(i)NextRange(“A” & (n + 1)).Select: ActiveCell.FormulaR1C1 = “M”M = InputBox (“Introduzca el módulo”): Cells (n + 1, 2). Value = Mk = InputBox (“Introduzca el número de seudo-aleatorios a generar”)Cells (1, 8). Value = kRange(“F3”). Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”). Select: ActiveCell.FormulaR1C1 = “Números Aleatorios”Range (“F3:G3”). SelectSelection.Interior.ColorIndex = 6For i = n + 1 To n + kCells(i - 2, 6).Value = i - nX(i) = (X(i - 1) + X(i - n)) Mod MR = X(i) / (M - 1): Cells(i - 2, 7).Value = RNextCuadricularRange("A1").SelectEnd Sub

Page 66: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

64

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Algoritmo de congruencia cuadrático

Este método tiene la siguiente ecuación para determinar números pseudoaleatorios:

a = constante multiplicativa (debe ser número par)b = otra constante multiplicativa (debe ser (b – 1) Mod 4 = 1)c = constante aditiva (debe ser impar)g = número entero

Xi = (aX²i – 1 + bXi – 1 + c) Mod (m) i = 1,2,3,…..N

Los números aleatorios se generan por medio de:

Veamos un ejemplo: generar 10 números aleatorios teniendo en cuenta la siguiente información:

X0 = 23; a = 30; b = 25; c = 33; g = 5; m = 32

Page 67: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

65

Cole

cción

1

Macro para generar pseudoaleatorio mediante el algoritmo congruencial cuadrático

Procedimiento 2.11. Macro para generar números aleatorios

mediante el algoritmo congruencial cuadrático

Sub CongruencialCuadratico()Dim n, M As Variant, k As Integer, R As DoubleDim X(0 To 10000) As DoubleLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:H2000”).SelectWith Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange(“D1”).Select: ActiveCell.FormulaR1C1 = “Semilla de aleatorización”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “La Constante multiplicativa a”X(0) = InputBox(“Introduzca una Semilla de aleatorización mínimo de dos cifras”)a = InputBox(“Introduzca la constante multiplicativa a (debe ser número entero par)”)Range(“D3”).Select: ActiveCell.FormulaR1C1 = “La Constante multiplicativa b”b = InputBox(“Introduzca la otra constante multiplicativa b (debe ser (b-1) mod 4 = 1”)Range(“D4”).Select: ActiveCell.FormulaR1C1 = “La Constante aditiva c”c = InputBox(“Introduzca la constante aditiva c (debe ser número entero e impar)”)Range(“D5”).Select: ActiveCell.FormulaR1C1 = “El módulo”G = InputBox(“Introduzca un número entero”): M = 2 ^ GColumns(“D:D”).EntireColumn.AutoFitCells(1, 5).Value = X(0): Cells(2, 5).Value = aCells(3, 5).Value = b: Cells(4, 5).Value = c: Cells(5, 5).Value = MRange(“F3”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Números Aleatorios”Range(“F3:G3”).SelectSelection.Interior.ColorIndex = 6cor = InputBox(“Introduzca el Número Corridas”): Cells(1, 8).Value = corFor i = 1 To corCells(i + 3, 6).Value = i

Page 68: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

66

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

X(i) = (a * (X(i - 1)) ^ 2 + b * X(i - 1) + c) Mod MR = X(i) / (M - 1)Cells(i + 3, 7).Value = RNextCuadricularRange("E1").SelectEnd Sub

Comprobación de la uniformidad y aleatoriedad de los generadores de números pseudoaleatorios

Una vez establecidos los métodos para generar números aleatorios, parece lógico plan-tearse, a partir de los valores obtenidos por un determinado método, si efectivamente estos cumplen con las propiedades de distribución uniforme comprendido entre 0 y 1.

Media y varianza de los números aleatorios

Una de las propiedades de estos números aleatorios es tener la misma probabilidad de presentarse y que muestre una distribución uniforme continua comprendida entre 0 y 1.

f(x) = función de densidad de probabilidad

a = cota inferior = 0b = cota superior = 1

La media

La varianza

La desviación estándar =

Page 69: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

67

Cole

cción

1

Pruebas de medias

Para comprobar si los números pseudoaleatorios cumplen con las propiedades ante-riores, se recurre a la prueba de hipótesis para población normal bilateral, como se mostrará a continuación:

Hipótesis nula: H0: µ = 0.5Hipótesis alternativa: Ha: µ ≠ 0.5

Para decidir si una hipótesis formulada es cierta o falsa, se necesita un procedimiento que, de forma objetiva, permita aceptar o rechazar la hipótesis previamente presentada.

Determinación del estadístico Z0:

n = números aleatorios obtenidos

ri = número aleatorio iNivel = nivel de significancia

Si |Z0|<Zα−₂, no se rechaza la hipotesis nula, donde los números aleatorios tienen una distribucion

uniforme con media 0,5; en caso contrario, se rechaza la generacion de números aleatorios por no cumplir con las propiedades.

Page 70: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

68

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Macro para hacer las pruebas de medias2

Esta macro exige la programación del rango en que se encuentran los números aleato-rios generados, con el fin de obtener el promedio de estos números aleatorios mediante la siguiente instrucción:

X = Application.WorksheetFunction.Average(Range(Cells(4,7),Cells(18,7)))

Esto quiere decir: determinar el promedio de los números aleatorios comprendidos en el rango “G4:G18”, rango que fue programado. Se requieren probar los siguientes 20 números aleatorios:

Número Número aleatorio Número Número aleatorio1 0,04740 11 0,598982 0,26205 12 0,629843 0,12289 13 0,056814 0,35782 14 0,929895 0,17700 15 0,361306 0,27035 16 0,145017 0,89948 17 0,848838 0,05535 18 0,964989 0,30545 19 0,2177110 0,78847 20 0,07363

2 La macro se realiza bajo los parámetros del cuadro anterior

Page 71: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

69

Cole

cción

1

Procedimiento 2.12. Macro para realizar pruebas de medias

Sub pruebaNormal ()Dim alfa, nivel, zetacero, zetaalfa, zeraalfa2 As DoubleDim n As Integer, x As DoubleRange (“A4:B9”). ClearContentsrespuesta = MsgBox (“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _ “partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox (“Introduzca la cantidad de números aleatorios obtenidos:”)Range(“A4”). SelectActiveCell.FormulaR1C1 = “Tamaño de la muestra”Columns(“A:A”).EntireColumn.AutoFitCells(4, 2).Value = nRange(“A5”). SelectActiveCell.FormulaR1C1 = “Nivel de Significancia”nivel = CDbl (InputBox (“Introduzca el nivel de significación”)): Cells (5, 2) = nivelalfa = (1 - nivel): Prob = 1 - (alfa / 2)Range(“A6”). SelectActiveCell.FormulaR1C1 = “Valor Crítico 1”zetaalfa = 0.5 + (Application.WorksheetFunction.NormSInv(alfa / 2) *(1/Sqr(12*n))Cells(6, 2).Value = zetaalfaRange(“A7”).SelectActiveCell.FormulaR1C1 = “Valor Crítico 2”Zetaalfa2 = 0.5 + (Application. WorksheetFunction.NormSInv(Prob)) *(1/Sqr(12*n))Cells(7, 2).Value = zetaalfa2Range(“A8”).SelectActiveCell.FormulaR1C1 = “El estadístico”Range(“A9”). SelectActiveCell.FormulaR1C1 = “La media es”x = Application.Average(Range(Cells(4, 7), Cells(n + 3, 7))): Cells(9, 2).Value = xsigma = Sqr (1 / 12)zetacero = (((x - 0.5)) * Sqr(n)) / sigma: Cells (8, 2).Value = zetaceroIf (zetacero < zetaalfa2) and (zetacero > zetaalfa )Thenaceptacion = MsgBox (“No se rechaza los números aleatorios generados que provienen de una _ &” distribución Uniforme” & “ con media 0.5”, vbInformation)Else

Page 72: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

70

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

rechazo = MsgBox ("Se rehaza los números aleatorios generados que provienen de una _ &” distribución Uniforme" & " con media 0.5", vbInformation)End IfRange("A10").SelectEnd Sub

Pruebas de varianzas

Para comprobar si los números pseudoaleatorios cumplen con las propiedades anterio-res, se recurre a pruebas de hipótesis sobre la varianza de una población normal.

Hipótesis nula: H0: σ² = 1/12 Hipótesis alternativa: Ha: σ² ≠ 1/12 Determinación del estadístico σ²0

n = números aleatorios obtenidos

ri = número aleatorio iNivel = nivel de significancia

Si y , no se rechaza la hipótesis nula en donde los números aleatorios tienen

una distribucion uniforme con varianza = 1/12,

Page 73: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

71

Cole

cción

1

Ejemplo 2.2

Realice la prueba de varianza a los siguientes 20 números aleatorios, con nivel de signi-ficancia de 0,05, en una hoja de Excel en el rango G4:G33:

Tabla 2.1. Números aleatorios por comprobar Número Número aleatorio Número Número aleatorio

1 0,04740 11 0,598982 0,26205 12 0,629843 0,12289 13 0,056814 0,35782 14 0,929895 0,17700 15 0,361306 0,27035 16 0,145017 0,89948 17 0,848838 0,05535 18 0,964989 0,30545 19 0,2177110 0,78847 20 0,07363

Macro para hacer las pruebas de varianzas3

Procedimiento 2.13. Macro para hacer prueba de varianzas a números aleatorios

Sub pruebaVar ()Dim alfa, nivel, Chicero1, Chicero2, VarM As DoubleDim n As Integer, x As Double, r (1 To 10000), v (1 To 1000) As DoubleRange (“A4:B10”). ClearContentsrespuesta = MsgBox (“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _ “partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + critical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox (“Introduzca la cantidad de números aleatorios obtenidos:”)

3 La macro se realiza bajo los parámetros del cuadro anterior.

Page 74: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

72

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“A4”). SelectActiveCell.FormulaR1C1 = “Tamaño de la muestra”Columns (“A: A”). EntireColumn.AutoFitCells (4, 2). Value = nRange(“A5”). SelectActiveCell.FormulaR1C1 = “Valor de alfa”alfa = CDbl (InputBox (“Introduzca el valor de alfa”)): Cells (5, 2) = alfaRange(“A6”). SelectActiveCell.FormulaR1C1 = “Grado de libertad”g = n - 1: Cells (6, 2). Value = gRange(“A7”). SelectActiveCell.FormulaR1C1 = “Valor Crítico1”Chicero1 = (Application.WorhsheetFunction. ChiInv (alfa/2, g))/(12*(n-1)): Cells (7, 2). Value = Chicero1Range(“A8”). SelectActiveCell.FormulaR1C1 = “Valor Crítico2”Chicero2 = (Application.WorhsheetFunction. ChiInv (1- (alfa/2), g))/(12*(n-1)): Cells (8, 2). Value = Chicero2Range(“A9”). SelectActiveCell.FormulaR1C1 = “La media muestral”x = Application. Average (Range (“G4: G” & (n + 3))): Cells (9, 2). Value = xFor i = 1 To nr(i) = Cells (i + 3, 7). ValueNext iFor i = 1 To nv(i) = ((r(i) - x) ^ 2) / (n - 1)Sum = Sum + v(i)Next iRange(“A10”). SelectActiveCell.FormulaR1C1 = “La Varianza poblacional”Columns (“A: A”). EntireColumn.AutoFitCells (10, 2). Value = 1 / 12Range(“A11”). SelectActiveCell.FormulaR1C1 = “La Varianza muestral”VarM = Sum: Cells (11, 2). Value = SumIf (VarM ≥ Chicero1) and (VarM ≤ Chicero2) Thenaceptacion = MsgBox (“No se rechaza los números aleatorios generados que provienen de una distribu-ción _ Uniforme” & “ con varianza 1/12”, vbInformation)Elserechazo = MsgBox (“Se rechaza los números aleatorios generados que provienen de una distribución Uniforme”_ & “ con varianza 1/12”, vbInformation)End IfEnd Sub

Page 75: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

73

Cole

cción

1

Pruebas de Chi-cuadrado

La siguiente prueba permitirá, al igual que la anterior, comprobar si una vez que se tiene una sucesión de números pseudoaleatorios, estos provienen de una variable aleatoria con distribución uniforme en (0, 1). Para realizar esta prueba, es necesario tener en cuenta:

n = cantidad de números pseudoaleatorios obtenidos.m = números de subintervalos, m = 1+ 3,322 log(n).FOi = frecuencia observada = cantidad de números aleatorios que se clasifican en

cada intervalo.FEi = frecuencia esperada = cantidad de números aleatorios que se esperan encontraren cada intervalo = .

= estadístico de Chi-cuadrado.

estadístico calculado o tabulado de Chi-cuadrado.α = 1 - nivel de significancia.

Entonces, el estadístico se determina de la siguiente manera:

Si , entonces no se rechaza el conjunto de números aleatorios que siguen una

distribución uniforme en (0 ,1).

Page 76: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

74

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo 2.3

Realice la prueba de Chi-cuadrado a los siguientes 20 números aleatorios, con nivel de significancia de 0,05.

Sean los números aleatorios:

Tabla 2.2. Números aleatorios por probarNúmero Número aleatorio Número Número aleatorio

1 0,04740 11 0,598982 0,26205 12 0,629843 0,12289 13 0,056814 0,35782 14 0,929895 0,17700 15 0,361306 0,27035 16 0,145017 0,89948 17 0,848838 0,05535 18 0,964989 0,30545 19 0,2177110 0,78847 20 0,07363

Digitar previamente estos números aleatorios en el rango G4:G23.

La macro para hacer una prueba de Chi-cuadrado se mostrará a continuación.

Procedimiento 2.14. Macro para realizar prueba Chi-cuadrado a números aleatorios

Sub pruebaChiCuad()Dim alfa, nivel, Chicero, Chialfa As DoubleDim n As Integer, x, y As DoubleDim FO(1 To 1000), FE(1 To 1000) As IntegerDim r(1 To 1000), dif(1 To 1000) As DoubleRange (“A4:B9”). ClearContentsrespuesta = MsgBox (“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _“partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _

Page 77: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

75

Cole

cción

1

, “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox (“Introduzca la cantidad de números aleatorios obtenidos:”)Range(“A4”). Select: ActiveCell.FormulaR1C1 = “Tamaño de la muestra”Columns(“A:A”).EntireColumn.AutoFitCells(4, 2).Value = n Range(“A5”). Select: ActiveCell.FormulaR1C1 = “Nivel de Significancia”alfa = CDbl (InputBox (“Introduzca el nivel de significación”)): Cells (5, 2) = alfam = Round(1 + 3.322 * (Application.Log(n)), 0)Range(“A6”). Select: ActiveCell.FormulaR1C1 = “Números de intervalos”Cells(6, 2).Value = mDMin = Application.Min(Range(“G4:G” & (n + 3)))DMax = Application.Max(Range(“G4:G” & (n + 3)))interv = ((DMax - DMin) / m)Range(“A7”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad”g = m - 1: Cells(7, 2).Value = gRange(“A8”).Select: ActiveCell.FormulaR1C1 = “valor Crítico”Chialfa = Application.ChiInv(alfa, g): Cells(8, 2).Value = ChialfaFor x = 1 To nr(x) = Cells(x + 3, 7).ValueNext xRange(“I3”).Select: ActiveCell.FormulaR1C1 = “Intervalo”Range(“J3”).Select: ActiveCell.FormulaR1C1 = “FOi”Range(“K3”).Select: ActiveCell.FormulaR1C1 = “FEi”Range(“L3”).Select: ActiveCell.FormulaR1C1 = “(FOi - FEi)²/FEi”Columns(“L:L”).EntireColumn.AutoFitRange(“I3:L3”).SelectSelection.Font.Bold = TrueSelection.Font.Name = “Arial”Selection.WrapText = TrueSelection.HorizontalAlignment = xlCenterSelection.VerticalAlignment = xlCenterSelection.Interior.ColorIndex = 6y = DMinChicero = 0For i = 1 To mCells(i + 3, 9) = y & “ - “ & (y + interv)FO(i) = 0For j = 1 To nIf r(j) > y And r(j) <= (y + interv) ThenFO(i) = FO(i) + 1End If

Page 78: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

76

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Next jy = y + intervCells(i + 3, 10).Value = FO(i)FE(i) = (n / m)Cells(i + 3, 11).Value = FE(i)dif(i) = ((FO(i) - FE(i)) ^ 2) / FE(i)Cells(i + 3, 12).Value = dif(i)Chicero = Chicero + dif(i) Next i Range(“A9”). SelectActiveCell.FormulaR1C1 = “El estadístico”Cells(9, 2).Value = ChiceroIf Chicero < Chialfa Thenaceptacion = MsgBox (“No se rechaza los números aleatorios generados que provienen de una distribución _ Uniforme” & “ con media 0.5”, vbInformation)Elserechazo = MsgBox (“Se rechaza los números aleatorios generados que provienen de una distribución _ Uniforme” & “ con media 0.5”, vbInformation)End IfEnd Su

Pruebas de Kolmogorov-Smirnov

Una vez que se ha obtenido una sucesión de números pseudoaleatorios, la prueba de Kolmogorov-Smirnov permite contrastar si efectivamente eso números provienen de una distribución uniforme. Los pasos a seguir son los siguientes:

Ordenar los números aleatorios, ri de menor a mayor y definir:

Fn = distribucion de probabilidad empírica de la muestra de los n números aleatorios simulados.yi = valor del número aleatorio i ordenado de menor a mayor.Evaluar

α = 1 – nivel de significanciaDn, α = valor crítico de la prueba y si se encuentra tabulada.Si Dn ≤ Dn, α , se concluye que efectivamente los números aleatorios provienen de una variable aleatoria con distribucion uniforme en (0 ,1).

Page 79: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

77

Cole

cción

1

Macro para la prueba de Kolmogorov-Smirnov

La macro para la prueba de Kolmogorov-Smirnov tiene la particularidad de solicitar al usuario el valor crítico de la prueba que se encuentra tabulada.

Ejemplo 2.4

Realice la prueba de Kolmogorov-Smirnov a los siguientes 20 números aleatorios con nivel de significancia de 0,05. El valor crítico de la prueba es 0,294.

Tabla 2.3. Números aleatorios a comprobarNúmero Número aleatorio Número Número aleatorio

1 0,04740 11 0,598982 0,26205 12 0,629843 0,12289 13 0,056814 0,35782 14 0,929895 0,17700 15 0,361306 0,27035 16 0,145017 0,89948 17 0,848838 0,05535 18 0,964989 0,30545 19 0,2177110 0,78847 20 0,07363

A continuación, se mostrará la macro que sirve para hacer la prueba Kolmogorov -Smirnov.

Page 80: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

78

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 2.15. Macro para hacer prueba Kolmogorov-Smirnov

Sub pruebaKolmogorov()Dim alfa, nivel As DoubleDim n As Integer, x As DoubleDim FN(1 To 1000) As DoubleDim r(1 To 1000), dif(1 To 1000) As DoubleRange (“A4:B8”). ClearContentsrespuesta = MsgBox (“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _ “partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox (“Introduzca la cantidad de números aleatorios obtenidos:”)Range(“A4”). Select: ActiveCell.FormulaR1C1 = “Tamaño de la muestra”Columns(“A:A”).EntireColumn.AutoFitCells(4, 2).Value = nRange(“H3”). Select: ActiveCell.FormulaR1C1 = “Números Aleatorios Ordenados”‘LimpiarRange(“G3:G” & (n + 3)).Select Selection.Copy Range(“H3:J” & (n + 3)).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = FalseRange(“H3:J” & (n + 3)).SelectWith Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithMensaje = “¿Desea realizar la ordenación de estos números aleatorios?”estilo = vbYesNo + vbCritical + vbDefaultButton1titulo = “Toma de decisiones”respuesta2 = MsgBox (mensaje, estilo, titulo)If respuesta2 = vbNo Then GoTo salidaRange(“G4:G” & (n + 3)).Select Selection.Copy

Page 81: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

79

Cole

cción

1

Range(“H4”).Select ActiveSheet.Paste Range(“H4:H” & (n + 3)).Select Application.CutCopyMode = FalseRange(“G3”).SelectRange(“H4:H” & (n + 3)).Sort Key1:=Range(“H4”), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _MatchCase:=False, Orientation:=xlTopToBottom, Dataoption1:=xlSortNormalMsgBox (“ORDENACION REALIZADA”)Range(“A5”). SelectActiveCell.FormulaR1C1 = “Nivel de Significancia”alfa = CDbl (InputBox (“Introduzca el nivel de significación”)): Cells (5, 2) = alfaFor x = 1 To nr(x) = Cells(x + 3, 8).ValueNext xRange(“I3”).SelectActiveCell.FormulaR1C1 = “Fn(yi)=i/n”Range(“J3”).SelectActiveCell.FormulaR1C1 = “|yi-i/n|”Columns(“I:I”).EntireColumn.AutoFitRange(“H3:J3”).SelectSelection.Font.Bold = TrueSelection.Font.Name = “Arial”Selection.WrapText = TrueSelection.HorizontalAlignment = xlCenterSelection.VerticalAlignment = xlCenterSelection.Interior.ColorIndex = 6For i = 1 To nCells(i + 3, 9) = i / ndif(i) = Abs(r(i) - (i / n))Cells(i + 3, 10) = dif(i)Next iRange(“A6”). SelectActiveCell.FormulaR1C1 = “El estadístico”Dn = Application.Max(Range(“J4:J” & (n + 3))): Cells(6, 2).Value = DnRange(“A7”). SelectActiveCell.FormulaR1C1 = “El valor Crítico”valor = InputBox (“Introduzca el valor crítico de la prueba:”): Cells (7, 2).Value = valorIf Dn <= valor Then

Page 82: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

80

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

aceptacion = MsgBox ("No se rechaza los números aleatorios generados que provienen de una distribución _ Uniforme" & " con media 0.5", vbInformation)Elserechazo = MsgBox ("Se rechaza los números aleatorios generados que provienen de una distribu-ción Uniforme" _& " con media 0.5", vbInformation)End Ifsalida:End Sub

Prueba de las rachas (prueba de corrida arriba y abajo)

Dados los n números pseudoaleatorios r1, r2, r3, . . .. . , rn, se construye una sucesión formada por “ + “ si ri < ri+1, y un signo “ – “ si ri > ri+1. Cada grupo de signos + o – recibe el nombre de racha. Los pasos a seguir con la prueba de las rachas son los siguientes:

a. Calcular el número, R, de rachas de la sucesión de n números pseudoaleatorios que se tienen.

Se prueba que R sigue una distribución normal con media igual a y varianza

igual a , donde n es el número de pseudoaleatorios generados.

b. Evaluar:

La variable aleatoria Z sigue, obviamente, una distribución normal con media 0 y varianza 1.

c. Fijar un nivel de significancia α y verifique:P(Z ≥ Zα ) = α

Page 83: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

81

Cole

cción

1

d. Si Z ≥ Zα, rechazar.e. No rechazar la aleatoriedad de la secuencia si el valor de Z verifica

|Z| < Zα.

Macro para la prueba de las rachas

Para realizar una macro y hacer prueba de rachas, se parte de los mismos números aleatorios en el mismo rango del ejemplo anterior.

Procedimiento 2.16. Macro para hacer prueba de rachas

Sub PruebaRacha ()Dim alfa, nivel, zetacero, zetaalfa As DoubleDim n As Integer, x As Double, r(1 To 10000) As DoubleRange (“A4:B8”). ClearContentsrespuesta = MsgBox (“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _ “partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox (“Introduzca la cantidad de números aleatorios obtenidos:”)Range(“A4”). SelectActiveCell.FormulaR1C1 = “Tamaño de la muestra”Cells(4, 2).Value = nFor i = 1 To nr(i) = Cells(i + 3, 7).ValueNext iFor j = 1 To n - 1If r(j) < r(j + 1) ThenCells(j + 4, 8).Value = “ + “Cells(j + 4, 8).Font.Bold = True

Page 84: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

82

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(j + 4, 8).Font.Name = "Arial"Cells(j + 4, 8).Font.Size = 12ElseCells(j + 4, 8).Value = " - "Cells(j + 4, 8).Font.Bold = TrueCells(j + 4, 8).Font.Name = "Arial"Cells(j + 4, 8).Font.Size = 12End IfNext jRange("A5"). Select: ActiveCell.FormulaR1C1 = "Nivel de Significancia"alfa = CDbl (InputBox ("Introduzca el nivel de significación")): Cells (5, 2) = alfaProb = 1 - (alfa)Range("A6"). Select: ActiveCell.FormulaR1C1 = "Valor Crítico "alfa2 = Application.NormSInv(alfa ): Cells (6, 2). Value = alfa2Range("A7"). Select: ActiveCell.FormulaR1C1 = "Valor Crítico 2"zetaalfa = Application.NormSInv(Prob): Cells(7, 2).Value = zetaalfaRange("A8"). Select: ActiveCell.FormulaR1C1 = "La media de las rachas"miu = (2 * n - 1) / 3: Cells (8, 2). Value = miuRange("A9"). Select: ActiveCell.FormulaR1C1 = "La varianza de las rachas"v = (16 * n - 29) / 90: Cells(9, 2).Value = vsigma = Sqr(v)Range("A10"). Select: ActiveCell.FormulaR1C1 = "El número de rachas"x = InputBox ("¿Cuál es el Número de las rachas:”): Cells (10, 2)? Value = xRange("A11"). Select: ActiveCell.FormulaR1C1 = "El estadístico"zetacero = (x - miu) / sigma: Cells (11, 2). Value = zetaceroColumns("A:A").EntireColumn.AutoFitIf (Abs(zetacero)) < zetaalfa Thenaceptacion = MsgBox ("No se rechaza los números aleatorios generados que provienen de una distribución _ Uniforme con media 0.5", vbInformation)Elserechazo = MsgBox ("Se rechaza los números aleatorios generados que provienen de una distribución _ Uniforme con media 0.5", vbInformation)End IfEnd Sub

Page 85: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE NúMEROS ALEATORIOS CON APLIC ACIONES DE vISUAL BASIC

83

Cole

cción

1

Ejercicios

1. Adaptación del generador pseudoaleatorio Blum Blum Shub (BBS) para generar números aleatorios mediante una macro de Excel. 

El algoritmo BBS es:

 Xi+1 = (aXi2) mod (M)     

Donde M = pq es el producto de dos números primos muy grandes p y q. En cada paso del algoritmo, se obtiene un resultado para Xn.

Los dos números primos, p y q, deben ser congruentes a 3 (mod 4). (Esto asegura que cada residuo cuadrático posee una raíz cuadrada que también es un residuo cuadrático).

Sean p = 13, q = 17 y a = 1

S = semilla = 100

Hacer que X0 = (S2) mod (M) y la secuencia está definida Xi+1 = (Xi2) mod (M).

Los números aleatorios se generan por medio de:

Page 86: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

84

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

2. Realice una macro para generar automáticamente números aleatorios mediante la serie congruencial de Xi+1 = 23Xi + 57 mod (M), si M = p*q, donde p = 11 y q = 7.

3. Realice las pruebas de media, varianza, Chi-cuadrado, Kolmogorov-Smirnov, de las rachas de los siguientes 50 números aleatorios a través de macros de Excel.

Número Número aleatorio Número Número

aleatorio Número Número aleatorio Número Número

aleatorio Número Número aleatorio

1 0,7705 11 0,4739 21 0,0712 31 0,9634 41 0,44722 0,3567 12 0,7256 22 0,9314 32 0,3021 42 0,23233 0,6148 13 0,3195 23 0,7855 33 0,7446 43 0,68134 0,9627 14 0,6632 24 0,9816 34 0,7128 44 0,04665 0,7602 15 0,9125 25 0,8182 35 0,3954 45 0,51286 0,1166 16 0,0934 26 0,4689 36 0,7138 46 0,71597 0,0800 17 0,7321 27 0,4737 37 0,5903 47 0,87168 0,7320 18 0,6438 28 0,7094 38 0,3377 48 0,68439 0,9662 19 0,0140 29 0,5453 39 0,6716 49 0,516110 0,0826 20 0,2079 30 0,0312 40 0,5208 50 0,4815

Page 87: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Generación de variables aleatorias mediante la técnica de Montecarlo

La técnica de Montecarlo tiene conexión con los juegos de azar, que han inspirado en gran medida el desarrollo de la teoría de probabilidades. Era evidente, pues, que los resultados de dicha teoría trataran de aplicarse para poder conocer y

predecir resultados de los juegos de azar. La idea central es registrar los resultados de una cantidad de observaciones, conside-

rando solo los valores que toman la variable, y no la secuencia en que ocurrieron. Con esta técnica se realiza una simulación que comprende variables estocásticas y plantea el problema inverso de este modo:

F(X) = RDespejando X se tiene:

X = F- 1(R)

Donde:R = número aleatorio.F(x) = función acumulada de la probabilidad.X = variable aleatoria.

Es necesario generar una sucesión de números en la que los valores sucesivos son aleatorios y tienen la distribución que describe la variable estocástica.

3

Page 88: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

86

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

La ventaja del uso de estos métodos en simulación es que no es necesario conocer la distribución de probabilidad teórica que rige el fenómeno. Un buen estudio práctico permite aplicar los procedimientos de simulación descritos cuando la distribución no es conocida o es de difícil aplicación.

Pasos para la técnica de Montecarlo:a. Escribir cada evento con su respectiva probabilidad.b. Acumular las probabilidades.c. Con las probabilidades acumuladas, escribir tanto la cota inferior como la cota

superior de la probabilidad para cada evento.d. Generar números aleatorios de acuerdo con la cantidad deseada.e. Buscar para cada número aleatorio a qué intervalo cae, con el fin de generar el

evento que contiene el intervalo a la cantidad deseada.

La instrucción más relevante para la técnica de Montecarlo en una aplicación de Visual Basic es la función de búsqueda:

X = Application.WorksheetFunction.Vlookup(R, Rango1,c)

Con la instrucción se puede decir:X = variable aleatoria a determinar.R = valor del número aleatorio buscado.Rango1 = la matriz de las probabilidades por buscar en un rango.C = indicador de la columna de la matriz en el cual está ubicada la variable aleatoria

por generar.Con el siguiente ejemplo se explicará exhaustivamente la técnica de Montecarlo de

manera informatizada.

Page 89: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

87

Cole

cción

1

Ejemplo 3.1

Supóngase que la demanda mensual de un producto es aleatoria, con la siguiente distri-bución de probabilidad empírica:

Demanda mensual (unidades) Probabilidad de ocurrencia85 0,05110 0,10130 0,15145 0,20150 0,12165 0,15175 0,13190 0,05200 0,05

Se desea simular la demanda mensual para 30 meses.

Figura 3.1 Probabilidad acumulada e intervalo de los números aleatorios

Demanda mensual (unidades)

Probabilidad de ocurrencia

Probabilidad acumulada

Intervalo del número aleatorio

85 0,05 0,05 0 ≤ r ≤ 0,05110 0,10 0,15 0,05 ≤ r ≤ 0,15130 0,15 0,30 0,15 ≤ r ≤ 0,30145 0,20 0,50 0,30 ≤ r ≤ 0,50150 0,12 0,62 0,50 ≤ r ≤ 0,62165 0,15 0,77 0,62 ≤ r ≤ 0,77175 0,13 0,90 0,77 ≤ r ≤ 0,90190 0,05 0,95 0,90 ≤ r ≤ 0,95200 0,05 1,00 0,95 ≤ r ≤ 1,00

Page 90: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

88

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Para generar la demanda aleatoria por medio de una macro, se tiene:a. Cuadricular (todos los bordes) y escribir las cabeceras de acuerdo con la figura 3.1.b. Escribir los datos de acuerdo con la figura 3.1.c. Escribir la macro que se muestra en el procedimiento 3.1.

Procedimiento 3.1. Macro para generar la demanda aleatoria mediante técnica de Montecarlo

Sub Generar()Dim n, C, a As IntegerDim x(1000), P(1000) As Double, LI(1000), LS(1000), Acum(1000) As DoubleDim miu, V, V3, sigma As Double, Rango As RangeDim R(1000), Prom(1000) As Double, D(1000) As LongDim V2(1000) As Double, Prom2 As DoubleActiveWindow.DisplayGridlines = FalseLIMPIARRange(“A1”).Select: ActiveCell.FormulaR1C1 = “TECNICA DE MONTECARLO”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range(“B3”).Select: ActiveCell.FormulaR1C1 = “Probabilidad Acumulada”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Limite Inferior de R”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Limite Superior de R”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Demanda Mensual”Range(“F3”). Select: ActiveCell.FormulaR1C1 = “Número de observaciones”Range(“G3”). Select: ActiveCell.FormulaR1C1 = “Nùmero Aleatorio”Range(“H3”). Select: ActiveCell.FormulaR1C1 = “Demanda Simulada”Range(“I3”). Select: ActiveCell.FormulaR1C1 = “Número de Réplicas”Range(“J3”).Select: ActiveCell.FormulaR1C1 = “Demanda Promedio”Range(“A3”).Selectn = 9C = Val (InputBox (“DIGITE EL NÚMERO DE CORRIDAS (No. De Observaciones):”)): Cells (1, 8). Value = CRange(“A1:C1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12

Page 91: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

89

Cole

cción

1

.WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A3:E” & (n + 3)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd WithRange(“A3:J3”).SelectSelection.Interior.ColorIndex = 6Range(“F3:H” & (C + 4)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd Witha = Val(InputBox(“DIGITE EL NÙMERO DE REPLICAS:”)): Cells(1, 9).Value = aRange(“I3:J” & (a + 3)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd Withcomenzar:For i = 1 To nx(i) = Val (InputBox (“Introduzca el Valor de la Demanda “& i)): Cells (3 + i, 5). Value = x(i)P(i) = InputBox (“Introduzca la Probabilidad de la Demanda “& i): Cells (3 + i, 1). Value = P(i)If P(i) < 0 Or P(i) > 1 ThenMsgBox “ La probabilidad es incorrecta”, vbOKOnly, “ERROR”

Page 92: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

90

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

GoTo comenzarEnd IfIf i = 1 ThenAcum(i) = P(i)Cells(3 + i, 2).Value = Acum(i)LI(i) = 0: Cells(3 + 1, 3).Value = LI(i)LS(i) = P(i) Cells(3 + i, 4).Value = LS(i)ElseAcum(i) = Acum(i - 1) + P(i)If (Acum(i) > 1) ThenMsgBox “ La probabilidad Acumulada es incorrecta”, vbOKOnly, “ERROR”GoTo comenzarEnd IfCells(3 + i, 2).Value = Acum(i)LI(i) = Acum(i - 1)Cells(3 + i, 3).Value = LI(i)Cells(3 + i, 4).Value = Acum(i)End IfNext iRange (“A” & (n + 4)). Select: ActiveCell.FormulaR1C1 = “La media de la Demanda”Range (“A” & (n + 5)). Select: ActiveCell.FormulaR1C1 = “La Varianza de la Demanda”Range (“A” & (n + 6)). Select: ActiveCell.FormulaR1C1 = “La Desviacion Estándar de la Demanda”miu = Application.WorksheetFunction.SumProduct(Range(“A4:A” & (n + 3)), Range(“E4:E” & (n + 3)))Cells (n + 4, 2). Value = miu‘Calculo de la varianzaV = 0For i = 1 To nV = V + ((x(i) - miu) ^ 2) * P(i)Next iCells(n + 5, 2).Value = V‘Calculo de la desviación standardRange (“A” & (n + 10)). Select: ActiveCell.FormulaR1C1 = “Desviación Standard”sigma = Sqr(V): Cells(n + 10, 2).Value = sigmaColumns(“A:J”).ColumnWidth = 15: Rows(n + 6).RowHeight = 51Range(Cells(n + 4, 1), Cells(n + 10, 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin

Page 93: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

91

Cole

cción

1

.Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(n + 4, 1), Cells(n + 10, 1)).SelectSelection.Interior.ColorIndex = 6 Set Rango = Worksheets(1).Range("$C$4:$E$" & (n + 3))V3 = 0For j = 1 To aTexto = "REPLICA NUMERO " + Str(j)Cells(j + 3, 9).Value = jMsgBox Texto, vbOKOnly, "RÉPLICAS"For i = 1 To CCells(i + 3, 6).Value = iR(i) = Rnd: Cells(i + 3, 7).Value = R(i)D(i) = Application.WorksheetFunction.VLookup(R(i), Rango, 3): Cells(i + 3, 8).Value = D(i)Next iProm(j) = Application.WorksheetFunction.Average(Range("H4:H" & (n + 4)))Cells(j + 3, 10).Value = Prom(j)Next jRange ("A" & (n + 7)). Select: ActiveCell.FormulaR1C1 = "Promedio de Promedio de la Demanda"Prom2 = Application.WorksheetFunction.Average(Range("J4:J" & (a + 2)))Cells(n + 7, 2).Value = Prom2Range("A3").SelectEnd Sub

Sub LIMPIAR() Range("AA1").Select Selection.Copy Range("A1:Z722").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range("A3").SelectEnd Sub

Page 94: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

92

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Simulación de inventario de modelo de pedido único mediante la técnica de Montecarlo

Cuando los productos involucrados son perecederos o su demanda es de una sola vez, surgen muchos problemas prácticos de inventarios. Productos como vegetales y frutas frescas, flores naturales cortadas, periódicos y algunos medicamentos tienen una vida de anaquel corta y definida, y no están disponibles para periodos de ventas subsiguientes.

Solo puede establecerse un pedido para que estos productos satisfagan la demanda. Este modelo determina el tamaño del lote que debe tener ese único pedido. Para hallar el tamaño del lote económico de pedido (Q*), puede apelarse al análisis económico marginal; es decir, Q* se halla en punto, donde la ganancia marginal de la siguiente unidad vendida es igual a la pérdida marginal de no vender la siguiente unidad.

La ganancia marginal por unidad obtenida por vender una unidad es:Ganancia = precio por unidad – costo por unidad

La pérdida incurrida por unidad por no vender una unidad es:Pérdida = costo por unidad – valor de recuperación por unidad

Considerando la probabilidad de un número dado de unidades que se venden, las ganancias y las pérdidas esperadas se equilibran en este punto.

Ejemplo 3.2

Una tienda minorista compra revistas de software de computador a un distribuidor para su reventa. Por una próxima promoción, el minorista necesita determinar el mejor tamaño del lote de pedido para una sola compra. Uno de los productos es una revista de software de gráficas que tendrá un precio especial de venta de $20. El minorista estima las probabilidades de vender varias cantidades de la siguiente manera:

Page 95: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

93

Cole

cción

1

Ventas diarias (unidades) Probabilidad de ocurrencia20 0,0522 0,1025 0,1528 0,3030 0,2534 0,15

La revista se puede comprar al distribuidor a $10 por revista, pero hay un cargo de realmacenamiento de $3 por revista, si se devuelve al distribuidor cualquier ejemplar no vendido. El tamaño de pedido de compra es igual a las ventas del día anterior más la pérdida del día anterior. ¿Con qué tamaño de pedido de compra promedio debería comprometerse el minorista?

Se requieren 30 días de corridas. Adicionalmente, determinar la utilidad promedio.

Desarrollo de la simulación:La venta diaria es una variable aleatoria discreta que se genera a través de la técnica

de Montecarlo. Las demás variables y parámetros de costos se calcularán mediante:

Pedido = ventas del día anterior + pérdida del día anteriorSi ventas es menor que el pedido, entoncesel ingreso = (ventas)x (precio de ventas) y,el reembolso = pedido – ventas;En caso contrario,el ingreso = (pedido)x (precio de ventas) y,la pérdida = ventas – pedidoFin

La macro se desarrollará de acuerdo con dos procedimientos “DatosIniciales y “LIMPIAR”; por lo tanto, tiene las siguientes variables para ser declaradas como:

Vent (t) = ventas en unidades en el día t.Ped (t) = cantidad de pedido en el día t.Costcomp (t) = costo de compra en el día t.Ing (t) = ingresos en el día t.

Page 96: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

94

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Remb (t) = unidades de reembolsos en el día t.Perd (t) = pérdida en unidades en el día t.Costperd (t) = costo de la pérdida en el día t.Util (t) = utilidad en el día t.

Procedimiento 3.2. Macro que simula un sistema de inventario de pedido

único mediante la técnica de Montecarlo con los datos iniciales

Sub DatosIniciales ()Dim n, C, a As IntegerDim x(1000), P(1000) As Double, LI(1000), LS(1000), Acum(1000) As DoubleDim miu, V, V3, sigma As Double, Rango As RangeDim R(1000), Prom(1000) As Double, D(1000) As LongDim V2(1000) As Double, PC, PDV, PR, PER As DoubleActiveWindow.DisplayGridlines = FalseLIMPIARRange(“A1”).Select: ActiveCell.FormulaR1C1 = “TECNICA DE MONTECARLO”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Venta Diaria”Range(“B3”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Probabilidad Acumulada”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Limite Inferior de R”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Limite Superior de R”Range(“F3”).Select: ActiveCell.FormulaR1C1 = “Venta Diaria”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Nùmero de Días”Range(“H3”).Select: ActiveCell.FormulaR1C1 = “Nùmero Aleatorio”Range(“I3”). Select: ActiveCell.FormulaR1C1 = “Venta Simulada”Range(“J3”). Select: ActiveCell.FormulaR1C1 = “Tamaño del Pedido”Range(“K3”). Select: ActiveCell.FormulaR1C1 = “Costo de Pedido ($)”Range(“L3”).Select: ActiveCell.FormulaR1C1 = “Ganancia($)”Range(“M3”). Select: ActiveCell.FormulaR1C1 = “Unidades de Reembolsos”Range(“N3”). Select: ActiveCell.FormulaR1C1 = “Ingreso por Reembolsos”Range(“O3”). Select: ActiveCell.FormulaR1C1 = “Unidades de Pérdidas”Range(“P3”).Select: ActiveCell.FormulaR1C1 = “Pérdida($)”Range(“Q3”).Select: ActiveCell.FormulaR1C1 = “Utilidad($)”Range(“R3”).Select: ActiveCell.FormulaR1C1 = “Réplica Nùmero”Range(“S3”). Select: ActiveCell.FormulaR1C1 = “Promedios de la Utildad”Range(“T3”). Select: ActiveCell.FormulaR1C1 = “Varianza de Promedios de la Utilidad”Range(“A3”). Selectn = Val (InputBox (“DIGITE EL NÚMERO DE DATOS:”)): Cells (1, 7). Value = n

Page 97: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

95

Cole

cción

1

C = Val (InputBox (“DIGITE EL NÚMERO DE CORRIDAS (Días):”)): Cells (1, 8).Value = CRange(“A1:C1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).Select With Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A3:F” & (n + 3)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd WithRange(“A3:T3”).SelectSelection.Interior.ColorIndex = 6Range(“G3:Q” & (C + 4)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd Witha = Val(InputBox(“DIGITE EL NÙMERO DE REPLICAS:”)): Cells(1, 9).Value = aRange(“R3:T” & (a + 3)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium

Page 98: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

96

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd Withcomenzar:For i = 1 To nx(i) = Val (InputBox (“Introduzca el Valor de la Venta “& i)): Cells (3 + i, 1). Value = x(i)P(i) = InputBox (“Introduzca la Probabilidad de la Venta “& i): Cells (3 + i, 2). Value = P(i)If P(i) < 0 Or P(i) > 1 ThenMsgBox “ La probabilidad es incorrecta”, vbOKOnly, “ERROR”GoTo comenzarEnd IfIf i = 1 ThenAcum(i) = P(i)Cells(3 + i, 3).Value = Acum(i)LI(i) = 0: Cells(3 + 1, 4).Value = LI(i)LS(i) = P(i)Cells(3 + i, 5).Value = LS(i)Cells(3 + i, 6).Value = x(i)ElseAcum(i) = Acum(i - 1) + P(i)If (Acum(i) > 1) ThenMsgBox “ La probabilidad Acumulada es incorrecta”, vbOKOnly, “ERROR”GoTo comenzarEnd IfCells(3 + i, 3).Value = Acum(i)LI(i) = Acum(i - 1)Cells(3 + i, 4).Value = LI(i)Cells(3 + i, 5).Value = Acum(i)Cells(3 + i, 6).Value = x(i)End IfNext iRange(“A” & (n + 4)).Select: ActiveCell.FormulaR1C1 = “Precio de Compra”Range(“A” & (n + 5)).Select: ActiveCell.FormulaR1C1 = “Precio de Venta”Range (“A” & (n + 6)). Select: ActiveCell.FormulaR1C1 = “Precio Unitario de Reembolso”Range (“A” & (n + 7)). Select: ActiveCell.FormulaR1C1 = “Valor Unitario de Pérdida”Range (“A” & (n + 8)). Select: ActiveCell.FormulaR1C1 = “Media Poblacional”Range (“A” & (n + 9)). Select: ActiveCell.FormulaR1C1 = “Varianza Poblacional”PC = InputBox (“Digite el Valor del Precio de Compra:”): Cells (n + 4, 2). Value = PCPDV = InputBox (“Digite el Valor del Precio de Venta:”): Cells (n + 5, 2). Value = PDVPR = InputBox (“Digite el Valor Unitario del Reembolso:”): Cells (n + 6, 2). Value = PR

Page 99: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

97

Cole

cción

1

PER = InputBox (“Digite el Valor Unitario de la Pérdida:”): Cells (n + 7, 2). Value = PERRange(Cells(n + 4, 2), Cells(n + 7, 2)).SelectSelection.NumberFormat = “$#,##0.00”miu = Application.WorksheetFunction.SumProduct(Range(“A4:A” & (n + 3)), Range(“B4:B” & (n + 3)))Cells (n + 8, 2). Value = miu'Calculo de la varianzaV = 0For i = 1 To nV = V + ((x(i) - miu) ^ 2) * P(i)Next iCells(n + 9, 2).Value = V'Calculo de la desviación standardRange ("A" & (n + 10)). Select: ActiveCell.FormulaR1C1 = "Desviación Standard"sigma = Sqr(V): Cells(n + 10, 2).Value = sigmaColumns("A:T").ColumnWidth = 15: Rows(n + 6).RowHeight = 51Range(Cells(n + 4, 1), Cells(n + 10, 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(n + 4, 1), Cells(n + 10, 1)).SelectSelection.Interior.ColorIndex = 6Range("A3").SelectEnd Sub

Sub LIMPIAR() Range("AA1").Select Selection.Copy Range("A1:Z722").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range("A3").SelectEnd Sub

Page 100: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

98

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

El siguiente procedimiento se realiza de acuerdo con la macro anterior, denominada “DatosIniciales”.

Procedimiento 3.3. Macro que simula un sistema de inventario de pedido único

mediante la técnica de Montecarlo para generar la demanda y las demás variables

Sub GenerarDemanda()Dim Vent(0 To 1000) As Integer, Ped(0 To 1000) As Integer, CostComp(0 To 1000) As DoubleDim Remb(0 To 1000) As Integer, Ingremb(0 To 1000) As Double, Perd(0 To 1000) As IntegerDim Costperd(0 To 1000) As Double, Util(0 To 1000), Ing(0 To 1000) As Double, x As IntegerDim R(1000) As Double, Prom(1000) As Double, V2(1000) As Doublen = Cells(1, 7).Value: C = Cells(1, 8).Value: a = Cells(1, 9).Value‘Precio de compra, de Venta y de reembolso PC = Cells(n + 4, 2).Value: PDV = Cells(n + 5, 2).Value: PR = Cells(n + 6, 2).Value ‘Costo unitario de perdidaPER = Cells (n + 7, 2). Value‘Aplicacion de la tècnica de montecarloSet Rango = Worksheets(1).Range(“$D$4:$F$” & (n + 3))V3 = 0: Cells(4, 7).Value = 0Vent(0) = 20: Perd(0) = 3Cells(4, 9).Value = Vent(0): Cells(4, 15).Value = Perd(0)Range(“P1”).SelectFor j = 1 To aTexto = “REPLICA NUMERO “ + Str(j)Cells (j + 3, 18). Value = jMsgBox Texto, vbOKOnly, “RÉPLICAS”For x = 1 To CCells(x + 4, 7).Value = xR(x) = Rnd: Cells(x + 4, 8).Value = R(x)Vent(x) = Application.WorksheetFunction.VLookup(R(x), Rango, 3): Cells(x + 4, 9).Value = Vent(x)Ped(x) = Vent(x - 1) + Perd(x - 1): Cells(x + 4, 10).Value = Ped(x)CostComp(x) = Ped(x) * PC: Cells(x + 4, 11).Value = CostComp(x)Cells(x + 4, 11).NumberFormat = “$#,##0.00”If Vent(x) >= Ped(x) ThenIng(x) = Ped(x) * PDV: Cells(x + 4, 12).Value = Ing(x)Cells(x + 4, 12).NumberFormat = “$#,##0.00”Remb(x) = 0: Cells(x + 4, 13).Value = Remb(x)Ingremb(x) = 0: Cells(x + 4, 14).Value = Ingremb(x)Perd(x) = Vent(x) - Ped(x): Cells(x + 4, 15).Value = Perd(x)

Page 101: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

99

Cole

cción

1

Costperd(x) = Perd(x) * PER: Cells(x + 4, 16).Value = Costperd(x)Cells(x + 4, 16).NumberFormat = “$#,##0.00” SElseIng(x) = Vent(x) * PDV: Cells(x + 4, 12).Value = Ing(x)Cells(x + 4, 12).NumberFormat = "$#,##0.00"Remb(x) = Ped(x) - Vent(x): Cells(x + 4, 13).Value = Remb(x)Ingremb(x) = Remb(x) * PR: Cells(x + 4, 14).Value = Ingremb(x)Cells(x + 4, 14).NumberFormat = "$#,##0.00"Perd(x) = 0: Cells(x + 4, 15).Value = Perd(x)Costperd(x) = 0: Cells(x + 4, 16).Value = Costperd(x)End If'Càlculo de la UtilidadUtil(x) = Ing(x) - CostComp(x) + Ingremb(x) - Costperd(x)Cells(x + 4, 17).Value = Util(x)Cells(x + 4, 17).NumberFormat = "$#,##0.00"Next xProm(j) = Application.WorksheetFunction.Average(Range("Q5:Q" & (C + 4)))Cells(j + 3, 19).Value = Prom(j): Cells(j + 3, 19).NumberFormat = "0.00"V2(j) = Application.WorksheetFunction.Var_S(Range("Q5:Q" & (C + 4)))Cells(j + 3, 20).Value = V2(j): Cells(j + 3, 20).NumberFormat = "0.00"V3 = V3 + (j - 1) * V2(j)Next jRange ("A" & (n + 11)). Select: ActiveCell.FormulaR1C1 = "Promedio de Promedio de la Utilidad"Range ("A" & (n + 12)). Select: ActiveCell.FormulaR1C1 = "Varianza de Promedio de la Utilidad"Range ("A" & (n + 13)). Select: ActiveCell.FormulaR1C1 = "Desviacion Estand. de Promedio de la Utilidad"prom2 = Application.WorksheetFunction.Average(Range("S4:S" & (a + 3)))Cells(n + 11, 2).Value = prom2Cells(n + 12, 2).Value = V3 / (a * (n - 1))Cells(n + 13, 2).Value = Sqr(V3 / (a * (n - 1)))Range(Cells(n + 4, 1), Cells(n + 13, 1)).SelectSelection.Interior.ColorIndex = 6Range(Cells(n + 11, 1), Cells(n + 13, 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange("A3"). SelectEnd Sub

Page 102: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

100

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Simulación de un sistema inventario de punto de reorden con demanda y tiempo de entrega aleatorios mediante la técnica de Montecarlo

Para programar experimentos de simulación de inventarios, se considera el siguiente ejemplo.

Ejemplo 3.4

La demanda mensual y el tiempo de entrega (lead time) de un cierto producto son variables aleatorias discretas que siguen las siguientes distribuciones de probabilidades empíricas:

DemandaDemanda mensual Probabilidad

28 0,0131 0,0433 0,0836 0,0738 0,1239 0,0840 0,1042 0,1244 0,1345 0,0548 0,1050 0,0352 0,0555 0,02

Page 103: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

101

Cole

cción

1

Tiempo de entregaMes Probabilidad

1 0,302 0,403 0,30

El inventario inicial es de 150 unidades y se coloca un pedido de 200 unidades en forma fija para cada abastecimiento. El punto de reorden se considera de 80 unidades. La información con respecto a los costos relevantes es la siguiente:

Costos ValorPrecio de compra $50 / unidadCosto de ordenar $100 / orden

Costo unitario de almacenamiento $20 / unidad / mesCosto unitario de faltante $52 / unidad / mes

Realizar un experimento de simulación para 24 meses.

Para realizar la siguiente simulación, se deben considerar los siguientes aspectos:a. Variables Inv (t-1) = inventario inicial en el periodo t. Inv (t) = inventario final en el periodo t. B (t-1) = faltante inicial en el periodo t. B (t) = faltante final en el periodo t. D (t) = demanda aleatoria en el periodo t. Q (t) = tamaño de lote de pedido en el periodo t. Invneto (t) = inventario neto en el periodo t = Inv (t) – B (t). De acuerdo con las variables anteriores, se puede determinar una ecuación deno-

minada balance de inventario-demanda, como lo muestra la siguiente expresión: Inv (t) = inv (t-1) – B (t-1) + Q (t) + B (t) – D (t).

Page 104: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

102

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

b. Parámetros CT (t) = costo total en el periodo t. C (t) = costo unitario de compra en el periodo t. Co = costo de ordenar en el periodo t. Ch (t) = costo unitario de almacenamiento en el periodo t. Cs (t) = costo unitario de faltante en el periodo t. N = número de órdenes de compra. La ecuación del costo total será: CT (t) = C (t).Q (t) + Co.N + Ch (t).Inv (t) + Cs (t). B (t)

Por otro lado, se realizarán dos macros: una denominada “DemProb” y otra de “Inventario”; se llamará una macro del procedimiento 2.1, que borrará datos anteriores. La macro denominada Inventario llama a las dos macros anteriores. Se mostrarán a continuación las siguientes macros:

Procedimiento 3.3. Macro para determinar probabilidades mediante técnica de Montecarlo

Sub DemProb()‘Declaración de variablesDim miu, sigma As Double, rango As Range, D(1 To 2000) As IntegerDim x(1 To 2000) As Long, P(1 To 2000) As Double, Pe(1 To 2000) As DoubleDim Acum(2000) as Double, LI(2000),LS(2000) as DoubleDim V(1 To 2000) As Double, sigmacuad As Double, Te(1 To 2000) As IntegerDim n As Integer, NA As Variant, m As IntegerLimpiarRange(“B2”).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range (“D2”).Select: ActiveCell.FormulaR1C1 = “Prob. acumulada”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Cota inferior de Ri”Range(“F2”).Select: ActiveCell.FormulaR1C1 = “Cota Superior de Ri”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“B2:M2”).SelectSelection.Interior.ColorIndex = 45Rows(“2:2”).RowHeight = 45

Page 105: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

103

Cole

cción

1

Inicio:‘Captura de datosk = InputBox(“Cuántos datos de demanda o eventos a introducir: (No debe ser mayor que 2000)”)Cells(1, 1).Value = kIf (k > 2000) ThenGoTo InicioEnd If comenzar:For i = 1 To kx(i) = InputBox(“Cuál es el valor de la variable aleatoria D” & i)Cells(i + 2, 2).Value = x(i): Cells(i + 2, 7).Value = x(i)P(i) = InputBox(“Cuál es la probabilidad de la variable aleatoria D” & i)If P(i) < 0 Or P(i) > 1 ThenMsgBox “ La probabilidad es incorrecta”, vbOKOnly, “ERROR”GoTo comenzarEnd IfIf i = 1 ThenAcum(i) = P(i) : Cells(2 + i, 4).Value = Acum(i)LI(i) = 0: Cells(2 + i, 5).Value = LI(i)LS(i) = P(i): Cells(2 + i, 6).Value = LS(i)Cells(2 + i, 7).Value = X(i)ElseAcum(i) = Acum(i - 1) + P(i)If (Acum(i) > 1) ThenMsgBox “ La probabilidad Acumulada es incorrecta”, vbOKOnly, “ERROR”GoTo comenzarEnd IfCells(2 + i, 4).Value = Acum(i)LI(i) = Acum(i - 1)Cells(2 + i, 5).Value = LI(i)Cells(2 + i, 6).Value = Acum(i)Cells(2 + i, 7).Value = X(i)End IfNext iIf (Sum > 1) ThenRange(“B3:G” & (k + 3)).ClearContentsGoTo comenzarEnd Ifn = InputBox (“Cuál es el número de corridas:”): Cells (k + 4, 3). Value = miuRange (“B” & (k + 4)). Select: ActiveCell.FormulaR1C1 = “La media de la demanda”

Page 106: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

104

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

‘Cálculo de la varianzasigmacuad = 0For i = 1 To ksigmacuad = sigmacuad + ((x(i) - miu) ^ 2) * P(i)Next iRange(“B” & (k + 5)).Select: ActiveCell.FormulaR1C1 = “La varianza de demanda”Cells(k + 5, 3).Value = sigmacuadRange("B" & (k + 6)).SelectActiveCell.FormulaR1C1 = "La desviación Standard de la demanda"'Cálculo de la desviación standardsigma = Sqr(sigmacuad): Cells (k + 6, 3). Value = sigmaColumns("B:B").ColumnWidth = 13.71: Rows(k + 6).RowHeight = 51Range ("B" & (k + 7)). Select: ActiveCell.FormulaR1C1 = "El número de corrida es"Cells(k + 7, 3).Value = nRange("B" & (k + 8)).Select: ActiveCell.FormulaR1C1 = "Número de datos de demanda"Cells(k + 8, 3).Value = kRange("B" & (k + 9)).SelectActiveCell.FormulaR1C1 = "Número de datos del tiempo de entrega demanda"Range(Cells(k + 4, 2), Cells(k + 9, 3)).SelectSelection.Interior.ColorIndex = 24Range("H2").Select: ActiveCell.FormulaR1C1 = "Tiempo de entrega"Range("I2").Select: ActiveCell.FormulaR1C1 = "Probablidad"Range ("J2").Select: ActiveCell.FormulaR1C1 = "Prob. acumulada"Range("K2").Select: ActiveCell.FormulaR1C1 = "Cota inferior de Ri"Range("L2").Select: ActiveCell.FormulaR1C1 = "Cota Superior de Ri"Range("M2").Select: ActiveCell.FormulaR1C1 = "Tiempo de entrega"m = InputBox("Cuántos datos de tiempo de entrega a introducir: (No debe ser mayor que 2000)")If (m > 2000) ThenGoTo InicioEnd IfSum1 = 0Cells(k + 9, 3).Value = mFor i = 1 To mTe(i) = InputBox("Cuál es el valor del tiempo de entrega Te " & i)Cells(i + 2, 8).Value = Te(i)Cells(i + 2, 13).Value = Te(i)Pe(i) = InputBox("Cuál es la probabilidad del tiempo de entrega Te " & i)Cells(i + 2, 9).Value = Pe(i)Sum1 = Sum1 + Pe(i)Cells(i + 2, 10).Value = Sum1: Cells(i + 2, 12).Value = Sum1: Cells(i + 3, 11).Value = Sum1Next iCells(m + 3, 11).Value = ""End Sub

Page 107: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

105

Cole

cción

1

La macro que se mostrará a continuación simula el sistema de inventario de punto reorden con los siguientes aspectos:

a. Prepara una cuadrícula para el desarrollo de la simulación.b. Genera la demanda aleatoria mediante una instrucción de búsqueda.c. Genera el tiempo de entrega mediante una instrucción de búsqueda.d. Captura de datos como inventario inicial, tamaño de pedido, punto de reorden

y costos relevantes.e. Evalúa el inventario final si es menor que el punto de reorden para generar un

pedido con su respectiva orden.f. La espera del pedido coincide con el tiempo de entrega simulado.g. Calcula los costos totales.

Procedimiento 3.4. Macro para la simulación de un sistema de inventario

con distribución empírica mediante técnica de Montecarlo

Sub Inventario()Dim rango As Range, D(1 To 1000) As Integer, Te2(1 To 1000) As IntegerDim x(1 To 1000) As Long, P(1 To 1000) As Double, Pe(1 To 1000) As Double, m As IntegerDim INV(0 To 1000) As Long, B(0 To 1000) As Long, LT As Integer, Q As LongDim n As Integer, NA1 As Variant, NA2 As Variant, Invneto(1 To 1000) As LongDim rango2 As Range, r(1 To 1000) As Double, r2(1 To 1000) As DoubleDim CT(1 To 1000) As Double, PRO As Long, FOQ(1 To 1000) As LongActiveWindow.DisplayGridlines = FalseRange(“A1:S1000”).Select With Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End WithDemProbk = Worksheets(1).Cells(1, 1).Valuen = Worksheets(1).Cells(k + 7, 3).Value

Page 108: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

106

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

m = Worksheets(1).Cells(k + 9, 3).ValueRange(“I” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Mes”Range(“J” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Número aleatorio”Range(“K” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“L” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Tamaño del pedido”Range(“M” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Inventario final”Range(“N” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Faltante”Range(“O” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Orden”Range(“P” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Número de orden”Range(“Q” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Espera”Range(“R” & (m + 4)).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(Cells(m + 4, 9), Cells(m + 4, 18)).SelectSelection.Interior.ColorIndex = 45Range(“I” & (m + 5)).Select: ActiveCell.FormulaR1C1 = “Inicial”INV(0) = InputBox(“Digite el inventario inicial:”): Cells(m + 5, 13).Value = INV(0)B(0) = 0: Cells(m + 5, 14).Value = B(0)Q = InputBox(“Digite el tamaño del pedido:”): Cells(1, 4).Value = QRange(“C1”).Select: ActiveCell.FormulaR1C1 = “Tamaño del lote”PRO = InputBox(“Digite el punto de reorden:”): Cells(1, 6).Value = PRORange(“E1”).Select: ActiveCell.FormulaR1C1 = “Punto de reorden”Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(“C1:H1”).SelectSelection.Interior.ColorIndex = 24C = InputBox(“Digite el costo unitario de compra:”)Co = InputBox(“Digite el costo de ordenar:”)Ch = InputBox(“Digite el costo unitario de almacenamiento:”)Cs = InputBox(“Digite el costo unitario de faltante:”)Set rango = Worksheets(1).Range(“$E$3:$G$” & (k + 2))For i = 1 To nCells(i + m + 5, 9).Value = ir(i) = Rnd: Cells(i + m + 5, 10).Value = r(i): NA = Cells(i + m + 5, 10).ValueD(i) = Application.WorksheetFunction.VLookup(NA, rango, 3)Cells(i + m + 5, 11).Value = D(i)Next iRange(“E” & (k + 4)).Select: ActiveCell.FormulaR1C1 = “Número aleatorio”Range(“F” & (k + 4)).Select: ActiveCell.FormulaR1C1 = “TE simulado”Range(Cells(k + 4, 5), Cells(k + 4, 6)).SelectSelection.Interior.ColorIndex = 45 Set rango2 = Worksheets(1).Range(“$k$3:$M$” & (m + 2)) For i = 1 To n

Page 109: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

107

Cole

cción

1

r2(i) = Rnd: Cells(i + k + 4, 5).Value = r2(i): NA2 = Cells(i + k + 4, 5).Value Te2(i) = Application.WorksheetFunction.VLookup(NA2, rango2, 3) Cells(i + k + 4, 6).Value = Te2(i)Next ij = k + 5: cont = 0 For i = 1 To n INV(i) = Cells(i + m + 5, 13).Value: D(i) = Cells(i + m + 5, 11).Value FOQ(i) = Cells(i + m + 5, 12).Value: B(i) = Cells(i + m + 5, 14).Value INV(i) = INV(i - 1) - B(i - 1) + FOQ(i) + B(i) - D(i) If (INV(i) <= PRO) And (LT <= 0) Then cont = cont + 1: orden = 1 Cells(i + m + 5, 15).Value = orden: Cells(i + m + 5, 16).Value = cont Cells(i + m + 5, 17).Value = Cells(j, 6).Value j = j + 1: LT = Cells(i + m + 5, 17).Value If (i + m + 5 + (LT + 1)) <= n + m + 5 Then Cells(i + m + 5 + LT, 12).Value = Q End If Else Cells(i + m + 5, 15).Value = 0: Cells(i + m + 5, 16).Value = 0 Cells(i + m + 5, 17).Value = 0 End If If (INV(i) <= 0) Then Cells(i + m + 5, 13).Value = 0: Cells(i + m + 5, 14).Value = INV(i) * (-1) Else Cells(i + m + 5, 13).Value = INV(i): Cells(i + m + 5, 14).Value = 0 End If LT = LT - 1 Next i For i = 1 To n INV(i) = Cells(i + m + 5, 13).Value: D(i) = Cells(i + m + 5, 11).Value FOQ(i) = Cells(i + m + 5, 12).Value: B(i) = Cells(i + m + 5, 14).Value orden = Cells(i + m + 5, 15).Value CT(i) = C * FOQ(i) + Co * orden + Ch * INV(i) + Cs * B(i) Cells(i + m + 5, 18).Value = CT(i) Next i Cells(1, 8).Value = Application.Sum(Range(Cells(m + 6, 18), Cells(n + m + 5, 18))) Range(Cells(m + 6, 18), Cells(n + m + 5, 18)).Select Selection.NumberFormat = "$ #,##0.00" Range("H1").Select Selection.NumberFormat = "$ #,##0.00" Columns("H:H").ColumnWidth = 14.71 Range("H1").SelectEnd Sub

Page 110: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

108

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejercicios

1. Un voceador compra periódicos al precio $400 por cada uno y los vende a $1000 la unidad. Al final de cada día, el distribuidor de periódicos le pagará $200 por cada periódico que no haya vendido. La demanda diaria de los periódicos tiene la siguiente distribución de probabilidad:

Probabilidad Demanda diaria0,08 750,07 800,02 850,20 900,09 950,19 1000,12 1050,03 1100,14 1150,06 120

Use la técnica de Montecarlo para determinar el número óptimo de periódicos que el voceador debe ordenar de cada día y el ingreso o las pérdidas diarias que tienen lugar simulando 30 días. (La venta del día 0 fue 65)

2. Considérese una empresa dedicada al alquiler de automóviles por un día. Esta empresa dispone de 10 automóviles, siendo el costo de alquiler de $10.000 por día. A veces, la empresa necesita subcontratar automóviles de otra empresa, ya que tiene una demanda superior de los 10 automóviles de que dispone. Esta subcontratación le cuesta $15.000 diarios, en caso de conseguirla. Cuando no es así y no consigue subcontratar tantos automóviles como para garantizar la demanda de servicio, entonces sufre una pérdida de $80.000 por servicio no cumplido. El experimento de simulación debe tener en los siguientes:

Page 111: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

109

Cole

cción

1

a. El número de días simulados es 24. b. El número de automóviles disponibles por día.c. Demanda diaria de automóviles.d. El número de automóviles que se necesita alquilar por día.e. El número de automóviles que se puede subcontratar por día.f. El número de automóviles contratados por día.g. El número de automóviles faltantes por día.h. El costo promedio.

Las tablas siguientes muestran las demandas diarias de automóviles, así como la oferta diaria de automóviles factibles de subcontratación (outsourcing).

Demanda diaria de automóviles Probabilidad Oferta diaria de automóviles

subcontratados Probabilidad

5 0,03 0 0,046 0,04 1 0,108 0,06 2 0,2110 0,07 3 0,2312 0,09 4 0,2013 0,13 5 0,1414 0,13 6 0,0815 0,1216 0,1018 0,1019 0,0920 0,04

3. Una pieza se ensambla en una línea de ensamblaje de una estación. Debido a la variabilidad en los materiales, el tiempo en la estación es una variable aleatoria con distribución de probabilidad empírica igual al tiempo entre llegadas. El siguiente cuadro muestra la distribución de probabilidad del tiempo en la estación y el tiempo entre llegadas.

Page 112: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

110

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Variable tiempo entre llegadas (min) Probabilidad Variable tiempo de operación

(min) probabilidad

1 0,05 1 0,202 0,10 2 0,35

2,5 0,20 3 0,274 0,05 4 0,185 0,456 0,15

Se requiere determinar: a. Número de pieza en el sistema.b. Número de pieza en la cola.c. Tiempo promedio que una pieza permanece en el sistema.d. Tiempo promedio que una pieza espera ser atendida.e. Porcentaje de inactividad y porcentaje de utilización de las estaciones.f. Cuánto tiempo tomará el proceso de 30 piezas.

4. Una empresa produce un determinado producto cuya demanda diaria es una variable aleatoria con distribución de probabilidad empírica. El sistema de ordenar la producción es mediante el número de periodos de anticipación, cuyo tamaño del lote es la suma de la cantidad demandada durante el periodo de anticipación. Este periodo es también una variable aleatoria con distribución de probabilidad empírica.

El siguiente cuadro muestra la distribución de probabilidad de la demanda y tiempo de anticipación.

Demanda diaria Probabilidad Días de anticipación probabilidad10 0,130 2 0,3020 0,241 3 0,4030 0,270 4 0,30

Page 113: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS MEDIANTE LA TéCNIC A DE MONTEC ARLO

111

Cole

cción

1

Demanda diaria Probabilidad Días de anticipación probabilidad40 0,18050 0,09060 0,03670 0,01280 0,04090 0,001

Se fija el punto reorden (punto de nuevo pedido) de 110 unidades con un inven-tario inicial 190 unidades. Se supone que cada producido tiene un costo de $1.500, el costo de alistamiento es de $6.000 por cada orden de producción, el costo de mantenimiento del inventario es $84 por cada unidad por día y el costo unitario de faltante es $1.500 por cada unidad por día. Simular este problema de producción para 30 días.

5. Una célula de manufactura está compuesta por un operario que atiende una cortadora automática (sierra mecánica) y dos tornos CNC idénticos en paralelo. Esta célula está conformada para producir una pieza determinada. El tiempo de operación de cortado y torneado es una variable aleatoria que tiene una distribución de probabilidad empírica, debido a la variabilidad de las dimensiones de la pieza, como lo muestran los siguientes cuadros.

Tiempo de operación de la cortadora (min)

Tiempo de operación del torno (min)

Tiempo entre llegadas de la pieza

Tiempo Probabilidad Tiempo Probabilidad Tiempo Probabilidad2 0,05 8 0,10 12 0,105 0,20 10 0,20 20 0,3010 0,35 15 0,30 24 0,1512 0,30 18 0,20 35 0,2514 0,10 20 0,15 45 0,20

22 0,05

Page 114: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

112

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

El tiempo entre llegadas de la pieza a la recepción es también una variable aleatoria que tiene una distribución de probabilidad empírica, como lo muestra el cuadro anterior. Suponga que entre máquinas no se permite inventario amortiguador. Por consiguiente, el tornero 1 o el tornero 2 deben esperar a que el cortador termine su trabajo antes de que pueda comenzar la estación de torneado.

Se requiere determinar: a. Número de pieza en el sistema.b. Número de pieza en la cola.c. Tiempo promedio que una pieza permanece en el sistema.d. Tiempo promedio que una pieza espera ser atendida.e. Porcentaje de inactividad y porcentaje de utilización de las estaciones.f. Cuánto tiempo tomará el proceso de 30 piezas.

Page 115: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

4Generación de variables aleatorias continuas

Método de la transformada inversa

El método de la transformada inversa puede utilizarse para simular variables aleatorias continuas, lo cual se logra mediante la función acumulativa F(x) y la generación de números aleatorios. El método consiste en:

a. Definir la función de densidad f(x) que represente la variable a modelar.b. Calcular la función acumulativa F(x).c. Despejar la variable aleatoria X y obtener la función acumulada inversa F-1 (R). d. Generar variables aleatorias x, sustituyendo los valores con números aleatorios

en función acumulada inversa.

R = número aleatorio.F(x) = función acumulada de la probabilidad. Entonces:

Despejando la x se tiene:

Page 116: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

114

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de variables aleatorias mediante una distribución empírica

Supóngase que la variable aleatoria x tiene una función de densidad de probabilidad:

Si 0 ≤ x ≤ 6

Integrando la función e igualando a R se tiene: (¡Verifíquese!)

Generación de variables aleatorias mediante macro de Excel

Para generar esta macro, se tiene en cuenta:a. Llamar una macro denominada Procedimiento 2.1.b. Crear un botón de comando de los controles de formulario.

Denotaciones R = números aleatorios a generar por la función estadística Rnd.X = variable aleatoria a generar de acuerdo con la fórmula.

Se mostrará a continuación un procedimiento que genera una variable aleatoria con distribución de probabilidad empírica:

Page 117: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

115

Cole

cción

1

Procedimiento 4.1. Macro para generar una variable aleatoria empírica

Sub Generar variables() Dim x As Double Limpiar ActiveWindow.DisplayGridlines = False Range(“A1:H200”).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Font.Bold = True .WrapText = TrueEnd With n = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = n k = InputBox(“Digite el número de réplicas:”)Range(“B8:D8,G8:H8”).Select Selection.Interior.ColorIndex = 24 Range(“B9:D” & (n + 8)).Select Selection.Interior.ColorIndex = 19 Range(“G9:H” & (k + 8)).Select Selection.Interior.ColorIndex = 19 Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida” Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios” Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria” Range (“G8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.” Range(“H8”).Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range(Cells(n + 9, 3), Cells(n + 9, 4)).SelectSelection.Interior.ColorIndex = 20Range(Cells(k + 9, 7), Cells(k + 11, 8)).SelectSelection.Interior.ColorIndex = 20 Range(“C” & (n + 9)).Select: ActiveCell.FormulaR1C1 = “Promedio” Range(“G” & (k + 9)).Select: ActiveCell.FormulaR1C1 = “Promedio” Range(“G” & (k + 10)).Select: ActiveCell.FormulaR1C1 = “Varianza” Range(“G” & (k + 11)).Select: ActiveCell.FormulaR1C1 = “Desviación Estándar”For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R M = 30 * R - 27 x = Round(3 + Application.WorksheetFunction.Power(M, (1 / 3)), 3) Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i

Page 118: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

116

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(n + 9, 4).Value = Round(Application.Average(Range("D9:D" & (n + 8))), 3) Cells(i + 8, 8) = Cells(n + 9, 4)Next iCells(k + 9, 8).Value = Round(Application.Average(Range("H9:H" & (k + 8))), 3)Cells(k + 10, 8).Value = Round(Application.Var(Range("H9:H" & (k + 8))), 3)Cells(k + 11, 8).Value = Round(Application.StDev(Range("H9:H" & (k + 8))), 3)Range("A1").SelectEnd Sub

Generación de variables aleatorias mediante la distribución exponencial

La distribución exponencial desempeña un papel importante en la descripción de una gran clase de fenómenos y procesos estocásticos, especialmente en el área de la teoría de confiabilidad, nacimientos y muerte, accidentes, líneas de espera y eventos en un inter-valo muy corto, por mencionar solo algunos. La función de densidad de probabilidad de la distribución exponencial es la siguiente:

Si x ≥ a

Para generar su variable aleatoria se tiene en cuenta:a = mínimo del valor de la variable x

media =

varianza =

moda = ala función acumulativa es:

; donde se tiene:

Page 119: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

117

Cole

cción

1

Cuando a = 0, la función de densidad de probabilidad de la distribución exponencial es la siguiente:

; X 0≥La función acumulativa es:

F(x) = dx = 1- ; donde: R = 1- , entonces: = 1 – R y Ln ( ) = Ln (1 – R); -λx = Ln (1 – R); por tanto, se tiene:

El cuadro anterior es el procesador para generar variables exponenciales con los siguientes parámetros:

a. E(x) = , que es la media de la distribución; por tanto, la fórmula para generar la variable será:

X =

V(X) = , que es la varianza de la distribución exponencial.

Page 120: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

118

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 4.1. Función de densidad de probabilidad y distribución acumulativa de la exponencial

Ejemplo 4.1

Generar 20 variables exponenciales con 10 réplicas, si la media es 2,5. El siguiente proce-dimiento es para generar variables exponenciales sin el valor mínimo (a = 0).

Procedimiento 4.2. Macro para generar variables exponenciales sin el valor mínimo

Sub GenerarvariablesExponenciales() Dim x As Double, EX As Double, n As Integer, k As Integer, promedio As Double Limpiar ActiveWindow.DisplayGridlines = False Range(“A1:J200”).Select With Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End With

Page 121: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

119

Cole

cción

1

n = InputBox("Digite el número de corridas:") Cells(1, 1).Value = n k = InputBox("Digite el número de réplicas:") EX = InputBox("Introduzca el valor medio de la exponencial:")Range("B8:D8,G8:H8").SelectSelection.Interior.ColorIndex = 24Range("B9:D" & (n + 8)).SelectSelection.Interior.ColorIndex = 19Range("G9:H" & (k + 8)).SelectSelection.Interior.ColorIndex = 19Range("B8").Select: ActiveCell.FormulaR1C1 = "Número de corrida"Range("C8").Select: ActiveCell.FormulaR1C1 = "Números aleatorios"Range("D8").Select: ActiveCell.FormulaR1C1 = "Variable aleatoria"Range ("G8").Select: ActiveCell.FormulaR1C1 = "Réplica Num."Range("H8").Select: ActiveCell.FormulaR1C1 = "Promedio de variable"Range(Cells(n + 9, 3), Cells(n + 10, 4)).SelectSelection.Interior.ColorIndex = 20Range(Cells(k + 9, 7), Cells(k + 11, 8)).SelectSelection.Interior.ColorIndex = 20Range("C" & (n + 9)).Select: ActiveCell.FormulaR1C1 = "La media"Range("C" & (n + 10)).Select: ActiveCell.FormulaR1C1 = "La Varianza"Range("G" & (k + 9)).Select: ActiveCell.FormulaR1C1 = "Promedio"Range("G" & (k + 10)).Select: ActiveCell.FormulaR1C1 = "Varianza"Range("G" & (k + 11)).Select: ActiveCell.FormulaR1C1 = "Desviación Estándar"For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R x = (-1 * EX) * (Application.Ln(1 - R)): Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i Cells(n + 9, 4).Value = EX: Cells(n + 10, 4).Value = (EX) ^ 2 promedio = Application.Average(Range("D9:D" & (n + 8))): Cells(i + 8, 8) = promedioNext iCells(k + 9, 8).Value = Application.Average(Range("H9:H" & (k + 8)))Cells(k + 10, 8).Value = Application.Var(Range("H9:H" & (k + 8)))Cells(k + 11, 8).Value = Application.StDev(Range("H9:H" & (k + 8)))Cells(1, 1).SelectEnd Sub

Page 122: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

120

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de variables exponenciales mediante macro de Excel con el valor mínimo

La macro que se mostrará a continuación simula para generar 20 variables exponencia-les con el valor mínimo de 5 y valor de lambda de 10, con los siguientes aspectos:

a. Genera la variable aleatoria exponencial mediante el procesador de variables, vista anteriormente.

b. Captura de datos como lambda y el valor mínimo.

Procedimiento 4.3. Macro para generar variables exponenciales con el valor mínimo

Sub Exponencial Mínimo()Dim x, lambda, a As Double, n As Integer, k As Integer, promedio As DoubleLimpiarActiveWindow.DisplayGridlines = FalseCells. Select With Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd Withn = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nk = InputBox(“Digite el número de réplicas:”)a = InputBox(“Digite el valor mínimo de la variable:”): Cells(n + 11, 4).Value = alambda = InputBox(“Introduzca el valor Lambda:”): Cells(n + 12, 4).Value = lambdaRange(“B8:D8, G8:H8”).Select: Selection.Interior.ColorIndex = 24Range(“B9:D” & (n + 8)).Select: Selection.Interior.ColorIndex = 19Range(“G9:H” & (k + 8)).Select: Selection.Interior.ColorIndex = 19Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.”Range(“H8”).Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range(Cells(n + 9, 3), Cells(n + 12, 4)).SelectSelection.Interior.ColorIndex = 20

Page 123: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

121

Cole

cción

1

Range(Cells(k + 9, 7), Cells(k + 11, 8)).SelectSelection.Interior.ColorIndex = 20Range("C" & (n + 9)).Select: ActiveCell.FormulaR1C1 = "La media"Range("C" & (n + 10)).Select: ActiveCell.FormulaR1C1 = "La Varianza"Range("C" & (n + 11)).Select: ActiveCell.FormulaR1C1 = "Valor Mínimo"Range("C" & (n + 12)).Select: ActiveCell.FormulaR1C1 = "Valor Lambda"Range("G" & (k + 9)).Select: ActiveCell.FormulaR1C1 = "Promedio"Range("G" & (k + 10)).Select: ActiveCell.FormulaR1C1 = "Varianza"Range("G" & (k + 11)).Select: ActiveCell.FormulaR1C1 = "Desviación Estándar"For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R x = ((-1) * (Application.Ln(1 - R)) + lambda * a) / lambda: Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i Cells(n + 9, 4).Value = a + (1 / lambda): Cells(n + 10, 4).Value = (1 / lambda) ^ 2 promedio = Application.Average(Range("D9:D" & (n + 8))): Cells(i + 8, 8) = promedioNext iCells(k + 9, 8).Value = Application.Average(Range("H9:H" & (k + 8)))Cells(k + 10, 8).Value = Application.Var(Range("H9:H" & (k + 8)))Cells(k + 11, 8).Value = Application.StDev(Range("H9:H" & (k + 8)))Range("A1").SelectEnd Sub

Page 124: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

122

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de variables aleatorias mediante la distribución uniforme

La función de densidad de probabilidad de la distribución uniforme es la siguiente:

a = cota inferior del intervalob = cota superior del intervalo

La función acumulativa es:

Integrando, se tiene:

Despejando la variable x:

x = a + (b – a )R

El cuadro anterior indica la fórmula para generar variables uniformes con los siguientes parámetros:

La gráfica de la distribución de probabilidad de la distribución uniforme es la siguiente:

Page 125: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

123

Cole

cción

1

Figura 4.2. Funcion de dendidad de probabilidad y distribución acumulativa de la uniforme

Generación de variables uniformes mediante macro de Excel

Se parte de un ejemplo para que sea más comprensible la macro para generar variables uniformes.

Ejemplo 4.2

Se requiere generar variables uniformes, siendo el valor de la cota inferior del intervalo igual a 12 y el valor de la cota superior del intervalo igual a 36. La macro que se mostrará a continuación simula para generar variables uniformes con los siguientes aspectos:

a. Captura el número de corridas.b. Captura el número de réplicas.c. Captura el límite inferior.d. Captura el límite superior.e. Mediante fórmula, se genera la variable aleatoria uniforme.

Page 126: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

124

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 4.4. Macro para generar variables uniformes

Sub GenerarvariablesUniformes()Dim x As Double, a As Double, b As Double, n As Integer, k As Integer, promedio As DoubleLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nCells.Select With Selection .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End Withk = InputBox(“Digite el número de réplicas:”)a = InputBox(“Introduzca el valor del límite inferior (a):”): Cells(n + 11, 4).Value = ab = InputBox(“Introduzca el valor del límite superior (b):”): Cells(n + 12, 4).Value = bRange(“B8:D8,G8:H8”).Select: Selection.Interior.ColorIndex = 24Range(“B9:D” & (n + 8)).Select: Selection.Interior.ColorIndex = 19Range(“G9:H” & (k + 8)).Select: Selection.Interior.ColorIndex = 19Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.”Range(“H8”).Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range(Cells(n + 9, 3), Cells(n + 12, 4)).Select: Selection.Interior.ColorIndex = 20Range(Cells(k + 9, 7), Cells(k + 11, 8)).Select: Selection.Interior.ColorIndex = 20Range(“C” & (n + 9)).Select: ActiveCell.FormulaR1C1 = “La media”Range(“C” & (n + 10)).Select: ActiveCell.FormulaR1C1 = “La Varianza”Range(“C” & (n + 11)).Select: ActiveCell.FormulaR1C1 = “Limite inferior”Range(“C” & (n + 12)).Select: ActiveCell.FormulaR1C1 = “Limite superior”Range(“G” & (k + 9)).Select: ActiveCell.FormulaR1C1 = “Promedio”Range(“G” & (k + 10)).Select: ActiveCell.FormulaR1C1 = “Varianza”Range(“G” & (k + 11)).Select: ActiveCell.FormulaR1C1 = “Desviación Estándar”For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R: x = a + (b - a) * R: Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i

Page 127: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

125

Cole

cción

1

Cells(n + 9, 4).Value = ((a + b) / 2): Cells(n + 10, 4).Value = (((b - a) ^ 2) / 12) promedio = Application.Average(Range("D9:D" & (n + 8))): Cells(i + 8, 8) = promedioNext iCells(k + 9, 8).Value = Application.Average(Range("H9:H" & (k + 8)))Cells(k + 10, 8).Value = Application.Var(Range("H9:H" & (k + 8)))Cells(k + 11, 8).Value = Application.StDev(Range("H9:H" & (k + 8)))Cells(1, 1).SelectEnd Sub

Ejemplo 4.3

Control de la producción. Una empresa necesita para su producción dos tipos de piezas, A y B, que recibe de fabricantes distintos. La pieza A es de forma cilíndrica y la longitud de su radio, R1, según el fabricante, es una variable aleatoria con distribución expo-nencial cuya media es 20 mm. Esta pieza debe introducirse en otra pieza B de interior circular y radio aleatorio R2; según el fabricante de la pieza B, la variable aleatoria R2 es una distribución uniforme con valor mínimo de 25 mm y valor máximo de 30 mm

La empresa está interesada en conocer la proporción de piezas que se deberán desechar de ambos tipos. Se entienden como piezas desechables aquellas piezas tales que dada una cualquiera de las desechables del tipo A, con radio R1( i ), no se pueda encontrar otra, j, entre las desechables del tipo B con radio R2 ( j ), de tal forma que:

R2 (j) – R1 (i) > 0

Generación de radios aleatorios mediante macro de Excel. El procedimiento de la simulación se realizará de acuerdo con los siguientes aspectos:

1. Fijar el número de piezas, K, de ambos tipos, para las que realizará la simulación.2. Simular K valores tanto de la variable aleatoria R1 como de la R2. Estos valores se

designarán por R1( i ) y R2( j ), i = 1,2,3,…..K y j = 1,2,3,…..K3. Generar la variable aleatoria exponencial y la variable uniforme de acuerdo con

las especificaciones del ejemplo.

Page 128: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

126

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

4. Captura de datos como la media de la exponencial y los límites tanto inferior como superior de la uniforme.

5. Crea una función (Función), que es un procedimiento para determinar el loga-ritmo natural (Ln)

Procedimiento 4.5. Macro para generar variables exponenciales y uniformes

Sub GeneraRadios()Dim Rad1, Rad2, Dif, Porc As Double, k, sum, De As IntegerDim media, a, b As SingleDim R1, R2 As DoubleRange(“A1:I200”).ClearContentsActiveWindow.DisplayGridlines = FalseCells.Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Font.Name = “Arial” .Font.Bold = True End Withk = InputBox(“Digite el número de corridas:”): Cells(1, 2).Value = kRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Rep = InputBox(“Digite el número de réplicas:”)media = InputBox(“Digite la media del radio 1”): Cells(2, 2).Value = mediaRange(“A2”).Select: ActiveCell.FormulaR1C1 = “Valor de la media del radio 1”a = InputBox(“Introduzca el valor mínimo del radio 2”): Cells(1, 4).Value = aRange(“C1”).Select: ActiveCell.FormulaR1C1 = “Valor mínimo del radio 2”b = InputBox(“Introduzca el valor máximo del radio 2”): Cells(2, 4).Value = bRange(“C2”).Select: ActiveCell.FormulaR1C1 = “Valor máximo del radio 2”Range(“A1:D2”).Select: Selection.Interior.ColorIndex = 24Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Números de piezas”Range(“B3”).Select: ActiveCell.FormulaR1C1 = “Números Aleatorios de pieza A”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Radio de la pieza A”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Números Aleatorios de pieza B”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Radio de la pieza B”Range(“F3”).Select: ActiveCell.FormulaR1C1 = “Estado”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de defectuosos”

Page 129: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

127

Cole

cción

1

Range ("H3").Select: ActiveCell.FormulaR1C1 = "Réplica Num."Range("I3").Select: ActiveCell.FormulaR1C1 = "Porcentaje Promedio"Range("H" & (Rep + 4)).Select: ActiveCell.FormulaR1C1 = "Porcentaje"Range(Cells(Rep + 4, 8), Cells(Rep + 4, 9)).Select: Selection.Interior.ColorIndex = 19Range("A3:I3").Select: Selection.Interior.ColorIndex = 45For i = 1 To Rep sum = 0 For j = 1 To k Cells(j + 3, 1).Value = j R1 = Rnd: Cells(j + 3, 2).Value = R1 Rad1 = (-media) * Ln(1 - R1): Cells(j + 3, 3).Value = Round(Rad1, 2) R2 = Rnd: Cells(j + 3, 4).Value = R2 Rad2 = a + (b - a) * R2: Cells(j + 3, 5).Value = Round(Rad2, 2) Dif = Rad2 - Rad1 If (Dif > 0) Then Cells(j + 3, 6) = "No Desechable" Else Cells(j + 3, 6) = "Desechable" De = 1 sum = sum + De End If Next j Porc = sum / k: Cells(4, 7).Value = Porc Cells(i + 3, 8).Value = i Cells(i + 3, 9).Value = Cells(4, 7).ValueNext i Cells(Rep + 4, 9).Value = Application.Average(Range("I4:I" & (Rep + 4))) Range("G4,I" & (Rep + 4)).Select Selection.NumberFormat = "0.00%"End SubFunction Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Ejemplo 4.4

Programa Maestro de Producción, MPS. Supóngase que una empresa produce un determinado artículo cuya demanda mensual se comporta como una variable aleatoria distribuida uniformemente entre 900 y 2000 unidades. Los días hábiles también son una

Page 130: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

128

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

variable aleatoria distribuida uniformemente entre 20 y 22 días, y el tiempo unitario de producción es una variable aleatoria distribuida uniformemente entre 4 y 6 horas-hom-bre. La empresa cuenta con 40 trabajadores inicialmente, trabajando a una jornada de 8 horas diarias. La estrategia de fabricación consiste en producir tiempo extra, si los faltantes exceden 1000 unidades; en caso contrario, se produce de acuerdo con su capacidad de producción real.

Los costos relevantes que intervienen en este escenario son:Costo unitario de producción……………... $8 por unidad.a. Costo unitario de almacenamiento…… $3 por unidad por mes.b. Costo unitario de faltantes por mes…... $10 por unidad por mes.

La información de capacidad es:Inventario inicial en unidades………….. 300 unidades.a. El tiempo extra es el 25% del tiempo normal.

Para programar experimentos de simulación para 30 meses con este ejemplo, se debe tener en cuenta:

La capacidad de la producción real se obtiene:CDT = capacidad disponible total (horas-hombres por periodo).CDW = capacidad disponible por trabajador (horas por periodo).JL = jornada laboral (horas diarias).DH = días hábiles al mes.TS = tiempo unitario de producción (horas-hombres).W = número de trabajadores.PROD = producción en tiempo normal (unidades).

CDW = (JL) x (DH)CDT = (W)x(CDW)

Page 131: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

129

Cole

cción

1

a. El inventario final del periodo. Este inventario final se obtiene: Inventario final = inventario inicial – faltante inicial + producción + faltante

final – demanda. Si el inventario final resulta negativo, se considera como un faltante.b. El tiempo de retraso en días, que se determina mediante:

DH = días hábiles

c. La eficiencia de producción se calcula mediante:

Procedimiento 4.6. Macro para un programa maestro de producción

Sub Produccion()Dim a As Integer, b As Integer, Dem(1 To 1000) As LongDim Falt(0 To 1000) As Long, Prom As Long, Prod(1 To 1000) As Long, TE(1 To 1000) As LongDim sum As Long, Inv(0 To 1000) As Long, Real(1 To 1000) As LongDim Retr(1 To 1000) As Double, Efic(1 To 1000) As Double, Ts(1 To 1000) As DoubleDim JL As Integer, DH(1 To 1000) As Integer, W As Integer, CDT(1 To 1000) As Double, Tsm As DoubleDim C As Double, CUA As Double, CUF As Double, K As Integer, R1(1 To 1000) As DoubleDim R2(1 To 1000) As Double, R3(1 To 1000) As Double, CT(1 To 1000) As DoubleActiveWindow.DisplayGridlines = FalseRange(“A7:K2000”).ClearContentsRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Simulacion de Produccion”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Jornada Laboral”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Número de Periodos”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Número de Trabajadores”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Demanda Mínima”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Demanda Máxima”Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Días hábiles Mínimo”

Page 132: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

130

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Días hábiles Máximo”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Inventario Inicial”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Costo Unitario de Producción ($)”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Costo Unitario de Almacenamiento ($)”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Costo unitario de Faltante($)”Range(“G4”).Select: ActiveCell.FormulaR1C1 = “Costo Total($)”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Periodos”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “Días Hábiles Generados”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Demanda Generada”Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Producción en Tiempo Normal”Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Producción en Tiempo Extra”Range(“F5”).Select: ActiveCell.FormulaR1C1 = “Inventario Final”Range(“G5”).Select: ActiveCell.FormulaR1C1 = “Faltantes Finales”Range(“H5”).Select: ActiveCell.FormulaR1C1 = “Periodos de Retraso de Pedidos pendientes”Range(“I5”).Select: ActiveCell.FormulaR1C1 = “Eficiencia”K = InputBox(“Digite el número de periodos:”)Cells(3, 2).Value = KRange(“A1:H1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A2:H4,A5:I” & (K + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd WithRange(“A2:A4,C2:C4,E2:E4,G2:G4”).SelectSelection.Interior.ColorIndex = 44

Page 133: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

131

Cole

cción

1

Range(“A5:I5”).SelectSelection.Interior.ColorIndex = 6JL = InputBox(“Introduzca la jornada laboral:”): Cells(2, 2).Value = JLW = InputBox(“Digite el número de trabajadores:”): Cells(4, 2).Value = Wa = InputBox(“Digite el limite inferior de la demanda:”): Cells(2, 4).Value = ab = InputBox(“Digite el limite superior de la demanda:”): Cells(3, 4).Value = ba1 = InputBox(“Digite el limite inferior de los días hábiles:”): Cells(4, 4).Value = a1b1 = InputBox(“Digite el limite superior de los días hábiles:”): Cells(2, 6).Value = b1a2 = InputBox(“Digite el limite inferior del tiempo unitario de producción:”)b2 = InputBox(“Digite el limite superior del tiempo unitario de producción:”)Inv(0) = InputBox(“Introduzca el inventario inicial:”): Cells(3, 6).Value = Inv(0)C = InputBox(“Digite el costo unitario de producción:”): Cells(4, 6).Value = CCUA = InputBox(“Introduzca el costo unitario de almacenamiento:”): Cells(2, 8).Value = CUACUF = InputBox(“Introduzca el costo unitario de faltante:”): Cells(3, 8).Value = CUFRange(“A6”).SelectActiveCell.FormulaR1C1 = “Inicial”Range(“A” & (K + 7)).Select: ActiveCell.FormulaR1C1 = “Total”Cells(6, 6).Value = Inv(0): Falt(0) = 0Cells(6, 7).Value = Falt(0)For i = 1 To KCells(i + 6, 1).Value = iR1(i) = RndDH(i) = a1 + (b1 - a1) * R1(i): Cells(i + 6, 2).Value = Round(DH(i), 0)R2(i) = RndDem(i) = a + (b - a) * R2(i): Cells(i + 6, 3).Value = Round(Dem(i), 0)sum = sum + Dem(i)R3(i) = Rnd: Ts(i) = a2 + (b2 - a2) * R3(i)Next iCells(K + 7, 3) = Round(sum, 0)For i = 1 To KCDT(i) = W * JL * DH(i)Prod(i) = Round((CDT(i) / Ts(i)), 0): Cells(i + 6, 4).Value = Prod(i)Next iFor i = 1 To KDem(i) = Cells(i + 6, 3).Value: Prod(i) = Cells(i + 6, 4).ValueTE(i) = Cells(i + 6, 5).Value: Inv(i) = Cells(i + 6, 6).ValueFalt(i) = Cells(i + 6, 7).Value: Retr(i) = Cells(i + 6, 8).ValueEfic(i) = Cells(i + 6, 9).ValueInv(i) = Inv(i - 1) - Falt(i - 1) + Prod(i) + TE(i) + Falt(i) - Dem(i)If (Inv(i) >= 0) Then

Page 134: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

132

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(i + 6, 6).Value = Inv(i)Falt(i) = 0: Cells(i + 6, 7).Value = Falt(i)TE(i) = 0: Cells(i + 6, 5).Value = TE(i)ElseFalt(i) = (-1) * (Inv(i)): Cells(i + 6, 7).Value = Falt(i)Cells(i + 6, 6).Value = 0TE(i) = 0: Cells(i + 6, 5).Value = TE(i)If Falt(i) > 1000 ThenTE(i) = 0.25 * (Prod(i)): Cells(1 + 6, 5).Value = TE(i)Inv(i) = Inv(i - 1) - Falt(i - 1) + Prod(i) + TE(i) + Falt(i) - Dem(i)If (Inv(i) >= 0) ThenCells(i + 6, 6).Value = Inv(i)Falt(i) = 0: Cells(i + 6, 7).Value = Falt(i)TE(i) = 0: Cells(i + 6, 5).Value = TE(i)ElseFalt(i) = (-1) * (Inv(i)): Cells(i + 6, 7).Value = Falt(i)Cells(i + 6, 6).Value = 0TE(i) = 0: Cells(i + 6, 5).Value = TE(i)End IfEnd IfEnd IfRetr(i) = (Falt(i) / Prod(i)) * DH(i): Cells(i + 6, 8).Value = Round(Retr(i), 1)Efic(i) = Dem(i) / (Prod(i) + TE(i)): Cells(i + 6, 9).Value = Efic(i)Next i Range("I7:I" & (K + 6)).Select Selection.NumberFormat = "0.00%"Range("A2").Selectsuma = 0For i = 1 To KCT(i) = C * Prod(i) + CUA * Inv(i) + CUF * Falt(i)suma = suma + CT(i)Next iCells(4, 8).Value = sumaRange("H4").SelectSelection.NumberFormat = "$#,##0.00"End Sub

Page 135: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

133

Cole

cción

1

Generación de variables aleatorias mediante la distribución Weibull

La función de densidad de probabilidad de la distribución Weibull es la siguiente:

a = valor mínimo de la variableα = parámetro de forma ≥ 0β = parámetro de escala ≥ 0media = αβvarianza = αβ²moda = a + β(α – 1) Si α ≥ 1moda = a, en caso contrarioF(X) = función acumulativa de probabildad

F(x) = R =

Despejando la variable x, se tiene:

Cuando el valor mínimo de la variable es cero (a = 0), la función de densidad de probabilidad de la distribución Weibull es:

Donde α es el parámetro de forma y β es el parámetro de escala.La función de distribución acumulativa se calcula de la siguiente manera:

F(x) = función acumulada de la probabilidad

F(x) = R =

Despejando la variable, se tiene:

Page 136: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

134

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Para programar experimentos de simulación con el fin de generar variables con distribución de probabilidad de Weibull, se parte del siguiente ejemplo.

Ejemplo 4.5

El tiempo de vida de una componente es una variable aleatoria con distribución de probabilidad Weibull, siendo el valor de alfa de 9 y el valor de beta de 2. Simule 20 corridas con 10 réplicas.

Procedimiento 4.7. Macro para generar variables Weibull sin el valor mínimo

Sub GenerarvariablesWeibull() Dim x As Double, a As Double, n As Integer, k As Integer Dim b As Double, promedio As Double Limpiar ActiveWindow.DisplayGridlines = False Range(“A1:H200”).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Font.Bold = True End With n = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = n k = InputBox(“Digite el número de réplicas:”) a = InputBox(“Digite el valor de alfa:”) b = InputBox(“Digite el valor de beta:”)Range(“B8:D8,G8:H8”).Select: Selection.Interior.ColorIndex = 24Range(“B9:D” & (n + 8)).Select: Selection.Interior.ColorIndex = 19Range(“G9:H” & (k + 8)).Select: Selection.Interior.ColorIndex = 19Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.”Range(“H8”).Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range(Cells(n + 9, 3), Cells(n + 12, 4)).SelectSelection.Interior.ColorIndex = 20Range(Cells(k + 9, 7), Cells(k + 11, 8)).Select

Page 137: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

135

Cole

cción

1

Selection.Interior.ColorIndex = 20Range("C" & (n + 9)).Select: ActiveCell.FormulaR1C1 = "La media"Range("C" & (n + 10)).Select: ActiveCell.FormulaR1C1 = "La Varianza"Range("C" & (n + 11)).Select: ActiveCell.FormulaR1C1 = "alfa"Range("C" & (n + 12)).Select: ActiveCell.FormulaR1C1 = "beta"Range("G" & (k + 9)).Select: ActiveCell.FormulaR1C1 = "Promedio"Range("G" & (k + 10)).Select: ActiveCell.FormulaR1C1 = "Varianza"Range("G" & (k + 11)).Select: ActiveCell.FormulaR1C1 = "Desviación Estandar"For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R x = Weibull(R, a, b): Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i Cells(n + 9, 4).Value = a * b: Cells(n + 10, 4).Value = a * b ^ 2 Cells(n + 11, 4).Value = a: Cells(n + 12, 4).Value = b promedio = Application.Average(Range("D9:D" & (n + 8))): Cells(i + 8, 8) = promedioNext iCells(k + 9, 8).Value = Application.Average(Range("H9:H" & (k + 8)))Cells(k + 10, 8).Value = Application.Var(Range("H9:H" & (k + 8)))Cells(k + 11, 8).Value = Application.StDev(Range("H9:H" & (k + 8)))Cells(1, 1).SelectEnd Sub

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Weibull(R As Variant, a As Variant, b As Variant) As DoubleWeibull = (b) * (-1 * Ln(1 - R)) ^ (1 / a)End Function

Ejemplo 4.6

El periodo medio de vida de una componente hasta que se produce error es una variable aleatoria con distribución de probabilidad Weibull, teniendo como parámetros:

a. a = 102 unidades de tiempo (valor con el que se evalúa la función).b. alfa = 20.c. beta = 100.

Page 138: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

136

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Se requiere programar experimentos de simulación de 20 corridas con 10 réplicas.

Procedimiento 4.8. Macro para generar variables Weibull con valor mínimo

Sub GenerarvariablesWeibull2() Dim x As Double, a As Double, n As Integer, k As Integer, promedio As Double Dim b As Double, v As Double Limpiar ActiveWindow.DisplayGridlines = False Cells.Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Font.Bold = True End With n = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = n k = InputBox(“Digite el número de réplicas:”) v = InputBox(“introduzca el valor mínimo:”) a = InputBox(“Digite el valor de alfa:”) b = InputBox(“Digite el valor de beta:”)Range(“B8:D8,G8:H8”).SelectSelection.Interior.ColorIndex = 6Range(“B9:D” & (n + 8)).SelectSelection.Interior.ColorIndex = 19Range(“G9:H” & (k + 8)).SelectSelection.Interior.ColorIndex = 19Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.”Range(“H8”).Select: ActiveCell.FormulaR1C1 = “Promedio de variables”Range(Cells(n + 9, 3), Cells(n + 13, 4)).SelectSelection.Interior.ColorIndex = 44Range(Cells(k + 9, 7), Cells(k + 11, 8)).SelectSelection.Interior.ColorIndex = 44Range(“C” & (n + 9)).Select: ActiveCell.FormulaR1C1 = “la media”Range(“C” & (n + 10)).Select: ActiveCell.FormulaR1C1 = “la varianza”Range(“C” & (n + 11)).Select: ActiveCell.FormulaR1C1 = “alfa”

Page 139: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

137

Cole

cción

1

Range("C" & (n + 12)).Select: ActiveCell.FormulaR1C1 = "beta"Range("C" & (n + 13)).Select: ActiveCell.FormulaR1C1 = "valor mínimo"Range(Cells(n + 11, 3), Cells(n + 13, 4)).SelectRange("G" & (k + 9)).Select: ActiveCell.FormulaR1C1 = "Promedio"Range("G" & (k + 10)).Select: ActiveCell.FormulaR1C1 = "Varianza"Range("G" & (k + 11)).Select: ActiveCell.FormulaR1C1 = "Desviación Estandar"For i = 1 To k For j = 1 To n Cells(j + 8, 2) = j R = Rnd: Cells(j + 8, 3) = R x = Weibull(R, a, b, v): Cells(j + 8, 4).Value = x Next j Cells(i + 8, 7) = i Cells(n + 9, 4).Value = a * b: Cells(n + 10, 4).Value = a * b ^ 2 Cells(n + 11, 4).Value = a: Cells(n + 12, 4).Value = b Cells(n + 13, 4).Value = v promedio = Application.Average(Range("D9:D" & (n + 8))): Cells(i + 8, 8) = promedioNext iCells(k + 9, 8).Value = Application.Average(Range("H9:H" & (k + 8)))Cells(k + 10, 8).Value = Application.Var(Range("H9:H" & (k + 8)))Cells(k + 11, 8).Value = Application.StDev(Range("H9:H" & (k + 8)))Cells(1, 1).SelectEnd Sub

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Weibull(R As Variant, a As Variant, b As Variant, v As Variant) As DoubleWeibull = (b) * (-1 * Ln(1 - R)) ^ (1 / a) + vEnd Function

Método de composición

Es un método para generar variables aleatorias que consiste en seleccionar subáreas o áreas para definir distribuciones de probabilidad, con el propósito de encontrar la función de densidad original.

Page 140: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

138

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Para aplicar este método, se requieren dar los siguientes pasos:a. Dividir la distribución de probabilidad original en subáreas, tal como se muestra

en la figura siguiente:

Figura 4.3. Función de probabilidad en áreas

Donde Ai es el área de la región i, se tiene que:

b. Definir una distribución de probabilidad para cada subárea.c. Expresar la distribución de probabilidad original de la manera siguiente:

f (x) = A1f1(x) + A2f2(x) + . . . . . . . . . Anfn(x)

d. Obtener la distribución de probabilidad acumulada.

Page 141: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

139

Cole

cción

1

Generación de variables aleatorias mediante la distribución triangular

La distribución de probabilidad triangular tiene el comportamiento de incrementar la variable partiendo de un término a (valor mínimo) hasta un término b (moda), y luego disminuir a partir de b (moda) hasta un término c (valor máximo).

Es una distribución continua acotada en ambos lados. La distribución triangular se utiliza cuando hay pocos o no hay datos disponibles. La distribución de probabilidad triangular se presenta en la siguiente figura:

Figura 4.4. Distribución de probabilidad triangular

La gráfica de la distribución triangular se divide en dos áreas, tal como se muestra a continuación:

Page 142: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

140

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 4.5. Distribución triangular en dos áreas

Cálculo de las áreas de la distribución triangular

Para calcular las áreas de la distribución de probabilidad, se hace lo siguiente:

Generación de la variable aleatoria con distribución triangular

Generar variables aleatorias de la distribución triangular se realiza en dos maneras, dependiendo del intervalo (a, b) y el intervalo (b, c).

Page 143: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

141

Cole

cción

1

Intervalo entre a (valor mínimo) y b (la moda)

Se comienza con la primera área de la distribución triangular, como se muestra en la figura 4.6.

Figura 4.6. Primer área de la distribución triangular

Intervalo entre b (la moda) y c (valor máximo)

Se empieza con la segunda área de la distribución triangular, como se muestra en la figura 4.7.

Figura 4.7. Segundo área de la distribución triangular

Page 144: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

142

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

En resumen, la función de densidad de la probabilidad triangular sería la siguiente:

La generación de la variable triangular es:

X =

Generación de variables aleatorias triangulares mediante macro de Excel

Para crear una macro que genere variables aleatorias triangulares, se parte de un ejemplo con los siguientes datos:

a. El valor mínimo es 10.b. El valor más probable es 30.c. El valor máximo es 70.

Se requieren generar 20 valores de variables triangulares.

Page 145: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

143

Cole

cción

1

Procedimiento 4.9. Macro para generar variables triangulares

Sub Triangular1()Dim a As Double, b As Double, c As Double, N As VariantActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = "Arial" .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange("A2").Select: ActiveCell.FormulaR1C1 = "Valor mínimo"Range("A3").Select: ActiveCell.FormulaR1C1 = "Valor más probable"Range("A4").Select: ActiveCell.FormulaR1C1 = "Valor máximo"Range("A5").Select: ActiveCell.FormulaR1C1 = "Número de corridas"Range("B5").Select: ActiveCell.FormulaR1C1 = "Números aleatorios"Range("C5").Select: ActiveCell.FormulaR1C1 = "Variables aleatorias"K = InputBox("El número de corridas:")a = InputBox("Digite el valor mínimo:"): Cells(2, 2).Value = ab = InputBox("Digite el valor más probable:"): Cells(3, 2).Value = bc = InputBox("Digite el valor máximo:"): Cells(4, 2).Value = cRange("A2:A4,A5:C5").Select: Selection.Interior.ColorIndex = 6For i = 1 To KCells(i + 5, 1).Value = iR = Rnd: Cells(i + 5, 2).Value = R: N = Cells(i + 5, 2).Valuex = Triangular(N, a, b, c): Cells(i + 5, 3).Value = xRange("A1").SelectNext iEnd Sub

Page 146: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

144

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Function Triangular(N As Variant, a As Double, b As Double, c As Double) As DoubleDim RO1, RO2 As DoubleIf N <= (b - a) / (c - a) ThenRO1 = (c - a) * (b - a) * N: Triangular = a + Sqr(RO1)ElseRO2 = (c - a) * (c - b) * (1 - N): Triangular = c - Sqr(RO2)End IfEnd Function

Generación de variables aleatorias mediante la distribución trapezoidal

La distribución de probabilidad trapezoidal tiene el comportamiento de tres fases: la primera fase es la ascendente, partiendo de un término a hasta un término b; la segunda es la de estabilidad, partiendo de b hasta c; la tercera es la descendente, partiendo de c hasta un término d. Es una distribución continua acotada en ambos lados. La distribu-ción trapezoidal se utiliza cuando hay pocos o no hay datos disponibles. La distribución de probabilidad trapezoidal se presenta la siguiente figura:

Figura 4.8. Distribución de probabilidad trapezoidal

Page 147: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

145

Cole

cción

1

La figura de la distribución trapezoidal se divide en tres áreas, como se muestra a continuación.

Figura 4.9. Distribución de probabilidad trapezoidal en áreas

Determinar las áreas de la distribución de probabilidad trapezoidal se realiza de la manera siguiente:

Page 148: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

146

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de la variable aleatoria con distribución trapezoidal

Generar variables aleatorias de la distribución trapezoidal se realiza de tres maneras, dependiendo de los intervalos (a, b), (b, c) y (c, d).

Intervalo entre a y b

Se empieza con la primera área de la distribución trapezoidal, de acuerdo con la figura 4.10.

Figura 4.10. primera fase de la distribución trapezoidal

Intervalo entre b y c

Se empieza con la segunda área de la distribución trapezoidal, de acuerdo con la figura 4.11.

Page 149: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

147

Cole

cción

1

Figura 4.11. Distribución trapezoidal segunda fase

Intervalo entre c y d

Se empieza con la tercera área de la distribución trapezoidal, de acuerdo con la figura 4.12,

Figura 4.12. Tercera fase de la distribución trapezoidal

Page 150: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

148

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Resumiendo, se tiene:

En el cuadro siguiente se encontrarán los generadores de variables trapezoidales:

Generación de variables aleatorias trapezoidales mediante macro de Excel

Para crear una macro para que genere variables aleatorias trapezoidales, se parte de un ejemplo con los siguientes datos:

a. El valor a es 10.b. El valor b es 20.c. El valor c es 40.d. El valor d es 60.

Page 151: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

149

Cole

cción

1

Procedimiento 4.10. Macro para generar variables trapezoidales

Sub Trapezoide()Dim K As IntegerDim n As Variant, x(2000) As Double, R(2000) As DoubleDim a As Integer, b As Integer, c As Integer, d As IntegerActiveWindow.DisplayGridlines = FalseRange(“A1”).Select: ActiveCell.FormulaR1C1 = “GENERACION DE VARIABLES TRAPEZOIDALES”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Valor de a”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Valor de b”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Valor de c”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Valor de d”Range(“A6”).Select: ActiveCell.FormulaR1C1 = “No. de Observaciones”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“C6”).Select: ActiveCell.FormulaR1C1 = “Variables Trapezoidales”Range(“A1:C1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20K = InputBox(“Digite el número de corridas:”)Range(“A1:D1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A2:B5,A6:C” & (K + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMediumEnd WithRange(“A2:A5,A6:C6”).SelectSelection.Interior.ColorIndex = 6

Page 152: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

150

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range("A1").Selecta = InputBox("Digite el valor de a:"): Cells(2, 2).Value = ab = InputBox("Digite el valor de b:"): Cells(3, 2).Value = bc = InputBox("Digite el valor de c:"): Cells(4, 2).Value = cd = InputBox("Digite el valor de d:"): Cells(5, 2).Value = dFor i = 1 To KCells(i + 6, 1).Value = iR(i) = RndCells(i + 6, 2).Value = R(i)n = Cells(i + 6, 2).Valuex(i) = TRAPEZOIDAL(n, a, b, c, d)Cells(i + 6, 3).Value = x(i)Next iEnd Sub

Function TRAPEZOIDAL(N As Variant, a As Integer, b As Integer, c As Integer, d As Integer) As DoubleDim RO1, RO2 As DoubleIf N <= (b - a) / (d + c - a - b) ThenRO1 = (d + c - a - b) * (b - a) * NTRAPEZOIDAL = Round(a + Sqr(RO1), 2)ElseIf N > ((b - a) / (d + c - a - b)) And R <= ((2 * c - a - b) / (d + c - a - b)) ThenTRAPEZOIDAL = Round(0.5 * ((d + c - a - b) * N + a + b), 2)ElseRO2 = (d + c - a - b) * (d - c) * (1 - N)TRAPEZOIDAL = Round(d - Sqr(RO2), 2)End IfEnd Function

Ejemplo 4.7

Una empresa tiene asignada una camioneta especial para el transporte diario de 10 cajas de un determinado producto de gran aceptación en el mercado. El peso de cada caja sigue la distribución de probabilidad trapezoidal con los parámetros (20, 40, 60, 70 kg).

Si la capacidad de la camioneta es 500 kg, ¿cuál es la probabilidad de que el peso total de las cajas exceda la capacidad de la camioneta?

Page 153: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

151

Cole

cción

1

Para tal propósito, suponga que cada vez que la capacidad de la camioneta es excedida, una caja es enviada por otra compañía de transporte a un costo de $150/caja. También suponga que el costo anual equivalente de una nueva camioneta es $160.000. Si se trabajan 260 días al año, ¿cuál de las alternativas mencionadas es la más atractiva?

A continuación se presenta la macro para generar variables trapezoidales.

Procedimiento 4.11. Macro para generar variables trapezoidales del ejemplo 4.7

Sub Trapeizodal2()Dim a As Integer, b As Integer, c As Integer, d As IntegerDim cont, peso, cor As Integer, suma As Double, x(2000) As DoubleDim sum, prob As Double, Costc As CurrencyDim CT As Currency, costo As CurrencyDim N As Variant, K As Integer, DH As IntegerActiveWindow.DisplayGridlines = FalseRange(“A7:K2000”).ClearContentsRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Generacion de Variables Trapezoidales “Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Valor de a”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Valor de b”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Valor de c”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Valor de d”Range(“A6”).Select: ActiveCell.FormulaR1C1 = “Número de Corridas”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Peso generado de las cajas”Range(“C6”).Select: ActiveCell.FormulaR1C1 = “¿Se Excede a la Capacidad del Camión?”Range(“D6”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range(“D7”).Select: ActiveCell.FormulaR1C1 = “Costo por Utilizar otra Compañía ($)”Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Costo por Utilizar Camioneta Nueva ($)”Range(“D9”).Select: ActiveCell.FormulaR1C1 = “La mejor alternativa”Range(“A1:C1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True

Page 154: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

152

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithK = InputBox(“Digite el número de cajas a transportar”): Cells(1, 4).Value = Kcor = InputBox(“Digitar el número de corridas”)peso = InputBox(“Introducir el peso de la Camioneta”): Cells(1, 5).Value = pesocosto = InputBox(“Introducir el costo por caja”): Cells(1, 6).Value = costoDH = InputBox(“introducir los días hábiles”): Cells(1, 7).Value = DHCostc = InputBox(“Digitar el costo de la Camioneta Nueva”): Cells(8, 5).Value = CostcRange(“A2:B5,D6:E9,A6:C” & (cor + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange(“A2:A5,A6:C6,D6:D9”).SelectSelection.Interior.ColorIndex = 44a = InputBox(“Digitar el valor de a”): Cells(2, 2).Value = ab = InputBox(“Digitar el valor de b”): Cells(3, 2).Value = bc = InputBox(“Digitar el valor de c”): Cells(4, 2).Value = cd = InputBox(“Digitar el valor de d”): Cells(5, 2).Value = dRange(“B7:C26”).ClearContentspeso = Cells(1, 5).ValueFor i = 1 To corCells(i + 6, 1).Value = isum = 0For j = 1 To KR = Rndx(j) = TRAPEZOIDAL(R, a, b, c, d)sum = sum + x(j)Next jCells(i + 6, 2).Value = sumCells(i + 6, 2).NumberFormat = “0.00”If (sum > peso) ThenCells(i + 6, 3) = “SI”cont = 1suma = suma + cont

Page 155: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

153

Cole

cción

1

ElseCells(i + 6, 3) = "NO"End IfNext iprob = (suma / cor): Cells(6, 5).Value = probCells(6, 5).NumberFormat = "0.00%"CT = (costo * DH * suma): Cells(7, 5).Value = CTIf CT > Cells(8, 5).Value ThenCells(9, 5) = "CAMIONETA NUEVA"ElseCells(9, 5) = "TRANSPORTE DE OTRA COMPAÑIA"End IfRange("A1").SelectEnd Sub

Function TRAPEZOIDAL(N As Variant, a As Integer, b As Integer, c As Integer, d As Integer) As DoubleDim RO1, RO2 As DoubleIf N <= (b - a) / (d + c - a - b) ThenRO1 = (d + c - a - b) * (b - a) * NTRAPEZOIDAL = a + Sqr(RO1)ElseIf N > ((b - a) / (d + c - a - b)) And R <= ((2 * c - a - b) / (d + c - a - b)) ThenTRAPEZOIDAL = 0.5 * ((d + c - a - b) * N + a + b)ElseRO2 = (d + c - a - b) * (d - c) * (1 - N)TRAPEZOIDAL = d - Sqr(RO2)End IfEnd Function

Método de convolución

En ocasiones no es posible aplicar el método de la transformada inversa a distribucio-nes de probabilidad, debido principalmente a que algunas de ellas no tienen forma de integrarse, como el caso de la distribución normal, Gamma, Erlang, etcétera. En tal caso, se requiere la aplicación de algunas propiedades estadísticas como el teorema de límite central o la propiedad de convolución, que permiten generar una distribución mediante

Page 156: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

154

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

la suma de distribuciones más sencillas, mediante la transformada z , etcétera. Estos son procedimientos especiales para lograr expresiones matemáticas que generen las varia-bles aleatorias deseadas. A continuación se presentan algunas de las expresiones más utilizadas en la simulación de sistemas de manufactura para generar variables aleatorias.

Generación de variables aleatorias mediante la distribución Erlang

La distribución Erlang tiene la siguiente función de densidad:

Λ = parámetro de escalaa = valor mínimo de la variable de la variablen = parámetro de forma (número de sucesos que se cuentan)

media =

varianza =

Por consiguiente, para generar variables aleatorias que siguen una distribución de probabilidad de Erlang, se necesita solamente sumar los valores simulados de k variables aleatorias exponenciales con media de 1 / λ.

Page 157: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

155

Cole

cción

1

Cuando a = 0, la distribución Erlang tiene la siguiente función de densidad:

Λ = parámetro de escalak = parámetro de forma (número de sucesos que se cuentan)E(x) = media de la exponencial

Por consiguiente, para generar variables aleatorias que siguen una distribución de proba-bilidad de Erlang, se necesita solamente sumar los valores simulados de k variables aleatorias exponenciales con media 1 / λ

Generación de variables aleatorias mediante macro de Excel sin el valor mínimo

Para crear una macro que genere variables aleatorias de tipo Erlang, se parte de un ejemplo con los siguientes datos:

a. El parámetro de escala es 2.b. El valor del parámetro de forma 4.c. Se genera la variable aleatoria mediante dos funciones: Ln (logaritmo natural) y

el de Erlang.

Page 158: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

156

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 4.12. Macro para generar variables de tipo Erlang sin el valor mínimo

Sub GenerarvariablesErlang ()Dim x As Double, M As Double, n As Integer, k As Integer, promedio As DoubleDim rep As Integer, lamb As IntegerLimpiarActiveWindow.DisplayGridlines = FalseCells. SelectWith Selection . Font. Bold = True . HorizontalAlignment = xlCenter . Vertical Alignment = xlBottom . WrapText = TrueEnd Withn = InputBox (“Digite el número de corridas:”): Cells (1, 1). Value = nrep = InputBox (“Digite el número de réplicas:”)k = InputBox (“Introduzca el valor del parámetro de forma(K):”): Cells (n + 9, 4). Value = klamb = InputBox (“Introduzca el valor del parámetro de escala(Lambda):”): Cells (n + 10, 4). Value = lambRange (“B8:D8, G8:H8”). Select: Selection. Interior. ColorIndex = 24Range (“B9: D” & (n + 8)). Select: Selection. Interior. ColorIndex = 19Range (“G9:H” & (k + 8)). Select: Selection. Interior. ColorIndex = 19Range(“B8”). Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”). Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”). Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”). Select: ActiveCell.FormulaR1C1 = “Replica Num.”Range(“H8”). Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range (Cells (n + 9, 3), Cells (n + 12, 4)). Select: Selection. Interior. ColorIndex = 20Range (Cells (rep + 9, 7), Cells (rep + 11, 8)). Select: Selection. Interior. ColorIndex = 20Range (“C” & (n + 9)). Select: ActiveCell.FormulaR1C1 = “Parámetro de forma”Range (“C” & (n + 10)). Select: ActiveCell.FormulaR1C1 = “Parámetro de escala”Range (“C” & (n + 11)). Select: ActiveCell.FormulaR1C1 = “La media”Range (“C” & (n + 12)). Select: ActiveCell.FormulaR1C1 = “La varianza”Range (“G” & (rep + 9)). Select: ActiveCell.FormulaR1C1 = “Promedio”Range (“G” & (rep + 10)). Select: ActiveCell.FormulaR1C1 = “Varianza”Range (“G” & (rep + 11)). Select: ActiveCell.FormulaR1C1 = “Desviación Estandar”For i = 1 To rep For j = 1 To n Cells (j + 8, 2) = j R = Rnd: Cells (j + 8, 3) = R

Page 159: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

157

Cole

cción

1

x = Erlang (k, lambda): Cells (j + 8, 4). Value = x Next j Cells (i + 8, 7) = i Cells (n + 9, 4). Value = k: Cells (n + 10, 4). Value = lambda Cells (n + 11, 4). Value = k / lambda: Cells (n + 12, 4). Value = k / ((lambda) ^ 2) promedio = Application. Average (Range (“D9: D” & (n + 8))): Cells (i + 8, 8) = promedioNext iCells (rep + 9, 8). Value = Application. Average (Range (“H9:H” & (k + 8)))Cells (rep + 10, 8). Value = Application.Var(Range (“H9:H” & (k + 8)))Cells (rep + 11, 8). Value = Application.StDev(Range (“H9:H” & (k + 8)))Cells (1, 1). SelectEnd Sub

Function Ln (x As Double) As DoubleLn = Excel.WorksheetFunction. Ln(x)End Function

Function Erlang (k As Integer, lamb As Integer) As DoubleY = 0R = RndM = (k / lamb)For Z = 1 To kY = Y + Ln (1 - R)Next ZErlang = (-1) * M * YEnd Function

Generación de variables aleatorias mediante macro de Excel con el valor mínimo

Para crear una macro que genere variables aleatorias de tipo Erlang, se parte de un ejemplo con los siguientes datos:

a. El parámetro de escala es 2.b. El valor del parámetro de forma 5.c. El valor mínimo es 1.

Page 160: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

158

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 4.13. Macro para generar variables de tipo Erlang con valor mínimo

Sub GenerarvariablesErlang2()Dim x As Double, M As Double, n As Integer, k As Integer, promedio As DoubleDim rep As Integer, lamb As Integer, a As DoubleLimpiarActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection . Font.Bold = True . HorizontalAlignment = xlCenter . VerticalAlignment = xlCenter .WrapText = TrueEnd Withn = InputBox (“Digite el número de corridas:”): Cells (1, 1). Value = nrep = InputBox (“Digite el número de réplicas:”)k = InputBox (“Introduzca el valor del parámetro de forma(K):”): Cells (n + 9, 4). Value = klamb = InputBox (“Introduzca el valor del parámetro de escala(Lambda):”): Cells (n + 10, 4). Value = lamba = InputBox (“Digite el valor mínimo:”): Cells (n + 11, 4). Value = aRange (“B8:D8, G8:H8”). Select: Selection. Interior. ColorIndex = 24Range (“B9: D” & (n + 8)). Select: Selection. Interior. ColorIndex = 19Range (“G9:H” & (k + 8)). Select: Selection. Interior. ColorIndex = 19Range(“B8”). Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“C8”). Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“D8”). Select: ActiveCell.FormulaR1C1 = “Variable aleatoria”Range (“G8”). Select: ActiveCell.FormulaR1C1 = “Replica Num.”Range(“H8”). Select: ActiveCell.FormulaR1C1 = “Promedio de variable”Range (Cells (n + 9, 3), Cells (n + 13, 4)). Select: Selection. Interior. ColorIndex = 20Range (Cells (rep + 9, 7), Cells (rep + 11, 8)). Select: Selection. Interior. ColorIndex = 20Range (“C” & (n + 9)). Select: ActiveCell.FormulaR1C1 = “Parámetro de forma”Range (“C” & (n + 10)). Select: ActiveCell.FormulaR1C1 = “Parámetro de escala”Range (“C” & (n + 11)). Select: ActiveCell.FormulaR1C1 = “Valor mínimo”Range (“C” & (n + 12)). Select: ActiveCell.FormulaR1C1 = “La media”Range (“C” & (n + 13)). Select: ActiveCell.FormulaR1C1 = “La varianza”Range (“G” & (rep + 9)). Select: ActiveCell.FormulaR1C1 = “Promedio”Range (“G” & (rep + 10)). Select: ActiveCell.FormulaR1C1 = “Varianza”Range (“G” & (rep + 11)). Select: ActiveCell.FormulaR1C1 = “Desviación Estandar”For i = 1 To rep For j = 1 To n

Page 161: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

159

Cole

cción

1

Cells (j + 8, 2) = j R = Rnd: Cells (j + 8, 3) = R x = Erlang (k, lamb, a): Cells (j + 8, 4). Value = x Next j Cells (i + 8, 7) = i Cells (n + 9, 4). Value = k: Cells (n + 10, 4). Value = lamb Cells (n + 11, 4). Value = a Cells (n + 12, 4). Value = (k / lambda) + a Cells (n + 13, 4). Value = k / ((lambda) ^ 2) promedio = Application. Average (Range (“D9: D” & (n + 8))): Cells (i + 8, 8) = promedioNext iCells (rep + 9, 8). Value = Application. Average (Range (“H9:H” & (k + 8)))Cells (rep + 10, 8). Value = Application.Var(Range (“H9:H” & (k + 8)))Cells (rep + 11, 8). Value = Application.StDev(Range (“H9:H” & (k + 8)))Cells (1, 1). SelectEnd Sub

Function Ln (x As Double) As DoubleLn = Excel.WorksheetFunction. Ln(x)End Function

Function Erlang (k As Integer, lamb As Integer, a As Double) As DoubleY = 0R = RndM = (k / lamb)For Z = 1 To kY = Y + Ln (1 - R)Next ZErlang = (-1) * M * Y + lambda * (a)End Function

Generación de variables aleatorias mediante la distribución Gamma

Si en la función de densidad de la variable con distribución de Erlang se hace que el parámetro k, en lugar de ser un número natural, sea un número real positivo, se obtiene la función de densidad de la variable aleatoria denominada Gamma.

Page 162: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

160

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

La función de densidad de Gamma está descrita mediante:

a = valor mínimo de la variableα = parámetro de forma (α ≥ 0)β = parámetro de escala (β ≥ 0)Γ(α) = función Gamma del parámetro de forma

La función de distribución acumulativa será:

La función de densidad de probabilidad de Gamma sin el valor mínimo está dada por:

α = parámetro de forma (α ≥ 0)β = parámetro de escala (β ≥ 0)Γ(α) = función Gamma del parámetro de forma

Por consiguiente, para generar variables aleatorias que siguen una distribución de probabilidad de Gamma, se necesita solamente sumar los valores simulados de n variables aleatorias exponenciales con media 1 / λ. se presume que β =1/λ. Por tanto, el generador de la variable aleatoria de tipo gamma es:

Page 163: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

161

Cole

cción

1

Generación de variables aleatorias mediante macro de Excel sin el valor mínimo

Para crear una macro que genere variables aleatorias de tipo Gamma, se parte de un ejemplo con los siguientes datos:

a. El parámetro de escala es 2.b. El valor del parámetro de forma 9.c. Se genera la variable mediante la instrucción application.GammaInv(R,alfa,beta).

Procedimiento 4.14. Macro para generar variables de tipo Gamma sin el valor mínimo

Sub Gamma1()Dim x As Double, M As Double, n As Integer, k As Integer, promedio As Double Dim alfa As Integer, beta As Integer Limpiar ActiveWindow.DisplayGridlines = False Range(“A1:D200”).Select With Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd With n = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nalfa = InputBox(“Introduzca el valor del parámetro de forma(alfa):”): Cells(n + 3, 3).Value = alfabeta = InputBox(“Introduzca el valor del parámetro de escala(beta):”): Cells(n + 4, 3).Value = betaRange(“B3”).SelectActiveCell.FormulaR1C1 = “Número de corridas”Range(“C3”).SelectActiveCell.FormulaR1C1 = “Variables de tipo gamma”Range(“B3:C3”).SelectSelection.Borders(xlEdgeTop).Weight = xlMediumSelection.Borders(xlEdgeBottom).Weight = xlMediumSelection.Interior.ColorIndex = 46Range(Cells(4, 2), Cells(n + 3, 3)).SelectSelection.Interior.ColorIndex = 6Range(Cells(n + 4, 2), Cells(n + 7, 3)).SelectSelection.Interior.ColorIndex = 20

Page 164: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

162

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range("B" & (n + 4)).Select ActiveCell.FormulaR1C1 = "Parámetro de forma" Range("B" & (n + 5)).Select ActiveCell.FormulaR1C1 = "Parámetro de escala" Range("B" & (n + 6)).Select ActiveCell.FormulaR1C1 = "La media" Range("B" & (n + 7)).Select ActiveCell.FormulaR1C1 = "La varianza" Range(Cells(n + 4, 2), Cells(n + 7, 3)).SelectFor j = 1 To n Cells(j + 3, 2) = j R = Rnd x = Application.WorksheetFunction.GammaInv(R, alfa, beta) Cells(j + 3, 3).Value = xNext jCells(n + 4, 3).Value = alfaCells(n + 5, 3).Value = betaCells(n + 6, 3).Value = alfa * betaCells(n + 7, 3).Value = alfa * ((beta) ^ 2)Range("A1").SelectEnd Sub

Generación de variables aleatorias mediante la distribución Beta

La distribución Beta tiene la siguiente función de densidad:

α = parámetro de forma más bajoβ = parámetro de forma más altoa = valor mínimo de la variableb = valor máximo de la variable

La función de distribución acumulativa será:

Page 165: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

163

Cole

cción

1

Generación de variables aleatorias a través de macro de Excel con valor mínimo y valor máximo

Para crear una macro que genere variables aleatorias de tipo Beta, se parte de un ejemplo con los siguientes datos:

a. El valor de Alfa es 8.b. El valor de Beta es 10.c. El valor mínimo es 1.d. El valor máximo es 3. e. Se genera la variable mediante la instrucción application.betaInv(R,alfa,beta,a,b).

Procedimiento 4.15. Macro para generar variables de tipo Beta con valor mínimo y valor máximo

Sub Beta1()Dim x As Double, M As Double, n As Integer, k As Integer, promedio As DoubleDim alfa As Integer, beta As Integer, a As Integer, b As IntegerLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nalfa = InputBox(“Introduzca el valor de alfa:”): Cells(n + 4, 3).Value = alfabeta = InputBox(“Introduzca el valor de beta:”): Cells(n + 5, 3).Value = betaa = InputBox(“Introduzca el límite inferior (a):”): Cells(n + 6, 3).Value = ab = InputBox(“Introduzca el límite superior (b):”): Cells(n + 7, 3).Value = bRange(“A1:D200”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange(“B3”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Variables de tipo beta”Range(“B3:C3”).SelectWith Selection

Page 166: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

164

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Interior.ColorIndex = 46 .ReadingOrder = xlContext .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium End WithRange(Cells(3, 2), Cells(n + 9, 3)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(Cells(4, 2), Cells(n + 3, 3)).Select: Selection.Interior.ColorIndex = 6Range(Cells(n + 4, 2), Cells(n + 9, 3)).Select: Selection.Interior.ColorIndex = 20 Range("B" & (n + 4)).Select: ActiveCell.FormulaR1C1 = "Alfa" Range("B" & (n + 5)).Select: ActiveCell.FormulaR1C1 = "beta" Range("B" & (n + 6)).Select: ActiveCell.FormulaR1C1 = "límite inferior" Range("B" & (n + 7)).Select: ActiveCell.FormulaR1C1 = "límite superior" Range("B" & (n + 8)).Select: ActiveCell.FormulaR1C1 = "La media" Range("B" & (n + 9)).Select: ActiveCell.FormulaR1C1 = "La varianza"For j = 1 To n Cells(j + 3, 2) = j R = Rnd x = Application.BetaInv(R, alfa, beta, a, b) Cells(j + 3, 3).Value = xNext jCells(n + 8, 3).Value = (b - a) * (alfa / (alfa + beta)) + aCells(n + 9, 3).Value = ((b - a) ^ 2) * ((alfa * beta) / ((alfa + beta) ^ 2) * (alfa + beta + 1))Range("A1").SelectEnd Sub

Cuando a = 0 y b = 1, la distribución Beta tendría la siguiente función de densidad de probabilidad:

Page 167: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

165

Cole

cción

1

La obtención de valores generados de una variable aleatoria Beta de parámetro α y β es sencilla, ya que si X1 y X2 son variables aleatorias con distribuciones Gamma de parámetros (n, α) y (n, β), respectivamente, entonces se comprueba que la variable aleatoria obtenida de la siguiente:

Sigue una distribución beta de parámetros α y β; por tanto, para generar valores de una variable aleatoria Beta, no hay más que generar un valor de X1 de una variable aleatoria Gamma de parámetros (n, α) y un valor X2 de una variable aleatoria Gamma de parámetros (n, β), siendo:

La fórmula anterior es el generador de variables aleatorias de tipo beta con paráme-tros α y β.

Ejemplo 4.9

Control de calidad. Considérese la fabricación de determinado tipo de piezas, y supón-gase que estas se producen en lotes de 5.000. A fin de recoger información acerca de la calidad con la que se está produciendo, se examinan 10 piezas y, si el número de defectuosas es menor o igual a 1, se considera el lote como aceptable; en caso contrario se rechaza. Se supone que hay un costo por pieza inspeccionada de $5 (se asumirá que una vez inspeccionadas las piezas, estas no son útiles). Si un lote se rechaza, se elimina completamente a un costo de $6 por pieza. Por otra parte, si se acepta un lote y este posteriormente resulta ser defectuoso, se ocasiona un costo de $40 por pieza defectuosa.

Page 168: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

166

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Finalmente, se hace la suposición de que la proporción, X, de unidades defectuosas por lote es una variable aleatoria con distribución Beta de parámetros α = 3 y β = 32.

Procedimiento 4.16. Macro para realizar un control de calidad

Sub Calidad()Dim M As Integer, C1 As Currency, C2 As Currency, logn, logn2 As DoubleDim C3 As Currency, A As Integer, B As Integer, V As Integer, R(2000) As DoubleDim x(2000) As Double, N As Integer, X1 As Double, X2 As DoubleActiveWindow.DisplayGridlines = FalseLimpiarborrarRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Simulacion de Calidad”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de Datos”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Costo Unitarios de articulos Defectuosos “Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Costo Unitario de Inspección”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Tamaño de la Muestra”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Costo Unitario de Rechazo”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Valor del Parámetro Alfa”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Número de Aceptación”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Valor del Parámetro Beta”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Números de lotes”Range(“B4”).Select: ActiveCell.FormulaR1C1 = “Proporcion de Piezas Defectuosas”Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Estado del Lote”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Costo de Inspección del Lote”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Costo de Rechazo del Lote”Range(“F4”).Select: ActiveCell.FormulaR1C1 = “Costo de Aceptacion del Lote”Range(“G4”).Select: ActiveCell.FormulaR1C1 = “Costo Total”Range(“A1:H1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithM = InputBox(“Número de lotes:”): Cells(2, 2).Value = MRange(“A2:H3,A4:G” & (M + 4)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin

Page 169: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

167

Cole

cción

1

.Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange(“A2:A3,C2:C3,E2:E3,G2:G3”).SelectSelection.Interior.ColorIndex = 44Range(“A4:G4”).SelectSelection.Interior.ColorIndex = 6C1 = InputBox(“Digite el Costo Unitario de articulos defectuosos que entran en la linea de Montaje”)Cells(3, 2).Value = C1 : C2 = InputBox(“Digite el Costo Unitario de Inspección”)Cells(2, 4).Value = C2 : C3 = InputBox(“Digite el Costo Unitario de Rechazo”)Cells(2, 6).Value = C3 : N = InputBox(“Digite el Tamaño de la Muestra”)Cells(3, 4).Value = N : A = InputBox(“Digite el Valor del Parámetro Alfa”)Cells(3, 6).Value = A : B = InputBox(“Digite el Valor del Parámetro Beta”)Cells(3, 8).Value = B : T = InputBox(“Digite la cantidad de lote de produccion”)Cells(2, 9).Value = TV = InputBox(“Digite el Número de Aceptación”): Cells(2, 8).Value = VFor k = 1 To MCells(k + 4, 1).Value = kD = 0: X1 = 0 For i = 1 To A R1 = Rnd: logn = Application.WorksheetFunction.Ln(1 - R1): X1 = (-1) * logn + X1 Next i X2 = 0 For j = 1 To B R2 = Rnd: logn2 = Application.WorksheetFunction.Ln(1 - R2): X2 = (-1) * logn2 + X2 Next j x(i) = X1 / (X1 + X2): Cells(k + 4, 2).Value = x(i): Cells(k + 4, 2).NumberFormat = “0.0000” For i = 1 To N R(i) = Rnd If (R(i) > x(i)) Then D = 0 Else D = D + 1 End If Next i C1 = Cells(3, 2).Value: C2 = Cells(2, 4).Value: C3 = Cells(2, 6).Value

Page 170: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

168

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

T = Cells(2, 9).Value: N = Cells(3, 4).ValueIf (D > V) ThenCells(k + 4, 3) = "Rechazo": Cells(k + 4, 4).Value = C1 * NCells(k + 4, 5).Value = C2 * (T - N): Cells(k + 4, 6).Value = 0Cells(k + 4, 7).Value = Cells(k + 4, 4).Value + Cells(k + 4, 5).ValueElseCells(k + 4, 3) = "Aceptable": Cells(k + 4, 4).Value = C2 * Nx(k) = Cells(k + 4, 2).ValueCells(k + 4, 5).Value = 0: Cells(k + 4, 6).Value = C1 * x(k) * (T - N)Cells(k + 4, 6).NumberFormat = "$#,##0.00"Cells(k + 4, 7).Value = Cells(k + 4, 4).Value + Cells(k + 4, 6).ValueEnd IfNext kRange("A2").SelectEnd Sub

Generación de variables aleatorias mediante la distribución normal

En este apartado se desarrollará un procedimiento adicional para simular variables aleatorias con distribución normal.

Simulación de variables aleatorias normales a través del teorema de límite central

Inicialmente, conviene recordar que el teorema de límite central afirma que si X1,. . . . . Xn son variables aleatorias independientes e idénticamente distribuidas con E(X) = M y V(X) = V, para todo i = 1,….., n, entonces para cualquier número real x se tiene:

Page 171: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

169

Cole

cción

1

Donde:

De lo anteriormente expuesto se deduce que una forma de generar valores de una variable aleatoria con distribución normal de media cero y varianza uno será generar n valores independientes de n variables aleatorias uniforme en el intervalo (0, 1), R1,. . . ., Rn y asignar como valor simulado de la variable aleatoria normal de media igual a 0 y varianza igual a 1:

Sustituyendo Z, se tiene:

En la práctica suele admitirse, aunque depende del problema que se esté abordando, que es suficiente con tomar K = 12. En consecuencia,

x = la variable aleatoria por simular con distribución normal

µ = la media de la distribución de probabilidad normal

σ = la desviación estándar de la distribución de probabildad normal

Page 172: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

170

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de variables aleatorias con distribución normal mediante macro de Excel

Para generar variables con distribución a través de una macro, se debe tener en cuenta:a. La media es 20.b. La desviación estándar es 4.c. X = variable normal por generar.d. M = valor de media de la distribución normal.e. Desv = valor de la desviación estándar de la distribución normal.

Procedimiento 4.17. Macro para generar variables con distribución normal

Sub Normal1()Dim x As Double, M As Double, n As Integer, k As Integer, Desv As DoubleLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nM = InputBox(“Introduzca la media:”): Cells(n + 4, 3).Value = MDesv = InputBox(“Introduzca la desviación estándar:”): Cells(n + 5, 3).Value = DesvRange(“B3”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Variables de tipo normal”Cells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange(“B3:C3”).Select With Selection .Interior.ColorIndex = 46 .ReadingOrder = xlContext .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium

Page 173: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

171

Cole

cción

1

.Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium End WithRange(Cells(4, 2), Cells(n + 3, 3)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(Cells(n + 4, 2), Cells(n + 5, 3)).SelectSelection.Interior.ColorIndex = 20 Range("B" & (n + 4)).Select: ActiveCell.FormulaR1C1 = "La media" Range("B" & (n + 5)).Select: ActiveCell.FormulaR1C1 = "La desviación estándar" Range(Cells(n + 4, 2), Cells(n + 5, 3)).Select With Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithFor j = 1 To n Cells(j + 3, 2) = j k = 0 For i = 1 To 12 R = Rnd k = k + R Next i x = M + Desv * (k - 6) Cells(j + 3, 3).Value = xNext jRange("A1").SelectEnd Sub

Page 174: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

172

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Otra forma de generar variables aleatorias con distribución normal por medio de macro de Excel

Para generar variables con distribución a través de una macro, se debe tener en cuenta:a. La media es 20.b. La desviación estándar es 4.c. X = variable normal por generar mediante la función estadística de Excel: Nor-

mInv (R,M,Desv).d. M = valor de media de la distribución normal.e. Desv = valor de la desviación estándar de la distribución normal.

El conjunto de instrucciones será:

For j = 1 To n Cells(j+3,2).Value = j R = Rnd X = Round(Application.Worksheetfunction.NormInv(R,M,Desv),3) Cells(j+3,3).Value = X Next j

Generación de variables aleatorias mediante la distribución lognormal

La distribución lognormal tiene la siguiente función de densidad:

Page 175: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

173

Cole

cción

1

Generación de variables aleatorias con distribución lognormal mediante macro de Excel

Para generar variables con distribución a través de una macro, se debe tener en cuenta:a. La media es 3,5.b. La desviación estándar es 0,5.c. X = variable normal por generar mediante la función estadística de Excel: LogInv

(R,M,Desv).d. M = valor de media de la distribución normal.e. Desv = valor de la desviación estándar de la distribución normal.

El conjunto de instrucciones será: For j = 1 To n Cells(j+3,2).Value = j R = Rnd X = Round(Application.Worksheetfunction.LogInv(R,M,Desv),3) Cells(j+3,3).Value = X Next j

Ejemplo 4.12

Simulación de proceso de fabricación de dos etapas en serie mediante el método de convolución. Un proceso de fabricación de una pieza consta de dos etapas: la primera tiene una distribución de t1 minutos y la segunda dura t2 minutos. Si t1 sigue una dis-tribución de probabilidad empírica como lo muestra la figura a y t2 una distribución de probabilidad empírica como la muestra también la figura b de la figura 4.2.

Page 176: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

174

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 4.1. Gráfica de la distribución empírica para la variable t1 y t2

El tiempo que transcurre entre la llegada de la pieza a la estación de proceso de fabri-cación sigue una distribución exponencial con media de 3 minutos/pieza; el proceso está a cargo de un operario y el tiempo de tránsito de una etapa a la otra es de 0,5 minutos.

Determinar:a. El número promedio de piezas en el sistema (L).b. El número promedio de piezas en la cola (Lq).c. El tiempo promedio que espera una pieza en el sistema (W).d. El tiempo promedio que espera una pieza en la cola (Wq).e. El porcentaje de inactividad en las etapas (Po).

Para el desarrollo de este ejemplo se debe tener en cuenta lo siguiente:

Page 177: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

175

Cole

cción

1

Figura 4.2. Generación de las funciones de densidad de probabildad de la variable t1

Generación de la variable t1

Page 178: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

176

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 4.3. Generación de las funciones de densidad para variable t2

Generación de la variable t2

Page 179: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

177

Cole

cción

1

Procedimiento 4.18. Macro para desarrollar proceso de dos etapas en serie

Sub EtapaProcesos()Dim M As Integer, TiempLlegada As Double, Medido As DoubleDim t1 As Double, t2 As Double, inicio, salida As Double, W, R, R1 As DoubleDim Wq As Double, sumat, sumat1, sumat2 As Double, K As Integer, x As IntegerDATOSINICIALESK = Cells(1, 13).ValueM = InputBox(“Digite el tiempo medio de llegada:”): Cells(1, 2).Value = Mtransito = InputBox(“Digite el tiempo de transito entre procesos:”)Sum = 0For i = 1 To KR = Rnd: R1 = Application.WorksheetFunction.Ln(1 - R)TiempLlegada = (-1) * M * R1: Cells(i + 3, 2).Value = TiempLlegadaCells(4, 4).Value = Cells(4, 2).ValueSum = Sum + TiempLlegada: Cells(i + 3, 3).Value = SumNext iFor i = 1 To Kinicio = Cells(i + 3, 4).Valuet1 = Etapa1: Cells(i + 3, 5).Value = t1t2 = Etapa2: Cells(i + 3, 7).Value = t2Cells(i + 3, 6).Value = transitosalida = inicio + t1 + transito + t2: Cells(i + 3, 8).Value = salidainicio = Application.WorksheetFunction.Max(Cells(i + 4, 3).Value, Cells(i + 3, 8).Value)Cells(i + 4, 4).Value = inicio: Medido = Cells(i + 3, 3).ValueW = salida - Medido: Cells(i + 3, 9).Value = WWq = salida - Medido - (t1 + t2): Cells(i + 3, 10).Value = Wq For x = 4 To 10 Cells(K + 4, x).Value = “” Next xNext isumat1 = Application.WorksheetFunction.Sum(Cells(4, 5), Cells(K + 3, 5))sumat2 = Application.WorksheetFunction.Sum(Cells(4, 7), Cells(K + 3, 7))sumat = sumat1 + sumat2Cells(2, 4).Value = sumatCells(2, 6).Value = Application.WorksheetFunction.Sum(Cells(4, 10), Cells(K + 3, 10))Cells(2, 10).Value = Application.WorksheetFunction.Sum(Cells(4, 9), Cells(K + 3, 9))Cells(2, 8).Value = 100 * (Cells(2, 4).Value / (Application.WorksheetFunction.Max(Cells(4, 8), Cells(K + 3, 8))))

Page 180: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

178

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(1, 6).Value = (Cells(2, 6).Value) / (Application.WorksheetFunction.Max(Cells(4, 8), Cells(K + 3, 8)))Cells(1, 4).Value = (Cells(2, 10).Value) / (Application.WorksheetFunction.Max(Cells(4, 8), Cells(K + 3, 8)))Cells(1, 10).Value = (Application.WorksheetFunction.Average(Cells(4, 10), Cells(K + 3, 10)))Cells(1, 8).Value = (Application.WorksheetFunction.Average(Cells(4, 10), Cells(K + 3, 10)))Cells(2, 2).Value = (1 - (Cells(2, 4).Value)) / (Application.WorksheetFunction.Max(Cells(4, 8), Cells(K + 3, 8)))End Sub

Function Etapa1() As DoubleDim RO1 As DoubleR1 = RndIf R1 <= 0.50 ThenRO1 = (9 / 4) - 4 * R1Etapa1 = (3/ 2) - Sqr(RO1)Elseif R1 > 0.50 and R1 <=0.75 thenEtapa1 = 4 * R1 – 1ElseEtapa1 = 0End IfEnd Function

Function Etapa2() As DoubleDim RO2, RO3 As DoubleR2 = RndIf R2 <= 0.25 ThenEtapa2 = 4 * R2ElseIf R2 > 0.25 And R2 <= 0.50 ThenRO2 = 2*R2 - (7/ 16)Etapa2 = (3 / 4) + Sqr(RO2)Elseif R2 >0.50 and R2 <=0.75 thenRO3 = (45/16) -2*R2Etapa2 = (9 / 4) + Sqr(RO3)ElseEtapa2 = = 4*R2 -1End IfEnd Function

Page 181: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

179

Cole

cción

1

Sub DATOSINICIALES()Dim K As IntegerActiveWindow.DisplayGridlines = FalseRange(“A1:N2000”).ClearContentsRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de Llegadas”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de Inactividad(Po)”Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Número Promedio de Piezas en el Sistema (L)”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Suma de los Tiempo de Procesos”Range(“E1”).Select: ActiveCell.FormulaR1C1 = “Número Promedio de Piezas en la Cola (Lq)”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Suma de los Tiempos de Espera en la Cola”Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Tiempo Promedio de Espera de una Pieza en el sistema(W)”Range (“G2”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de Utilización (%)”Range(“I1”).Select: ActiveCell.FormulaR1C1 = “Tiempo Promedio de Espera de una Pieza en la Cola(Wq)”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Suma de los Tiempo de Espera en el Sistema”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Piezas”Range(“B3”).Select: ActiveCell.FormulaR1C1 = “Tiempo entre Llegadas”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegada”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio en la Etapa 1 (Min)”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de proceso en la Etapa 1 (Min)”Range(“F3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Tránsito (Min)”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de proceso en la Etapa 2 (Min)”Range(“H3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Salida de los Procesos (Min)”Range(“I3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Espera en el Sistema (Min)”Range(“J3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Espera en la Cola (Min)”Range(“A1:J2”).SelectSelection.RowHeight = 126K = InputBox(“Digite el número de Piezas:”)Cells(1, 13).Value = KRange(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A1:J” & (K + 3)).Select

Page 182: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

180

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("A1:A2,C1:C2,E1:E2,G1:G2,I1:I2").SelectSelection.Interior.ColorIndex = 44Range("A3:J3").SelectSelection.Interior.ColorIndex = 6End Sub

Ejercicios

1. En un centro de torneado llegan las piezas con un tiempo promedio de 3 minutos con distribución exponencial. El tiempo de torneado es una variable aleatoria con distribución empírica que se indica a continuación, de acuerdo con el siguiente comportamiento:

¿Cuántas piezas se producirán en una jornada laboral de 8 horas diarias?

Page 183: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

181

Cole

cción

1

2. El tiempo de entrega en días que hace un proveedor de un lote determinado de artículos a un distribuidor es una variable aleatoria con distribución de probabi-lidad Beta (3, 5, 1, 5). El tiempo de entrega que hace el distribuidor a sus clientes también es una variable aleatoria con distribución de probabilidad empírica, como se muestra en la siguiente gráfica:

Simule hasta 100 lotes para determinar la probabilidad de que el proveedor incumpla con el pedido generando faltantes.

3. En una planta de manufactura se procesa un producto codificado como A100, que es formado por el ensamblaje de tres componentes codificados, respectivamente, B200, C200 y D300. La función de densidad de probabilidad para el tiempo entre llegadas de B200 es una distribución exponencial con media de 15 minutos; esta componente se procesa en un torno cuyo tiempo es una variable aleatoria con distribución de probabilidad triangular T(3,5,7) minutos, la componente C200; el tiempo entre llegadas es una variable aleatoria con una distribución de probabilidad Erlang con media de 12 min y parámetro de forma k = 4, que es procesada en una fresa cuyo tiempo es una variable aleatoria con distribución de probabilidad normal, N(5, 0.3) minutos. En cambio, para la componente D300, su tiempo entre llegadas

Page 184: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

182

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

también es una variable aleatoria con distribución Weibull, W (9,2,10), que pasa a ser procesada en un taladro cuyo tiempo de proceso es una variable aleatoria con distribución uniforme, U (3, 5) minutos. Estas tres componentes pasan a una mesa de ensamble, siendo su tiempo de ensamble una variable aleatoria con distribución exponencial con media de 5 minutos. Simule para producir 100 productos y deter-mine el tiempo promedio de espera de cada componente.

4. Una célula de manufactura está compuesta por un operario que atiende un torno CNC y dos bandas transportadoras. Esta célula está conformada para producir una pieza determinada. El tiempo entre llegadas de la pieza a la banda transportadora de entrada es una variable aleatoria con distribución exponencial con media de 25 min por cada pieza y se mueve a través de la banda. El operario recoge la pieza en la Banda_Entrada y la lleva al torno con las siguientes operaciones y sus respectivos tiempos:

• Situar la pieza en el torno y ponerla en funcionamiento, 1 minuto.• Torneado de la pieza, su tiempo de proceso según una distribución de probabi-

lidad Gamma G (2,9) minutos.• Descargar la pieza torneada, 2 minutos.• Al terminar la operación de torneado, el operario lleva la pieza a la banda

transportadora de salida, donde la pieza se mueve a través de la banda para su despacho.

• Simule una llegada de 100 piezas y determine el tiempo promedio que espera una pieza al ser procesado el factor de utilización del torno.

5. Una célula de manufactura está compuesta por un operario que atiende una cor-tadora automática (sierra mecánica) y dos tornos CNC idénticos. Esta célula está conformada para producir una pieza determinada. El tiempo de operación de cor-tado y torneado es una variable aleatoria que tiene una distribución de probabilidad

Page 185: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS CONTINUAS

183

Cole

cción

1

exponencial con media 10 y 15 minutos, respectivamente, debido a la variabilidad de las dimensiones de la pieza.

El tiempo entre llegadas de la pieza a la recepción es también una variable aleatoria que tiene una distribución de probabilidad triangular T (15, 20,35) minutos. Simule una llegada de 100 piezas y determine el tiempo promedio que espera una pieza al ser procesada el factor de utilización de la sierra mecánica y los tornos.

6. Una pieza se produce en un sistema de cuatro máquinas agrupadas en serie; el tiempo entre llegadas de las piezas es una variable aleatoria con distribución expo-nencial con media de 10 minutos. El tiempo de tránsito de una máquina a otra es de un minuto y todos los tiempos de proceso son de tipo Erlang, con media que se mostrará en el siguiente cuadro y parámetro de forma k = 3. Hay un tipo de falla que consiste en atascamiento de la máquina y, por tanto, se usan las distribuciones exponenciales para los tiempos de funcionamiento y las distribuciones uniformes para los tiempos de reparaciones. Los datos para este sistema se presentan en la siguiente tabla (todos los tiempos están en minutos):

Número de la máquina

Medias de tiempo de proceso

Medias de falla con tiempo de funcionamiento Tiempo de reparación

1 8,5 475 (20,30)2 8,6 570 (25,35)3 8,3 665 (30,45)4 8,8 475 (20,30)

Simule las llegadas de 200 piezas para determinar el porcentaje de tiempo que cada máquina pasa en estado de falla y el promedio que espera una pieza para procesarse en cada máquina.

Page 186: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

184

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

7. Si se define t como el tiempo que transcurre en minutos antes de que falle un torno, cuyo tiempo sigue una distribución de probabilidad de Pareto dada por :

Si t ≥ t0

El valor α = 4 y t0 = 250 minutos.

8. El tiempo de torneado dado en minutos es una variable aleatoria con distribución de probabilidad:

Si t ≥ 5

Simule 1000 piezas para observar el comportamiento del tiempo de funcionamiento del torno.

9. Una determinada empresa realiza sus planes de producción con una anticipación de 15 días, y que por cada unidad del producto que fabrica necesita una unidad de un tipo de materia prima. La solicitud de la materia prima la puede realizar en cualquiera de esos 15 días. Ahora bien, si se hace el pedido demasiado tarde y se retrasa la producción, hay una pérdida de $4.500 por año de retraso. Se supone que los pedidos están fijados en 500 unidades de materia prima. Si, por otra parte, el pedido llega demasiado pronto, hay un costo de mantenimiento de inventario estimado en $3 por unidad por año. El tiempo de espera en días, hasta que la fábrica sirve la materia prima, es una variable aleatoria con distribución de probabilidad Gamma con β = 205 y α = 5. La empresa tiene un especial interés en determinar la fecha en la que se debe realizar el pedido con vistas a tener un costo total mínimo.

Page 187: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Generación de variables aleatorias discretas

Las variables aleatorias discretas pueden servir para describir una variedad de fenómenos casuales en los cuales ocurre el conteo de enteros. El patrón de núme-ros de artículos defectuosos en un lote es uno de los ejemplos más utilizados.La

función de densidad de probabilidad se denotará por medio de p(x), donde F(x) es la función de distribución acumulativa, que se describe así:

F(x) = función de distribución acumulativa =

5

Page 188: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

186

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Distribución probabilidad de Bernoulli

La función de densidad de probabilidad de la distribución de Bernoulli está dada por:

p = probabilidad de éxitoq = probabilidad de fracaso = 1 – plos valores de la variable x sona.) x = 0 si la probabilidad es 1-pb.) x = 1 si la probabilidad es ppara la función de probabilidad acumulativa se tiene

Para generar variables aleatorias binarias se tiene:

Ejemplo 5.1

Supóngase que una máquina produce una lote de piezas; la probabilidad de que pro-duzca lotes defectuosos es p = 0,20 (éxito) en un día. Simular 300 lotes (20 corridas y 15 réplicas):

La macro se realizará teniendo estos aspectos:a. Se evaluará mediante una condicional si el lote es rechazado o aceptado, luego se

contará la cantidad de lote rechazado mediante la función estadística “Countif ()”.b. Se calculará la probabilidad de que el lote sea rechazado durante 20 corridas

(número de lotes).c. Se determinará el promedio, la mediana, el valor máximo, el valor mínimo, la

varianza y la desviación estándar de las 15 réplicas.d. Cada réplica determinará la cantidad de lote rechazado por la generación del

número aleatorio (R).

Page 189: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

187

Cole

cción

1

Procedimiento 5.1. Macro para generar variables aleatorias de tipo Bernoulli

Sub Bernoulli() Dim p, q As Double, prob As Double, n As Integer, k As Integer, prom As Double Dim b As Double, v As Double Limpiar ActiveWindow.DisplayGridlines = False Cells.Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Font.Bold = True End With n = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = n k = InputBox(“Digite el número de réplicas:”)inicio: p = InputBox(“Digite la probabilidad de éxito:”): Cells(1, 2).Value = p If p >= 1 Then MsgBox “La probabilidad de éxito no debe ser mayor o igual 1”, vbOKOnly, “! ERROR!” GoTo inicio Else q = 1 - p End IfRange(“A2:G2,D4:D9”).Select Selection.Borders(xlEdgeTop).Weight = xlMedium Selection.Borders(xlEdgeBottom).Weight = xlMedium Selection.Interior.ColorIndex = 46 Range(“A1”).Select: ActiveCell.FormulaR1C1 = “p=” Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Lote Rechazado” Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de lote” Range(“B2”).Select: ActiveCell.FormulaR1C1 = “Números de unidades defectuosas” Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Estado del lote” Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Número de lotes rechazados” Range (“E2”).Select: ActiveCell.FormulaR1C1 = “Prob. de Rechazos” Range (“F2”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.” Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Cantidad de lotes rechazados” Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Promedio” Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Mediana” Range(“D6”).Select: ActiveCell.FormulaR1C1 = “Valor Máximo”

Page 190: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

188

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range("D7").Select: ActiveCell.FormulaR1C1 = "Valor mínimo" Range("D8").Select: ActiveCell.FormulaR1C1 = "varianza" Range ("D9").Select: ActiveCell.FormulaR1C1 = "Desv. Estándar"For i = 1 To k For j = 1 To n Cells(j + 2, 1) = j R = Rnd If R >= q Then x = 1: Cells(j + 2, 2).Value = x Cells(j + 2, 3) = "Lote Rechazado" Else x = 0: Cells(j + 2, 2).Value = x Cells(j + 2, 3) = "Lote Aceptado" End If Next j Cells(i + 2, 6).Value = i Cells(3, 4).Value = Application.WorksheetFunction.CountIf(Range(Cells(3, 3), Cells(n + 2, 3)), Cells(1, 3)) Cells(i + 2, 7).Value = Cells(3, 4).Value prob = (Cells(3, 4).Value) / n: Cells(3, 5).Value = probNext iCells(4, 5).Value = Application.Average(Range("G3:G" & (k + 2)))Cells(5, 5).Value = Application.Median(Range("G3:G" & (k + 2)))Cells(6, 5).Value = Application.Max(Range("G3:G" & (k + 2)))Cells(7, 5).Value = Application.Min(Range("G3:G" & (k + 2)))Cells(8, 5).Value = Application.Var(Range("G3:G" & (k + 2)))Cells(9, 5).Value = Application.StDev(Range("G3:G" & (k + 2)))Cells(1, 1).SelectEnd Sub

Distribución de probabilidad geométrica

La función de densidad de probabilidad de la distribución geométrica está dada por: p(x) = p.qx-1 ; x = 1,2,3,…..∞.p = probabilidad de éxito en una sola prueba.q = probabilidad de fracaso en una sola prueba = 1 – p.

Page 191: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

189

Cole

cción

1

x = variable aleatoria que indica el número de pruebas independientes hasta la ocurrencia del primer éxito.F(x) = función de probabilidad acumulativa.R = número aleatorio.E(x) = media de la distribución geométrica.V(x) = varianza de la distribución geométrica.

Para generar variables aleatorias tenemos:

Ejemplo 5.2

Supóngase que una máquina produce una determinada pieza, la probabilidad de que produzca piezas defectuosas es p = 0,50; si un lote tiene 4 o más piezas defectuosas, se rechaza el lote; en caso contrario se acepta. Simular 300 lotes (20 corridas y 15 réplicas) para determinar:

1. El número de lotes rechazados.2. Probabilidad de que se rechace un lote.3. Número promedio de lotes rechazados.4. La mediana.5. Valores máximo y mínimo de lotes rechazados.6. Varianza y desviación estándar.

Page 192: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

190

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Desarrollo:Se evaluará mediante una condicional si el lote es rechazado o aceptado; luego se

contará la cantidad de lote rechazado mediante la función estadística “Countif ()”. Se calculará la probabilidad de que el lote sea rechazado durante 20 corridas (número de lotes). Se determinará el promedio, la mediana, el valor máximo, el valor mínimo, la varianza y la desviación estándar de las 15 réplicas.

Para realizar la macro se debe tener en cuenta:1. Se creará una función de Excel llamada Ln (logaritmo natural) para generar la

variable aleatoria tipo geométrica (DE), que significa la variable de número de defectuosos.

2. Cada réplica determinará la cantidad de lote rechazado por la generación del número aleatorio (R).

Procedimiento 5.2. Macro para generar variables aleatorias de tipo geométrica

Sub Geometrica() Dim p, q As Double, prob As Double, N As Integer, k As Integer, prom As Double Dim b As Double, v As Double, DE As Integer, NU, D As Double Limpiar ActiveWindow.DisplayGridlines = False Cells.Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Font.Bold = True End With N = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = N k = InputBox(“Digite el número de réplicas:”)inicio: p = InputBox(“Digite la probabilidad de éxito:”): Cells(1, 2).Value = p If p >= 1 Then MsgBox “La probabilidad de éxito no debe ser mayor o igual 1”, vbOKOnly, “! ERROR!”

Page 193: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

191

Cole

cción

1

GoTo inicio Else q = 1 - p End IfRange(“A2:G2,D4:D9”).Select Selection.Borders(xlEdgeTop).Weight = xlMedium Selection.Borders(xlEdgeBottom).Weight = xlMedium Selection.Interior.ColorIndex = 46 Range(“A1”).Select: ActiveCell.FormulaR1C1 = “p=” Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Lote Rechazado” Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de lote” Range(“B2”).Select: ActiveCell.FormulaR1C1 = “Números de unidades defectuosas” Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Estado del lote” Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Número de lotes rechazados” Range (“E2”).Select: ActiveCell.FormulaR1C1 = “Prob. de Rechazos” Range (“F2”).Select: ActiveCell.FormulaR1C1 = “Réplica Num.” Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Cantidad de lotes rechazados” Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Promedio” Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Mediana” Range(“D6”).Select: ActiveCell.FormulaR1C1 = “Valor Máximo” Range(“D7”).Select: ActiveCell.FormulaR1C1 = “Valor mínimo” Range(“D8”).Select: ActiveCell.FormulaR1C1 = “varianza” Range (“D9”).Select: ActiveCell.FormulaR1C1 = “Desv. Estándar”For i = 1 To k For j = 1 To N Cells(j + 2, 1) = j R = Rnd NU = Application.WorksheetFunction.Ln(R): D = Application.WorksheetFunction.Ln(q) DE = 1 + Int(NU / D): Cells(j + 2, 2).Value = DE If DE >= 4 Then Cells(j + 2, 3) = “Lote Rechazado” Else Cells(j + 2, 3) = “Lote Aceptado” End If Next j Cells(i + 2, 6).Value = i Cells(3, 4).Value = Application.WorksheetFunction.CountIf(Range(Cells(3, 3), Cells(N + 2, 3)), Cells(1, 3)) Cells(i + 2, 7).Value = Cells(3, 4).Value prob = (Cells(3, 4).Value) / N: Cells(3, 5).Value = prob

Page 194: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

192

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Next iCells(4, 5).Value = Application.Average(Range("G3:G" & (k + 2)))Cells(5, 5).Value = Application.Median(Range("G3:G" & (k + 2)))Cells(6, 5).Value = Application.Max(Range("G3:G" & (k + 2)))Cells(7, 5).Value = Application.Min(Range("G3:G" & (k + 2)))Cells(8, 5).Value = Application.Var(Range("G3:G" & (k + 2)))Cells(9, 5).Value = Application.StDev(Range("G3:G" & (k + 2)))Cells(1, 1).SelectEnd Sub

Distribución de probabilidad binomial

Una distribución binomial existe cuando se satisfacen las siguientes condiciones:a. Se realiza un experimento n veces.b. Cada realización es independiente de los demás.c. El espacio de la prueba de cada experimento tiene dos elementos.

La función de densidad de probabilidad viene dada por:

Donde:x = número de éxitosn =número de ensayosp = probabilidad de éxitoq = probabilidad de fracaso

Page 195: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

193

Cole

cción

1

Generación de variables aleatorias de tipo binomial

Método de convolución: La variable aleatoria binomial con parámetros n y p puede ser generada a través de la

suma de n variables con distribución Bernoulli: X = variable aleatoria binomial Xi = variable aleatoria de Bernoulli

X=

Generación de variables aleatorias por macro

La macro para generar variables aleatorias de tipo binomial se hará en dos formas:1. Método de convolución 2. Método de Montecarlo

Método de convolución:Este método se explica mediante el siguiente diagrama de flujo.

Page 196: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

194

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 5.1. Diagrama de flujo para generar variables aleatorias binomiales

Método de Montecarlo:Este método primero calcula las probabilidades acumulativas mediante la función

Excel “BinomDist (x, n, p, 1)”, luego se generan variables aleatorias con la función “Vlookup ( )” de Excel.

Procedimiento 5.3. Macro para generar variables binomiales por el método de convolución

Sub Convolucion()Dim x As Integer, p As Double, n As IntegerActiveWindow.DisplayGridlines = FalseRange(“A7:K2000”).ClearContentsRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Probabilidad de Exito (p)=”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de Lotes”Range(“B2”).Select: ActiveCell.FormulaR1C1 = “Número de Unidades de defectuosas (convolución)”Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True

Page 197: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

195

Cole

cción

1

.Font.Name = "Arial" .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd Withlote = InputBox("Introduzca el número de lotes:")Range("A2:CB" & (lote + 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("A2:B2").SelectSelection.Interior.ColorIndex = 44n = InputBox("Digite el número de veces de experimentos"): Cells(1, 3).Value = nRange("A3:B" & (lote + 2)).ClearContentsinicio:p = InputBox("Digite el valor de p"): Cells(1, 2).Value = pIf (p > 1) ThenMsgBox "La probabilidad de éxito no debe ser mayor o igual que 1", vbOKOnly, "¡ERROR¡"GoTo inicioElseFor j = 1 To loteCells(j + 2, 1).Value = jSum = 0For K = 1 To nR = RndIf (R <= p) Thenx = 0Elsex = 1End IfSum = Sum + xNext KCells(j + 2, 2).Value = SumNext jEnd IfEnd Sub

Page 198: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

196

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 5.4. Macro para generar variables binomiales por el método de Montecarlo

Sub Montecarlo()Dim Rango1 As Range, n As Integer, p As Double, x, exito As IntegerActiveWindow.DisplayGridlines = FalseRange(“D1:K2000”).ClearContentsRange(“D2”).Select: ActiveCell.FormulaR1C1 = “Número de Éxitos (X)”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Probabilidad Acumulativa”Range(“F2”).Select: ActiveCell.FormulaR1C1 = “Cota Inferior de la Probabilidad”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Cota Superior de la Probabilidad”Range(“H2”).Select: ActiveCell.FormulaR1C1 = “Número de Éxitos (X)”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Número de lotes”Range(“J2”).Select: ActiveCell.FormulaR1C1 = “Número de Unidades de defectuosas (montecarlo)”Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd Withlote = InputBox(“Introduzca el número de lotes:”)Range(“I2:J” & (lote + 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange(“D2:J2”).SelectSelection.Interior.ColorIndex = 44n = InputBox(“Digite el número de veces de experimentos”): Cells(1, 3).Value = nexito = InputBox(“Digite el Número de éxitos (X)”): Cells(1, 4).Value = exitoRange(“D2:H” & (exito + 2)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin

Page 199: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

197

Cole

cción

1

.Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithSet Rango1 = Worksheets(1).Range("$F$3:$H" & (exito + 2))inicio:p = InputBox("Digite el valor de p"): Cells(1, 2).Value = pIf (p > 1) ThenMsgBox "La probabilidad de éxito no debe ser mayor o igual que 1", vbOKOnly, "¡ERROR¡"GoTo inicioElseCells(3, 6).Value = 0For i = 1 To exitoCells(i + 2, 4).Value = i - 1Cells(i + 2, 8).Value = i - 1x = Cells(i + 2, 4).Valueb = Application.BinomDist(x, n, p, 1): Cells(i + 2, 5).Value = bCells(i + 2, 7).Value = Cells(i + 2, 5).ValueCells(i + 3, 6).Value = Cells(i + 2, 7).ValueCells(exito + 3, 6).Value = ""Next iEnd IfFor j = 1 To loteCells(j + 2, 9).Value = jR = RndCells(j + 2, 10).Value = Application.VLookup(R, Rango1, 3)Next jEnd Sub

Page 200: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

198

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Distribución de probabilidad hipergeométrica

La función de densidad de probabilidad de la distribución hipergeométrica está dada por:

x = variable aleatoria que indica muestra de éxitosn = número de la muestraM = población éxitoN = número de la población

Seguidamente se describirá esta variable aleatoria en forma general. Para tal fin, considérese un lote que contiene N unidades de un determinado objeto, de los cuales hay M defectuosos (M ≤ N). Se eligen n objetos sin reemplazamientos (n ≤ N). La variable aleatoria que describe el número de unidades defectuosas recibe el nombre de hipergeométrica.

Generación de variables aleatorias de tipo hipergeométrica

Suponiendo que el muestreo ocurre en forma secuencial, es posible considerar el pro-cedimiento como una secuencia de pruebas de Bernoulli en las cuales la probabilidad de seleccionar un artículo con la característica (éxito) es una función del número que la tiene.

En la primera n pruebas, la probabilidad de éxito es M / N; si la primera prueba da como resultado un éxito, la probabilidad de éxito en la segunda prueba es (M – 1) / (N – 1). Si la primera prueba es un fracaso, la probabilidad de éxito en la segunda prueba

Page 201: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

199

Cole

cción

1

es M / (N – 1). En la prueba r-ésima la probabilidad de éxito es (M – q) / (N – r +1), q es el número de éxitos en r – 1 pruebas anteriores.

Generación de variables aleatorias de tipo hipergeométrica por macro

La macro para generar variables aleatorias de tipo hipergeométrica se hará mediante el método de convolucion. Este método se explica mediante el siguiente diagrama de flujo.

Figura 5.2. Diagrama para generar variables aleatorias de tipo hipergeométrico

Page 202: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

200

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 5.5. Macro para generar variables de tipo

hipergeométrica por el método de convolución

Sub Hipergeom1()Dim N As Integer, M As Integer, p As Double, R As Double, Prob As DoubleActiveWindow.DisplayGridlines = FalseRange(“A1:K2000”).ClearContentsK = InputBox(“Digite el Número de Población N:”): Cells(1, 2).Value = KRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Número de la Población”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de la Muestra”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Número de la Población Éxito”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Número de Aceptables”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Probabilidad de Aceptable”Range(“A6”).Select: ActiveCell.FormulaR1C1 = “Poblacion Numero”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Variable Generada”Range(“C6”).Select: ActiveCell.FormulaR1C1 = “Estado”Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A1:B5,A6:C” & (K + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange(“A1:A5,A6:C6”).SelectSelection.Interior.ColorIndex = 44Cells(3, 3) = “Aceptable”Inicio:M = InputBox(“Introduzca el número de la población de éxito M:”): Cells(3, 2).Value = MIf (M < K) Then

Page 203: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

201

Cole

cción

1

Comenzar: S = InputBox("Introduzca el número de la muestra S:"): Cells(2, 2).Value = SIf (S <= K Or S <= M) ThenFor j = 1 To KCells(j + 6, 1).Value = jSum = 0: N = Cells(1, 2).Value: M = Cells(3, 2).ValueFor i = 1 To SR = Rnd: p = (M / N)If (R >= p) ThenX = 1: M = M - 1ElseX = 0: N = N - 1: M = M - 1End IfSum = Sum + XNext iCells(6 + j, 2).Value = SumIf (Sum >= 5) ThenCells(6 + j, 3) = "Aceptable"ElseCells(6 + j, 3) = " No Aceptable"End IfNext jCells(4, 2).Value = Application.WorksheetFunction.CountIf(Range(Cells(7, 3), Cells(36, 3)), Cells(3, 3))Prob = (Cells(4, 2).Value) / K: Cells(5, 2).Value = ProbElseMsgBox "El número de la muestra debe ser menor o igual que el número de la población", vbOKOnly, "ERROR"GoTo ComenzarEnd IfElseMsgBox "El número de la población de éxito debe ser menor o igual que el número de la pobla-ción", vbOKOnly, "ERROR"GoTo InicioEnd IfEnd Sub

Page 204: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

202

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Distribución de probabilidad Poisson

La función de densidad de probabilidad de la distribución Poisson está dada por:

Donde X se denomina como variable aleatoria con distribución Poisson. El paráme-tro de esta distribución es λ. Para simular valores de una variable aleatoria de Poisson de parámetro λ, se partirá de valores simulados en una variable aleatoria exponencial.

Método de aceptación y rechazo:En efecto, si ocurren x sucesos en el intervalo [0, t], la suma de los tiempos transcu-

rridos entre los x sucesos debe menor que t. Así, si Xi es el tiempo transcurrido entre los x sucesos i – 1 e i, se tiene:

Así, como los Xi siguen una distribución exponencial con parámetro λ, se simulan valores sucesivos de Xi hasta que:

Es decir, K es el número de sucesos que hacen:

Por tanto, han ocurrido K – 1 sucesos antes del instante t y el k –ésimo ocurre en un tiempo posterior a t. Por consiguiente, el valor x , simulado de una variable aleatoria de Poisson de parámetro λ, será x = K – 1. Si se desea, como es lo habitual, simular valores de una variable aleatoria de Poisson de parámetro λ, entonces se considera el intervalo (0, t] y x = k – 1 será el valor simulado de una variable aleatoria de Poisson de parámetro λ, si se verifica lo siguiente:

Page 205: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

203

Cole

cción

1

Además, los valores simulados de una variable aleatoria exponencial con parámetro λ se obtienen a través de la expresión:

Donde Ri es el número aleatorio i, se tiene que el valor simulado en la variable alea-toria de Poisson con parámetro λ es x = k – 1, si se cumple:

O, lo que es lo mismo, si:

El siguiente diagrama de flujo permite generar valores de una variable aleatoria con distribución Poisson, a través del método descrito.

Figura 5.3. Diagrama de flujo para generar variables aleatorias de tipo Poisson

Page 206: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

204

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Generación de variables aleatorias de tipo Poisson por macro

La macro para generar variables aleatorias de tipo Poisson se hará mediante el método de convolución.

Procedimiento 5.6. Macro para generar variables aleatorias

de tipo Poisson por el método de convolución

Sub POISSON()Dim N As Integer, M As DoubleActiveWindow.DisplayGridlines = FalseLimpiarborrarRange(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“B3”).Select: ActiveCell.FormulaR1C1 = “Generacion de Variables de Poissón”Range(“B3:D4”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“B5”).Select: ActiveCell.FormulaR1C1 = “Valor de Lambda”Selection.Interior.ColorIndex = 20Selection.MergeN = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = NRange(“B8:D8”).Select Selection.Interior.ColorIndex = 6 Range(“B9:D” & (N + 8)).Select Selection.Interior.ColorIndex = 19 Range(“B8”).Select: ActiveCell.FormulaR1C1 = “Número de corrida” Range(“C8”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios” Range(“D8”).Select: ActiveCell.FormulaR1C1 = “Variable Generada”M = InputBox(“Introduzca el valor de la media:”): Cells(5, 3).Value = M

Page 207: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

205

Cole

cción

1

For j = 1 To NCells(j + 8, 2).Value = jY = 0: X = 0Inicio:R = Rnd: Cells(j + 8, 3).Value = RV = (-1) * (Application.WorksheetFunction.Ln(1 - R) / M)Y = Y + VIf (Y > 1) ThenCells(j + 8, 4).Value = XElseX = X + 1Cells(8 + j, 4).Value = XGoTo InicioEnd IfNext jEnd Sub

Ejemplo 5.3

La demanda diaria de equipos médicos en una supertienda es una variable aleatoria con distribución binomial con parámetros n = 4 y p = 0,45. Se hace un pedido Q = 10 equipos siempre que en el almacén haya 4 o menos equipos. Inicialmente hay en inventarios 12 equipos, se supone que si acude un cliente a comprar un equipo y en ese momento no hay existencias en el almacén, se ha perdido la venta. El tiempo que transcurre, en días, entre la fecha en que se hace el pedido y la fecha en que la fábrica lo sirve es una variable aleatoria con distribución geométrica de parámetro p = 0,40. se requiere simular este comportamiento para 24 días con el propósito de conocer cuánto se ha dejado de vender en promedio.

Desarrollo:La definición de variables para la macro es:a. Di = día de la simulación i.b. DSi = demanda simulada para el día i.c. TEi = tiempo de espera simulado para el día i.

Page 208: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

206

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

d. NVi = número de equipos vendidos el día i.e. FEi = número de equipos no vendidos por falta de existencias el día i.f. NTi = número de equipos en el almacén el día i.g. Tj = número de equipos recibidos en el pedido j.

Para realizar la macro se debe tener en cuenta:a. Se creará una función de Excel denominada binomial con dos parámetros, n y

p1.b. Se obtendrá otra función de Excel denominada geométrica con un parámetro,

q2.c. Luego una función de Excel llamada Ln (logaritmo natural) para generar la

variable aleatoria tipo geométrica, que significa el tiempo de entrega.d. Cada réplica determinará el número de equipos no vendidos en promedio.

Procedimiento 5.7. Macro para desarrollar ejemplo inventario de equipos médicos

Sub Equipos()Dim TE As Integer, PRO As Integer, DS As Integer, Rep As IntegerDim NV As Integer, FE As Integer, NT As Integer, T As Integer, n As IntegerDim p1 As Single, p2 As Double, q As Double, R As Double, k As IntegerActiveWindow.DisplayGridlines = FalseRange(“A1:P2000”).ClearContentsRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Generacion de Variables Binomiales y Geométricas”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Parámetro Binomial (n)”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Probabilidad Binomial”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Probabilidad Geométrica”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Numeros de Días”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “Demanda Generada(DS)”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Número de Equipos Vendidos (NV)”Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Número de Equipos en el Almacén (NT)”Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Número de equipos no vendidos”Range(“F5”).Select: ActiveCell.FormulaR1C1 = “Tiempo de espera (TE)”Range(“G5”).Select: ActiveCell.FormulaR1C1 = “Número de equipos recibidos(T)”Range (“H5”).Select: ActiveCell.FormulaR1C1 = “Replicas Num.”

Page 209: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

207

Cole

cción

1

Range(“I5”).Select: ActiveCell.FormulaR1C1 = “Promedio de Equipos no vendidos”Range(“J5”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Entrega generado”Range(“A2:A4”).SelectSelection.Interior.ColorIndex = 44Range(“A5:J5”).SelectSelection.Interior.ColorIndex = 6dia = InputBox(“Digite el número de Dias:”): Cells(4, 4).Value = diap1 = InputBox(“Digite la Probablidad de éxito de la Binomial”): Cells(3, 2).Value = p1p2 = InputBox(“Digite la Probablidad de éxito de la Geométrica”): Cells(4, 2).Value = p2n = InputBox(“Digite el número de ensayos o parámetro de binomial”): Cells(2, 2).Value = nRange(“A1:J1”).SelectSelection.MergeSelection.Interior.ColorIndex = 20Range(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A2:B4,J5:J15,A5:G” & (dia + 6)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithPRO = 4Rep = InputBox(“Digite el número de Replicas (No mayor que 25):”, “NUMERO DE REPLICAS”)If (Rep > 25) ThenMsgBox “El número de replicas excede a la capacidad de corridas”, vbOKOnly, “!! LO SIENTO !!”Exit SubEnd IfRange(“H5:I” & (Rep + 5)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin

Page 210: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

208

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithFor i = 1 To RepVar = “REPLICA NUMERO “ + Str(i)MsgBox Var, vbOKOnly, “REPLICAS”Cells(i + 5, 8).Value = i‘Generación de la demandaCells(6, 1).Value = 0For k = 1 To diaCells(k + 6, 1).Value = kCells(k + 6, 2).Value = BINOMIALNext k‘Generacion de los tiempos de entregaFor j = 6 To 15p2 = Cells(4, 2).ValueR = Rndq = 1 - p2Cells(j, 10).Value = Geometrica(R, q)Next jCells(6, 4).Value = 10‘Número de equipos vendidos en el diaj = 6For k = 1 To diaNV = Cells(k + 6, 2).ValueNT = (Cells(k + 5, 4).Value) - NVIf (NT <= PRO) And (TE <= -1) Then Cells(k + 6, 6).Value = Cells(j, 10).Value Cells(k + 6, 3).Value = NV Cells(k + 6, 4).Value = NT + Cells(k + 6, 7).Value TE = Cells(k + 6, 6).Value j = j + 1 If (Cells(k + 6, 4).Value > 0) Then Cells(k + 6 + TE, 7).Value = 10 - (Cells(k + 6, 4).Value) Else Cells(k + 6 + TE, 7).Value = 10 End If

Page 211: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

209

Cole

cción

1

Else Cells(k + 6, 3).Value = NV Cells(k + 6, 4).Value = NT + Cells(k + 6, 7).Value End If If (NT <= 0) Then Cells(k + 6, 4).Value = 0 If (Cells(k + 7, 2).Value > Cells(k + 6, 4).Value) Then Cells(k + 6, 3).Value = Cells(k + 5, 4) FE = Cells(k + 6, 2).Value - Cells(k + 6, 3).Value Cells(k + 6, 5).Value = FE Else Cells(k + 6, 3).Value = 0 FE = Cells(k + 6, 2).Value Cells(k + 6, 5).Value = FE End If If (Cells(k + 6, 7).Value <> 0) Then Cells(k + 6, 4).Value = Cells(k + 6, 7).Value End If End If TE = TE - 1 Cells(dia + 1, 5).Value = "" Cells(dia + 1, 6).Value = "" Cells(dia + 1, 7).Value = "" Next k dia = Cells(4, 4).Value Range("A" & (dia + 7)).Select: ActiveCell.FormulaR1C1 = "TOTAL" Cells(dia + 7, 5).Value = Application.WorksheetFunction.Sum(Range(Cells(7, 5), Cells(dia + 6))) Cells(i + 5, 9).Value = Cells(dia + 7, 5)Next iRange("H" & (Rep + 6)).Select: ActiveCell.FormulaR1C1 = "PROMEDIO"Cells(Rep + 6, 9).Value = Application.WorksheetFunction.Average(Range(Cells(6, 9), Cells(Rep + 5, 9)))End Sub

Page 212: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

210

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Function BINOMIAL(n As Variant, p1 As Single) As IntegerDim R As Doublep1 = Cells(3, 2).Value: n = Cells(2, 2).ValueSum = 0For k = 1 To nR = RndIf (R <= p1) Thenx = 0Elsex = 1End IfSum = Sum + xNext kBINOMIAL = SumEnd Function

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Geometrica(q2 As Double) As IntegerDim R1 As DoubleR1 = RndGeometrica = 1 + Int(Ln(R1) / Ln(q2))End Function

Ejercicios

1. Se tiene el siguiente juego de lanzamiento de monedas al aire, realizado por dos amigos: Pedro y Juan. El juego consiste en lanzar una moneda (p = 0,50 si sale cara) al aire hasta que la diferencia entre el número de caras y el de sellos sea igual a tres. Pedro debe pagar a Juan $100 por cada lanzamiento que haga y recibirá $1.000 cuando la diferencia entre el número de caras y el de sellos (número de sellos menos el de caras) sea igual a tres.

Page 213: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

GENERACIÓN DE vARIABLES ALEATORIAS DISCRETAS

211

Cole

cción

1

Simule 40 observaciones de lanzamiento de la moneda utilizando, para generar cara o sello una distribucion Bernoulli.

2. La demanda diaria de una empresa de buses de turismo es una variable aleatoria con distribución binomial B (10, 0.60). Esta empresa dispone de 10 buses de turismo, siendo el costo fijo operativo de $10.000 diarios por bus. A veces la empresa necesita subcontratar buses de turismo de otra empresa, ya que tiene una demanda superior a los 10 buses de que dispone. La subcontratación es una variable aleatoria con una distribucion binomial B (6, 0.55), el costo de subcontratacion por bus es de $15.000 diarios, en caso de conseguirla. Cuando no es así, y no consigue subcontratar tantos buses para poder garantizar la demanda de servicio, entonces sufre una pérdida por bus de $80.000 por servicio no cumplido. Simula 50 días para replantear el número de buses de turismo que debería tener en aras de minizar el costo promedio total.

3. Considérese un lote que contiene 100 unidades de un determinado objeto, de los cuales hay 15 defectuosos. Se eligen 6 objetos para examinarlos sin reemplaza-miento. La variable aleatoria que describe el número de unidades defectuosas recibe el nombre de hipergeométrica.

Si el número de defectuosas es mayor o igual a 5, se considera el lote como rechazado; en caso contrario, se acepta. Se supone que hay un costo por unidad examinada de $5. Si un lote se rechaza, se elimina completamente a un costo de $6 por unidad. Por otra parte, si se acepta un lote y posteriormente este resulta ser defectuoso, se ocasiona un costo de $40 por unidad defectuosa. Simule 100 lotes para determinar el costo promedio de rechazo, el costo promedio de aceptación y el costo promedio total por lote.

4. Un torno CNC, cuando funciona perfectamente puede producir una utilidad de $100 por hora a una empresa manufacturera. Sin embargo, esta máquina tiene

Page 214: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

212

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

tendencia a fallar en momentos inesperados e impredecibles. Supóngase que el número de fallas durante cualquier periodo de 48 horas es una variable aleatoria con distribucion Poisson con parametro de 2 fallas. Si la máquina falla 5 veces durante 48 horas, la pérdida ocasionada (la improductividad de la máquina más la reparacion) equivale a $30. Simule 1000 horas para determinar la utilidad promedia.

5. Un mecanismo se inspecciona al finalizar cada día para ver si aún funciona ade-cuadamente. El número de inspecciones necesarias es una variable aleatoria con distribución geométrica con probabilidad (p = 0,35). Simule 30 días para calcular la probabbildad de que ocurran por lo menos 5 inspecciones diarias.

6. Una estación de gasolina abre diariamente en la mañanas a las 8:00 a.m. y cierra a las 8:00 p.m. A los empleados que atiende esta gasolinería se les paga generalmente $200 al día. La llegada de los automóviles que solicitan servicio sigue una distribu-cion de Poisson, con una llegada promedio igual 10 autos por hora. El tiempo de servicio por carro es una variable aleatoria con distribucion geométrica, BE (0,30) minutos. Cuando excede de 3 el número de automóviles que esperan el servicio, entonces los clientes disgustados abandonan la gasolinería sin esperar el servicio. Simule para derminar el número de operarios que debe contratar la estación de gasolina, sabiendo que las ganacias que deja a cada automóvil servido son de $5.

Page 215: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Modelos de simulación de líneas de espera con distribución de probabilidad teórica

En los capítulos anteriores se han simulado fenómenos de espera; ahora, se abordará el problema de diseñar modelos de simulación de líneas de espera para observar las características del fenómeno de espera analizando su comportamiento a lo

largo del tiempo. La ventaja de este análisis estriba en que de esta forma se controlará el fenómeno de espera, pudiendo cambiar los parámetros y las reglas de decisión a volun-tad del experimentador. Además, mientras que el estudio real del comportamiento de la línea de espera puede llevar días hasta inclusive meses, su funcionamiento a través de la simulación se puede realizar en pocos minutos mediante una macro de Excel.

A lo largo de este capítulo, se supone que el usuario está familiarizado con la termino-logía existente en la teoría de colas, y que además tiene acceso a las referencias comunes sobre estos tópicos, las cuales se citarán en los lugares adecuados en el desarrollo del capítulo.

Elementos de simulación para los modelos de líneas de espera

A continuación se presentarán formulaciones básicas que servirán como medidas de desempeño o eficiencia de la simulación de líneas de espera con las nomenclaturas que se enuncian a continuación:

6

Page 216: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

214

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Wi = tiempo promedio que espera un cliente i en el sistema.

Wqi = tiempo promedio que espera un cliente i en la cola.

Tn = tiempo acumulado de la última llegada.

ta(i) = variable aleatoria del tiempo entre llegadas generada por una distribución de probabilidad para el cliente i.

ts(i) = variable aleatoria del tiempo de servicio generada por una distribución de probabilidad para el cliente i.

t0(i) = tiempo inactivo del servidor para el cliente i.

TLL(i) = tiempo medido de llegadas (tiempo acumulado) para el cliente i.

Ti(i) = tiempo de inicio de servicio.

Tt(i) = tiempo de terminación o tiempo de salida.

Wprom = tiempo promedio de espera total en el sistema.

Wqprom = tiempo promedio de espera total en la cola.

L = número promedio de clientes en el sistema.

Lq = número promedio de clientes en la cola.

U = utilización del sistema.

P0 = probabilidad o porcentaje de inactivo.

Page 217: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

215

Cole

cción

1

Las formulaciones básicas para las medidas de desempeño para simualcion de líneas de espera son:

Modelo de líneas de espera con un solo servidor

En esta sección se presentan cuatro ejemplos de líneas de espera para programar expe-rimentos de simulación a través de macro de Excel.

Page 218: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

216

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo 6.1

Simular una estación de gasolina en la que los tiempos entre llegadas de los automóviles al sistema estan distribuidos normalmente con media de 1,5 minutos y desviación están-dar de 0,33 minutos, y que el tiempo de servicio por automóvil está distribuido en forma exponencial con una media de 2,5 minutos. Realizar la simulación para 20 automóviles y determinar sus medidas de desempeño.

Procedimiento 6.1. Macro de líneas de espera con un solo servidor

Sub Unsoloservidor()Dim R1 As Double, Tentrellegadas(1 To 10000) As Double, Tservicio(1 To 10000) As DoubleDim R2 As Double, Tmedido(1 To 10000) As Double, inicio(1 To 10000) As Double, Tfinal(1 To 10000) As DoubleDim W(1 To 10000) As Double, Wq(1 To 10000) As Double, Media As Double, Desv As DoubleDim P0, Wprom, Wqprom, L, Lq As Double, inactivo(1 To 10000) As DoubleLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nMedia = InputBox(“Introduzca el valor de la media del tiempo entre llegadas:”): Cells(5, 13).Value = MediaDesv = InputBox(“Introduzca la desviación estándar del tiempo entre llegadas:”): Cells(6, 13).Value = DesvM = InputBox(“Introduzca la media del tiempo de servicio:”): Cells(7, 13).Value = MCellsSelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 11 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange(“B3:J3”).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium

Page 219: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

217

Cole

cción

1

.Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithSelection.MergeActiveCell.FormulaR1C1 = “SIMULACIÓN DE LINEAS DE ESPERA UN SOLO SERVIDOR”Range(“B4”).Select: ActiveCell.FormulaR1C1 = “Automóvil”Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Tiempo entre llegadas”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Tiempo de medido de llegadas”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Tiempo de inicio de servicio”Range(“F4”).Select: ActiveCell.FormulaR1C1 = “Tiempo de servicio”Range(“G4”).Select: ActiveCell.FormulaR1C1 = “Terminacion de servicio”Range(“H4”).Select: ActiveCell.FormulaR1C1 = “Tiempo de espera del automóvil en el sistema”Range(“I4”).Select: ActiveCell.FormulaR1C1 = “Tiempo de espera del automóvil en la cola”Range(“J4”).Select: ActiveCell.FormulaR1C1 = “Tiempo inactivo del servidor”Range(“B4:J4”).SelectWith Selection .Interior.ColorIndex = 46 .ReadingOrder = xlContext .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium End WithRange(Cells(5, 2), Cells(n + 4, 10)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(Cells(5, 12), Cells(12, 13)).SelectSelection.Interior.ColorIndex = 20 Range(“L5”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de llegadas” Range(“L6”).Select: ActiveCell.FormulaR1C1 = “Desviacion estándar del tiempo de llegadas” Range(“L7”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de servicio” Range(“L8”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema” Range(“L9”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de tiempo del servidor desocupado”

Page 220: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

218

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“L10”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en la cola” Range(“L11”).Select: ActiveCell.FormulaR1C1 = “Número promedio de autos en el sistema” Range(“L12”).Select: ActiveCell.FormulaR1C1 = “Número promedio de autos en la cola” Range(Cells(5, 12), Cells(12, 13)).Select Columns(“L:L”).EntireColumn.AutoFit With Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithFor j = 1 To n Cells(j + 4, 2) = j R1 = Rnd: Tentrellegadas(j) = Round(Application.NormInv(R1, Media, Desv), 2) Cells(j + 4, 3).Value = Tentrellegadas(j) R2 = Rnd: Tservicio(j) = Round((-1) * M * (Application.Ln(1 - R2)), 2) Cells(j + 4, 6).Value = Tservicio(j)Next jFor i = 1 To n Tentrellegadas(i) = Cells(i + 4, 3).Value: Tmedido(i) = Cells(i + 4, 4).Value inicio(i) = Cells(i + 4, 5).Value: Tservicio(i) = Cells(i + 4, 6).Value Tfinal(i) = Cells(i + 4, 7).Value: W(i) = Cells(i + 4, 8).Value Wq(i) = Cells(i + 4, 9).Value: inactivo(i) = Cells(i + 4, 10).ValueNext iTmedido(1) = Tentrellegadas(1): Cells(5, 4).Value = Tmedido(1)inicio(1) = Tmedido(1): Cells(5, 5).Value = Round(inicio(1), 2)Tfinal(1) = inicio(1) + Tservicio(1): Cells(5, 7).Value = Tfinal(1)W(1) = Tfinal(1) - Tmedido(1): Cells(5, 8).Value = Round(W(1), 2)Wq(1) = Tfinal(1) - Tmedido(1) - Tservicio(1): Cells(5, 9).Value = Round(Wq(1), 2)inactivo(1) = 0: Cells(5, 10).Value = inactivo(1)For i = 2 To nTmedido(i) = Tmedido(i - 1) + Tentrellegadas(i): Cells(i + 4, 4).Value = Tmedido(i)inicio(i) = Application.Max(Tmedido(i), Tfinal(i - 1)): Cells(i + 4, 5).Value = inicio(i)Tfinal(i) = inicio(i) + Tservicio(i): Cells(i + 4, 7).Value = Tfinal(i)W(i) = Tfinal(i) - Tmedido(i): Cells(i + 4, 8).Value = Round(W(i), 2)Wq(i) = Tfinal(i) - Tmedido(i) - Tservicio(i): Cells(i + 4, 9).Value = Round(Wq(i), 2)inactivo(i) = inicio(i) - Tfinal(i - 1): Cells(i + 4, 10).Value = inactivo(i)Next iWprom = Application.Average(Range(“H5:H” & (n + 4))): Cells(8, 13).Value = Round(Wprom, 2)

Page 221: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

219

Cole

cción

1

P0 = (Application.Sum(Range("J5:J" & (n + 4)))) / ((Application.Max(Range("G5:G" & (n + 4)))) - Cells(5, 5).Value)Cells(9, 13).Value = P0Range("M9").SelectSelection.NumberFormat = "0.00%"Wqprom = Application.Average(Range("I5:I" & (n + 4))): Cells(10, 13).Value = Round(Wqprom, 2)L = (Application.Sum(Range("H5:H" & (n + 4)))) / ((Application.Max(Range("G5:G" & (n + 4)))) - Cells(5, 5).Value)Cells(11, 13).Value = Round(L, 0)Lq = (Application.Sum(Range("I5:I" & (n + 4)))) / ((Application.Max(Range("G5:G" & (n + 4)))) - Cells(5, 5).Value)Cells(12, 13).Value = Round(Lq, 0)Range("A1").SelectEnd Sub

Ejemplo 6.2

Una supertienda abre diariamente en las mañanas a las 9:00 a.m. y cierra a las 9:00 p.m. Los clientes llegan a una caja para pagar sus compras, siendo la llegada una variable aleatoria con distribución exponencial con media de 6 minutos. El tiempo de servicio por cliente está distribuido exponencialmente con una media de 5 minutos. Simular para 20 clientes y determinar sus medidas de desempeño.

Para realizar esta macro se tiene en cuenta:a. Se captura el tiempo de entrada con formato horario de la forma “h: mm:ss”.b. El tiempo medido de llegada, el tiempo de inicio de servicio y el tiempo de

terminación de servicio se convierte en formato horario de la forma “h: mm:ss”.c. Para las formulaciones, el formato “h:mm:ss” se convierte a númerosd. Hacer previamente una macro denominada “DATOSINICIALES”

Page 222: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

220

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 6.2. Macro para simulación de líneas de espera con formato horario

Sub DATOSINICIALES()ActiveWindow.DisplayGridlines = FalseRange(“A4”).Select: ActiveCell.FormulaR1C1 = “Simulacion de Linea de Espera con un solo Servidor”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “ENTRADA”Range(“D6”).Select: ActiveCell.FormulaR1C1 = “Media”Range(“E6”).Select: ActiveCell.FormulaR1C1 = “L”Range(“F6”).Select: ActiveCell.FormulaR1C1 = “Lq”Range(“G6”).Select: ActiveCell.FormulaR1C1 = “W”Range(“H6”).Select: ActiveCell.FormulaR1C1 = “Wq”Range(“I6”).Select: ActiveCell.FormulaR1C1 = “Po”Range(“J6”).Select: ActiveCell.FormulaR1C1 = “Utilización Promedio de la Instalacion”Range(“A7”).Select: ActiveCell.FormulaR1C1 = “Distribución del Tiempo entre Llegadas”Range(“A9”).Select: ActiveCell.FormulaR1C1 = “Distribución del Tiempo de Servicio”Range(“A11”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Entrada”Range(“A13”).Select: ActiveCell.FormulaR1C1 = “Clientes”Range(“B13”).Select: ActiveCell.FormulaR1C1 = “Tiempo Entre Llegadas (Min)”Range(“C13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Servicio (Min)”Range(“D13”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegadas”Range(“E13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Iniciación de Servicio”Range(“F13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Terminación de Servicio”Range(“G13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Espera de Un Cliente en el Sistema (Min)”Range(“H13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Espera de Un Cliente en la cola(Min)”Range(“I13”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inactivo del Servidor (Min)”Range(“K13”).Select: ActiveCell.FormulaR1C1 = “Conversiones”Range(“K14”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Llegadas”Range(“L14”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Iniciación de Servicio”Range(“M14”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Salida”Range(“A4:J4”).SelectSelection.MergeSelection.Interior.ColorIndex = 6Range(“A7:C7,A9:C9,A11:C11”).SelectSelection.MergeRange(“A1:Z1000”).SelectWith Selection .Font.Bold = True

Page 223: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

221

Cole

cción

1

.Font.Name = "Arial" .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange("D6:J7,A7,A9:D9,A11:D11").SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("D6:J6").SelectSelection.Interior.ColorIndex = 38Range("A7,A9,A11").SelectSelection.Interior.ColorIndex = 44Range("A13:A14,B13:B14,C13:C14,D13:D14,E13:E14,F13:F14,G13:G14,H13:H14,I13:I14").SelectSelection.MergeRange("K13:M13").SelectSelection.MergeSelection.Interior.ColorIndex = 6Range("A13:I13,K14:M14").SelectSelection.Interior.ColorIndex = 38End Sub

Sub Unsoloservidor2()Dim R1 As Double, Tentrellegadas(1 To 10000) As Double, Tservicio(1 To 10000) As DoubleDim R2 As Double, Tmedido(1 To 10000) As Double, inicio(1 To 10000) As Double, Tfinal(1 To 10000) As DoubleDim W(1 To 10000) As Double, Wq(1 To 10000) As Double, Media As DoubleDim P0, Wprom, Wqprom, L, Lq As Double, inactivo(1 To 10000) As DoubleDim Medprima(0 To 10000), Inicioprima(0 To 10000), Finalprima(0 To 10000) As DoubleLimpiarDATOSINICIALESRange(“D7:J11”).ClearContentsn = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = nMedia = InputBox(“Introduzca el valor de la media del tiempo entre llegadas:”): Cells(7, 4).Value = Media

Page 224: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

222

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

M = InputBox(“Introduzca la media del tiempo de servicio:”): Cells(9, 4).Value = MTiempoentrada = InputBox(“Digite el tiempo de entrada (H:MM):”): Cells(11, 4) = TiempoentradaRange(Cells(15, 1), Cells(n + 15, 9)).SelectWith Selection .Font.Size = 11 .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(Cells(15, 11), Cells(n + 15, 13)).SelectWith Selection .Font.Size = 11 .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithMedprima(0) = (Hour(Cells(11, 4).Value) * 60) + Minute(Cells(11, 4).Value): Cells(15, 11).Value = Medprima(0)Cells(15, 12).Value = Medprima(0)For j = 1 To n Cells(j + 15, 1) = j R1 = Rnd Tentrellegadas(j) = Round((-1) * Media * (Application.Ln(1 - R1)), 2) Cells(j + 15, 2).Value = Tentrellegadas(j) R2 = Rnd Tservicio(j) = Round((-1) * M * (Application.Ln(1 - R2)), 2) Cells(j + 15, 3).Value = Tservicio(j)Next jFor i = 1 To n Tmedido(i) = Cells(i + 15, 4).Value inicio(i) = Cells(i + 15, 5).Value Tfinal(i) = Cells(i + 15, 6).Value W(i) = Cells(i + 15, 7).Value Wq(i) = Cells(i + 15, 8).Value inactivo(i) = Cells(i + 15, 9).Value

Page 225: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

223

Cole

cción

1

Next iRange("D16:F" & (n + 15)).SelectSelection.NumberFormat = "h:mm:ss"Medprima(1) = Tentrellegadas(1) + Medprima(0): Cells(16, 11).Value = Medprima(1)Tmedido(1) = (Medprima(1) / (24 * 60)): Cells(16, 4) = Tmedido(1)Inicioprima(1) = Medprima(1): Cells(16, 12).Value = Inicioprima(1)inicio(1) = Tmedido(1): Cells(16, 5) = inicio(1)Finalprima(1) = Inicioprima(1) + Tservicio(1): Cells(16, 13).Value = Finalprima(1)Tfinal(1) = (Finalprima(1) / (24 * 60)): Cells(16, 6).Value = Tfinal(1)W(1) = Finalprima(1) - Medprima(1): Cells(16, 7).Value = Round(W(1), 2)Wq(1) = Finalprima(1) - Medprima(1) - Tservicio(1): Cells(16, 8).Value = Round(Wq(1), 2)inactivo(1) = 0: Cells(16, 9).Value = inactivo(1)For i = 2 To nMedprima(i) = Medprima(i - 1) + Tentrellegadas(i): Cells(i + 15, 11).Value = Medprima(i)Tmedido(1) = (Medprima(i) / (24 * 60)): Cells(i + 15, 4) = Tmedido(1)Inicioprima(i) = Application.Max(Medprima(i), Finalprima(i - 1)): Cells(i + 15, 12).Value = Inicioprima(i)inicio(i) = (Inicioprima(i) / (24 * 60)): Cells(i + 15, 5).Value = inicio(i)Finalprima(i) = Inicioprima(i) + Tservicio(i): Cells(i + 15, 13).Value = Finalprima(i)Tfinal(i) = (Finalprima(i) / (24 * 60)): Cells(i + 15, 6).Value = Tfinal(i)W(i) = Finalprima(i) - Medprima(i): Cells(i + 15, 7).Value = Round(W(i), 2)Wq(i) = Finalprima(i) - Medprima(i) - Tservicio(i): Cells(i + 15, 8).Value = Round(Wq(i), 2)inactivo(i) = Inicioprima(i) - Finalprima(i - 1): Cells(i + 15, 9).Value = inactivo(i)Next iL = (Application.Sum(Range("G16:G" & (n + 15)))) / (Finalprima(n) - Medprima(1)): Cells(7, 5).Value = LLq = (Application.Sum(Range("H16:H" & (n + 15)))) / (Finalprima(n) - Medprima(1)): Cells(7, 6).Value = LqWprom = Application.Average(Range("G16:G" & (n + 15))): Cells(7, 7).Value = Round(Wprom, 2)Wqprom = Application.Average(Range("H16:H" & (n + 15))): Cells(7, 8).Value = Round(Wqprom, 2)P0 = (Application.Sum(Range("I16:I" & (n + 15)))) / (Finalprima(n) - Medprima(1)): Cells(7, 9).Value = P0U = (Application.Sum(Range("C16:C" & (n + 15)))) / (Finalprima(n) - Medprima(1)): Cells(7, 10).Value = URange("I7:J7").SelectSelection.NumberFormat = "0.00%"Range(“A4”).selectEnd Sub

Page 226: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

224

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo 6.3

Un centro mecanizado atendido por un operario recibe dos tipos de piezas: tipo A y tipo B. Se ha estimado que ambos tipos de piezas llegan al centro mecanizado en la pro-porción del 45% para los del tipo A y 55% para los del tipo B. El centro de mecanizado está acondicionado para recibir a las piezas del tipo A y otra las del tipo B. El tiempo entre llegadas de las piezas es una variable aleatoria con distribución de probabilidad uniforme entre 10 y 15 minutos. El tiempo que tarda en procesar la pieza de tipo A es una variable aleatoria que sigue una distribución exponencial con media de 12 minutos, mientras que el tiempo de procesamiento de la pieza de tipo B es también una variable aleatoria que sigue una distribución Erlang con parámetro de forma igual a 5, parámetro de escala igual a 2 y valor mínimo de 6 minutos. Simule para 30 piezas y obtenga las medidas de desempeño.

Se realiza la macro en dos partes: una denominada “cuadricular” y otra “DosPiezas”La macro se configura como se describe a continuación:a. Especificar el tipo de pieza.b. Un tiempo entre llegadas para todas las piezas.c. Un tiempo medido de llegada de todas las piezas.d. Un tiempo de inicio, un tiempo de servicio, un tiempo de despacho, un tiempo

de espera en el sistema y un tiempo de espera en la cola para cada pieza.e. Un tiempo de comienzo, el tiempo de terminación y el tiempo inactivo de la

máquina.

Page 227: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

225

Cole

cción

1

Procedimiento 6.3. Macro para la simulación de llegadas de varios tipo de piezas

Sub Cuadricular()ActiveWindow.DisplayGridlines = FalseRange(“A2”).Select: ActiveCell.FormulaR1C1 = “Simulacion de Linea de Espera con un solo Servidor con Llegada de Dos Piezas”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Piezas”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “Tipo de Pieza”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Tiempo Entrellegadas”Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegadas”Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Pieza Tipo A”Range(“E6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio de Servicio”Range(“F6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Servicio”Range(“G6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“H6”).Select: ActiveCell.FormulaR1C1 = “W”Range(“I6”).Select: ActiveCell.FormulaR1C1 = “Wq”Range(“J5”).Select: ActiveCell.FormulaR1C1 = “Pieza Tipo B”Range(“J6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio de Servicio”Range(“K6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Servicio”Range(“L6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“M6”).Select: ActiveCell.FormulaR1C1 = “W”Range(“N6”).Select: ActiveCell.FormulaR1C1 = “Wq”Range(“O5”).Select: ActiveCell.FormulaR1C1 = “Máquina”Range(“O6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Comienzo”Range(“P6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Terminación”Range(“Q6”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inactividad”Range(“A2:Q2”).SelectSelection.MergeSelection.Interior.ColorIndex = 6Range(“A5:A6,B5:B6,C5:C6,D5:D6,E5:I5,J5:N5,O5:Q5”).SelectSelection.MergeRange(“A1:Z1000”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd With

Page 228: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

226

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range("A2,A5:Q6").SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("A5:Q6").SelectSelection.Interior.ColorIndex = 43End Sub

Sub Dospiezas()Dim R1 As Double, Tentrellegadas(1 To 10000) As Double, TservicioA(1 To 10000) As Double, TservicioB(1 To 10000) As DoubleDim R2 As Double, Tmedido(1 To 10000) As Double, inicioA(1 To 10000) As Double, inicioB(1 To 10000) As DoubleDim TfinalA(1 To 10000) As Double, TfinalB(1 To 10000) As Double, WB(1 To 10000) As Double, WqB(1 To 10000) As DoubleDim WA(1 To 10000) As Double, WqA(1 To 10000) As Double, Media As Double, k As Integer, lambda As IntegerDim P0, WAprom, WBprom, WAqprom, WBqprom, L1, L2, Lq1, Lq2 As Double, inactivo(1 To 10000) As Double, min As DoubleDim termina(1 To 10000) As Double, comienzo(1 To 10000) As DoubleLimpiarCuadricularn = InputBox(“Digite el número de corridas:”): Cells(1, 1).Value = na = InputBox(“Introduzca el valor mínimo del tiempo entre llegadas:”): Cells(7, 19).Value = ab = InputBox(“Introduzca el valor máximo del tiempo entre llegadas:”): Cells(8, 19).Value = bMedia = InputBox(“Introduzca la media del tiempo de procesamiento de la pieza A:”): Cells(9, 19).Value = Mediak = InputBox(“Introduzca el parámetro de forma del tiempo de procesamiento de la pieza B:”): Cells(10, 19).Value = klambda = InputBox(“Introduzca el parámetro de escala del tiempo de procesamiento de la pieza B:”): Cells(11, 19).Value = lambdamin = InputBox(“Introduzca el valor mínimo del tiempo de procesamiento de la pieza B:”): Cells(12, 19).Value = minRange(Cells(7, 1), Cells(n + 6, 17)).SelectWith Selection

Page 229: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

227

Cole

cción

1

.Font.Bold = True .Font.Name = “Arial” .Font.Size = 11 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(Cells(7, 18), Cells(22, 19)).SelectSelection.Interior.ColorIndex = 20 Range(“R7”).Select: ActiveCell.FormulaR1C1 = “Valor mínimo del tiempo entre llegadas” Range(“R8”).Select: ActiveCell.FormulaR1C1 = “Valor máximo del tiempo entre llegadas” Range(“R9”).Select: ActiveCell.FormulaR1C1 = “La media del tiempo de proceso de la Pieza A” Range(“R10”).Select: ActiveCell.FormulaR1C1 = “Parámetro de forma del tiempo de proceso de la pieza B” Range(“R11”).Select: ActiveCell.FormulaR1C1 = “Parámetro de escala del tiempo de proceso de la pieza B” Range(“R12”).Select: ActiveCell.FormulaR1C1 = “Valor mínimo del tiempo de proceso de la pieza B” Range(“R13”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema de la pieza A” Range(“R14”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema de la pieza B” Range(“R15”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en la cola de la pieza A” Range(“R16”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en la cola de la pieza B” Range(“R17”).Select: ActiveCell.FormulaR1C1 = “Número promedio de piezas A en el sistema” Range(“R18”).Select: ActiveCell.FormulaR1C1 = “Número promedio de piezas B en el sistema” Range(“R19”).Select: ActiveCell.FormulaR1C1 = “Número promedio de piezas A en cola” Range(“R20”).Select: ActiveCell.FormulaR1C1 = “Número promedio de piezas B en cola” Range(“R21”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de tiempo de la máquina desocupada” Range(“R22”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de utilizacion de la máquina” Columns(“R:R”).EntireColumn.AutoFit Range(Cells(7, 18), Cells(22, 19)).Select

Page 230: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

228

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

With Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .ReadingOrder = xlContext .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithFor i = 1 To n Cells(i + 6, 1).Value = i R = Rnd If R <= 0.45 Then Cells(i + 6, 2).Value = “A” Else Cells(i + 6, 2).Value = “B” End If Tentrellegadas(i) = a + (b - a) * R: Cells(i + 6, 3).Value = Round(Tentrellegadas(i), 2) If i = 1 Then Tmedido(1) = Tentrellegadas(1): Cells(i + 6, 4).Value = Round(Tmedido(1), 2) Else Tmedido(i) = Tmedido(i - 1) + Tentrellegadas(i): Cells(i + 6, 4).Value = Round(Tmedido(i), 2) End IfNext iFor i = 1 To n If Cells(i + 6, 2) = “A” Then R1 = Rnd TservicioA(i) = (-1) * (Media) * (Application.Ln(1 - R1)) If i = 1 Then inicioA(1) = Tmedido(1): Cells(7, 5).Value = Round(inicioA(1), 2) Cells(i + 6, 6).Value = Round(TservicioA(1), 2) TfinalA(1) = inicioA(1) + TservicioA(1): Cells(7, 7).Value = Round(TfinalA(1), 2) WA(1) = TfinalA(1) - Tmedido(1): Cells(7, 8).Value = Round(WA(1), 2) WqA(1) = TfinalA(1) - Tmedido(1) - TservicioA(1): Cells(7, 9).Value = Round(WqA(1), 2) comienzo(1) = Application.Max(inicioA(1), inicioB(1)): Cells(7, 15).Value = Round(comienzo(1), 2)

Page 231: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

229

Cole

cción

1

termina(1) = TfinalA(1): Cells(7, 16).Value = Round(termina(1), 2) inactivo(1) = 0: Cells(7, 17).Value = Round(inactivo(1), 2) Else inicioA(i) = Application.Max(Tmedido(i), TfinalA(i - 1), TfinalB(i - 1)): Cells(i + 6, 5).Value = Round(inicioA(i), 2) Cells(i + 6, 6).Value = Round(TservicioA(i), 2) TfinalA(i) = inicioA(i) + TservicioA(i): Cells(i + 6, 7).Value = Round(TfinalA(i), 2) comienzo(i) = Application.Max(inicioA(i), inicioB(i)): Cells(i + 6, 15).Value = Round(comienzo(i), 2) termina(i) = TfinalA(i): Cells(i + 6, 16).Value = Round(termina(i), 2) WA(i) = TfinalA(i) - Tmedido(i): Cells(i + 6, 8).Value = Round(WA(i), 2) WqA(i) = TfinalA(i) - Tmedido(i) - TservicioA(i): Cells(i + 6, 9).Value = Round(WqA(i), 2) inactivo(i) = comienzo(i) - termina(i - 1): Cells(i + 6, 17).Value = Round(inactivo(i), 2) End If Else TservicioB(i) = Erlang(k, lambda, min) If i = 1 Then inicioB(1) = Tmedido(1): Cells(7, 10).Value = Round(inicioB(1), 2) Cells(7, 11).Value = Round(TservicioB(1), 2) TfinalB(1) = inicioB(1) + TservicioB(1): Cells(7, 12).Value = Round(TfinalB(1), 2) WB(1) = TfinalB(1) - Tmedido(1): Cells(7, 13).Value = Round(WB(1), 2) WqB(1) = TfinalB(1) - Tmedido(1) - TservicioB(1): Cells(7, 14).Value = Round(WqB(1), 2) comienzo(1) = Application.Max(inicioA(1), inicioB(1)): Cells(7, 15).Value = Round(comienzo(1), 2) termina(1) = TfinalB(1): Cells(7, 16).Value = Round(termina(1), 2) inactivo(1) = 0: Cells(7, 17).Value = Round(inactivo(1), 2) Else inicioB(i) = Application.Max(Tmedido(i), TfinalA(i - 1), TfinalB(i - 1)): Cells(i + 6, 10).Value = Round(inicioB(i), 2) Cells(i + 6, 11).Value = Round(TservicioB(i), 2) TfinalB(i) = inicioB(i) + TservicioB(i): Cells(i + 6, 12).Value = Round(TfinalB(i), 2) comienzo(i) = Application.Max(inicioA(i), inicioB(i)): Cells(i + 6, 15).Value = Round(comienzo(i), 2) termina(i) = TfinalB(i): Cells(i + 6, 16).Value = Round(termina(i), 2) WB(i) = TfinalB(i) - Tmedido(i): Cells(i + 6, 13).Value = Round(WB(i), 2) WqB(i) = TfinalB(i) - Tmedido(i) - TservicioB(i): Cells(i + 6, 14).Value = Round(WqB(i), 2) inactivo(i) = comienzo(i) - termina(i - 1): Cells(i + 6, 17).Value = Round(inactivo(i), 2) End If End If Next i

Page 232: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

230

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

L1 = (Application.Sum(Range("H7:H" & (n + 6)))) / (termina(n) - comienzo(1)): Cells(17, 19).Value = Round(L1, 0) L2 = (Application.Sum(Range("M7:M" & (n + 6)))) / (termina(n) - comienzo(1)): Cells(18, 19).Value = Round(L2, 0) Lq1 = (Application.Sum(Range("I7:I" & (n + 6)))) / (termina(n) - comienzo(1)): Cells(19, 19).Value = Round(Lq1, 0) Lq2 = (Application.Sum(Range("N7:N" & (n + 6)))) / (termina(n) - comienzo(1)): Cells(20, 19).Value = Round(Lq2, 0) WAprom = Application.Average(Range("H7:H" & (n + 6))): Cells(13, 19).Value = Round(WAprom, 2) WBprom = Application.Average(Range("M7:M" & (n + 6))): Cells(14, 19).Value = Round(WBprom, 2) WAqprom = Application.Average(Range("I7:I" & (n + 6))): Cells(15, 19).Value = Round(Wqprom, 2) WBprom = Application.Average(Range("N7:N" & (n + 6))): Cells(16, 19).Value = Round(WAprom, 2) P0 = (Application.Sum(Range("Q7:Q" & (n + 6)))) / (termina(n) - comienzo(1)): Cells(21, 19).Value = P0 U = ((Application.Sum(Range("F7:F" & (n + 6)))) + (Application.Sum(Range("K7:K" & (n + 6))))) / (termina(n) - comienzo(1)) Cells(22, 19).Value = U Range("S21:S22").Select Selection.NumberFormat = "0.00%"Range("A1").SelectEnd Sub

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Erlang(k As Integer, lambda As Integer, min As Double) As DoubleY = 0R = RndM = (1 / k * lambda)For Z = 1 To kY = Y + Ln(1 - R)Next ZErlang = (-1) * M * Y + lambda * (min)End Function

Page 233: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

231

Cole

cción

1

Modelo de líneas de espera con varios servidores en serie

Considérese un sistema que conste de n estaciones de servicio que se encuentra ope-rando en serie. Las unidades de entrada que llegan al sistema se admiten en la primera estación de servicio y luego pasan a las siguientes estaciones. El tiempo entre llegadas se considera una variable aleatoria con una distribución de probabilidad conocida. El tiempo de servicio de cada una de las n estaciones de servicio se toma también como una variable aleatoria, pero en forma tal que cada una de ellas tenga su propia distribu-ción de probabilidad dada para los tiempos de servicio.

Ejemplo 6.4

Una pieza se procesa en una línea de producción de dos máquinas en serie. Debido a la variabilidad en los materiales, el tiempo que se requiere para procesar en la primera máquina es una variable aleatoria con una distribución de probabilidad Gamma, con parámetro de forma igual a 3 minutos y parámetro de escala igual a 1 minuto; el tiempo necesario para procesar la pieza en la segunda máquina es una variable aleatoria con distri-bución Erlang, con parámetro de forma de 4 minutos y parámetro de escala de 2 minutos. El tiempo entre de llegadas de las piezas a la línea de producción es una variable aleatoria con distribución de probabilidad triangular con tiempo mínimo de 3,5 minutos, el tiempo más probable de 5 minutos y el tiempo pesimista de 6,5 minutos. El tiempo de tránsito que gasta la pieza de una máquina a otra está distribuido uniformemente entre 0,5 y 1 minuto.

Suponga que entre máquinas no se permite inventario amortiguador; por consi-guiente, el trabajador 2 debe esperar a que el trabajador 1 termine su trabajo antes de que pueda comenzar la máquina 2.

Se requiere determinar: a. La simulación de 30 piezas.b. Número de pieza en el sistema.

Page 234: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

232

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

c. Número de pieza en la cola.d. Tiempo promedio que una pieza permanece en el sistema.e. Tiempo promedio que una pieza espera ser atendida.f. Porcentaje de utilización de las máquinas.g. Cuánto tiempo tomará el proceso de 30 piezas.

Para hacer la macro, se realizan previamente las cuadrículas con sus respectivos datos, con el fin de evitar realizar procedimientos muy extensos.

Procedimiento 6.4. Macro para la simulación de varios servidores en serie

Sub Cuadricular02()ActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Simulacion de Linea de Espera con Dos Servidores”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de Piezas”Range(“B2”).Select: ActiveCell.FormulaR1C1 = “Valor Mínimo del Tiempo de Llegada”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Valor Más Probable del tiempo de Llegada”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Valor Máximo del Tiempo de Llegada”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “El Valor de alfa”Range(“F2”).Select: ActiveCell.FormulaR1C1 = “El Valor de Beta”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Parámetro de forma(K)”Range(“H2”).Select: ActiveCell.FormulaR1C1 = “Parámetro de Escala (Lambda”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Tiempo Promedio de Llegada”Range(“A5”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de Utilizacion de Máquina 1”Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Número Promedio de Piezas en el Sistema (L)”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de Utilización de Máquina 2”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Número Promedio de Piezas en la Cola (Lq)”Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Tiempo Promedio de Proceso Máquina 1”

Page 235: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

233

Cole

cción

1

Range("G4").Select: ActiveCell.FormulaR1C1 = "Tiempo Promedio de Espera de una Pieza en el Sistema (W)"Range("G5").Select: ActiveCell.FormulaR1C1 = "Tiempo Promedio de Proceso Máquina 2"Range("A6").Select: ActiveCell.FormulaR1C1 = "Piezas"Range("B6").Select: ActiveCell.FormulaR1C1 = "Tiempo Entrellegadas"Range("C6").Select: ActiveCell.FormulaR1C1 = "Tiempo Medido de Llegadas"Range("D6").Select: ActiveCell.FormulaR1C1 = "MAQUINA 1"Range("D7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Inicio de Servicio"Range("E7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Proceso (Min)"Range("F7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Despacho"Range("F7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Despacho"Range("G6").Select: ActiveCell.FormulaR1C1 = "Tiempo de Tránsito"Range("H6").Select: ActiveCell.FormulaR1C1 = "MAQUINA 2"Range("H7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Inicio de Servicio"Range("I7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Proceso (Min)"Range("J7").Select: ActiveCell.FormulaR1C1 = "Tiempo de Despacho"Range("K6").Select: ActiveCell.FormulaR1C1 = "Tiempo de Salida de los Procesos (Min)"Range("L6").Select: ActiveCell.FormulaR1C1 = "Tiempo de Espera en el Sistema (Min)"Range("M6").Select: ActiveCell.FormulaR1C1 = "Tiempo de Espera en la Cola (Min)"Range("A1:M1").SelectSelection.MergeSelection.Interior.ColorIndex = 6Range("A6:A7,B6:B7,C6:C7,D6:F6,G6:G7,H6:J6,K6:K7,L6:L7,M6:M7").SelectSelection.MergeRange("A1,A2:H3,A6:M7").SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("A2:H2,A6:M6").SelectSelection.Interior.ColorIndex = 46Range("A4:A5,C4:C5,E4:E5,G4:G5,I4:I5").SelectSelection.Interior.ColorIndex = 44Range("A2:H2,A6:M6").SelectSelection.Interior.ColorIndex = 46Range("D6,H6").SelectSelection.Interior.ColorIndex = 44End Sub

Page 236: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

234

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Sub Etapaproceso3()Dim M As Double, TentreLlegadas(1 To 10000) As Double, Tmedido(1 To 10000) As Double, Tservicio1(1 To 10000)Dim t1(1 To 10000) As Double, t2(1 To 10000) As Double, salida(1 To 10000) As Double, Tservicio2(1 To 10000)Dim W(1 To 10000), Wq(1 To 10000) As Double, inicio1(1 To 10000) As Double, inicio2(1 To 10000) As DoubleDim a As Double, b As Double, c As Double, k As Integer, lambda As Integer, alfa As Integer, beta As IntegerDim Final1(1 To 10000), Final2(1 To 10000) As DoubleLimpiarCuadricular02N = InputBox(“Introduzca el número de piezas a procesar:”): Cells(3, 1).Value = Na = InputBox(“Digite el valor mínimo del tiempo de llegadas:”): Cells(3, 2).Value = ab = InputBox(“Digite el valor más probable del tiempo de llegadas:”): Cells(3, 3).Value = bc = InputBox(“Digite el valor máximo del tiempo de llegadas:”): Cells(3, 4).Value = calfa = InputBox(“Digite el parámetro de forma(alfa) del tiempo de proceso de la máquina 1:”): Cells(3, 5).Value = alfabeta = InputBox(“Digite el parámetro de escala(beta) del tiempo de proceso de la máquina 1:”): Cells(3, 6).Value = betak = InputBox(“Digite el parámetro de forma(k) del tiempo de proceso de la máquina 2:”): Cells(3, 7).Value = klambda = InputBox(“Digite el parámetro de escala del tiempo de proceso de la máquina 2:”): Cells(3, 8).Value = alfaRange(Cells(8, 1), Cells(N + 7, 13)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Interior.ColorIndex = 6 End WithRange(“A1”).SelectFor i = 1 To NCells(i + 7, 1).Value = iTentreLlegadas(i) = Round(TiempoEntreLlegadas(a, b, c), 2)Cells(i + 7, 2).Value = TentreLlegadas(i) If i = 1 Then Tmedido(1) = TentreLlegadas(1): Cells(i + 7, 3).Value = Tmedido(1) Else

Page 237: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

235

Cole

cción

1

Tmedido(i) = Tmedido(i - 1) + TentreLlegadas(i): Cells(i + 7, 3).Value = Tmedido(i) End IfNext iFor j = 1 To N t1(j) = Round(Etapa1(alfa, beta), 2): t2(j) = Round(Etapa2(k, lambda), 2) R = Rnd: transito = Round((0.5 + 0.5 * R), 2) If j = 1 Then inicio1(1) = Tmedido(1): Cells(8, 4).Value = inicio1(1): Cells(8, 5).Value = t1(1) Final1(1) = inicio1(1) + t1(1): Cells(8, 6).Value = Final1(1) Cells(8, 7).Value = transito: inicio2(1) = Final1(1) + transito Cells(8, 8).Value = inicio2(1): Cells(8, 9).Value = t2(1) Final2(1) = inicio2(1) + t2(1): Cells(8, 10).Value = Final2(1) salida(1) = Final2(1): Cells(8, 11).Value = salida(1) W(1) = salida(1) - Tmedido(1): Cells(8, 12).Value = W(1) Wq(1) = 0: Cells(8, 13).Value = Wq(1) Else inicio1(j) = Application.Max(Tmedido(j), Final1(j - 1)): Cells(j + 7, 4).Value = inicio1(j) Cells(j + 7, 5).Value = t1(j) Final1(j) = inicio1(j) + t1(j): Cells(j + 7, 6).Value = Final1(j) Cells(j + 7, 7).Value = transito: inicio2(j) = Final1(j) + transito Cells(j + 7, 8).Value = inicio2(j): Cells(j + 7, 9).Value = t2(j) Final2(j) = inicio2(j) + t2(j): Cells(j + 7, 10).Value = Final2(j) salida(j) = Final2(j): Cells(j + 7, 11).Value = salida(j) W(j) = salida(j) - Tmedido(j): Cells(j + 7, 12).Value = W(j) Wq(j) = salida(j) - Tmedido(j) - (t1(j) + t2(j)): Cells(j + 7, 13).Value = Wq(j) End IfNext j tllprom = Application.Average(Range(“B8:B” & (N + 7))): Cells(4, 2).Value = Round(tllprom, 2) L = Application.Sum(Range(“L8:L” & (N + 7))) / (Final2(N) - Tmedido(1)): Cells(4, 4).Value = Round(L, 2) Lq = Application.Sum(Range(“M8:M” & (N + 7))) / (Final2(N) - Tmedido(1)): Cells(4, 6).Value = Round(Lq, 2) Wprom = Application.Average(Range(“L8:L” & (N + 7))): Cells(4, 8).Value = Round(Wprom, 2) Wqprom = Application.Average(Range(“M8:M” & (N + 7))): Cells(4, 10).Value = Round(Wqprom, 2) U1 = (Application.Average(Range(“E8:E” & (N + 7)))) / (Application.Average(Range(“B8:B” & (N + 7)))): Cells(5, 2).Value = U1 U2 = (Application.Average(Range(“I8:I” & (N + 7)))) / (Application.Average(Range(“B8:B” & (N + 7)))): Cells(5, 4).Value = U2 t1prom = Application.Average(Range(“E8:E” & (N + 7))): Cells(5, 6).Value = t1prom t2prom = Application.Average(Range(“I8:I” & (N + 7))): Cells(5, 8).Value = t2promEnd Sub

Page 238: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

236

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Function TiempoEntreLlegadas(a As Double, b As Double, c As Double) As DoubleDim R1 As VariantR1 = RndIf N <= (b - a) / (c - a) ThenD1 = (c - a) * (b - a) * R1: Triangular = a + Sqr(D1)ElseD2 = (c - a) * (c - b) * (1 - R1): Triangular = c - Sqr(D2)End IfTiempoEntreLlegadas = TriangularEnd Function

Function Etapa1(alfa As Integer, beta As Integer) As DoubleDim R2 As VariantR2 = RndEtapa1 = Application.GammaInv(R2, alfa, beta)End Function

Function Max(X1 As Variant, X2 As Variant) As VariantMax = Excel.WorksheetFunction.Max(X1, X2)End Function

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Etapa2(k As Integer, lambda As Integer) As DoubleY = 0R3 = RndM = (1 / k * lambda)For Z = 1 To kY = Y + Ln(1 - R3)Next ZErlang = (-1) * M * YEtapa2 = ErlangEnd Function

Modelo de líneas de espera con varios servidores en paralelo

Cuando se tiene un sistema de n estaciones de servicio que se encuentra operando en paralelo, las unidades de entrada que llegan al sistema se admiten en la primera estación

Page 239: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

237

Cole

cción

1

de servicio que está desocupada, de acuerdo con la regla: primera en llegar, primera en ser servida. El tiempo entre llegadas se considera una variable aleatoria con una distri-bución de probabilidad conocida.

El tiempo de servicio se toma también como una variable aleatoria, pero en forma tal que cada estación de servicio tenga su propia distribución de probabilidad dada para los tiempos de servicio. A la llegada de una unidad de entrada al sistema, se evalúan todas las n estaciones de servicio, a fin de determinar si alguna de ellas está desocupada en ese momento. Si todas ellas están ocupadas, entonces ocurre un tiempo de espera hasta que se desocupa alguna estación. Cuando una estación queda desocupada antes de que llegue otra unidad al sistema, ocurre un tiempo de inactividad que dura hasta la llegada de otra unidad que entre a la estación de servicio desocupada.

Ejemplo 6.5

Una pieza se ensambla en una línea de ensamblaje de dos estaciones en paralelo. Debido a la variabilidad en los materiales, el tiempo de proceso en cada estación es una variable aleatoria con distribución de probabilidad exponencial una media del tiempo entre llegadas de 2,0 minutos; de la misma manera, el tiempo entre llegadas se comporta como una variable aleatoria con media de 1,5 minutos.

Se requiere determinar: a. La simulación de 50 piezas.b. Número de pieza en el sistema.c. Número de pieza en la cola.d. Tiempo promedio que una pieza permanece en el sistema.e. Tiempo promedio que una pieza espera ser atendida.f. Porcentaje de inactividad de las dos estaciones.

Page 240: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

238

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Procedimiento 6.5. Macro para la simulación de líneas de espera con dos servidores en paralelo

Sub Cuadricular03()ActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“D8”).Select: ActiveCell.FormulaR1C1 = “MODELO DE SIMULACION DE DOS ESTACIONES DE TRABAJO EN PARALELO”Range(“D9”).Select: ActiveCell.FormulaR1C1 = “Piezas”Range(“E9”).Select: ActiveCell.FormulaR1C1 = “Tiempo Entrellegadas”Range(“F9”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegadas”Range(“G9”).Select: ActiveCell.FormulaR1C1 = “ESTACION DE TRABAJO 1”Range(“G10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio”Range(“H10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Proceso (Min)”Range(“I10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“J10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inactividad”Range(“K9”).Select: ActiveCell.FormulaR1C1 = “ESTACION DE TRABAJO 2”Range(“K10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio”Range(“L10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Proceso (Min)”Range(“M10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“N10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Tiempo de Inactividad”Range(“O9”).Select: ActiveCell.FormulaR1C1 = “PIEZA”Range(“O10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Comienzo”Range(“P10”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Salida”Range(“Q10”).Select: ActiveCell.FormulaR1C1 = “W”Range(“R10”).Select: ActiveCell.FormulaR1C1 = “Wq”Range(“D8:R8”).SelectSelection.MergeSelection.Interior.ColorIndex = 6Range(“D9:D10,E9:E10,F9:F10,G9:J9,K9:N9,O9:R9”).SelectSelection.MergeRange(“D8,D9:R10”).SelectWith Selection

Page 241: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

239

Cole

cción

1

.Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("D8,D9:F9,G10:R10").SelectSelection.Interior.ColorIndex = 44Range("G9,K9,O9").SelectSelection.Interior.ColorIndex = 19End Sub

Sub Dosservidores2()Dim Tentrellegadas(1 To 10000) As Double, Tmedido(1 To 10000) As Double, Final2(1 To 10000) As DoubleDim ts1(1 To 10000) As Double, Final1(1 To 10000) As Double, W(1 To 10000) As Double, salida(1 To 10000) As DoubleDim Wq(1 To 10000) As Single, ts2(1 To 10000) As Double, Tinicio(1 To 10000) As Double, inactivo2(1 To 10000) As DoubleDim inicio1(1 To 10000) As Double, inicio2(1 To 10000) As Double, inactivo1(1 To 10000) As DoubleLimpiarCuadricular03n = InputBox(“Introduzca el número de piezas a procesar:”): Cells(7, 4).Value = nmedia1 = InputBox(“Digite la media del tiempo entre llegadas:”): Cells(11, 20).Value = media1media2 = InputBox(“Digite la media del tiempo de servicio:”): Cells(12, 20).Value = media2Range(Cells(11, 4), Cells(n + 10, 18)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Interior.ColorIndex = 19 End With Range(Cells(11, 19), Cells(18, 20)).Select Selection.Interior.ColorIndex = 20 Range(“S11”).Select: ActiveCell.FormulaR1C1 = “Media del tiempo entre llegadas” Range(“S12”).Select: ActiveCell.FormulaR1C1 = “Media del tiempo de servicio” Range(“S13”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema”

Page 242: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

240

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“S14”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en la cola” Range(“S15”).Select: ActiveCell.FormulaR1C1 = “Número promedio de de piezas en el sistema” Range(“S16”).Select: ActiveCell.FormulaR1C1 = “Número promedio de piezas en la cola” Range(“S17”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de tiempo de la Estación 1 desocupada” Range(“S18”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de tiempo de la Estación 2 desocupada” Columns(“S:S”).EntireColumn.AutoFit Range(Cells(11, 19), Cells(18, 20)).Select With Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithFor i = 1 To nCells(i + 10, 4).Value = iTentrellegadas(i) = Round(TiempoEntreLlegadas, 2): Cells(i + 10, 5).Value = Tentrellegadas(i)ts1(i) = Round(Tiemposervicio, 2): ts2(i) = Round(Tiemposervicio, 2) If i = 1 Then Tmedido(1) = Tentrellegadas(1): Cells(11, 6).Value = Tmedido(1) Else Tmedido(i) = Tmedido(i - 1) + Tentrellegadas(i): Cells(i + 10, 6).Value = Tmedido(i) End IfNext iinicio1(1) = Tmedido(1): Cells(11, 7).Value = inicio1(1)Cells(11, 8).Value = ts1(1): Final1(1) = inicio1(1) + ts1(1)Cells(11, 9).Value = Final1(1): Tinicio(1) = Tmedido(1): Cells(11, 15).Value = Tinicio(1)salida(1) = Max(Final1(1), Final2(1)): Cells(11, 16).Value = salida(1)For j = 2 To n If Tmedido(j) < Final1(j - 1) Then Final1(j) = Final1(j - 1): Final2(j) = Final2(j - 1) If Tmedido(j) < Final1(j - 1) Then If Final2(j - 1) < Final1(j - 1) Then inicio1(j) = Max(Final1(j - 1), Tmedido(j)) inicio2(j) = Max(Final2(j - 1), Tmedido(j)): Cells(j + 10, 11).Value = inicio2(j) Cells(j + 10, 12).Value = ts2(j): Final2(j) = inicio2(j) + ts2(j) Cells(j + 10, 13).Value = Final2(j): Tinicio(j) = inicio2(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final2(j): Cells(j + 10, 16).Value = salida(j) Else

Page 243: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

241

Cole

cción

1

inicio2(j) = Max(Final2(j - 1), Tmedido(j)) inicio1(j) = Max(Final1(j - 1), Tmedido(j)): Cells(j + 10, 7).Value = inicio1(j) Cells(j + 10, 8).Value = ts1(j): Final1(j) = inicio1(j) + ts1(j) Cells(j + 10, 9).Value = Final1(j): Tinicio(j) = inicio1(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final1(j): Cells(j + 10, 16).Value = salida(j) End If End If Else Final2(j) = Final2(j - 1) If Tmedido(j) > Final1(j - 1) Then If Final2(j - 1) > Final1(j - 1) Then inicio2(j) = Max(Final2(j - 1), Tmedido(j)) inicio1(j) = Max(Final1(j - 1), Tmedido(j)): Cells(j + 10, 7).Value = inicio1(j) Cells(j + 10, 8).Value = ts1(j): Final1(j) = inicio1(j) + ts1(j) Cells(j + 10, 9).Value = Final1(j): Tinicio(j) = inicio1(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final1(j): Cells(j + 10, 16).Value = salida(j) Else Final1(j) = Final1(j - 1): Final2(j) = Final2(j - 1): inicio1(j) = Max(Final1(j - 1), Tmedido(j)) inicio2(j) = Max(Final2(j - 1), Tmedido(j)): Cells(j + 10, 11).Value = inicio2(j) Cells(j + 10, 12).Value = ts2(j): Final2(j) = inicio2(j) + ts2(j) Cells(j + 10, 13).Value = Final2(j): Tinicio(j) = inicio2(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final2(j): Cells(j + 10, 16).Value = salida(j) End If Else Final2(j) = Final2(j - 1) If Tmedido(j) < Final1(j - 1) Then If Final2(j - 1) < Final1(j - 1) Then inicio1(j) = Max(Final1(j - 1), Tmedido(j)) inicio2(j) = Max(Final2(j - 1), Tmedido(j)): Cells(j + 10, 11).Value = inicio2(j) Cells(j + 10, 12).Value = ts2(j): Final2(j) = inicio2(j) + ts2(j) Cells(j + 10, 13).Value = Final2(j): Tinicio(j) = inicio2(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final2(j): Cells(j + 10, 16).Value = salida(j) Else Final2(j) = Final2(j - 1): inicio2(j) = Max(Final2(j - 1), Tmedido(j)) inicio1(j) = Max(Final1(j - 1), Tmedido(j)): Cells(j + 10, 7).Value = inicio1(j) Cells(j + 10, 8).Value = ts1(j): Final1(j) = inicio1(j) + ts1(j) Cells(j + 10, 9).Value = Final1(j): Tinicio(j) = inicio1(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final1(j): Cells(j + 10, 16).Value = salida(j) End If

Page 244: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

242

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

End If 'Final2(j) = Final2(j - 1) inicio2(j) = Max(Final2(j - 1), Tmedido(j)) inicio1(j) = Max(Final1(j - 1), Tmedido(j)): Cells(j + 10, 7).Value = inicio1(j) Cells(j + 10, 8).Value = ts1(j): Final1(j) = inicio1(j) + ts1(j) Cells(j + 10, 9).Value = Final1(j): Tinicio(j) = inicio1(j) Cells(j + 10, 15).Value = Tinicio(j): salida(j) = Final1(j): Cells(j + 10, 16).Value = salida(j) End If End IfNext jFor x = 1 To nIf x = 1 Theninactivo1(x) = 0: Cells(x + 10, 10) = inactivo1(x)inactivo2(x) = Final1(x): Cells(x + 10, 14) = inactivo2(x)W(1) = salida(1) - Tinicio(1): Cells(x + 10, 17) = Round(W(1), 2)Wq(1) = Tinicio(1) - Tmedido(1): Cells(x + 10, 18) = Wq(1)Elseinactivo1(x) = inicio1(x) - Final1(x - 1): Cells(x + 10, 10) = inactivo1(x)inactivo2(x) = inicio2(x) - Final2(x - 1): Cells(x + 10, 14) = inactivo2(x)W(x) = salida(x) - Tinicio(x): Cells(x + 10, 17) = Round(W(x), 2)Wq(x) = Tinicio(x) - Tmedido(x): Cells(x + 10, 18) = Wq(x)End IfNext xWprom = Application.Average(Range("Q11:Q" & (n + 10))): Cells(13, 20).Value = WpromWqprom = Application.Average(Range("R11:R" & (n + 10))): Cells(14, 20).Value = WqpromT1n = Application.Max(Range("I11:I" & (n + 10))) - Tmedido(1)T2n = Application.Max(Range("M11:M" & (n + 10))) - Tmedido(1)L = (Wprom / (Max(T1n, T2n))): Cells(15, 20).Value = LLq = (Wqprom / (Max(T1n, T2n))): Cells(16, 20).Value = LqP01 = (Application.Average(Range("J11:J" & (n + 10)))) / (T1n): Cells(17, 20).Value = P01P02 = (Application.Average(Range("N11:N" & (n + 10)))) / (T2n): Cells(18, 20).Value = P02Range("T17:T18").SelectSelection.NumberFormat = "0.00%"Range("A1").SelectEnd Sub

Page 245: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

243

Cole

cción

1

Function TiempoEntreLlegadas() As DoubleDim R1 As VariantR1 = Rndmedia1 = Cells(11, 20).ValueTiempoEntreLlegadas = (-1) * (media1) * (Application.Ln(1 - R1))End Function

Function Tiemposervicio() As DoubleDim R2 As VariantR2 = Rndmedia2 = Cells(12, 20).ValueTiemposervicio = (-1) * (media2) * (Application.Ln(1 - R2))End Function

Function Max(X1 As Variant, X2 As Variant) As VariantMax = Excel.WorksheetFunction.Max(X1, X2)End Function

Sub Limpiar()Range("AA7").Select Selection.Copy Range("A11:Z10000").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContents Range("A1").SelectEnd Sub

Ejercicios

1. Supóngase una entidad de servicio que cuenta con una cajera. El tiempo entre llega-das es una variable aleatoria con distribución uniforme de 1 a 8 minutos; en cambio, el tiempo de servicio es una variable aleatoria con distribución también uniforme de 1 a 6 minutos. Simular para 30 clientes y analizar sus medidas de desempeño.

Page 246: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

244

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

2. Se tiene una estación de servicio en la que se requiere saber el comportamiento del sis-tema cuando tanto el tiempo entre llegadas de los clientes como el tiempo de servicio se encuentran distribuidos exponencialmente con medias iguales a 10 y 3 minutos, respectivamente. Simular el sistema para un periodo 480 minutos para determinar:

a. Número de piezas en el sistema.b. Número de piezas en la cola.c. Tiempo promedio que un cliente permanece en el sistema.d. Tiempo promedio que un cliente espera ser atendido.e. Porcentaje de utilización de la estación.

3. La fabricación de un cierto producto consiste en tres etapas básicas con sus res-pectivas máquinas. El tiempo que se requiere para procesarlo en la primera etapa es una variable aleatoria con una distribución de probabilidad uniforme entre 8 y 10 minutos. El tiempo necesario para procesarlo en la segunda etapa es también una variable aleatoria que está distribuida exponencialmente con una media a 8 minutos. El tiempo necesario para dar terminada la tercera etapa se ajusta a una distribución normal con media igual a 5 minutos y desviación estándar de 2 minutos. El tiempo entre llegadas es una variable aleatoria que se ajusta a una distribución de probabilidad triangular con tiempo mínimo de 5 minutos; el tiempo más probable es 8,5 minutos y el tiempo pesimista es de 10 minutos. Determinar:

a. La simulación de 30 productos.b. Número de producto en el sistema.c. Número de producto en la cola.d. Tiempo promedio en que un producto permanece en el sistema.e. Tiempo promedio en que un producto espera ser atendido.f. Porcentaje de utilización de las máquinas.g. Cuánto tiempo tomará el proceso de 30 productos.

Page 247: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE L ÍNEAS DE ESPERA CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

245

Cole

cción

1

4. Un centro mecanizado atendido por un operario recibe tres tipos de piezas: tipo A, tipo B y tipo C. Se ha estimado que los tipos de piezas llegan al centro mecanizado en la proporción del 35% para los del tipo A, 30% para los del tipo B y 35% para los del tipo C. El centro de mecanizado está acondicionado para recibir las piezas del cualquier tipo. El tiempo entre llegadas de las piezas es una variable aleatoria con distribución de probabilidad triangular y parámetros de 8, 10 y 15 minutos. El tiempo en que tarda en procesar la pieza de tipo A es una variable aleatoria que sigue una distribución exponencial con media de 12 minutos, mientras que el tiempo de procesamiento de la pieza de tipo B es también una variable aleatoria que sigue una distribución Erlang con parámetro de forma igual a 5, parámetro de escala igual a 2 y valor mínimo de 6 minutos. El tiempo de procesamiento de la pieza C se ajusta a un distribución de probabilidad uniforme entre 6 y 8 minutos. Simule para 30 piezas y obtenga las medidas de desempeño.

5. Dos tipos de piezas diferentes llegan a una instalación de producción atendida por un operario para su proceso. Las piezas de tipo 1 llegan con tiempos entre llegadas siguiendo una distribución lognormal, con una media de 12 horas y desviación estándar de 2,0 horas; las piezas de tipo 2 llegan con tiempos entre llegadas siguiendo una distribución exponencial de 15 horas. El tiempo de procesamiento en la ins-talación sigue una distribución de probabilidad con parámetros de 5, 6 y 8 horas para cualquiera de las dos piezas. Ejecute la simulación para 500 horas, determine el tiempo total promedio que permanece en el sistema y el número promedio de piezas en las colas designadas para las piezas que llegan.

6. Los viajeros llegan a la puerta número 3 de la terminal de transporte de Bogotá de acuerdo con una distribución de probabilidad de tiempo entre llegadas exponencial, con media de 1,5 minutos. El tiempo de viaje de la entrada a la oficina de su res-pectiva agencia de viajes se distribuye de forma uniforme entre 2 y 3 minutos. Los viajeros esperan en una sola línea hasta que uno de los dos agentes esté disponible

Page 248: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

246

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

para brindarles el servicio. El tiempo de tiqueteo en minutos sigue una distribución de probabilidad Weibull con parámetros β = 8 y α = 4. Una vez terminado su tiqueteo, son libres de ir a su sala de espera. Ejecute la simulación por 16 horas para determinar el tiempo promedio que permanece en el sistema un viajero, el número de pasajeros que completan el tiqueteo y la longitud promedio de la cola en la agencia de viajes.

7. Supóngase que una entidad de servicio cuenta con dos cajeras en paralelo, el tiempo entre llegadas es una variable aleatoria con distribución exponencial, con media de 3,3 minutos; en cambio, el tiempo de servicio es una variable aleatoria con distribu-ción triangular, con tiempo mínimo 2 minutos, tiempo más probable 3,5 minutos y tiempo pesimista 4,5 minutos. Simular para 40 clientes y analizar sus medidas de desempeño.

8. Una agencia de viaje cuenta con 5 servidores en paralelo para atender a tres tipos de pasajeros: tipo A, tipo B y tipo C. Los pasajeros llegan de acuerdo con la proporción de 25%, 35% y 40%, respectivamente. La tasa de llegada de los pasajeros es de 45 por hora. El tiempo para documentar un pasajero es exponencial, con 6 minutos de promedio. Se requiere determinar:

a. La simulación de 50 pasajeros.b. Número de pasajero en el sistema.c. Número de pasajero en la cola.d. Tiempo promedio que un pasajero permanece en el sistema.e. Tiempo promedio que un pasajero espera ser atendido.f. Porcentaje de utilización de la agencia de viaje.

Page 249: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

7Modelos de simulación de problemas

de inventarios con distribución de probabilidad teórica

En este capítulo se aborda la aplicación de los métodos de simulación a los mode-los de inventarios. Al igual que el capítulo anterior, dedicado al estudio de los fenómenos de espera, se comenzará describiendo brevemente lo que se entiende

por modelo de inventario, así como las características básicas asociadas a él.La simulación de los problemas de inventarios se realiza cuando la variable demanda

y el tiempo de entrega no se pueden conocer con certeza o con seguridad. Desde esta situación, hay que tomar decisiones en las que no hay suficientes existencias disponibles para satisfacer los pedidos de los clientes. Aún más, si se mantienen existencias (stock) para satisfacer la demanda promedio y el tiempo de entrega promedio, se agrega una cantidad de incremento al inventario llamada existencias de seguridad o inventario amortiguador, que fija el nivel de disponibilidad de existencias para amortiguar las variaciones de la demanda de los clientes y controlar la probabilidad de que ocurra un faltante de inventarios. Para gestionar los inventarios bajo esta situación, se requieren dos métodos para buscar una logística de servicio al cliente a través de los inventarios, a saber: 1) el método del punto de reorden y 2) el método de revisión periódica.

A continuación se describirán los parámetros y las variables que se utilizarán en esta sección:

a. Inv (t-1) = inventario inicial en el periodo t.b. Inv (t) = inventario final en el periodo t.c. B (t-1) = faltante inicial en el periodo t.

Page 250: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

248

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

d. B (t) = faltante final en el periodo t.e. D (t) = demanda aleatoria en el periodo t.f. Q (t) = tamaño de lote de pedido en el periodo t.g. Csl = nivel de servicio de ciclo.h. PRO = punto de reorden.i. SS = stock de seguridad.j. C = costo unitario del producto ($/unidad).k. Ch = costo unitario de almacenamiento ($/unidad/periodo).l. Co = costo de ordenar o de pedido ($/orden).m. Z = factor de seguridad.n. TE = tiempo de entrega o lead time.o. Sd = desviación estándar de la demanda.p. S’d = desviación estándar de la demanda durante el tiempo de entrega.q. SL = nivel de servicio de producto (fill rate).r. Cs = costo unitario de faltante o déficit ($/unidad/periodo).s. N = número de órdenes.t. T = tiempo entre órdenes o pedido.u. AIL = nivel de inventario promedio.v. µ = demanda promedio durante el tiempo de entrega.w. CT = costo total.

Modelo de punto de reorden con demanda aleatoria y tiempo de entrega aleatorio

La demanda y el tiempo de entrega son variables aleatorias que siguen patrones proba-bilísticos; cada una se le asocia a una distribución de probabilidad para su respectivo tratamiento. La demanda se considera perpetua y actúa continuamente en el inventario para reducir su nivel. Cuando el inventario se reduce hasta el punto en el que su nivel

Page 251: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

249

Cole

cción

1

sea igual o menor que la cantidad específica, llamada el punto de reorden, se coloca una cantidad económica de pedido (Q*) en el punto de suministro para reponer el inventa-rio. Hay riesgo de que la demanda exceda a la cantidad que queda en inventario durante el tiempo de entrega después de que se ha tomado la decisión de hacer nuevo pedido; la probabilidad de que esto ocurra se controla elevando o descendiendo el punto de reorden y ajustando Q*. La figura 7.1 describirá el comportamiento de la demanda de acuerdo con el modelo de punto reorden o sistema Q.

Figura 7.1. Distribución de probabilidad de la demanda del modelo de punto de re-orden

Escenarios de nivel de servicio

Existen dos escenarios que ocurren en cuanto al nivel de servicio (porcentaje o pro-babilidad de satisfacción de la demanda de los clientes), ambos relacionados con las probabilidades de faltantes.

Escenario 1. En este escenario existe la posibilidad o la probabilidad de no quedarse sin inventario durante el tiempo de entrega, esto es, en ningún ciclo de pedido. Con

Page 252: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

250

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

frecuencia se llama nivel de servicio de ciclo (CSL); por tanto, CSL es la probabilidad de existencias en el almacén durante el tiempo de entrega.

Escenario 2. En este escenario se establece la fracción de la demanda anual (en uni-dades, órdenes de clientes) que se satisface de manera instantánea del inventario. Con frecuencia se conoce como el “fill rate” del artículo, que denotaremos como SL. Esta medida determina la cantidad de faltante durante cada tiempo de entrega. Por tanto:

SL = nivel de servicio de producto = probabilidad de satisfacer la demanda del artículo

Modelo de compra fija escenario 1:

Formulaciones básicas:

Derivando en función de Q, se tiene:

Bajo una macro de Excel, el valor de z se calcularía de la siguiente manera:“=NORMSINV (Prob)”

Evaluación del nivel de servicio de ciclo logrado por una política de inventario en particular.

Page 253: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

251

Cole

cción

1

Modelo de compra fija escenario 2:ESC = faltante esperado por cicloEl tamaño del lote o pedido viene dado por:

La fórmula para el costo total se expresaría de la siguiente forma:

Ejemplo 7.1

La demanda mensual de un determinado producto es una variable aleatoria que se ajusta a una distribución de probabilidad normal, con media 55 unidades y una desviación estándar de 10 unidades. El tiempo de entrega es también una variable aleatoria con distribución uniforme entre 1 y 3 meses. El inventario inicial es de 150 unidades y se coloca un pedido de 200 unidades en forma fija para cada abastecimiento. El punto de reorden se considera de 80 unidades. La información con respecto a los costos relevantes es la siguiente:

Costos ValorPrecio de compra $ 50/unidadCosto de ordenar $ 100/orden

Costo unitario de almacenamiento $ 20/unidad/mesCosto unitario de faltante $ 52/unidad/mes

Realizar un experimento de simulación para 36 meses. La macro que se mostrará a continuación simula el sistema de inventario de punto reorden con los siguientes aspectos.

Page 254: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

252

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

a. Prepara una cuadrícula para el desarrollo de la simulación.b. Genera la demanda aleatoria mediante una instrucción de D (i) = Round (Appli-

cation.NormInv(R, m, desv), 0)c. Genera el tiempo de entrega mediante una instrucción de Te (i) = min + (max

- min) * R1d. Captura de datos como inventario inicial, tamaño de pedido, punto de reorden

y los costos relevantes.e. Evalúa el inventario final si es menor que el punto de reorden para generar un

pedido con su respectiva orden.f. La espera del pedido coincide con el tiempo de entrega simulado.g. Calcula los costos totales.

Procedimiento 7.1. Macro para simular problema de inventario de modelo de punto de reorden

Sub Inventario()Dim Te(1 To 10000) As Integer, min As Integer, max As Integer, m As Double, desv As DoubleDim D(1 To 10000) As Long, P(1 To 10000) As Double, Pe(1 To 10000) As DoubleDim INV(0 To 10000) As Long, LT As Integer, b(0 To 10000) As LongDim n As Integer, R As Variant, Q As Long, PRO As Long, FOQ(1 To 10000) As LongDim CT(1 To 1000) As DoubleLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Cuál es el número de corridas:”): Cells(1, 1).Value = nm = InputBox(“Digite el valor de media de la demanda:”)desv = InputBox(“Digite la desviación estándar de la demanda:”)min = InputBox(“Introduzca el valor mínimo del tiempo de entrega:”)max = InputBox(“Introduzca el valor máximo del tiempo de entrega:”)Cells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True

Page 255: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

253

Cole

cción

1

End WithRange(“A4,C3:K4”).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium End WithRange(“C3:K3”).SelectSelection.MergeActiveCell.FormulaR1C1 = “SIMULACION DE INVENTARIO MODELO DE PUNTO DE RE-ORDEN”Selection.Interior.ColorIndex = 6Range(“A4,C4:K4”).SelectSelection.Interior.ColorIndex = 45Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Mes”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Tamaño del pedido”Range(“F4”).Select: ActiveCell.FormulaR1C1 = “Inventario final”Range(“G4”).Select: ActiveCell.FormulaR1C1 = “Faltante”Range(“H4”).Select: ActiveCell.FormulaR1C1 = “Orden”Range(“I4”).Select: ActiveCell.FormulaR1C1 = “Número de orden”Range(“J4”).Select: ActiveCell.FormulaR1C1 = “Espera”Range(“K4”).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Inicial”INV(0) = InputBox(“Digite el inventario inicial:”): Cells(5, 6).Value = INV(0)b(0) = 0: Cells(5, 7).Value = b(0): Q = InputBox(“Digite el tamaño del pedido:”)Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Tamaño del lote”: Cells(1, 4).Value = QSelection.Interior.ColorIndex = 45PRO = InputBox(“Digite el punto de reorden:”)Range(“E1”).Select: ActiveCell.FormulaR1C1 = “Punto de reorden”Selection.Interior.ColorIndex = 45Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Costo total”Selection.Interior.ColorIndex = 45Range(“A4”).Select: ActiveCell.FormulaR1C1 = “T.entrega simulado”Cells(1, 6).Value = PRO: C = InputBox(“Dgite el costo unitario de compra:”)Co = InputBox(“Dgite el costo de ordenar:”): Ch = InputBox(“Dgite el costo unitario de almacena-miento:”)

Page 256: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

254

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cs = InputBox(“Dgite el costo unitario de faltante:”)Range(Cells(1, 3), Cells(1, 8)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(5, 3), Cells(n + 5, 11)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithFor i = 1 To nCells(i + 5, 3).Value = iR = Rnd: D(i) = Round(Application.NormInv(R, m, desv), 0): Cells(i + 5, 4).Value = D(i)R1 = Rnd: Te(i) = min + (max - min) * R1: Cells(i + 5, 1).Value = Round(Te(i), 0)Next iRange(“A5:A” & (n + 5)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Interior.ColorIndex = 6End Withj = 6: cont = 0 For i = 1 To n INV(i) = Cells(i + 5, 6).Value: D(i) = Cells(i + 5, 4).Value FOQ(i) = Cells(i + 5, 5).Value: b(i) = Cells(i + 5, 7).Value INV(i) = INV(i - 1) - b(i - 1) + FOQ(i) + b(i) - D(i) If (INV(i) <= PRO) And (LT <= 0) Then cont = cont + 1: orden = 1 Cells(i + 5, 8).Value = orden: Cells(i + 5, 9).Value = cont Cells(i + 5, 10).Value = Cells(j, 1).Value

Page 257: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

255

Cole

cción

1

j = j + 1 LT = Cells(i + 5, 10).Value If (i + 5 + (LT + 1)) <= n + 5 Then Cells(i + 5 + LT, 5).Value = Q End If Else Cells(i + 5, 8).Value = 0: Cells(i + 5, 9).Value = 0: Cells(i + 5, 10).Value = 0 End If If (INV(i) <= 0) Then Cells(i + 5, 6).Value = 0: Cells(i + 5, 7).Value = INV(i) * (-1) Else Cells(i + 5, 6).Value = INV(i): Cells(i + 5, 7).Value = 0 End If LT = LT - 1 Next i For i = 1 To n INV(i) = Cells(i + 5, 6).Value: D(i) = Cells(i + 5, 4).Value FOQ(i) = Cells(i + 5, 5).Value: b(i) = Cells(i + 5, 7).Value orden = Cells(i + 5, 8).Value CT(i) = C * FOQ(i) + Co * orden + Ch * INV(i) + Cs * b(i): Cells(i + 5, 11).Value = CT(i) Next i Cells(1, 8).Value = Application.Sum(Range(Cells(6, 11), Cells(n + 5, 11))) Range(Cells(6, 11), Cells(n + 5, 11)).Select: Selection.NumberFormat = "$ #,##0.00" Range("H1").Select: Selection.NumberFormat = "$ #,##0.00" Columns("H:H").ColumnWidth = 14.71 Range("A1").SelectEnd Sub

Ejemplo 7.2

La demanda diaria de un artículo es una variable aleatoria que es normalmente dis-tribuida con una media de 45 unidades y una desviación estándar de 15 unidades. El tiempo de entrega es también una variable aleatoria distribuida uniformemente entre 1 y 4 días. Asume que la demanda es independiente de un día al siguiente.

Page 258: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

256

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

El inventario inicial es de 130 unidades y se coloca un pedido de tamaño de lote Q, determinada mediante la fórmula:

= µ = demanda promedio (media).CT (t) = costo total en el periodo t.C = costo unitario de compra.Co = costo de ordenar en el periodo.Ch = costo unitario de almacenamiento en el periodo t.Cs = costo unitario de faltante en el periodo t.N = número de órdenes de compra.

Siendo los costos relevantes:Costos Valor

Precio de compra $ 5/unidadCosto de ordenar $ 250/orden

Costo unitario de almacenamiento $ 0,55/unidad/diaCosto unitario de faltante $ 7,5/unidad día

El punto de reorden se determina mediante la fórmula:

= tiempo de entrega promedio =

La probabilidad de existencia durante el tiempo de entrega es 85%. Realizar un expe-rimento de simulación para 50 días. La macro que se mostrará a continuación simula el sistema de inventario de punto reorden con los siguientes aspectos:

Page 259: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

257

Cole

cción

1

a. Prepara una cuadrícula para el desarrollo de la simulación.b. Genera la demanda aleatoria mediante una instrucción de D (i) = Round (Appli-

cation.NormInv(R, m, desv), 0)c. Genera el tiempo de entrega mediante una instrucción de Te (i) = min + (max

- min) * R1d. Captura de datos como inventario inicial, punto de reorden y los costos

relevantes.e. Evalúa el inventario final si es menor que el punto de reorden para generar un

pedido con su respectiva orden.f. La espera del pedido coincide con el tiempo de entrega simulado.g. Calcula los costos totales.

Procedimiento 7.2. Macro para simulación de inventario de modelo

de punto de reorden con tamaño de lote formulado

Sub Inventario03()Dim Te(1 To 10000) As Integer, min As Integer, max As Integer, miu As Double, desv As DoubleDim D(1 To 10000) As Long, P(1 To 10000) As Double, Pe(1 To 10000) As DoubleDim INV(0 To 10000) As Long, LT As Integer, b(0 To 10000) As LongDim n As Integer, R As Variant, Q As Long, nu As Double, nv As DoubleDim PRO As Long, FOQ(1 To 10000) As Long, Z As Double, Csl As DoubleDim CT(1 To 10000) As Double, c As Double, Co As Double, Ch As Double, Cs As DoubleLimpiarActiveWindow.DisplayGridlines = Falsen = InputBox(“Cuál es el número de corridas:”): Cells(1, 1).Value = nmiu = InputBox(“Digite el valor de media de la demanda:”): Cells(2, 1).Value = miudesv = InputBox(“Digite la desviación estándar de la demanda:”)min = InputBox(“Introduzca el valor mínimo del tiempo de entrega:”)max = InputBox(“Introduzca el valor máximo del tiempo de entrega:”)Range(“A1:M200”).SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 11 .HorizontalAlignment = xlCenter

Page 260: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

258

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.VerticalAlignment = xlCenter .WrapText = TrueEnd WithRange(“C3:K3”).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithSelection.MergeActiveCell.FormulaR1C1 = “SIMULACIÓN DE INVENTARIO MODELO DE PUNTO REORDEN”Range(“C4”).Select: ActiveCell.FormulaR1C1 = “Mes”Range(“D4”).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“E4”).Select: ActiveCell.FormulaR1C1 = “Tamaño del pedido”Range(“F4”).Select: ActiveCell.FormulaR1C1 = “Inventario final”Range(“G4”).Select: ActiveCell.FormulaR1C1 = “Faltante”Range(“H4”).Select: ActiveCell.FormulaR1C1 = “Orden”Range(“I4”).Select: ActiveCell.FormulaR1C1 = “Número de orden”Range(“J4”).Select: ActiveCell.FormulaR1C1 = “Espera”Range(“K4”).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Inicial”Range(“A4,C4:K4”).Select With Selection .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlMedium .Interior.ColorIndex = 45 End WithINV(0) = InputBox(“Digite el inventario inicial:”): Cells(5, 6).Value = INV(0)

Page 261: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

259

Cole

cción

1

b(0) = 0: Cells(5, 7).Value = b(0)Csl = InputBox(“Digite la probabilidad de existencia durante el tiempo de entrega:”)c = InputBox(“Dgite el costo unitario de compra:”): Co = InputBox(“Dgite el costo de ordenar:”)Ch = InputBox(“Dgite el costo unitario de almacenamiento:”): Cs = InputBox(“Dgite el costo unitario de faltante:”)Z = Application.NormSInv(Csl): nu = (2 * miu * Co / Ch)nv = ((Ch + Cs) / Cs): Q = Round((Sqr(nu) * Sqr(nv)), 0)Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Tamaño del lote”: Selection.Interior.ColorIndex = 45Cells(1, 4).Value = Q: TEprom = ((min + max) / 2): PRO = Round((miu + Z * Sqr(TEprom) * desv), 0)Range(“E1”).Select: ActiveCell.FormulaR1C1 = “Punto de reorden”: Selection.Interior.ColorIndex = 45Cells(1, 6).Value = PRO: Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Costo total”Selection.Interior.ColorIndex = 45: Range(“A4”).Select: ActiveCell.FormulaR1C1 = “T.entrega simulado”Range(Cells(1, 3), Cells(1, 8)).Select With Selection .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(5, 3), Cells(n + 5, 11)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithFor i = 1 To nCells(i + 5, 3).Value = i

Page 262: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

260

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

R = Rnd: D(i) = Round(Application.NormInv(R, miu, desv), 0): Cells(i + 5, 4).Value = D(i)R1 = Rnd: Te(i) = (min + (max - min) * R1): Cells(i + 5, 1).Value = Round(Te(i), 0)Next iRange(“A5:A” & (n + 5)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd Withj = 6cont = 0 For i = 1 To n INV(i) = Cells(i + 5, 6).Value: D(i) = Cells(i + 5, 4).Value FOQ(i) = Cells(i + 5, 5).Value: b(i) = Cells(i + 5, 7).Value INV(i) = INV(i - 1) - b(i - 1) + FOQ(i) + b(i) - D(i) If (INV(i) <= PRO) And (LT <= 0) Then cont = cont + 1: orden = 1: Cells(i + 5, 8).Value = orden Cells(i + 5, 9).Value = cont: Cells(i + 5, 10).Value = Cells(j, 1).Value j = j + 1 LT = Cells(i + 5, 10).Value If (i + 5 + (LT + 1)) <= n + 5 Then Cells(i + 5 + LT, 5).Value = Q End If Else Cells(i + 5, 8).Value = 0: Cells(i + 5, 9).Value = 0: Cells(i + 5, 10).Value = 0 End If If (INV(i) <= 0) Then Cells(i + 5, 6).Value = 0: Cells(i + 5, 7).Value = INV(i) * (-1) Else Cells(i + 5, 6).Value = INV(i): Cells(i + 5, 7).Value = 0 End If LT = LT - 1 Next i For i = 1 To n INV(i) = Cells(i + 5, 6).Value: D(i) = Cells(i + 5, 4).Value FOQ(i) = Cells(i + 5, 5).Value: b(i) = Cells(i + 5, 7).Value orden = Cells(i + 5, 8).Value: CT(i) = c * FOQ(i) + Co * orden + Ch * INV(i) + Cs * b(i) Cells(i + 5, 11).Value = CT(i) Next i

Page 263: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

261

Cole

cción

1

Cells(1, 8).Value = Application.Sum(Range(Cells(6, 11), Cells(n + 5, 11))) Range(Cells(6, 11), Cells(n + 5, 11)).Select Selection.NumberFormat = "$ #,##0.00" Range("H1").Select Selection.NumberFormat = "$ #,##0.00" Columns("H:H").ColumnWidth = 14.71 Range("A1").SelectEnd Sub

Modelo de revisión periódica con demanda aleatoria

En un sistema de periodo fijo solo se cuenta el inventario en momentos determinados, por ejemplo, cada semana o cada mes. El recuento de inventarios y la elaboración de pedidos de manera periódica son algo deseable cuando los proveedores realizan visitas rutinarias a los clientes y hacen pedidos de toda su línea de productos, o cuando los compradores quieren combinar pedidos para ahorrar costos de transportes.

Los modelos de periodos fijos generan cantidades de pedido variables de un periodo a otro; dependiendo de la tasa de uso, por lo general se requiere mayor nivel de existen-cias de seguridad que en un sistema de cantidad fija.

En las políticas de revisión periódica, los niveles de inventario se revisarán al cabo de un periodo fijo de tiempo T y se coloca una orden tal que el nivel de inventario actual más el tamaño de lote de reposición sea igual a un nivel preespecificado, llamado orden, hasta el nivel (OUL) o punto de nivel máximo.

Page 264: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

262

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Figura 7.2. Distribución de probabilidad de la demanda de modelo de revisión periódica

Este modelo se puede describir en dos maneras:a. Modelo con tiempo de revisión periódica anticipado fijo.b. Modelo con tiempo de revisión periódica anticipado calculado.

Se determina el tamaño del lote o pedido con una antelación o anticipación de acuerdo con la suma de las demandas netas simuladas hasta el número de periodo fijo.

Se comienza a realizar el pedido anticipado cuando la demanda neta sea diferente a cero. Así pues, el procedimiento de simulación de este modelo de inventario consistirá en fijar un número determinado de pedidos en el horizonte de tiempo. Esto quiere decir: se divide el horizonte de tiempo de las demandas entre el número de periodo fijo para que sea igual al número de pedidos anticipados.

De esta forma, el modelo de inventario crea una situación sin faltantes de inventarios, porque siempre se satisface la demanda simulada en el horizonte de tiempo.

Page 265: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

263

Cole

cción

1

Ejemplo 7.3

La demanda mensual de un artículo es una variable aleatoria normalmente distribuida con una media de 1500 unidades y una desviación estándar de 120 unidades. El inven-tario inicial es 4000 unidades. El costo unitario del producto es $20, el costo de ordenar es $1225, el costo unitario de almacenamiento es $0,30/unidad/mes. Realizar un experi-mento de simulación para 36 meses.

La macro que se mostrará a continuación simula el sistema de inventario con tiempo de revisión periódica anticipado fijo con los siguientes aspectos:

a. Genera la demanda bruta aleatoria mediante una instrucción: D (i) = Round (Application.NormInv(R, miu, desv), 0)

b. Determina la demanda neta.c. Captura de datos como inventario inicial y los costos relevantes.d. Determina cantidad de pedido de acuerdo con el requerimiento de periodo fijo.e. Determina número de pedido en el horizonte de tiempo.f. Calcula los costos totales.g. Llama el procedimiento denominado “Limpiar”.

Procedimiento 7.3. Macro para simular modelo de inventario

con tiempo de revisión periódica anticipado fijo

Sub Inventario06()Dim Te(1 To 10000) As Integer, min As Integer, max As Integer, miu As Double, desv As DoubleDim D(1 To 10000) As Long, ESC As Double, Ez As Double, SL As DoubleDim INV(0 To 10000) As Long, LT As Integer, B(0 To 10000) As Long, SS As DoubleDim n As Integer, R As Variant, Q As Long, nu As Double, Sdp As DoubleDim PRO As Long, FOQ(1 To 10000) As Long, Z As Double, Csl As DoubleDim CT(1 To 10000) As Double, c As Double, Co As Double, Ch As Double, Cs As DoubleDim normal1, normal2 As Double, nrt(1 To 10000) As Long, TotalOrden As IntegerLimpiarActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection

Page 266: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

264

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd Withn = InputBox(“Cuál es el número de corridas:”): Cells(1, 1).Value = nmiu = InputBox(“Digite el valor de media de la demanda:”): Cells(1, 6).Value = miudesv = InputBox(“Digite la desviación estándar de la demanda:”): Cells(2, 4).Value = desvRange(“C4:J5”).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium End WithRange(“C4:J4”).SelectSelection.MergeActiveCell.FormulaR1C1 = “SIMULACIÓN DE INVENTARIO MODELO DE REVISIÓN PERIÓDICA”Selection.Interior.ColorIndex = 6Range(“C5:J5”).SelectSelection.Interior.ColorIndex = 45Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Mes”Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Demanda bruta”Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Demanda Neta”Range(“F5”).Select: ActiveCell.FormulaR1C1 = “Tamaño del pedido”Range(“G5”).Select: ActiveCell.FormulaR1C1 = “Inventario final”Range(“H5”).Select: ActiveCell.FormulaR1C1 = “Orden”Range(“I5”).Select: ActiveCell.FormulaR1C1 = “Número de orden”Range(“J5”).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(“C6”).Select: ActiveCell.FormulaR1C1 = “Inicial”INV(0) = InputBox(“Digite el inventario inicial:”): Cells(6, 7).Value = INV(0)c = InputBox(“Digite el costo unitario de compra:”): Co = InputBox(“Digite el costo de ordenar:”)Ch = InputBox(“Digite el costo unitario de almacenamiento:”)Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Cantidad de periodo fijo”Range(“E1”).Select: ActiveCell.FormulaR1C1 = “Demanda media”Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Costo total”

Page 267: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

265

Cole

cción

1

Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Desviación estándar de la demanda”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Total órdenes”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Costo promedio”Range(“C1:C2, E1:E2, G1:G2”).Select: Selection.Interior.ColorIndex = 45Rows(“1:1”).EntireRow.AutoFit: Rows(“2:2”).EntireRow.AutoFitColumns(“C:C”).ColumnWidth = 16.86Range(Cells(1, 3), Cells(2, 8)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(6, 3), Cells(n + 6, 10)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithFor i = 1 To nCells(i + 6, 3).Value = iR = Rnd: D(i) = Round(Application.NormInv(R, miu, desv), 0): Cells(i + 6, 4).Value = D(i)R1 = RndNext iINV(0) = Cells(6, 7).ValueFor x = 1 To nD(x) = Cells(x + 6, 4).Value: INV(x) = Cells(x + 6, 7).Value: nrt(x) = D(x) - INV(x - 1)Cells(x + 6, 6).Value = 0: Cells(x + 6, 8).Value = 0: Cells(x + 6, 9).Value = 0 If nrt(x) <= 0 Then INV(x) = INV(x - 1) - D(x): Cells(x + 6, 7).Value = INV(x) nrt(x) = 0: Cells(x + 6, 5).Value = nrt(x) Else Cells(x + 6, 5).Value = nrt(x) End If Next xRequerimientosFijo

Page 268: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

266

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

For i = 1 To n If nrt(i) = 0 Then Cells(i + 6, 8).Value = 0: Cells(i + 6, 9).Value = 0 Else INV(i) = Cells(i + 6, 7).Value: nrt(i) = Cells(i + 6, 5).Value FOQ(i) = Cells(i + 6, 6).Value: INV(i) = INV(i - 1) + FOQ(i) - nrt(i): Cells(i + 6, 7).Value = INV(i) End If Next i TotalOrden = Application.max(Range(“I9:I” & (n + 8))): Cells(2, 6).Value = TotalOrden For i = 1 To n INV(i) = Cells(i + 6, 7).Value: nrt(i) = Cells(i + 8, 5).Value FOQ(i) = Cells(i + 6, 6).Value: orden = Cells(i + 6, 8).Value CT(i) = c * FOQ(i) + Co * orden + Ch * INV(i): Cells(i + 6, 10).Value = CT(i) Next i Cells(1, 8).Value = Application.Sum(Range(Cells(6, 10), Cells(n + 6, 10))) Cells(2, 8).Value = Application.Average(Range(Cells(6, 10), Cells(n + 6, 10))) Range(Cells(6, 10), Cells(n + 6, 10)).Select: Selection.NumberFormat = "$ #,##0.00" Range("H1:H2").Select: Selection.NumberFormat = "$ #,##0.00" Columns("H:H").ColumnWidth = 18 Range("A1").SelectEnd Sub

Sub RequerimientosFijo()Dim SS, req As Integer, busq As Variant, FOQ(1 To 10000) As Long, INV(0 To 10000) As LongDim nrt(1 To 10000) As Long, B(0 To 10000) As Longn = Cells(1, 1).Value: INV(0) = Cells(6, 7).Valuecomenzar10:Mensaje9 = “Cual es el Periodo de Orden Fijo”: req = InputBox(Mensaje9)If req = 0 ThenMsgBox “El Periodo de Orden Fijo no puede ser igual cero”, vbOKOnly, “ ! ERROR!”GoTo comenzar10End IfIf req >= n ThenMsgBox “El Periodo de Orden Fijo no puede ser mayor o igual al número de corridas”, vbOKOnly, “! ERROR!”GoTo comenzar10ElseCells(1, 4).Value = reqEnd If

Page 269: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

267

Cole

cción

1

l = 1For x = 1 To nnrt(x) = Cells(x + 6, 5).ValueNext xDo While l <= nIf nrt(l) = 0 ThenFOQ(l) = 0: Cells(l + 6, 6).Value = FOQ(l): l = l + 1ElseExit DoEnd IfLoopcoc = (Int((n - l) / req) + 1): y = 0: cont = 0For x = 1 To cocSum = 0 For w = l + y To req - 1 + l + y Sum = Sum + nrt(w)

Next w cont = cont + 1: orden = 1: Cells((l + y + 6), 6).Value = Sum Cells(l + y + 6, 8).Value = orden: Cells(l + y + 6, 9).Value = cont: y = y + reqNext xEnd Sub

Modelo con tiempo de revisión periódica anticipado calculado

Se determina el tamaño del lote o pedido con una antelación o anticipación, de acuerdo con la suma de las demandas netas simuladas hasta el número de periodo calculado a través de:

T = periodo de revisión anticipado

= demanda promedio

Page 270: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

268

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Se comienza a realizar el pedido anticipado cuando la demanda neta sea diferente a cero. Así pues, el procedimiento de simulación de este modelo de inventario consistirá en fijar un número determinado de pedidos en el horizonte de tiempo. Esto quiere decir: se divide el horizonte de tiempo de las demandas entre el número de periodo calculado para que sea igual al número de pedidos anticipados.

De esta forma, el modelo de inventario crea una situación sin faltantes de inventarios, porque siempre se satisface la demanda simulada en el horizonte de tiempo.

Ejemplo 7.4

La demanda mensual de un artículo es una variable aleatoria que es normalmente dis-tribuida con una media de 1500 unidades y una desviación estándar de 120 unidades. El inventario inicial es 4000 unidades. El costo unitario del producto es $5, el costo de ordenar es $1225, el costo unitario de almacenamiento es $0,30/unidad/mes. Realizar un experimento de simulación para 36 meses.

Procedimiento 7.4. Macro para simular modelo de inventario con

tiempo de revisión periódica anticipado calculado

Sub Inventario07()Dim Te(1 To 10000) As Integer, min As Integer, max As Integer, miu As Double, desv As DoubleDim D(1 To 10000) As Long, ESC As Double, Ez As Double, SL As DoubleDim INV(0 To 10000) As Long, LT As Integer, B(0 To 10000) As Long, SS As DoubleDim n As Integer, R As Variant, Q As Long, nu As Double, Sdp As DoubleDim PRO As Long, FOQ(1 To 10000) As Long, Z As Double, Csl As DoubleDim CT(1 To 10000) As Double, c As Double, Co As Double, Ch As Double, Cs As DoubleDim normal1, normal2 As Double, nrt(1 To 10000) As Long, TotalOrden As IntegerLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:L200”).SelectWith Selection .Font.Bold = True

Page 271: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

269

Cole

cción

1

.Font.Name = “Arial” .Font.Size = 12 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = TrueEnd Withn = InputBox(“Cuál es el número de corridas:”): Cells(1, 2).Value = nmiu = InputBox(“Digite el valor de media de la demanda:”): Cells(1, 6).Value = miudesv = InputBox(“Digite la desviación estándar de la demanda:”): Cells(2, 4).Value = desvRange(“C4:J4”).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithSelection.MergeActiveCell.FormulaR1C1 = “SIMULACIÓN DE INVENTARIO MODELO DE REVISIÓN PERIÓDICA” Range(“C5”).Select: ActiveCell.FormulaR1C1 = “Mes” Range(“D5”).Select: ActiveCell.FormulaR1C1 = “Demanda bruta” Range(“E5”).Select: ActiveCell.FormulaR1C1 = “Demanda Neta” Range(“F5”).Select: ActiveCell.FormulaR1C1 = “Tamaño del pedido” Range(“G5”).Select: ActiveCell.FormulaR1C1 = “Inventario final” Range(“H5”).Select: ActiveCell.FormulaR1C1 = “Orden” Range(“I5”).Select: ActiveCell.FormulaR1C1 = “Número de orden” Range(“J5”).Select: ActiveCell.FormulaR1C1 = “Costo total” Range(“C6”).Select: ActiveCell.FormulaR1C1 = “Inicial” Range(“C5:J5”).Select With Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium .Borders(xlInsideVertical).Weight = xlMedium .Borders(xlInsideHorizontal).Weight = xlMedium .Interior.ColorIndex = 45 End WithINV(0) = InputBox(“Digite el inventario inicial:”): Cells(6, 7).Value = INV(0)c = InputBox(“Digite el costo unitario de compra:”): Cells(1, 8).Value = c

Page 272: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

270

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Co = InputBox(“Digite el costo de ordenar:”): Cells(2, 8).Value = CoCh = InputBox(“Digite el costo unitario de almacenamiento:”): Cells(2, 2).Value = ChRange(“A1”).Select: ActiveCell.FormulaR1C1 = “Número de corridas”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Costo unitario de almacenamiento”Range(“C1”).Select: ActiveCell.FormulaR1C1 = “Cantidad de orden periódica”Range(“E1”).Select: ActiveCell.FormulaR1C1 = “Demanda media”Range(“G1”).Select: ActiveCell.FormulaR1C1 = “Costo Unitario”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Desviación estándar de la demanda”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Total órdenes”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Costo de Ordenar”Range(“I1”).Select: ActiveCell.FormulaR1C1 = “Costo total”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Costo promedio”Range(“A1:A2,C1:C2, E1:E2, G1:G2,I1:I2”).Select: Selection.Interior.ColorIndex = 45Rows(“1:1”).EntireRow.AutoFit: Rows(“2:2”).EntireRow.AutoFit: Columns(“I:I”).ColumnWidth = 16.86Range(Cells(1, 1), Cells(2, 10)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithRange(Cells(6, 3), Cells(n + 6, 10)).SelectWith Selection .Interior.ColorIndex = 6 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithFor i = 1 To nCells(i + 6, 3).Value = iR = RndD(i) = Round(Application.NormInv(R, miu, desv), 0): Cells(i + 6, 4).Value = D(i)Next iINV(0) = Cells(6, 7).ValueFor x = 1 To nD(x) = Cells(x + 6, 4).Value: INV(x) = Cells(x + 6, 7).Value: nrt(x) = D(x) - INV(x - 1)

Page 273: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

271

Cole

cción

1

Cells(x + 6, 6).Value = 0: Cells(x + 6, 8).Value = 0: Cells(x + 6, 9).Value = 0 If nrt(x) <= 0 Then INV(x) = INV(x - 1) - D(x): Cells(x + 6, 7).Value = INV(x): nrt(x) = 0: Cells(x + 6, 5).Value = nrt(x) Else Cells(x + 6, 5).Value = nrt(x) End If Next xCantidadPeriodica For i = 1 To n If nrt(i) = 0 Then Cells(i + 6, 8).Value = 0: Cells(i + 6, 9).Value = 0 Else INV(i) = Cells(i + 6, 7).Value: nrt(i) = Cells(i + 6, 5).Value FOQ(i) = Cells(i + 6, 6).Value: INV(i) = INV(i - 1) + FOQ(i) - nrt(i): Cells(i + 6, 7).Value = INV(i) End If Next i TotalOrden = Application.max(Range("I9:I" & (n + 8))): Cells(2, 6).Value = TotalOrden For i = 1 To n INV(i) = Cells(i + 6, 7).Value: nrt(i) = Cells(i + 8, 5).Value FOQ(i) = Cells(i + 6, 6).Value: orden = Cells(i + 6, 8).Value CT(i) = c * FOQ(i) + Co * orden + Ch * INV(i): Cells(i + 6, 10).Value = CT(i) Next i Cells(1, 10).Value = Application.Sum(Range(Cells(6, 10), Cells(n + 6, 10))) Cells(2, 10).Value = Application.Average(Range(Cells(6, 10), Cells(n + 6, 10))) Range(Cells(6, 10), Cells(n + 6, 10)).Select Selection.NumberFormat = "$ #,##0.00" Range("B2,H1:H2,J1:J2").Select: Selection.NumberFormat = "$ #,##0.00" Range("A1").SelectEnd Sub

Sub CantidadPeriodica()Dim poq As Integer, FOQ(1 To 10000) As Long, INV(0 To 10000) As LongDim nrt(1 To 10000) As Long, B(0 To 10000) As Long, num As DoubleWorksheets(“Hoja1”).Activatecomenzar:n = Cells(1, 2).Value: INV(0) = Cells(6, 7).Valueinicio:Ch = Cells(2, 2).Value: Co = Cells(2, 8).Value

Page 274: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

272

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

c = Cells(1, 8).Value: miu = Cells(1, 6).ValueIf Ch = 0 ThenMsgBox “El costo de almacenamiento no puede ser igual cero”, vbOKOnly, “! ERROR!”Ch = InputBox(“Digite el costo unitario de almacenamiento”): Cells(2, 2).Value = ChGoTo inicioEnd IfIf (miu = 0) ThenMsgBox “La Demanda Promedio no Puede ser igual a cero”, vbOKOnly, “!! ERROR!!”miu = InputBox(“Cual es la Nueva Demanda promedio por periodo: “): Cells(1, 6).Value = miuEnd Ifnum = ((2 * miu * Co) / Ch): EOQ = Sqr(num): poq = Round(EOQ / miu, 0)If poq = 0 ThenMsgBox “La Cantidad de Orden periódica no puede ser igual cero”, vbOKOnly, “! ERROR!”GoTo comenzarEnd IfIf poq >= n ThenMsgBox “La Cantidad de Orden periódica no puede ser mayor o igual al número de corridas”, vbOKOnly, “ ! ERROR!”GoTo comenzarElseCells(1, 4).Value = poqEnd Ifl = 1For x = 1 To nnrt(x) = Cells(x + 6, 5).ValueNext xDo While l <= nIf nrt(l) = 0 ThenFOQ(l) = 0: Cells(l + 6, 6).Value = FOQ(l)l = l + 1ElseExit DoEnd IfLoopcoc = Int((n - l) / poq) + 1y = 0: cont = 0For x = 1 To cocSum = 0 For w = l + y To poq - 1 + l + y

Page 275: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

MODELOS DE S IMULACIÓN DE PROBLEMAS DE INvENTARIOS CON DISTRIBUCIÓN DE PROBABIL IDAD TEÓRIC A

273

Cole

cción

1

Sum = Sum + nrt(w) Next w cont = cont + 1: orden = 1 Cells((l + y + 6), 6).Value = Sum: Cells(l + y + 6, 8).Value = orden Cells(l + y + 6, 9).Value = cont: y = y + poqNext xEnd Sub

Ejercicios

1. La demanda semanal de un producto de la compañía es normalmente distribuida con una media de 2.500 unidades y una desviación estándar de 500 unidades. El proveedor se toma un tiempo de entrega de 2 semanas para reponer el inventario de la compañía, el almacenista de la compañía ha decidido revisar el inventario cada 4 semanas. La probabilidad de existencias durante el tiempo de entrega es de 90%. Simular 36 meses para determinar el punto de nivel máximo (OUL), el número esperado de faltante y el nivel promedio de inventario.

2. La demanda diaria de un producto es normalmente distribuida con una media de 10 unidades, con una desviación estándar de 3 unidades. El periodo de revisión es de 3 días y el tiempo de entrega es una variable aleatoria distribuida uniformemente entre 1 y 3 días. La gerencia ha establecido como política satisfacer el 98% de la demanda a partir de los artículos en existencia. El punto de nivel máximo es de 445 unidades. Simular 60 días para determinar la cantidad esperada de faltante por ciclo de reposición.

3. La demanda mensual de un artículo es una variable aleatoria que es normalmente distribuida con una media de 45 unidades y una desviación estándar de 15 unidades.

Page 276: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

274

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

El tiempo de entrega es también una variable aleatoria distribuida normalmente con una media de 1,5 meses y una desviación estándar de 0,25. Asume que la demanda es independiente de un mes al siguiente. Evaluar el nivel de servicio de ciclo, donde el tamaño de pedido es 200 unidades y se activa una orden cuando el nivel de inventario alcanza 50 unidades.

4. La demanda diaria de un artículo es una variable aleatoria normalmente distribuida con una media de 285 unidades y una desviación estándar de 13 unidades.

El tiempo de entrega es también una variable aleatoria distribuida uniformemente (0.5, 2.5). Asume que la demanda es independiente de un día al siguiente. Se inicia con inventario de 350 unidades, en el cual el tamaño de pedido es 1200 unidades y se activa una orden cuando el nivel de inventario alcanza 60 unidades. El costo unitario variable $5, el costo de ordenar es igual $450, costo unitario de almacena-miento es $0,5 /unidad/día y el costo unitario faltante es $ 3,5/unidad/día.Simule el sistema para 50 días y determine con qué frecuencia deben hacerse los pedidos.

5. Una empresa comercializa un determinado producto cuya demanda diaria es una variable aleatoria con distribución uniforme entre 10 y 90 unidades diarias. El sis-tema de ordenar el pedido es mediante el número de periodos de anticipación, cuyo tamaño del lote es la suma de la cantidad demandada durante el periodo anticipa-ción. El periodo de anticipación es también una variable aleatoria con distribución uniforme entre 2 y 4 días. El inventario inicial es 190 unidades

Se supone que cada producto producido tiene un costo de $ 1.500, el costo de alistamiento es de $6.000 por cada orden de pedido, el costo de mantenimiento del inventario es $84 por cada unidad por día y el costo unitario de faltante es $1.500 por cada unidad por día. Simular este problema de producción para 30 días.

Page 277: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

8Validación de resultados y diseño

de experimentos de simulación

Validación del modelo de simulación

El propósito de realizar una validación del modelo de simulación es comprobar la con-sistencia entre un sistema del mundo real y el modelo de simulación que supuestamente representa al sistema de referencia. Todas estas son medidas preventivas, como podría ser encontrar algunos tipos de errores, por ejemplo, la búsqueda de errores en la progra-mación. El éxito de una validación es establecer una base de confianza en los resultados que genera el modelo bajo nuevas condiciones. Si un modelo no puede reproducir el comportamiento del sistema sin sensibilizar algún cambio, difícilmente podemos espe-rar que produzca resultados verdaderamente representativos con cambio.

Al validar un modelo de simulación se tiene el problema de cómo debe existir seme-janza con el sistema real; en otras palabras, establecer criterios que sean aplicables para aceptar un modelo de simulación como una representación válida.

En este capítulo se ofrece un aspecto de la validación que debe considerarse como una condición mínima para ajustar un modelo de simulación con el sistema real; esto quiere decir: utilizar un proceso comparativo entre el modelo y el sistema real.

Page 278: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

276

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Para llevar a cabo este proceso, se requiere utilizar las pruebas estadísticas siguientes:a. Prueba de Fisher (prueba F), prueba t de Student y pruebas normales.b. Prueba de medias Mann-Whitney para probar estimaciones de los parámetros

de la población que no son dependientes de la suposición de una distribución implícita.

c. Prueba Chi-cuadrado (X2), prueba de Kolomogorov-Smirnov.

Prueba Chi-cuadrado para la simulación de Montecarlo

La siguiente prueba permitirá comprobar si, una vez que se tiene una generación de variables aleatorias simuladas, estas provienen de una distribución empírica discreta específica. Para realizar esta prueba se parte del siguiente ejemplo: supóngase ahora que la demanda mensual de un producto es aleatoria, con la siguiente distribución de probabilidad empírica discreta.

Demanda mensual (unidades) Probabilidad de ocurrencia85 0,05110 0,10130 0,15145 0,20150 0,12165 0,15175 0,13190 0,05200 0,05

Esta prueba se llevará a cabo mediante una macro que se mostrará a continuación.

Page 279: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

277

Cole

cción

1

Procedimiento 8.1. Macro para realizar la prueba Chi-cuadrado con aplicación de Montecarlo

Sub SimularDemanda()Dim miu, sigma As Double, rango As Range, D(1 To 1000) As IntegerDim x(1 To 1000) As Long, P(1 To 1000) As DoubleDim V(1 To 1000) As Double, sigmacuad As DoubleDim alfa, nivel, chicero, chialfa As DoubleDim n As Integer, NA As VariantDim FO(1 To 1000), FE(1 To 1000) As IntegerDim r(1 To 1000), dif(1 To 1000) As DoubleLimpiarActiveWindow.DisplayGridlines = FalseRange(“A1:Q200”).Select With Selection .Font.Bold = True .Font.Size = 12 .Font.Name = “Arial” .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End WithRange(“B2”).Select: ActiveCell.FormulaR1C1 = “Demanda”Range(“C2”).Select: ActiveCell.FormulaR1C1 = “Probabilidad”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Prob. acumulada”Range(“E2”).Select: ActiveCell.FormulaR1C1 = “Cota inferior de Ri”Range(“F2”).Select: ActiveCell.FormulaR1C1 = “Cota Superior de Ri”Range(“G2”).Select: ActiveCell.FormulaR1C1 = “Demanda”Rows(“2:2”).RowHeight = 45Inicio:k = InputBox(“Cuántos datos o eventos a introducir: (No debe ser mayor que 1000)”)If (m > 1000) ThenGoTo InicioEnd If‘CuadricularRange(“B2:G” & (k + 2)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin

Page 280: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

278

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End Withcomenzar:Sum = 0: Cells(3, 5).Value = 0: miu = 0For i = 1 To kx(i) = InputBox(“Cuál es el valor de la variable aleatoria X” & i)Cells(i + 2, 2).Value = x(i): Cells(i + 2, 7).Value = x(i)P(i) = InputBox(“Cuál es la probabilidad de la variable aleatoria X” & i)Cells(i + 2, 3).Value = P(i)Sum = Sum + P(i)Cells(i + 2, 4).Value = Sum: Cells(i + 2, 6).Value = SumCells(i + 3, 5).Value = Sum: miu = miu + x(i) * P(i)Next iCells(k + 3, 5).Value = “”If (Sum > 1) ThenRange(“B3:G” & (k + 3)).ClearContentsGoTo comenzarEnd IfSet rango = Worksheets(1).Range(“$E$3:$G$” & (k + 2))n = InputBox(“Cuál es el número de corridas:”)Range(“B” & (k + 4)).SelectActiveCell.FormulaR1C1 = “La media es”: Cells(k + 4, 3).Value = miu‘Calculo de la varianzasigmacuad = 0For i = 1 To ksigmacuad = sigmacuad + ((x(i) - miu) ^ 2) * P(i)Next iRange(“B” & (k + 5)).Select: ActiveCell.FormulaR1C1 = “La varianza es”Cells(k + 5, 3).Value = sigmacuad‘Calculo de la desviación standardRange(“B” & (k + 6)).Select: ActiveCell.FormulaR1C1 = “La desviación Standard es”sigma = Sqr(sigmacuad): Cells(k + 6, 3).Value = sigmaColumns(“B:B”).ColumnWidth = 13.71: Rows(k + 6).RowHeight = 51Range(“B” & (k + 7)).Select: ActiveCell.FormulaR1C1 = “El número de corrida es”Cells(k + 7, 3).Value = nRange(“H2”).Select: ActiveCell.FormulaR1C1 = “Número de Observaciones”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Números aleatorios”Range(“J2”).Select: ActiveCell.FormulaR1C1 = “Demanda Aleatoria”Range(“K2”).Select: ActiveCell.FormulaR1C1 = “Intervalo”

Page 281: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

279

Cole

cción

1

Range(“L2”).Select: ActiveCell.FormulaR1C1 = “FOi”Range(“M2”).Select: ActiveCell.FormulaR1C1 = “FEi”Range(“N2”).Select: ActiveCell.FormulaR1C1 = “(FOi - FEi)²/FEi”Range(“H2:J” & (n + 2)).Select With Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin End WithFor i = 1 To nCells(i + 2, 8).Value = ir(i) = Rnd: Cells(i + 2, 9).Value = r(i): NA = Cells(i + 2, 9).ValueD(i) = Application.VLookup(NA, rango, 3): Cells(i + 2, 10).Value = D(i)Next iRange(“B” & (k + 8)).Select: ActiveCell.FormulaR1C1 = “Nivel de Significancia”nivel = CDbl(InputBox(“Introduzca el nivel de significación”)): alfa = 1 - nivelCells(k + 8, 3) = alfa: m = Round(Sqr(n), 0)Range(“B” & (k + 9)).Select: ActiveCell.FormulaR1C1 = “Números de intervalos”Cells(k + 9, 3).Value = mRange(“B” & (k + 10)).Select: ActiveCell.FormulaR1C1 = “Grado de libertad”g = m - 1: Cells(k + 10, 3).Value = gRange(“B” & (k + 11)).Select: ActiveCell.FormulaR1C1 = “valor Crítico”chialfa = Application.ChiInv(Cells(k + 8, 3), Cells(k + 10, 3)): Cells(k + 11, 3).Value = chialfachicero = 0: DMin = Application.Min(Range(“B2:B” & (k + 2)))DMax = Application.Max(Range(“B2:B” & (k + 2)))interv = ((DMax - DMin) / m): y = (DMin - 1)For i = 1 To mCells(i + 2, 11) = Str(y) + “ - “ + Str((y + interv)): FO(i) = 0For j = 1 To nIf D(j) > y And D(j) <= (y + interv) ThenFO(i) = FO(i) + 1End IfNext jCells(i + 2, 12).Value = FO(i): y = y + intervFE(i) = (n / m): Cells(i + 2, 13).Value = FE(i)dif(i) = ((FO(i) - FE(i)) ^ 2) / FE(i): Cells(i + 2, 14).Value = dif(i)chicero = chicero + dif(i)

Page 282: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

280

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Next iRange("B" & (k + 12)).Select: ActiveCell.FormulaR1C1 = "El estadístico"Cells(k + 12, 3).Value = chiceroColumns("N:N").EntireColumn.AutoFitIf chicero < chialfa Thenaceptacion = MsgBox("No se rechaza que las variables aleatorias generadas provienen" _& " de una distribución empírica ", vbInformation)Else: rechazo = MsgBox("Se rechaza que las variables aleatorias generadas provienen" _& " de una distribución empírica ", vbInformation)End IfRange("B2").SelectEnd Sub

Prueba F o prueba de Fisher

Para realizar esta prueba, denotamos los siguientes:Vm = varianza del modelo de simulación.Vr = varianza de los valores reales.La hipótesis sobre la varianza sería:

H0: Vm = VrHa: Vm ≠ Vr

n1 = tamaño de la muestra del modelon2 = tamaño de la muestra de los valores reales

Ejemplo 8.2 Una empresa utilizó un modelo de simulación de la demanda semanal con dis-

tribución de probabilidad Weibull, con parámetros α =15, β= 85 y valor mínimo 50, obteniendo 10 datos de demanda.

Page 283: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

281

Cole

cción

1

La situación real de la demanda semanal arrojó los siguientes datos: 108, 99, 115, 95, 104, 118, 110, 97. Realizar la prueba F mediante un procedimiento en macro de Excel. La macro para realizar prueba F es la siguiente:

Procedimiento 8.2. Macro para realizar la prueba F para un modelo simulado

Sub PruebaF()Dim alfa, nivel, Fcero, Falfa As DoubleDim n1, n2 As Integer, x1(1 To 1000), x2(1 To 1000) As DoubleDim Vm, Vr As DoubleLimpiarActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd With respuesta = MsgBox(“Para iniciar este aplicativo debe haberse obtenido los valores simulados” & _ “ partiendo de la celda D4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd IfRange(“C3”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Modelo”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Real”Range(“C3:E3”).SelectSelection.Interior.ColorIndex = 6n1 = InputBox(“Introduzca el número de corridas del modelo :”): Cells(4, 2).Value = n1Range(“C4:E” & (n1 + 3)).SelectSelection.Interior.ColorIndex = 19For i = 1 To n1Cells(i + 3, 3).Value = i

Page 284: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

282

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Next iGenerarvariablesWeibulln2 = InputBox("Introduzca el número de datos reales :")For i = 1 To n2x2(i) = InputBox("Entre el valor real " & i): Cells(i + 3, 5).Value = x2(i)Next iVm = Cells(n1 + 5, 5).ValueVr = Application.Var(Range("E4:E" & (n2 + 3)))Fcero = (Vr / Vm)Range("A4").Select: ActiveCell.FormulaR1C1 = "Tamaño de la muestra del modelo"Range("A5").Select: ActiveCell.FormulaR1C1 = "Tamaño de la muestra del real"Cells(5, 2).Value = n2Range("A6").Select: ActiveCell.FormulaR1C1 = "Varianza de la muestra del modelo"Cells(6, 2).Value = VmRange("A7").Select: ActiveCell.FormulaR1C1 = "Varianza de la muestra del real"Columns("A:A").EntireColumn.AutoFitCells(7, 2).Value = VrRange("A8").Select: ActiveCell.FormulaR1C1 = "Nivel de Significancia"nivel = CDbl(InputBox("Introduzca el nivel de significación")): alfa = 1 - nivel: Cells(8, 2) = alfaRange("A9").Select: ActiveCell.FormulaR1C1 = "Valor Fo"Cells(9, 2).Value = FceroRange("A10").Select: ActiveCell.FormulaR1C1 = "Grado de libertad 1"v1 = n1 - 1: Cells(10, 2).Value = v1Range("A11").Select: ActiveCell.FormulaR1C1 = "Grado de libertad 2"v2 = n2 - 1: Cells(11, 2).Value = v2Range("A12").Select: ActiveCell.FormulaR1C1 = "Valor Crítico"Falfa = Application.FInv(alfa / 2, v1, v2): Cells(12, 2).Value = FalfaRange("A4:B12").SelectSelection.Interior.ColorIndex = 20If Fcero < Falfa Thenaceptacion = MsgBox("No se rechaza el modelo de simulación que está arrojando resultados" _ & " con la misma varianza que el sistema real", vbInformation)Elserechazo = MsgBox("Se rechaza el modelo de simulación que está arrojando resultados" _ & " con la misma varianza que el sistema real", vbInformation)Range("A1").SelectEnd IfEnd Sub

Page 285: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

283

Cole

cción

1

Sub GenerarvariablesWeibull() Dim x As Double, a As Double, n As Integer, k As Integer, promedio As Double Dim b As Double, v As Double v = InputBox("introduzca el valor mínimo:") a = InputBox("Digite el valor de alfa:") b = InputBox("Digite el valor de beta:") n = Cells(4, 2).ValueRange(Cells(n + 4, 4), Cells(n + 8, 5)).SelectSelection.Interior.ColorIndex = 44Range("D" & (n + 4)).Select: ActiveCell.FormulaR1C1 = "la media"Range("D" & (n + 5)).Select: ActiveCell.FormulaR1C1 = "la varianza"Range("D" & (n + 6)).Select: ActiveCell.FormulaR1C1 = "alfa"Range("D" & (n + 7)).Select: ActiveCell.FormulaR1C1 = "beta"Range("D" & (n + 8)).Select: ActiveCell.FormulaR1C1 = "valor mínimo" For j = 1 To n R = Rnd x = Round(Weibull(R, a, b, v), 0): Cells(j + 3, 4).Value = x Next j Cells(n + 4, 5).Value = a * b Cells(n + 5, 5).Value = a * b ^ 2 Cells(n + 6, 5).Value = a Cells(n + 7, 5).Value = b Cells(n + 8, 5).Value = vEnd Sub

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Prueba t de Student

Para realizar esta prueba, denotamos los siguientes:Vm = varianza del modelo de simulación.Vr = varianza de los valores reales.

Page 286: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

284

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

µm = media del modelo.µr = media de los valores reales.g = n1 + n2 – 2.tC = valor crítico.La hipótesis sobre la media sería:

H0: µm = µr

Ha: µm ≠ µr

Si |t0| < tC , no se rechaza el modelo de simulación que está arrojando resultados con la misma media que el de sistema real.

Ejemplo 8.3 Una empresa utilizó un modelo de simulación de la demanda semanal con distribu-

ción de probabilidad Erlang, con parámetros k = 5, λ= 2 y valor mínimo 50, obteniendo 10 datos de demanda.

La situación real de la demanda semanal arrojó los siguientes datos: 108, 99, 115, 95, 104, 118, 110, 97. La macro para realizar prueba t de Student es la siguiente:

Page 287: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

285

Cole

cción

1

Procedimiento 8.3. Macro para realizar prueba t de Student para un modelo simulado

Sub PruebaT()Dim alfa, nivel, Tcero, Talfa As DoubleDim n1, n2 As Integer, x1(1 To 1000), x2(1 To 1000) As DoubleDim Vm, Vr As Double Limpiar ActiveWindow.DisplayGridlines = False Cells.Select With Selection .Font.Bold = True .Font.Name = “Arial” .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End Withrespuesta = MsgBox(“Para iniciar este aplicativo debe haberse obtenido los valores simulados” & _ “ partiendo de la celda D4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd IfRange(“C3”).Select: ActiveCell.FormulaR1C1 = “Número de corrida”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Modelo”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Real”Range(“C3:E3”).SelectSelection.Interior.ColorIndex = 6n1 = InputBox(“Digite el número de corridas:”): Cells(4, 2).Value = n1Range(“C4:E” & (n1 + 3)).SelectSelection.Interior.ColorIndex = 19For i = 1 To n1Cells(i + 3, 3).Value = iNext iGenerarvariablesErlangRange(“A4:B13”).SelectSelection.Interior.ColorIndex = 20n2 = InputBox(“Introduzca el número de datos reales :”)For i = 1 To n2x2(i) = InputBox(“Entre el valor real “ & i): Cells(i + 3, 5).Value = x2(i)

Page 288: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

286

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Next iVm = Cells(n1 + 8, 4).ValueVr = Application.Var(Range("E4:E" & (n2 + 3)))Mm = Cells(n1 + 7, 4).ValueMr = Application.Average(Range("E4:E" & (n2 + 3)))Columns("A:A").ColumnWidth = 35Range("A4").Select: ActiveCell.FormulaR1C1 = "Tamaño de la muestra del modelo"Range("A5").Select: ActiveCell.FormulaR1C1 = "Tamaño de la muestra del real"Cells(5, 2).Value = n2Range("A6").Select: ActiveCell.FormulaR1C1 = "Varianza de la muestra del modelo"Cells(6, 2).Value = VmRange("A7").Select: ActiveCell.FormulaR1C1 = "Varianza de la muestra del real"Cells(7, 2).Value = VrRange("A8").Select: ActiveCell.FormulaR1C1 = "Media de la muestra del modelo"Cells(8, 2).Value = MmRange("A9").Select: ActiveCell.FormulaR1C1 = "Media de la muestra del real"Cells(9, 2).Value = MrRange("A10").Select: ActiveCell.FormulaR1C1 = "Nivel de Significancia"nivel = CDbl(InputBox("Introduzca el nivel de significación")): alfa = 1 - nivel: Cells(10, 2) = alfaRange("A11").Select: ActiveCell.FormulaR1C1 = "Valor to"D1 = ((n1 - 1) * Vm + (n2 - 1) * Vr) / (n1 + n2 - 2)r1 = Sqr(D1): D2 = (1 / n1) + (1 / n2)r2 = Sqr(D2)Tcero = (Mm - Mr) / (r1 * r2): Cells(11, 2).Value = TceroRange("A12").Select: ActiveCell.FormulaR1C1 = "Grado de libertad "g = n1 + n2 - 2: Cells(12, 2).Value = gRange("A13").Select: ActiveCell.FormulaR1C1 = "Valor Crítico"Talfa = Application.TInv(alfa / 2, g): Cells(13, 2).Value = TalfaIf Abs(Tcero) < Talfa Thenaceptacion = MsgBox("No se rechaza el modelo de simulación que está arrojando resultados" _ & " con la misma varianza que el sistema real", vbInformation)Elserechazo = MsgBox("Se rechaza el modelo de simulación que está arrojando resultados" _ & " con la misma varianza que el sistema real", vbInformation)End IfEnd Sub

Page 289: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

287

Cole

cción

1

Sub GenerarvariablesErlang() Dim x As Double, M As Double, n As Integer, k As Integer, promedio As Double Dim lambda As Integer, a As Double n = Cells(4, 2).Value k = InputBox("Introduzca el valor del parámetro de forma (K):"): Cells(n + 4, 3).Value = k lambda = InputBox("Introduzca el valor del parámetro de escala (Lambda):"): Cells(n + 5, 3).Value = lambda a = InputBox("Digite el valor mínimo:"): Cells(n + 6, 3).Value = aRange(Cells(n + 4, 3), Cells(n + 8, 4)).SelectSelection.Interior.ColorIndex = 20Range("C" & (n + 4)).Select: ActiveCell.FormulaR1C1 = "Parámetro de forma"Range("C" & (n + 5)).Select: ActiveCell.FormulaR1C1 = "Parámetro de escala"Range("C" & (n + 6)).Select: ActiveCell.FormulaR1C1 = "Valor mínimo"Range("C" & (n + 7)).Select: ActiveCell.FormulaR1C1 = "La media"Range("C" & (n + 8)).Select: ActiveCell.FormulaR1C1 = "La varianza" For j = 1 To n R = Rnd: x = Round(Erlang(k, lambda, a), 0): Cells(j + 3, 4).Value = x Next j Cells(n + 4, 4).Value = k Cells(n + 5, 4).Value = lambda Cells(n + 6, 4).Value = a Cells(n + 7, 4).Value = (k / lambda) + a Cells(n + 8, 4).Value = k / ((lambda) ^ 2)Cells(1, 1).SelectEnd Sub

Function Ln(x As Double) As DoubleLn = Excel.WorksheetFunction.Ln(x)End Function

Function Erlang(k As Integer, lambda As Integer, a As Double) As DoubleY = 0: R = RndM = (1 / k * lambda)For Z = 1 To kY = Y + Ln(1 - R)Next ZErlang = (-1) * M * Y + lambda * (a)End Function

Page 290: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

288

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Prueba U de Mann-Whitney

Esta prueba se conoce también como prueba de la suma de rangos de Wilcoxon, que consiste en probar si dos muestras proceden de la misma población. La prueba U puede usarse para probar la hipótesis H0: µ1 = µ2, siendo µ1 la media del modelo simulado y µ2 la media de los datos reales. La prueba U probará las siguientes hipótesis:

H0: µm = µr.Ha: µm ≠ µr.

Sean los siguientes:n1 = tamaño de la muestra del modelo.n2 = tamaño de la muestra de los valores reales.Vm = varianza del modelo.Vr = varianza de los valores reales.µm = media del modelo.µr = media de los valores reales.R1 = la suma de los rangos de la muestra del modelo de simulación.R2 = la suma de los rangos de la muestra de los datos reales.

El procedimiento de prueba es el siguiente. • Se ordenan todas las n1 + n2 observaciones en orden de magnitud ascendente.• Se establece el rango; esto quiere decir, categorizar las observaciones.• Si dos o más observaciones están empatadas, entonces se usa la media de los

rangos que le hubieran asignado si las observaciones difirieran.• Se suma la columna de los rangos en forma independiente para cada muestra.

Page 291: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

289

Cole

cción

1

La media de las observaciones:

La varianza de las observaciones:

El estadístico:

α = 1 – nivel de significación:

si |Z0| < Zα/2, no se rechaza la hipótesis nula, donde todas las observaciones provienen de la misma población; en caso contrario, se rechaza la hipótesis nula porque las observaciones provienen de poblaciones diferentes

Ejemplo 8.4

Una empresa utilizó un modelo de simulación de la demanda semanal, obteniendo 23 datos de demanda como se muestra a continuación: 100, 40, 90, 100, 110, 140, 130, 40, 60, 50, 60, 70, 60, 70, 80, 140, 60, 40, 80, 60, 120, 100, 70. La situación real de la demanda semanal arrojó los siguientes 12 datos: 50, 130, 130, 80, 100, 120 160, 150, 80, 60, 140, 180.

Page 292: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

290

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

A continuación se presentará una macro para realizar la validación mediante la utilización de la prueba U Mann-Whitney. La macro captura los datos simulados y los datos reales, ordena los datos en forma ascendente y establece los rangos.

Procedimiento 8.4. Macro para realizar prueba U de Mann-Whitney

Sub PruebaU()Dim alfa, nivel, Tcero, Talfa As Double, m As LongDim n1, n2 As Integer, x1(1 To 1000), x2(1 To 1000) As Double Limpiar ActiveWindow.DisplayGridlines = False Cells.Select With Selection .Font.Bold = True .Font.Name = “Arial” .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End Withrespuesta = MsgBox(“Para iniciar este aplicativo debe haberse obtenido los valores simulados” & _ “ partiendo de la celda D4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd IfRange(“A1”).Select: ActiveCell.FormulaR1C1 = “n1=”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “n2=”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Modelo”Range(“B3”).Select: ActiveCell.FormulaR1C1 = “Real”Range(“C3”).Select: ActiveCell.FormulaR1C1 = “Rango del modelo”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Rango del Real”Range(“E3”).Select: ActiveCell.FormulaR1C1 = “Categoría”Range(“F3”).Select: ActiveCell.FormulaR1C1 = “Orden”Range(“G3”).Select: ActiveCell.FormulaR1C1 = “Rango”Range(“A3:O3”).SelectSelection.Interior.ColorIndex = 6n1 = InputBox(“Digite el número de datos simulados del modelo:”): Cells(1, 2).Value = n1For i = 1 To n1

Page 293: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

291

Cole

cción

1

x1(i) = InputBox(“Entre el valor simulado “ & i): Cells(i + 3 + n1, 5).Value = n1 + iCells(i + 3, 1).Value = x1(i): Cells(i + 3, 6).Value = x1(i)Next in2 = InputBox(“Introduzca el número de datos reales :”): Cells(2, 2).Value = n2For i = 1 To n2x2(i) = InputBox(“Entre el valor real “ & i): Cells(i + 3, 5).Value = x2(i)Cells(i + 3, 2).Value = x2(i): Cells(i + 3 + n1, 6).Value = x2(i)Next ik = n1 + n2Range(“F4:F” & (k + 3)).SelectActiveWorkbook.Worksheets(“Hoja1”).Sort.SortFields.ClearActiveWorkbook.Worksheets(“Hoja1”).Sort.SortFields.Add Key:=Range(“F4”), _SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormalWith ActiveWorkbook.Worksheets(“Hoja1”).Sort .SetRange Range(“F4:F” & (k + 3)) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .ApplyEnd Withx = 4For i = x To k + x - 1cont = 0: s = Cells(x, 6).Value: R1 = Cells(x, 5).Value For j = 1 To k m = Cells(x - 1 + j, 6).Value If (s = m) Then cont = cont + 1 Else Exit For End If Next jx = x + cont - 1R2 = Cells(x, 5).Value For Z = x - cont + 1 To x rango = (R1 + R2) / 2: Cells(Z, 7).Value = rango Next Zx = x + 1Next iFor i = 4 To n1 + 3

Page 294: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

292

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(i, 3).Value = Application.VLookup(Cells(i, 1), Sheets(1).Range("F4:G" & (k + 3)), 2)Sum = Sum + Cells(i, 3).ValueNext iRange("C" & (n1 + 4)).Select: ActiveCell.FormulaR1C1 = "Suma"Selection.Interior.ColorIndex = 6Cells(n1 + 5, 3).Value = SumFor i = 4 To n2 + 3Cells(i, 4).Value = Application.VLookup(Cells(i, 2), Sheets(1).Range("F4:G" & (k + 3)), 2)sum1 = sum1 + Cells(i, 4).ValueNext iRange("D" & (n2 + 4)).Select: ActiveCell.FormulaR1C1 = "Suma"Selection.Interior.ColorIndex = 6Cells(n2 + 5, 4).Value = sum1: R1 = Sum: R2 = sum1If (R1 < R2) ThenU = n1 * n2 + (n1 * (n1 - 1) / 2) - R1ElseU = n1 * n2 + (n2 * (n2 - 1) / 2) - R2End IfRange("H3").Select: ActiveCell.FormulaR1C1 = "Valor de U": Cells(3, 9).Value = URange("J3").Select: ActiveCell.FormulaR1C1 = "Nivel de Significancia"nivel = CDbl(InputBox("Introduzca el nivel de significación")): alfa = 1 - nivel: Cells(3, 11) = alfamedia = n1 * (n1 + n2 + 1) / 2: Varza = n1 * n2 * (n1 + n2 + 1) / 12zetacero = (U - media) / Sqr(Varza)Range("L3").Select: ActiveCell.FormulaR1C1 = "El estadístico": Cells(3, 13).Value = zetaceroRange("N3").Select: ActiveCell.FormulaR1C1 = "Valor Crítico"zetaalfa = Application.WorksheetFunction.NormSInv(alfa / 2): Cells(3, 15).Value = zetaalfaIf Abs(zetacero) < zetaalfa Thenaceptacion = MsgBox("No se rechaza el modelo de simulación y los valores reales" _ & " que provienen de la misma poblacion", vbInformation)Elserechazo = MsgBox("Se rechaza el modelo de simulación y los valores reales" _ & " que provienen de la misma poblacion", vbInformation)End IfEnd Sub

Page 295: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

293

Cole

cción

1

Prueba Chi-cuadrado para la simulación con distribución de probabilidad teórica

La siguiente prueba permitirá comprobar si, una vez que se tiene una generación de variables aleatorias simuladas, estas provienen de una distribución de probabilidad teórica específica.

Ejemplo 8.5

El peso de un determinado producto es una variable aleatoria distribuida exponencial-mente con una media de 1,5 kg. Realizar una macro para realizar la prueba Chi-cuadrado.

Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado

a una distribución de probabilidad teórica

Sub pruebaChiCuad()Dim alfa, nivel, chicero, chialfa As DoubleDim n As Integer, x, y As DoubleDim FO(1 To 1000), FE(1 To 1000) As IntegerDim r(1 To 1000), dif(1 To 1000) As Double Limpiar ActiveWindow.DisplayGridlines = Falserespuesta = MsgBox(“Para iniciar este aplicativo debe haberse obtenido los números aleatorios” & _ “ partiendo de la celda G4” & vbCrLf & vbCrLf & “ ¿Está seguro? “, vbYesNo + vbCritical + vbDefaultButton2 _ , “DECISION DE CONTINUAR”)If respuesta = vbNo ThenExit SubEnd Ifn = InputBox(“Introduzca el número de corridas :”)Cells(4, 2).Value = n k = InputBox(“Digite el número de réplicas:”) Cells(1, 1).Value = kGenerarvariablesExponencialesRange(“A4”).Select

Page 296: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

294

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

ActiveCell.FormulaR1C1 = “Tamaño de la muestra”Columns(“A:A”).EntireColumn.AutoFitRange(“A5”).SelectActiveCell.FormulaR1C1 = “Nivel de Significancia”alfa = CDbl(InputBox(“Introduzca el nivel de significación”)): Cells(5, 2) = alfam = Round(1 + 3.322 * (Application.Log(n)), 0)Range(“A6”).SelectActiveCell.FormulaR1C1 = “Números de intervalos”Cells(6, 2).Value = mDMin = Round(Application.Min(Range(“G4:G” & (k + 3))), 3)DMax = Round(Application.Max(Range(“G4:G” & (k + 3))), 3)interv = Round(((DMax - DMin) / m), 3)Range(“A7”).SelectActiveCell.FormulaR1C1 = “Grado de libertad”g = m - 1: Cells(7, 2).Value = gRange(“A8”).SelectActiveCell.FormulaR1C1 = “valor Crítico”chialfa = Application.ChiInv(alfa, g): Cells(8, 2).Value = chialfaFor x = 1 To nr(x) = Cells(x + 3, 7).ValueNext xRange(“H3”).SelectActiveCell.FormulaR1C1 = “Intervalo”Range(“J3”).SelectActiveCell.FormulaR1C1 = “FOi”Range(“K3”).SelectActiveCell.FormulaR1C1 = “FEi”Range(“L3”).SelectActiveCell.FormulaR1C1 = “(FOi - FEi)²/FEi”Columns(“L:L”).EntireColumn.AutoFitRange(“H3:I3”).SelectSelection.MergeRange(“H3:L3”).SelectSelection.Font.Bold = TrueSelection.Font.Name = “Arial”Selection.WrapText = TrueSelection.HorizontalAlignment = xlCenterSelection.VerticalAlignment = xlCenterSelection.Interior.ColorIndex = 6y = Round(DMin, 3)

Page 297: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

295

Cole

cción

1

chicero = 0For i = 1 To mCells(i + 3, 9) = y & " - " & (y + interv)FO(i) = 0For j = 1 To nIf r(j) > y And r(j) <= (y + interv) ThenFO(i) = FO(i) + 1End IfNext jy = Round(y + interv, 3)Cells(i + 3, 10).Value = FO(i)FE(i) = (n / m)Cells(i + 3, 11).Value = FE(i)dif(i) = ((FO(i) - FE(i)) ^ 2) / FE(i)Cells(i + 3, 12).Value = dif(i)chicero = chicero + dif(i)Next iRange("A9").SelectActiveCell.FormulaR1C1 = "El estadístico"Cells(9, 2).Value = chiceroIf chicero < chialfa Thenaceptacion = MsgBox("No se rechaza que las variables aleatorias generadas provienen de una distribución de probabilidad" _& " teórica", vbInformation)Elserechazo = MsgBox("Se rechaza que las variables aleatorias generadas provienen de una distribu-ción de probabilidad" _& " teórica", vbInformation)End IfEnd Sub

Sub GenerarvariablesExponenciales() Dim x As Double, EX As Double, n As Integer, k As Integer, promedio As Double n = Cells(4, 2).Value k = Cells(1, 1).Value EX = InputBox(“Introduzca el valor medio de la exponencial:”) Range(“D3:G3,A4:B9”).Select Selection.Interior.ColorIndex = 24 Range(“D4:E” & (n + 4)).Select Selection.Interior.ColorIndex = 19

Page 298: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

296

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“F4:G” & (k + 4)).Select Selection.Interior.ColorIndex = 19 Range(“D3”).Select ActiveCell.FormulaR1C1 = “Número de corrida” Range(“E3”).Select ActiveCell.FormulaR1C1 = “Variable aleatoria” Range(“F3”).Select ActiveCell.FormulaR1C1 = “Réplica Num.” Range(“G3”).Select ActiveCell.FormulaR1C1 = “Promedio de variable” Range(“D3:G3”).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End WithRange(Cells(n + 4, 4), Cells(n + 5, 5)).SelectSelection.Interior.ColorIndex = 20Range(Cells(k + 4, 6), Cells(k + 6, 7)).Select Selection.Interior.ColorIndex = 20 Range(“D” & (n + 4)).Select ActiveCell.FormulaR1C1 = “La media” Range(“D” & (n + 5)).Select ActiveCell.FormulaR1C1 = “La Varianza” With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End With Range(“F” & (k + 4)).Select ActiveCell.FormulaR1C1 = “Promedio” Range(“F” & (k + 5)).Select ActiveCell.FormulaR1C1 = “Varianza” Range(“F” & (k + 6)).Select ActiveCell.FormulaR1C1 = “Desviación Estandar” With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True End With

Page 299: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

297

Cole

cción

1

Cells.Select With Selection .HorizontalAlignment = xlCenter End WithFor i = 1 To k For j = 1 To n Cells(j + 3, 4) = j r = Rnd x = Round((-1 * EX) * (Application.Ln(1 - r)), 2) Cells(j + 3, 5).Value = x Next j Cells(i + 3, 6) = i Cells(n + 4, 5).Value = EX Cells(n + 5, 5).Value = (EX) ^ 2 promedio = Round(Application.Average(Range("E4:E" & (n + 4))), 2) Cells(i + 3, 7) = promedioNext iCells(k + 4, 7).Value = Application.Average(Range("G4:G" & (k + 4)))Cells(k + 5, 7).Value = Application.Var(Range("G4:G" & (k + 4)))Cells(k + 6, 7).Value = Application.StDev(Range("G4:G" & (k + 4)))Range("A1").SelectEnd Sub

Diseño de experimentos de simulación

Una vez se ha hecho la validación del modelo de simulación por medio de macros de Excel, estamos en condiciones de conducir experimentos para indicar la prueba de un sistema determinado que opere bajo un conjunto de condiciones, con el fin de evaluar varias estrategias con las cuales se puede operar el sistema que estamos teniendo como referencia. Como sabemos, la simulación puede describirse como un procedimiento de experimentación con macros de Excel o algún tipo de software para simulación que replica estadísticamente el comportamiento de un sistema discreto o continuo.

La simulación en macro de Excel es por antonomasia un diseño experimental; por tal motivo, el usuario de simulación tiene la prerrogativa de especificar varios niveles de

Page 300: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

298

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

factores (tratamientos) y las combinaciones de niveles, así como el orden de los expe-rimentos que influyen en la interpretación del resultado de la simulación que quede libre de errores fortuitos. Para hacer un diseño de experimentos de simulación, hay muchas técnicas que se han descrito mucho, en una gran cantidad de libros de diseño experimental, pero aquí la idea central es usar la técnica de diseños factoriales. Para esta técnica recomendamos los siguientes pasos:

a. El tamaño muestral del experimento de simulación, esto es, el número de veces del proceso de salida.

b. Las condiciones iniciales, esto es, determinar los niveles de factores y tratamientos.c. Las condiciones finales, esto quiere decir, que proporcione las estimaciones de

medidas de comportamiento del sistema.d. Relacionar variables de salida con variables de entrada a través de un tipo modelo

apropiado para ello.

Para explicar mejor un diseño experimental de simulación, consideramos el experi-mento con un solo factor, donde proponemos varios niveles de factores o tratamientos y varias repeticiones, suponiendo que el experimento ha sido aleatorizado por completo.

Experimento con un solo factor: análisis de varianza

En esta sección se desarrolla el análisis de varianza para el modelo de efectos fijos.

Page 301: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

299

Cole

cción

1

Sean:a = número de tratamientosn = número de réplicasm = a – nyij = observación en el i tratamiento con j réplicas

yi = totales de los tratamientos

SST = suma de los cuadrados totales =

SSTR = suma de los cuadrados de los tratamientos =

SSE = suma de los cuadrados del error SST – SSTR

Grados de libertad de los tratamientos a – 1

Grados de libertad del error = m – a

Grados de libertad de los totales = m – 1

MSTR = media de los cuadrados de tratamientos =

MSE = media de cuadrados del error =

, se concluye que las medias de los tratamientos no difieren; en caso contrario, sí

difieren.

Page 302: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

300

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Ejemplo 8.7

Supóngase que una entidad bancaria puede contar con tres cajeros que tienen la misma habilidad para atender a los clientes; el tiempo entre llegadas es una variable aleatoria con distribución exponencial, pero se sospecha que cuando la tasa de llegadas se incrementa, se aumentará la longitud de la cola, o sea, el número promedio de cliente en la cola; en cambio, el tiempo de servicio es una variable aleatoria con distribución exponencial y una tasa de servicio de 2 clientes por minuto.

Se decide probar muestras a cinco niveles de tasa de llegadas: 4, 5, 6, 7, y 8 clientes por minuto; también se probará el valor del número promedio de servidores ocupados de la cola bajo 5 réplicas de simulación.

Para resolver este ejemplo, se requiere:a. Se presentarán dos macros: una macro de simulación de línea de espera, inclu-

yendo los cinco tratamientos y cinco réplicas; otra macro que incluye el análisis de varianza teniendo un experimento unifactorial (Anova).

b. Se capturan los datos pertinentes como las tasas de llegadas para tratamiento y sus réplicas.

c. Hacer previamente una macro con cuadrícula para datos.

Procedimiento 8.6. Macro para realizar diseño de experimento con Anova

Sub Cuadricular04()ActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A1”).Select: ActiveCell.FormulaR1C1 = “DISEÑO DE EXPERIMENTO DE SIMULACION DE LINEA DE ESPERA CON VARIOS SERVIDORES”

Page 303: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

301

Cole

cción

1

Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de Clientes”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Número de Servidores”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Número de Tratamiento”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Número de Réplicas”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Distribución de Probabilidad del Tiempo entre Llegadas”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “EXPONENCIAL”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Tasa de Llegadas”Range(“A9”).Select: ActiveCell.FormulaR1C1 = “Distribución de Probabilidad del Tiempo de Servicio”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “EXPONENCIAL”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Tasa de Servicio”Range(“A14”).Select: ActiveCell.FormulaR1C1 = “Resumen de salida:”Range(“A15”).Select: ActiveCell.FormulaR1C1 = “Num. promedio servidores ocupados (Cp) =”Range(“A16”).Select: ActiveCell.FormulaR1C1 = “Num. Promedio de servidores desocupados =”Range (“A17”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de utilizacion (%) =”Range(“A18”).Select: ActiveCell.FormulaR1C1 = “Num. Promedio de clientes en la cola, Lq =”Range(“A19”).Select: ActiveCell.FormulaR1C1 = “Número de clientes promedio en el sistema, L =”Range(“A20”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en cola, Wq =”Range(“A21”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema, W =”Range(“A22”).Select: ActiveCell.FormulaR1C1 = “Suma (Tiempos de servicio) =”Range(“A23”).Select: ActiveCell.FormulaR1C1 = “Suma (Wq) =”Range(“A23”).Select: ActiveCell.FormulaR1C1 = “Suma (W) =”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Datos de la Linea de Espera”Range(“I3”).Select: ActiveCell.FormulaR1C1 = “Clientes”Range(“J3”).Select: ActiveCell.FormulaR1C1 = “Tiempo Entre Llegadas”Range(“K3”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegadas”Range(“L3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio de Servicio”Range(“M3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Servicio”Range(“N3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“O3”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de Espera de un Cliente en la Cola (Wq)”Range(“P3”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de Espera de un Cliente en el Sistema (W)”Range(“A1:P1”).SelectSelection.MergeSelection.Interior.ColorIndex = 6Range(“A2:B2,A3:B3,D2:E2,D3:E3,A4:F4,B5:F5,B6:C6,A9:F9,B10:F10,B11:C11”).SelectSelection.Merge

Page 304: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

302

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“I2:P2,A14:D14,A15:C15,A16:C16,A17:C17,A18:C18,A19:C19,A20:C20,A21:C21,A22:C22, A23:C23,A24:C24").SelectSelection.MergeRange("A1,A2:F3,A4,B5,B6:D6,A9,B10,B11:D11,A14,I2:P3").SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange("A2,A3,D2,D3").SelectSelection.Interior.ColorIndex = 46Range("A4,B5,B6,B9,B10,B11,I2").SelectSelection.Interior.ColorIndex = 22Range("I3:P3").SelectSelection.Interior.ColorIndex = 46Range(Cells(15, 1), Cells(24, 1)).SelectSelection.Interior.ColorIndex = 20Range(Cells(14, 1), Cells(24, 4)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithEnd Sub

Sub ExperimentoCola01()Dim i As Integer, j, z, tr As Integer, n, c As Integer, Serv As IntegerDim medialleg, mediaserv As Double, inicio(1 To 10000) As SingleDim ultVal, minVal, TLLeg(1 To 10000), Tdesp(1 To 10000), Tserv(1 To 10000)Dim Tmlleg(1 To 10000), W(1 To 10000), Wq(1 To 10000) As SingleCuadricula04Range(“I4:P1350”).ClearContentsRange(“C2:C3,F2:F3”).ClearContentsRange(“D6,D11,D15:D24”).ClearContentsRange(“A27:F205”).ClearContentsn = InputBox(“Digite el número de Clientes:”): Cells(2, 3).Value = n

Page 305: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

303

Cole

cción

1

Serv = InputBox(“Digite el número de servidores:”): Cells(3, 3) = Servtasaserv = InputBox(“Introduzca la tasa de servicio:”)Cells(11, 4).Value = tasaservpos = 27tr = InputBox(“Digite el número de Tratamiento de la tasa de llegada:”)Cells(2, 6) = trc = InputBox(“Digite el número de Réplicas:”): Cells(3, 6) = cm = 0For y = 1 To trMsgBox “TRATAMIENTO NUMERO” + Str(y), vbOKOnly, “TRATAMIENTO”Cells(pos + y - 1 - m, 1).Value = yFor z = 1 To c Cells(pos + z - 1, 3).Value = zNext ztasalleg = InputBox(“Introduzca la tasa de llegada para el tratamiento “ & y)Cells(6, 4).Value = tasallegFor x = 1 To cRange(“I4:P” & (n + 3)).ClearContentsminVal = 10000ultVal = 10000semilla = 12000medialleg = (1 / tasalleg): mediaserv = (1 / tasaserv) For i = 1 To Serv Cells(i + 3, 9).Value = i R = Rnd TLLeg(i) = (-1) * (medialleg) * (Application.Ln(1 - R)) ‘Tiempo entre llegadas Cells(i + 3, 10).Value = TLLeg(i) R2 = Rnd Tserv(i) = (-1) * (mediaserv) * (Application.Ln(1 - R2)) ‘Tiempo de servicio Cells(i + 3, 13).Value = Tserv(i) If i = 1 Then Tmlleg(i) = TLLeg(1) Cells(4, 11).Value = Tmlleg(i) inicio(i) = Tmlleg(i) Cells(4, 12).Value = Tmlleg(i) Else Tmlleg(i) = Tmlleg(i - 1) + TLLeg(i) Cells(i + 3, 11).Value = Tmlleg(i) inicio(i) = Tmlleg(i) Cells(i + 3, 12).Value = inicio(i)

Page 306: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

304

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

End If Tdesp(i) = inicio(i) + Tserv(i) ‘Tiempo de despacho Cells(i + 3, 14).Value = Round(Tdesp(i), 2) Wq(i) = 0 Cells(i + 3, 15).Value = Round(Wq(i), 2) W(i) = Tdesp(i) - Tmlleg(i) Cells(i + 3, 16).Value = Round(W(i), 2) If ultVal < Tdesp(i) Then ultVal = ultVal Else ultVal = Tdesp(i) End If Next ij = Serv + 1Cells(j + 3, 9).Value = jR = RndTLLeg(j) = (-1) * (medialleg) * (Application.Ln(1 - R))Cells(j + 3, 10).Value = TLLeg(j)R2 = RndTserv(j) = (-1) * (mediaserv) * (Application.Ln(1 - R2))Cells(j + 3, 13).Value = Tserv(j)Tmlleg(j) = Cells(j + 2, 11).Value + Cells(j + 2, 10).ValueCells(j + 3, 11).Value = Tmlleg(j)inicio(j) = Application.max(Tmlleg(j), ultVal): Cells(j + 3, 12).Value = inicio(j)Tdesp(j) = inicio(j) + Tserv(j)Cells(j + 3, 14).Value = Round(Tdesp(j), 2): Tdesp(j) = Cells(i + 3, 14).ValueTmlleg(j) = Cells(i + 3, 11).Value: Tserv(j) = Cells(i + 3, 13).ValueWq(j) = Tdesp(j) - Tmlleg(j) - Tserv(j)Cells(j + 3, 15).Value = Round(Wq(j), 2)W(j) = Tdesp(j) - Tmlleg(j)Cells(j + 3, 16).Value = Round(W(j), 2)For i = Serv + 2 To n Cells(i + 3, 9).Value = i R = Rnd TLLeg(i) = (-1) * (medialleg) * (Application.Ln(1 - R)) Cells(i + 3, 10).Value = TLLeg(i) R2 = Rnd Tserv(i) = (-1) * (mediaserv) * (Application.Ln(1 - R2)) Cells(i + 3, 13).Value = Tserv(i) Tmlleg(i) = Cells(i + 2, 11).Value + Cells(i + 2, 10).Value

Page 307: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

305

Cole

cción

1

Cells(i + 3, 11).Value = Tmlleg(i) ultVal = inicio(i - 1) minVal = 10000 For j = 1 To i - Serv - 1 If Tdesp(j) > ultVal Then If Tdesp(j) < minVal Then minVal = Tdesp(j) Else minVal = minVal End If End If Next j If minVal = 10000 Then For j = i - Serv To i - 1 If Tdesp(j) < minVal Then minVal = Tdesp(j) Else minVal = minVal End If Next j End If If minVal > Tmlleg(i) Then inicio(i) = minVal Else inicio(i) = Tmlleg(i) End If Cells(i + 3, 12).Value = inicio(i) Tdesp(i) = inicio(i) + Tserv(i) Cells(i + 3, 14).Value = Round(Tdesp(i), 2) W(i) = Tdesp(i) - Tmlleg(i): Cells(i + 3, 16).Value = Round(W(i), 2) Wq(i) = W(i) - Tserv(i): Cells(i + 3, 15).Value = Round(Wq(i), 2)Next i Wprom = Application.Average(Range(“P4:P” & (n + 3))): Cells(21, 4).Value = Round(Wprom, 2) Wqprom = Application.Average(Range(“O5:O” & (n + 3))): Cells(20, 4).Value = Round(Wqprom, 2) L = (Application.Sum(Range(“P4:P” & (n + 3)))) / ((Application.max(Range(“N4:N” & (n + 3)))) - Cells(4, 11).Value) Cells(19, 4).Value = Round(L, 0) Lq = (Application.Sum(Range(“O4:O” & (n + 3)))) / ((Application.max(Range(“N4:N” & (n + 3)))) - Cells(4, 11).Value)

Page 308: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

306

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Cells(18, 4).Value = Round(Lq, 0) servprom = L - Lq: Cells(15, 4).Value = servprom U = (servprom / Serv): Cells(17, 4).Value = U Range("D17").Select Selection.NumberFormat = "0.00%" NumPromDesocp = Serv - servpromIf (NumPromDesocp < 0) ThenCells(16, 4).Value = 0ElseCells(16, 4).Value = NumPromDesocpEnd IfSumaTserv = Application.Sum(Range("M4:M" & (n + 3))): Cells(22, 4).Value = SumaTservSumaWq = Application.Sum(Range("O4:O" & (n + 3))): Cells(23, 4).Value = SumaWqSumaW = Application.Sum(Range("P4:P" & (n + 3))): Cells(24, 4).Value = SumaTservMsgBox "REPLICA NUMERO" + Str(x), vbOKOnly, "REPLICA"Cells(pos, 2).Value = Cells(6, 4).ValueCells(pos, 4).Value = Cells(15, 4).Valuepos = pos + 1Next xm = m + 1Next yAnovaEnd Sub

Sub Anova()Dim alfa, nivel, Fcero, Falfa As DoubleDim n, a As Integer, yi(1 To 1000), promyi(1 To 1000), totyi, totpromyi As DoubleDim SST, SSE, SSTR As Double, matriz(1 To 1000, 1 To 1000) As DoubleDim i, j As ByteRange(“R2:S8”).ClearContentsRange(“AA1”).Select Selection.Copy Range(“T1:AB100”).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.ClearContentsRange(“Q1:AZ300”).SelectWith Selection .HorizontalAlignment = xlCenter

Page 309: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

307

Cole

cción

1

.VerticalAlignment = xlCenter .WrapText = True .Font.Name = “Arial” .Font.Size = 12 .Font.Bold = TrueEnd Witha = Cells(2, 6).Value: n = Cells(3, 6).ValueRange(Cells(1, 21), Cells(1, n + 20)).Select With Selection .Interior.Color = 43 .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End With Selection.Merge ActiveCell.FormulaR1C1 = “REPLICAS”Range(“T2”).Select: ActiveCell.FormulaR1C1 = “Tratamiento”Range(Cells(2, 20), Cells(2, n + 22)).Select With Selection .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Interior.ColorIndex = 6 End Withfila = 0For i = 1 To a Cells(i + 2, 20).Value = i Sum = 0 For j = 1 To n Cells(2, 20 + j).Value = j matriz(i, j) = Round(Cells(26 + fila + j, 4).Value, 2) Cells(i + 2, j + 20).Value = matriz(i, j) Sum = Sum + matriz(i, j) Next j yi(i) = Sum: Cells(i + 2, j + 20).Value = yi(i) prom = (Sum / n): promyi(i) = prom Cells(i + 2, j + 21).Value = promyi(i) fila = fila + aNext isum1 = 0: sum2 = 0For x = 1 To a

Page 310: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

308

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

sum1 = sum1 + yi(x): sum2 = sum2 + promyi(x)NextCells(2, j + 20) = “Totales”: Cells(2, j + 21) = “Promedios”Cells(i + 3, 20) = “Fuente de Variación”: Cells(i + 4, 20) = “Tratamiento”Cells(i + 5, 20) = “Error”: Cells(i + 6, 20) = “Total”Cells(i + 3, 21) = “Suma de Cuadrados”: Cells(i + 3, 22) = “grados de libertad”Cells(i + 3, 23) = “Media de Cuadrados”: Cells(i + 3, 24) = “Fo”Range(Cells(a + 2, 20), Cells(a + 2, n + 22)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMediumRange(Cells(i + 3, 20), Cells(i + 3, 24)).Select With Selection .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Interior.ColorIndex = 6 End Withtotyi = sum1: Cells(a + 3, j + 20).Value = totyitotpromyi = (sum2 / a): Cells(a + 3, j + 21).Value = totpromyiRange(Cells(a + 6, 20), Cells(a + 6, 24)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMediumm = a * nSST = Application.SumSq(Range(Cells(3, 21), Cells(a + 2, n + 20))) - ((totyi) ^ 2 / m)Cells(i + 6, 21).Value = SSTSSTR = (1 / n) * (Application.SumSq(Range(Cells(3, n + 21), Cells(a + 2, n + 21)))) - ((totyi) ^ 2 / m)Cells(i + 4, 21).Value = SSTRSSE = SST - SSTR: Cells(i + 5, 21).Value = SSECells(i + 4, 22).Value = a - 1: Cells(i + 5, 22).Value = m - aCells(i + 6, 22).Value = m - 1MSTR = SSTR / (a - 1): Cells(i + 4, 23).Value = MSTRMSE = SSE / (m - a): Cells(i + 5, 23).Value = MSEFcero = MSTR / MSE: Cells(i + 4, 24).Value = FceroRange(“R2”).Select: ActiveCell.FormulaR1C1 = “Nivel de Significancia”nivel = CDbl(InputBox(“Introduzca el nivel de significación”)): alfa = 1 - nivel: Cells(2, 19) = alfaRange(“R3”).Select: ActiveCell.FormulaR1C1 = “Valor Fo”Cells(3, 19).Value = FceroRange(“R4”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del Tratamiento”v1 = a - 1: Cells(4, 19).Value = v1Columns(“R:R”).EntireColumn.AutoFitRange(“R5”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del error”v2 = m - a: Cells(5, 19).Value = v2

Page 311: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

309

Cole

cción

1

Range("R6").Select: ActiveCell.FormulaR1C1 = "valor Crítico"Falfa = Application.FInv(alfa / 2, v1, v2): Cells(6, 19).Value = FalfaIf Fcero < Falfa Thenaceptacion = MsgBox("Las medias de los tratmientos no difieren", vbInformation)Elserechazo = MsgBox("Las medias de los tratmientos difieren", vbInformation)End IfEnd Sub

Experimento con dos factores

El proceso de desarrollar modelos de simulación conduce experimentos que se llevan a cabo para analizar los efectos producidos por dos o más factores. Cada factor tiene un determinado número de niveles de tratamientos o combinaciones de niveles en cada réplica del experimento.

Si existe un determinado número de niveles del primer factor y un determinado número del segundo factor, entonces cada réplica del experimento contiene un número de combinaciones de tratamientos que es equivalente al producto de los números de niveles de cada factor. El efecto de un factor se define como el cambio en la respuesta producida por un cambio en el nivel del factor. Para estudiar este importante tema, se tienen en cuenta las siguientes nomenclaturas y fórmulas.

Page 312: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

310

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Sean:a = número de tratamientos del primer factor

b = número de tratamientos del segundo factor

n = número de réplicas

l = entero( n / 2 )

m = número de columnas en cada celda del tratamiento del factor = n – l

yijk = observación en el i tratamiento del primer factor, j tratamiento del segundo factor con k réplicas

SST = suma de los cuadrados totales =

SSA = suma de los cuadrados totales de los tratamientos del primer factor

SSB = suma de los cuadrados totales del segundo factor

SSI = suma de los cuadrados de la interaccion =

SSE = suma de los cuadrados del error = SST – SSA – SSB – SSI

Page 313: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

311

Cole

cción

1

Grados de libertad de los tratamientos del primer factor = a – 1

Grados de libertad de los tratamientos del segundo factor = b – 1

Grados de libertad de los tratamientos de la interaccion = (a – 1)(b – 1)

Grados de libertad del error = ab(n – 1)

Grados de libertad de los totales = abn – 1

MSA = media de los cuadrados del primer factor =

MSB = media de los cuadrados del segundo factor =

MSI = media de los cuadrados de la interaccion =

MSE = media de los cuadrados del error =

Ejemplo 8.8

Supóngase que una entidad bancaria puede contar con tres cajeros que tienen la misma habilidad para atender a los clientes; el tiempo entre llegadas es una variable aleatoria con distribución exponencial; en cambio, el tiempo de servicio es una variable aleatoria con distribución exponencial, pero se sospecha que cuando cambian la tasa de llegadas

Page 314: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

312

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

y la tasa de servicio, se cambiará la longitud de la cola, o sea, el número promedio de cliente en la cola.

Se decide probar muestras a tres niveles de tasa de llegadas: 4, 6 y 8 clientes por hora, y tres niveles de tratamiento de la tasa de servicio: 2, 3 y 5; se probará también el valor de la longitud de la cola bajo 4 réplicas de simulación. A continuación se presentarán dos macros: una macro de simulación de línea de espera, incluyendo los tres tratamientos de cada factor y cuatro réplicas; otra macro que incluye el experimento bifactorial.

Procedimiento 8.7. Macro para simular un modelo de línea de

espera con réplicas para realizar diseño de experimento

Sub Cuadricular04()ActiveWindow.DisplayGridlines = FalseCells.SelectWith Selection .Font.Bold = True .Font.Name = “Arial” .Font.Size = 12 .WrapText = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenterEnd WithRange(“A1”).Select: ActiveCell.FormulaR1C1 = “DISEÑO DE EXPERIMENTO DE SIMULACION DE LINEA DE ESPERA CON VARIOS SERVIDORES”Range(“A2”).Select: ActiveCell.FormulaR1C1 = “Número de Clientes”Range(“A3”).Select: ActiveCell.FormulaR1C1 = “Número de Servidores”Range(“D2”).Select: ActiveCell.FormulaR1C1 = “Número de Tratamiento”Range(“D3”).Select: ActiveCell.FormulaR1C1 = “Número de Réplicas”Range(“A4”).Select: ActiveCell.FormulaR1C1 = “Distribución de Probabilidad del Tiempo entre Llegadas”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “EXPONENCIAL”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Tasa de Llegadas”Range(“A9”).Select: ActiveCell.FormulaR1C1 = “Distribución de Probabilidad del Tiempo de Servicio”Range(“B5”).Select: ActiveCell.FormulaR1C1 = “EXPONENCIAL”Range(“B6”).Select: ActiveCell.FormulaR1C1 = “Tasa de Servicio”Range(“A14”).Select: ActiveCell.FormulaR1C1 = “Resumen de salida:”Range(“A15”).Select: ActiveCell.FormulaR1C1 = “Num. promedio servidores ocupados (Cp) =”

Page 315: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

313

Cole

cción

1

Range(“A16”).Select: ActiveCell.FormulaR1C1 = “Num. Promedio de servidores desocupados =”Range (“A17”).Select: ActiveCell.FormulaR1C1 = “Porcentaje de utilizacion (%) =”Range(“A18”).Select: ActiveCell.FormulaR1C1 = “Num. Promedio de clientes en la cola, Lq =”Range(“A19”).Select: ActiveCell.FormulaR1C1 = “Número de clientes promedio en el sistema, L =”Range(“A20”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en cola, Wq =”Range(“A21”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de espera en el sistema, W =”Range(“A22”).Select: ActiveCell.FormulaR1C1 = “Suma (Tiempos de servicio) =”Range(“A23”).Select: ActiveCell.FormulaR1C1 = “Suma (Wq) =”Range(“A23”).Select: ActiveCell.FormulaR1C1 = “Suma (W) =”Range(“I2”).Select: ActiveCell.FormulaR1C1 = “Datos de la Linea de Espera”Range(“I3”).Select: ActiveCell.FormulaR1C1 = “Clientes”Range(“J3”).Select: ActiveCell.FormulaR1C1 = “Tiempo Entre Llegadas”Range(“K3”).Select: ActiveCell.FormulaR1C1 = “Tiempo Medido de Llegadas”Range(“L3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Inicio de Servicio”Range(“M3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Servicio”Range(“N3”).Select: ActiveCell.FormulaR1C1 = “Tiempo de Despacho”Range(“O3”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de Espera de un Cliente en la Cola (Wq)”Range(“P3”).Select: ActiveCell.FormulaR1C1 = “Tiempo promedio de Espera de un Cliente en el Sistema (W)”Range(“A1:P1”).SelectSelection.MergeSelection.Interior.ColorIndex = 6Range(“A2:B2,A3:B3,D2:E2,D3:E3,A4:F4,B5:F5,B6:C6,A9:F9,B10:F10,B11:C11”).SelectSelection.MergeRange(“I2:P2,A14:D14,A15:C15,A16:C16,A17:C17,A18:C18,A19:C19,A20:C20,A21:C21,A22:C22,A23:C23,A24:C24”).SelectSelection.MergeRange(“A1,A2:F3,A4,B5,B6:D6,A9,B10,B11:D11,A14,I2:P3”).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).Weight = xlThinEnd WithRange(“A2,A3,D2,D3”).SelectSelection.Interior.ColorIndex = 46

Page 316: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

314

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Range(“A4,B5,B6,B9,B10,B11,I2”).Select Selection.Interior.ColorIndex = 22Range("I3:P3").SelectSelection.Interior.ColorIndex = 46Range(Cells(15, 1), Cells(24, 1)).SelectSelection.Interior.ColorIndex = 20Range(Cells(14, 1), Cells(24, 4)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithEnd Sub

Sub ExperimentoCola02()Dim i As Integer, j, z, tr As Integer, n, c As Integer, Serv As IntegerDim medialleg, mediaserv As Double, inicio(1 To 10000) As SingleDim ultVal, minVal, TLLeg(1 To 10000), Tdesp(1 To 10000), Tserv(1 To 10000)Dim Tmlleg(1 To 10000), W(1 To 10000), Wq(1 To 10000) As SingleDim trll, trs As Integer, servprom As DoubleRange(“I4:P1350”).ClearContentsRange(“C2:C3,F2:F3”).ClearContentsRange(“D6,D11,D15:D24”).ClearContentsRange(“A27:F205”).ClearContentsn = InputBox(“Digite el número de Clientes:”): Cells(2, 3).Value = nServ = InputBox(“Digite el número de servidores:”): Cells(3, 3) = Servpos = 27trll = InputBox(“Digite el número de Tratamiento de la tasa de llegada:”)Cells(7, 4) = trlltrs = InputBox(“Digite el número de Tratamiento de la tasa de servicio:”)Cells(12, 4) = trsc = InputBox(“Digite el número de Réplicas:”): Cells(2, 6) = cm = 0: l = 0Fila = 0mult = (trll) * (c)For t = 1 To trsMsgBox “A CONTINUACION DIGITAR TRATAMIENTO DE LA TASA SERVICIO NUMERO” + Str(t), _vbOKOnly, “TRATAMIENTO DE LA TASA DE SERVICIO”

Page 317: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

315

Cole

cción

1

tasaserv = InputBox(“Introduzca la TASA DE SERVICIO para el tratamiento “ & t)Cells(11, 4).Value = tasaservFor u = 1 To multCells(pos + u - 1, 2).Value = tNext uFor y = 1 To trllMsgBox “A CONTINUACION DIGITAR TRATAMIENTO DE LA TASA LLEGADA NUMERO” + Str(y), _vbOKOnly, “TRATAMIENTO DE LA TASA DE LLEGADA”Cells(pos + Fila, 1).Value = yFor z = 1 To c Cells(pos + z - 1, 5).Value = zNext ztasalleg = InputBox(“Introduzca la TASA DE LLEGADA para el tratamiento “ & y)Cells(6, 4).Value = tasallegFor x = 1 To cRange(“I4:P” & (n + 3)).ClearContentsminVal = 10000ultVal = 10000semilla = 12000medialleg = (1 / tasalleg): mediaserv = (1 / tasaserv) For i = 1 To Serv Cells(i + 3, 9).Value = i R = Rnd TLLeg(i) = (-1) * (medialleg) * (Application.Ln(1 - R)) ‘Tiempo entre llegadas Cells(i + 3, 10).Value = TLLeg(i) R2 = Rnd Tserv(i) = (-1) * (mediaserv) * (Application.Ln(1 - R2)) ‘Tiempo de servicio Cells(i + 3, 13).Value = Tserv(i) If i = 1 Then Tmlleg(i) = TLLeg(1) Cells(4, 11).Value = Tmlleg(i) inicio(i) = Tmlleg(i) Cells(4, 12).Value = Tmlleg(i) Else Tmlleg(i) = Tmlleg(i - 1) + TLLeg(i) Cells(i + 3, 11).Value = Tmlleg(i) inicio(i) = Tmlleg(i) Cells(i + 3, 12).Value = inicio(i) End If

Page 318: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

316

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

Tdesp(i) = inicio(i) + Tserv(i) ‘Tiempo de despacho Cells(i + 3, 14).Value = Round(Tdesp(i), 2) Wq(i) = 0 Cells(i + 3, 15).Value = Round(Wq(i), 2) W(i) = Tdesp(i) - Tmlleg(i) Cells(i + 3, 16).Value = Round(W(i), 2) If ultVal < Tdesp(i) Then ultVal = ultVal Else ultVal = Tdesp(i) End If Next ij = Serv + 1Cells(j + 3, 9).Value = jR = RndTLLeg(j) = (-1) * (medialleg) * (Application.Ln(1 - R))Cells(j + 3, 10).Value = TLLeg(j)R2 = RndTserv(j) = (-1) * (mediaserv) * (Application.Ln(1 - R2))Cells(j + 3, 13).Value = Tserv(j)Tmlleg(j) = Cells(j + 2, 11).Value + Cells(j + 2, 10).ValueCells(j + 3, 11).Value = Tmlleg(j)inicio(j) = Application.max(Tmlleg(j), ultVal): Cells(j + 3, 12).Value = inicio(j)Tdesp(j) = inicio(j) + Tserv(j)Cells(j + 3, 14).Value = Round(Tdesp(j), 2): Tdesp(j) = Cells(i + 3, 14).ValueTmlleg(j) = Cells(i + 3, 11).Value: Tserv(j) = Cells(i + 3, 13).ValueWq(j) = Tdesp(j) - Tmlleg(j) - Tserv(j)Cells(j + 3, 15).Value = Round(Wq(j), 2)W(j) = Tdesp(j) - Tmlleg(j)Cells(j + 3, 16).Value = Round(W(j), 2)For i = Serv + 2 To n Cells(i + 3, 9).Value = i R = Rnd TLLeg(i) = (-1) * (medialleg) * (Application.Ln(1 - R)) Cells(i + 3, 10).Value = TLLeg(i) R2 = Rnd Tserv(i) = (-1) * (mediaserv) * (Application.Ln(1 - R2)) Cells(i + 3, 13).Value = Tserv(i) Tmlleg(i) = Cells(i + 2, 11).Value + Cells(i + 2, 10).Value Cells(i + 3, 11).Value = Tmlleg(i)

Page 319: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

317

Cole

cción

1

ultVal = inicio(i - 1) minVal = 10000 For j = 1 To i - Serv - 1 If Tdesp(j) > ultVal Then If Tdesp(j) < minVal Then minVal = Tdesp(j) Else minVal = minVal End If End If Next j If minVal = 10000 Then For j = i - Serv To i - 1 If Tdesp(j) < minVal Then minVal = Tdesp(j) Else minVal = minVal End If Next j End If If minVal > Tmlleg(i) Then inicio(i) = minVal Else inicio(i) = Tmlleg(i) End If Cells(i + 3, 12).Value = inicio(i) Tdesp(i) = inicio(i) + Tserv(i) Cells(i + 3, 14).Value = Round(Tdesp(i), 2) W(i) = Tdesp(i) - Tmlleg(i): Cells(i + 3, 16).Value = Round(W(i), 2) Wq(i) = W(i) - Tserv(i): Cells(i + 3, 15).Value = Round(Wq(i), 2)Next i Wprom = Application.Average(Range(“P4:P” & (n + 3))) Cells(21, 4).Value = Round(Wprom, 2) Wqprom = Application.Average(Range(“O5:O” & (n + 3))) Cells(20, 4).Value = Round(Wqprom, 2) maxdesp = ((Application.max(Range(“N4:N” & (n + 3)))) - Cells(4, 11).Value) l = (Application.Sum(Range(“P4:P” & (n + 3)))) / maxdesp Cells(19, 4).Value = Round(l, 0) Lq = (Application.Sum(Range(“O4:O” & (n + 3)))) / maxdesp Cells(18, 4).Value = Round(Lq, 0)

Page 320: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

318

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

servprom = l - Lq: Cells(15, 4).Value = servprom u = (servprom / Serv): Cells(17, 4).Value = u Range("D17").Select Selection.NumberFormat = "0.00%" NumPromDesocp = Serv - servpromIf (NumPromDesocp < 0) ThenCells(16, 4).Value = 0ElseCells(16, 4).Value = NumPromDesocpEnd IfSumaTserv = Application.Sum(Range("M4:M" & (n + 3))): Cells(22, 4).Value = SumaTservSumaWq = Application.Sum(Range("O4:O" & (n + 3))): Cells(23, 4).Value = SumaWqSumaW = Application.Sum(Range("P4:P" & (n + 3))): Cells(24, 4).Value = SumaTservMsgBox "REPLICA NUMERO" + Str(x), vbOKOnly, "REPLICA" Cells(pos, 3).Value = Cells(6, 4).Value For u = 1 To mult Cells(pos, 4).Value = Cells(11, 4).Value Next u Cells(pos, 6).Value = Cells(15, 4).Value pos = pos + 1Next xNext yNext tFila = Fila + cEnd Sub

Procedimiento 8.8. macro para realizar el análisis bifactorial del procedimiento 8.7

Sub Bifactorial()Dim alfa, nivel, FceroA, FceroB, FceroI, FalfaA, FalfaB, FalfaI As DoubleDim n, a, b, z As Integer, yi(1 To 1000), y2i(1 To 1000), totyi, sumcuad As DoubleDim SST, SSE, SSA, SSB, SSI, sumcuad2 As DoubleDim i, j As ByteRange(“R2:S15”).ClearContentsRange(“Q1”).Select Selection.Copy Range(“R1:BB100”).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False

Page 321: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

319

Cole

cción

1

Application.CutCopyMode = False Selection.ClearContentsRange(“Q1:AZ200”).SelectWith Selection .WrapText = True .Font.Name = “Arial” .Font.Size = 12 .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End WithRange(“R2”).Select: ActiveCell.FormulaR1C1 = “Número de tratamientos del primer factor”a = Cells(7, 4).Value: Cells(2, 19).Value = aRange(“R3”).Select: ActiveCell.FormulaR1C1 = “Número de tratamientos del segundo factor”Columns(“R:R”).EntireColumn.AutoFitb = Cells(12, 4).Value: Cells(3, 19) = bRange(“R4”).Select: ActiveCell.FormulaR1C1 = “Número de Réplicas”n = Cells(2, 6).Value: Cells(4, 19) = nl = Int(n / 2): m = n - lRange(Cells(1, 21), Cells(1, b * (m + 1) + 20)).Select With Selection .Interior.Color = 43 .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End WithSelection.MergeActiveCell.FormulaR1C1 = “Niveles del segundo factor”Range(“T2”).Select: ActiveCell.FormulaR1C1 = “Tratamientos del primer factor”Range(Cells(2, 20), Cells(2, b * (m + 1) + 21)).Select With Selection .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium End Withz = 1For x = 21 To b * (m + 1) + 21 Step m + 1Range(Cells(2, x), Cells(2, x + 1)).SelectWith Selection .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium

Page 322: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

320

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

.Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd With Cells(2, x).Value = z: Cells(2, x + 2) = “Total” z = z + 1 Next x Cells(2, b * (m + 1) + 21) = “Gran total” Cells(2, b * (m + 1) + 23) = “”z = 1: Fila = 0: y = 0: Renglon = 0Range(“T2”).SelectFor i = 1 To a p = 0: suma2 = 0 Fila = i + 2 + y: Cells(Fila, 20).Value = z W = m: u = 0 For j = 1 To b cont = 2 * j + 1 mensaje = MsgBox(“Se escribe los valores del tratamiento “ & i & “ del primer factor” _ & “ y el tratamiento “ & j & “ del segundo factor”) Sum = 0: sum1 = 0: suma = 0 For x = 1 To n If (x + u <= W) Then Cells(Fila, 17 + j + W + x).Value = Cells(26 + x + Renglon, 6).Value Sum = Sum + Cells(Fila, 17 + j + W + x).Value Else Cells(Fila + 1, 17 + j + x + W - 2).Value = Cells(26 + x + Renglon, 6).Value sum1 = sum1 + Cells(Fila + 1, 17 + j + x + W - 2).Value End If suma = Sum + sum1 Next x Renglon = Renglon + n yi(j) = suma: Cells(Fila, 17 + l + 1 + cont + p).Value = yi(j) p = p + 1: W = W + 2 u = u + 2: suma2 = suma2 + yi(j) Next j y2i(i) = suma2 Cells(Fila, b * (m + 1) + 21).Value = y2i(i) y = y + 1: z = z + 1: suma3 = 0For x = 1 To asuma3 = suma3 + y2i(x)Next x

Page 323: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

321

Cole

cción

1

Next itotyi = suma3Cells(2 * a + 3, b * (m + 1) + 21).Value = totyiRange(Cells(2 * a + 2, 20), Cells(2 * a + 2, b * (m + 1) + 21)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMediumRange(Cells(2 * a + 3, 20), Cells(2 * a + 3, b * (m + 1) + 21)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMediumCells(2 * a + 4, 20) = “Fuente de Variación”Cells(2 * a + 5, 20) = “Tratamiento del primer factor”Cells(2 * a + 6, 20) = “Tratamiento del segundo factor”Rows(2 * a + 6).RowHeight = 45Cells(2 * a + 7, 20) = “Interacción”Cells(2 * a + 8, 20) = “Error”Cells(2 * a + 9, 20) = “Total”Cells(2 * a + 4, 21) = “Suma de Cuadrados”Cells(2 * a + 4, 22) = “grados de libertad”Cells(2 * a + 4, 23) = “Media de Cuadrados”Cells(2 * a + 4, 24) = “Fo”Range(Cells(2 * a + 4, 20), Cells(2 * a + 4, 24)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMedium With Selection .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Interior.ColorIndex = 6 End WithRange(Cells(2 * a + 8, 20), Cells(2 * a + 8, 24)).SelectSelection.Borders(xlEdgeBottom).Weight = xlMediumColumns(“T:T”).ColumnWidth = 15sum2 = 0: sum3 = 0: k = a * b * nFor x = 21 To b * (m + 1) + 19 Step m + 1suma4 = CDbl(Application.Sum(Range(Cells(3, x), Cells(2 * a + 2, x + 1))))Cells(2 * a + 3, x).Value = suma4sumcuad = Application.SumSq(Range(Cells(3, x), Cells(2 * a + 2, x + 1)))sum2 = sum2 + sumcuad: sum3 = sum3 + (suma4) ^ 2NextSST = sum2 - ((totyi) ^ 2) / (k): Cells(2 * a + 9, 21).Value = SSTCells(2 * a + 9, 22).Value = a * b * n - 1SSB = ((sum3) / (a * n)) - ((totyi) ^ 2 / k): Cells(2 * a + 6, 21) = SSBCells(2 * a + 6, 22) = b - 1MSB = (SSB / (b - 1)): Cells(2 * a + 6, 23).Value = MSB

Page 324: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

322

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

sum4 = 0For i = 1 To asum4 = sum4 + (y2i(i)) ^ 2Next iSSA = ((sum4) / (b * n)) - ((totyi) ^ 2 / k)Cells(2 * a + 5, 21) = SSA: Cells(2 * a + 5, 22) = a - 1MSA = (SSA / (a - 1)): Cells(2 * a + 5, 23).Value = MSAsum5 = 0For x = 21 + m To b * (m + 1) + 20 Step m + 1sumcuad2 = Application.SumSq(Range(Cells(3, x), Cells(2 * a + 2, x)))sum5 = sum5 + sumcuad2NextSSI = ((sum5) / n) - ((totyi) ^ 2 / k) - SSA - SSB: Cells(2 * a + 7, 21) = SSICells(2 * a + 7, 22) = (a - 1) * (b - 1)MSI = (SSI) / ((a - 1) * (b - 1)): Cells(2 * a + 7, 23).Value = MSISSE = SST - SSA - SSB - SSI: Cells(2 * a + 8, 21) = SSECells(2 * a + 8, 22) = a * b * (n - 1)MSE = (SSE / (a * b * (n - 1))): Cells(2 * a + 8, 23).Value = MSEFceroA = (MSA / MSE): Cells(2 * a + 5, 24).Value = FceroAFceroB = (MSB / MSE): Cells(2 * a + 6, 24).Value = FceroBFceroI = (MSI / MSE): Cells(2 * a + 7, 24).Value = FceroIRange(“R5”).Select: ActiveCell.FormulaR1C1 = “Nivel de Significancia”nivel = CDbl(InputBox(“Introduzca el nivel de significación”)): alfa = 1 - nivel: Cells(5, 19) = alfaRange(“R6”).Select: ActiveCell.FormulaR1C1 = “Valor Fo del tratamiento del primer factor”Cells(6, 19).Value = FceroARange(“R7”).Select: ActiveCell.FormulaR1C1 = “Valor Fo del tratamiento del segundo factor”Cells(7, 19).Value = FceroBRange(“R8”).Select: ActiveCell.FormulaR1C1 = “Valor Fo del tratamiento de la interacción”Cells(8, 19).Value = FceroIRange(“R9”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del Tratamiento del primer factor”v1 = a - 1: Cells(9, 19).Value = v1Range(“R10”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del Tratamiento del segundo factor”v2 = b - 1: Cells(10, 19).Value = v2Columns(“R:R”).EntireColumn.AutoFitRange(“R11”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del Tratamiento de la interación”v3 = (a - 1) * (b - 1): Cells(11, 2).Value = v3Range(“R12”).Select: ActiveCell.FormulaR1C1 = “Grado de libertad del error”

Page 325: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

323

Cole

cción

1

v4 = a * b * (n - 1): Cells(12, 19).Value = v4Range(“R13”).Select: ActiveCell.FormulaR1C1 = “valor Crítico con interacion”FalfaI = Application.FInv(alfa / 2, v3, v4): Cells(13, 19).Value = FalfaIRange(“R14”).Select: ActiveCell.FormulaR1C1 = “valor Crítico con primer factor”FalfaA = Application.FInv(alfa / 2, v1, v4): Cells(14, 19).Value = FalfaARange(“R15”).Select: ActiveCell.FormulaR1C1 = “valor Crítico con segundo factor”FalfaB = Application.FInv(alfa / 2, v2, v4): Cells(15, 19).Value = FalfaBRange(Cells(2, 18), Cells(15, 19)).SelectWith Selection .Interior.ColorIndex = 20 .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMediumEnd WithRange(“T2”).SelectEnd SubSub probando()Dim alfa, nivel, FceroA, FceroB, FceroI, FalfaA, FalfaB, FalfaI As DoubleDim n, a, b, z As Integer, yi(1 To 1000), y2i(1 To 1000), totyi, sumcuad As DoubleDim SST, SSE, SSA, SSB, SSI, sumcuad2 As Double, suma4 As DoubleDim i, j As Bytea = 3b = 3n = 4k = a * b * nm = 2l = 2y2i(1) = 158.12y2i(2) = 158.91y2i(3) = 175.87totyi = Cells(9, 13).ValueCells(2 * a + 3, b * (m + 1) + 4).Value = totyiFor x = 4 To b * (m + 1) + 2 Step m + 1suma4 = CDbl(Application.Sum(Range(Cells(3, x), Cells(2 * a + 2, x + 1))))Cells(2 * a + 3, x).Value = suma4sumcuad = Application.SumSq(Range(Cells(3, x), Cells(2 * a + 2, x + 1)))sum2 = sum2 + sumcuadsum3 = sum3 + (suma4) ^ 2NextSST = sum2 - ((totyi) ^ 2) / (k)Cells(2 * a + 9, 4).Value = SSTCells(2 * a + 9, 5).Value = a * b * n - 1

Page 326: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

324

S I M U L A C I Ó N E M P R E S A R I A L C O N A P L I C A C I O N E S D E V I S U A L B A S I C

Cole

cción

1

SSB = ((sum3) / (a * n)) - ((totyi) ^ 2 / k)Cells(2 * a + 6, 4) = SSBCells(2 * a + 6, 5) = b - 1MSB = (SSB / (b - 1)): Cells(2 * a + 6, 6).Value = MSBsum4 = 0For i = 1 To asum4 = sum4 + (y2i(i)) ^ 2Next iSSA = ((sum4) / (b * n)) - ((totyi) ^ 2 / k)Cells(2 * a + 5, 4) = SSACells(2 * a + 5, 5) = a - 1MSA = (SSA / (a - 1)): Cells(2 * a + 5, 6).Value = MSAsum5 = 0For x = 4 + m To b * (m + 1) + 3 Step m + 1sumcuad2 = Application.SumSq(Range(Cells(3, x), Cells(2 * a + 2, x)))sum5 = sum5 + sumcuad2NextSSI = ((sum5) / n) - ((totyi) ^ 2 / k) - SSA - SSBCells(2 * a + 7, 4) = SSICells(2 * a + 7, 5) = (a - 1) * (b - 1)MSI = (SSI) / ((a - 1) * (b - 1)): Cells(2 * a + 7, 6).Value = MSISSE = SST - SSA - SSB - SSICells(2 * a + 8, 4) = SSECells(2 * a + 8, 5) = a * b * (n - 1)MSE = (SSE / (a * b * (n - 1))): Cells(2 * a + 8, 6).Value = MSEFceroA = MSA / MSECells(2 * a + 5, 7).Value = FceroAFceroB = MSB / MSECells(2 * a + 6, 7).Value = FceroBFceroI = MSI / MSECells(2 * a + 7, 7).Value = FceroIRange(“A5”).SelectActiveCell.FormulaR1C1 = “Nivel de Significancia”alfa = CDbl(InputBox(“Introduzca el nivel de significación”)): Cells(5, 2) = alfaRange(“A6”).SelectActiveCell.FormulaR1C1 = “Valor Fo del tratamiento del primer factor”Cells(6, 2).Value = FceroARange(“A7”).SelectActiveCell.FormulaR1C1 = “Valor Fo del tratamiento del segundo factor”Cells(7, 2).Value = FceroBRange(“A8”).SelectActiveCell.FormulaR1C1 = “Valor Fo del tratamiento de la interacción”Cells(8, 2).Value = FceroI

Page 327: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

vALIDACIÓN DE RESULTADOS y DISEñO DE EXPERIMENTOS DE S IMULACIÓN

325

Cole

cción

1

Range("A9").SelectActiveCell.FormulaR1C1 = "Grado de libertad del Tratamiento del primer factor"v1 = a - 1: Cells(9, 2).Value = v1Range("A10").SelectActiveCell.FormulaR1C1 = "Grado de libertad del Tratamiento del segundo factor"v2 = b - 1: Cells(10, 2).Value = v2Columns("A:A").EntireColumn.AutoFitRange("A11").SelectActiveCell.FormulaR1C1 = "Grado de libertad del Tratamiento de la interación"v3 = (a - 1) * (b - 1): Cells(11, 2).Value = v3Range("A12").SelectActiveCell.FormulaR1C1 = "Grado de libertad del error"v4 = a * b * (n - 1): Cells(12, 2).Value = v4Range("A13").SelectActiveCell.FormulaR1C1 = "valor Crítico con interacion"FalfaI = Application.FInv(alfa / 2, v3, v4): Cells(13, 2).Value = FalfaIRange("A14").SelectActiveCell.FormulaR1C1 = "valor Crítico con primer factor"FalfaA = Application.FInv(alfa / 2, v1, v4): Cells(14, 2).Value = FalfaARange("A15").SelectActiveCell.FormulaR1C1 = "valor Crítico con segundo factor"FalfaB = Application.FInv(alfa / 2, v2, v4): Cells(15, 2).Value = FalfaBRange("C2").SelectEnd Sub

Ejercicio

1. Simular una estación de gasolina en la que los tiempos entre llegadas de los auto-móviles al sistema están distribuido normalmente con media de 1,5 minutos y desviación estándar de 0,33 minutos y que el tiempo de servicio por automóvil está distribuido en forma exponencial.

Se decide probar cinco niveles (tratamientos) de la media del tiempo de servicio: 1.0, 1.5, 1.8, 2.0 y 2.5 minutos, se probará el valor de la longitud de la cola bajo 5 réplicas de simulación.

Page 328: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución

Editado por la Universidad Católica de Colombia en marzo de 2018, impreso en papel propalibros de 75 g, en tipografía Minion Pro, tamaño 10.5 pts.

Publicación digitalHipertexto Ltda.

Impreso por:Xpress Estudio Gráfico y Digital S.A

Sapientia aedificavit sibi domum

Bogotá, D. C., Colombia

Page 329: Simulación empresarial · 2018. 10. 23. · Macro para realizar prueba U de Mann-Whitney ..... 290 Procedimiento 8.5. Macro para realizar prueba Chi-cuadrado a una distribución