You are on page 1of 57

MANUAL DE PRÁCTICAS

SIMULACIÓN
SCD-1022

INGENIERÍA EN SISTEMAS COMPUTACIONALES


Índice
INTRODUCCIÓN-----------------------------------------------------------------------------------------------------------------2

PRÁCTICA 1
Modelación de un sistema------------------------------------------------------------------------------------------------------3

PRÁCTICA 2
Generador de números pseudoaleatorios----------------------------------------------------------------------------------8

PRÁCTICA 3
Pruebas de aleatoriedad a números pseudoaleatorios-----------------------------------------------------------------11

PRÁCTICA 4
Método de Montecarlo-----------------------------------------------------------------------------------------------------------18

PRÁCTICA 5
Generación de variables aleatorias continuas----------------------------------------------------------------------------23

PRÁCTICA 6
Pruebas estadísticas a variables aleatorias-------------------------------------------------------------------------------28

PRÁCTICA 7
Aplicación de la simulación-----------------------------------------------------------------------------------------------------35

PRÁCTICA 8
Representación de variables en un sistema-------------------------------------------------------------------------------37

PRÁCTICA 9
Representación de la metodología de simulación-----------------------------------------------------------------------41

PRÁCTICA 10
Programación de un sistema que aplique variables aleatorias-------------------------------------------------------43

PRÁCTICA 11
Implementación de un proyecto final----------------------------------------------------------------------------------------47

LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR---------------------------------------------------------51

LISTA DE BIBLIOGRAFÍA REQUERIDA----------------------------------------------------------------------------------51

CONTROL DE CAMBIOS DEL MANUAL DE PRÁCTICAS 52


Simulación [SCD-1022]
Simulación [SCD-1022]

INTRODUCCIÓN

La asignatura de Simulación aporta al perfil del Ingeniero en Sistemas


Computacionales la habilidad de establecer modelos de simulación que le permitan
analizar el comportamiento de un sistema real, así como la capacidad de seleccionar y
aplicar herramientas matemáticas para el modelado, diseño y desarrollo de tecnología
computacional.

La importancia de esta materia para un Ingeniero en Sistemas Computacionales es la


de aplicar los conocimientos adquiridos para plantear modelos matemáticos a
sistemas reales complejos lineales para la toma de decisiones y la solución a estos,
empleando herramientas matemáticas y computacionales, dado que las tendencias
actuales exigen realizar la simulación en áreas como la ciencia, la industria y los
negocios.

Esta asignatura agrupa los conocimientos necesarios para modelar y simular sistemas
discretos y lineales, abarcando desde la generación de números aleatorios, pasando
por métodos para la generación de variables aleatorias, hasta la construcción de
modelos de simulación.

Simulación, es una asignatura que requiere la aplicación de métodos de probabilidad y


la habilidad de realizar pruebas estadísticas, así como resolver tópicos de
Investigación de Operaciones, incluyendo capacidades de programación en algún
lenguaje de alto nivel.

Es por esto que se requiere tener un manual de prácticas que permita al estudiante y
al profesor aplicar los conocimientos teóricos en las prácticas que aquí se presentan.
Son 11 prácticas que comprenden todo el temario de la materia de Simulación, las
prácticas se enfocan en el área de sistemas para que el alumno se familiarice más
con el campo de modelos matemáticos aplicados a cómputo.
Simulación [SCD-1022]

Práctica 1
MODELACIÓN DE UN SISTEMA
Observaciones: Esta práctica incluye a la Práctica # 1 del temario de
Simulación que dice “Modelar un sistema real y aplicar las etapas de un
proyecto de simulación”.

1.- OBJETIVO
Modelar un sistema que será entregable como proyecto final, iniciando con la etapa de Definición del
sistema hasta llegar a la etapa de Documentación.

2.- MARCO TEÓRICO


Etapas de la simulación
 Definición el sistema
 Formulación del modelo
 Colección de datos
 Implementación del modelo en la computadora
 Validación
 Experimentación
 Interpretación
 Documentación

 Definición del sistema:


Para tener una definición exacta del sistema que se desea simular, es necesario hacer primeramente
un análisis preliminar de éste, con el fin de determinar la interacción con otros sistemas, las
restricciones del sistema, las variables que interactúan dentro del sistema y sus interrelaciones, las
medidas de efectividad que se van a utilizar para definir y estudiar el sistema y los resultados que se
esperan obtener del estudio.

 Formulación del modelo:


Una vez definidos con exactitud los resultados que se esperan obtener del estudio, se define y
construye el modelo con el cual se obtendrán los resultados deseados. En la formulación del modelo es
necesario definir todas las variables que forman parte de él, sus relaciones lógicas y los diagramas de
flujo que describan en forma completa el modelo.
Simulación [SCD-1022]

 Colección de datos:
Es importante que se definan con claridad y exactitud los datos que el modelo va a requerir para
producir los resultados deseados.

 Implementación del modelo en la computadora:


Con el modelo definido, el siguiente paso es decidir si se utiliza algún lenguaje como el fortran, algol,
lisp, etc., o se utiliza algún paquete como Vensim, Stella y iThink, GPSS, simula, simscript, Rockwell
Arena etc., para procesarlo en la computadora y obtener los resultados deseados.

 Validación:
A través de esta etapa es posible detallar deficiencias en la formulación del modelo o en los datos
alimentados al modelo. Las formas más comunes de validar un modelo son:
o La opinión de expertos sobre los resultados de la simulación.
o La exactitud con que se predicen datos históricos.
o La exactitud en la predicción del futuro.
o La comprobación de falla del modelo de simulación al utilizar datos que hacen fallar al sistema
real.
o La aceptación y confianza en el modelo de la persona que hará uso de los resultados que
arroje el experimento de simulación.

 Verificación y Validación:
Se pueden producir errores en cualquiera de las fases del proceso de desarrollo de un programa:
o Validación: consiste en comprobar que tanto el algoritmo como el programa cumplen la
especificación del problema; responde a la pregunta: estamos resolviendo el problema
correcto?
o Verificación: se refiere a la comprobación de que son correctos y completos; responde a la
pregunta: ¿estamos resolviendo el problema de forma correcta?

Una parte importante de la verificación y la validación es la ejecución del programa con distintos
conjuntos de datos:
o Modo interactivo: el usuario introduce los valores de los datos durante la ejecución del
programa (desde el teclado), y se muestra la salida producida por el programa directamente al
usuario (normalmente en una pantalla).
o Procesamiento por lotes: el usuario debe preparar un archivo que contenga el programa, los
datos y quizá ciertas órdenes; la ejecución se lleva a cabo sin ninguna interacción con el
usuario.

 Manejo de errores:
Simulación [SCD-1022]

Los errores pueden detectarse en distintas fases del procesamiento del programa y provocar la
detención del proceso.
o Errores sintácticos o errores en tiempo de compilación.
o Puntuación incorrecta o palabras claves escritas incorrectamente; se detectan en
tiempo de compilación y normalmente hacen imposible completar la compilación y
ejecutar el programa.
o Errores en tiempo de ejecución.
o Dividir por cero en una expresión aritmética; pueden no ser detectados hasta que ha
comenzado la ejecución del programa.
o Errores lógicos.
o Surgen en el diseño del algoritmo o en la codificación del programa que implemente el
algoritmo; no ocurre ningún error durante la compilación o la ejecución del programa,
pero la salida producida no es correcta.

 Experimentación:
La experimentación con el modelo se realiza después que éste haya sido validado. La experimentación
consiste en generar los datos deseados y en realizar un análisis de sensibilidad de los índices
requeridos.

 El proceso de prueba:
Consiste en ejecutar un programa varias veces con datos de entrada distintos para los que se conoce
los resultados correctos. Este proceso es importante para evaluar la corrección de un programa. Los
datos de prueba deben seleccionarse cuidadosamente, de forma que se pruebe cada parte del
programa.

 Interpretación:
En esta etapa del estudio, se interpretan los resultados que arroja la simulación y con base a esto se
toma una decisión. Es obvio que los resultados que se obtienen de un estudio de simulación ayuda a
soportar decisiones del tipo semi-estructurado.

 Documentación:
Dos tipos de documentación son requeridos para hacer un mejor uso del modelo de simulación.
o Documentación del tipo técnico
o Manual del usuario, con el cual se facilita la interacción y el uso del modelo desarrollado.
Simulación [SCD-1022]

Tabla 1: Etapas de un proyecto de simulación.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Procesador de textos

4.- COMPETENCIAS ESPECÍFICAS


Identificar las etapas de un proyecto de simulación

Dependiendo del tamaño del grupo, se harán equipos de a lo más 6 integrantes, a cada equipo se le
asignará un proyecto al inicio del curso, el cuál desarrollará durante el curso de simulación, para esta
práctica, los equipos deberán ir realizando las etapas que correspondan a su proyecto final, para que
cuando termine el curso, se concluya con todas las etapas de simulación y puedan entregar un
proyecto de calidad. Los proyectos los definirá cada profesor que imparta la asignatura.

5. RESULTADOS
Se espera que al finalizar esta competencia, los alumnos tengan bien identificadas las distintas etapas de un
proyecto de simulación y puedan aplicar las etapas pertinentes a su proyecto final hasta este momento del
curso.
Simulación [SCD-1022]

6. CONCLUSIONES
Esta práctica es de gran importancia para el alumno ya que es el inicio de su proyecto final y sin estas
herramientas le sería muy difícil terminar favorablemente su proyecto de materia.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 2
GENERADOR DE NÚMEROS PSEUDOALEATORIOS
Observaciones: Esta práctica incluye a la Práctica # 2 del temario de
Simulación que dice “Implementar un generador de números
pseudoaleatorios que dé un periodo completo y que genere más de 4000
números”.

1.- OBJETIVO
Implementar un programa que permita generar números pseudoaleatorios con un ciclo de vida de al
menos 210 valores distintos.

2.- MARCO TEÓRICO


 Los números pseudoaleatorios:

Para poder realizar una simulación que incluya variabilidad dentro de sus eventos, es preciso generar
una serie de números que sean aleatorios por si mismos, y que su aleatoriedad se extrapole al modelo
de simulación que se esta construyendo.

 Generación de números pseudoaleatorios

Para realizar una simulación, se requiere de números aleatorios en el intervalo (0,1), a los cuales se
hará referencia como ri, i.e., una secuencia r i= r1, r2, r3, … , rn que contiene n números, todos ellos
diferentes; n recibe el nombre de periodo o ciclo de vida del generador que creó la secuencia ri.

Para simular el comportamiento de una o mas variables aleatorias es necesario contar con un conjunto
suficientemente grande de ri que permita, por ejemplo, que la secuencia tenga al menos un periodo de
vida de n = 231 = 2 147 483 648.

Para algunos autores el ciclo de vida de 231 es relativamente pequeño.

Ejemplo: Suponga que queremos simular el tiempo de atención a clientes en un banco que tiene 5
cajeros en paralelo, cada uno de los cuales atiende aproximadamente a 50 clientes diarios. Para
simular el tiempo de atención se requiere un generador de variables aleatorias en función de ri, por
ejemplo, Ti = 5 + 2ri, expresando minutos para toda i = 1 hasta n. Para simular el tiempo de atención de
manera aislada, i.e., sin considerar el tiempo transcurrido desde la llegada de éstos, serán necesarios 5
* 50 = 250 números r i para simular un día. Si deseáramos simular 5 días se necesitarían 250 * 5 = 1250
ri. ahora bien si consideramos el tiempo de llegada de los clientes, necesitaríamos de 250 r i para simular
el tiempo transcurrido desde la llegada al banco de los 250 clientes al día y 250 * 5 = 1250 números r i
para simular el correspondiente al total de clientes atendidos durante 5 días

Por lo tanto se requieren 2500 números pseudoaleatorios r i para simular la operación del banco en los 5
días.
Simulación [SCD-1022]

 Algoritmos de Generación de NP-A

o Cuadrados Medios
o Productos Medios
o Multiplicador Constante
o Lineal
o Congruencial Multiplicativo
o Congruencial Aditivo
o Congruencial No Lineal
o Blum, Blum y Shub

 Cuadrados Medios

Requiere un número entero detonador (semilla) con D dígitos, el cual es elevado al cuadrado para
seleccionar del resultado los D dígitos del centro; el primer número ri se determina simplemente
anteponiendo el “0.” a esos dígitos. Para obtener el segundo ri se sigue el mismo procedimiento, solo
que ahora se elevan al cuadrado los D dígitos del centro que se seleccionaron para obtener el primer ri.
Éste método se repite hasta obtener n números ri.

Algoritmo:

1. Seleccionar una semilla (X0) con D dígitos (D > 3).


2. Sea X0 = resultado de elevar X0 al cuadrado; sea X1 los D dígitos del centro, y sea r i = 0.D dígitos
del centro
3. Sea yi = resultado de elevar Xi al cuadrado; sea Xi+1 = D dígitos del centro, y sea r i= 0.D dígitos del
centro, para toda i = 1,2,3,… n.
4. Repetir el paso 3 hasta obtener los n números.
 Nota: si no es posible obtener los D dígitos del centro del número y i, agregue ceros a la izquierda
del número yi.

Ejemplo:

Generar los primeros 15 números ri a partir de la semilla X0 =5894. Observemos que D= 4 dígitos

r0 = 5894*5894 = 34739236 à 7392 à 0. 7392


r1 = 7392*7392 = 54641664 à 6416 à 0. 6416
r2 = 6416*6416 = 41165056 à 1650 à 0. 1650
r3 = 1650*1650 = 02722500 à 7225 à 0. 7225
r4 = 7225*7225 = 52200625 à 2006 à 0. 2006

 Congruencial Aditivo

Este algoritmo requiere una secuencia previa de n números enteros x1, x2, x3,…, xn para generar una
nueva secuencia de números enteros que empieza en xn+1, xn+2, xn+3,…. Su ecuación recursiva es:

Xi = (Xi-1+Xi-n)mod(m) i = n+1, n+2,…N

Los números ri pueden ser generados mediante:

ri = xi/(m-1)
Simulación [SCD-1022]

Ejemplo:

Generar 7 números pseudoaleatorios entre 0 y 1 a partir de la siguiente secuencia de números enteros:


65, 89, 98, 03, 69; m = 100.

Sean x1=65, x2=89, x3=98, x4=03, x5=69. Para generar r 1, r2, r3, r4, r5, r6 y r7, antes es necesario generar x6,
x7, x8, x9, x10, x11, x12.

x6 = (x5+x1) mod 100 = (69+65) mod 100 = 34 ri= 34/99 = 0.3434


x7 = (x6+x2) mod 100 = (34+89) mod 100 = 23 ri= 23/99 = 0.2323
x8 = (x7+x3) mod 100 = (23+98) mod 100 = 21 ri= 21/99 = 0.2121
x9 = (x8+x4) mod 100 = (21+03) mod 100 = 24 ri= 24/99 = 0.2424
x10 = (x9+x5) mod 100 = (24+69) mod 100 = 93 ri= 93/99 = 0.9393
x11 = (x10+x6) mod 100 = (93+34) mod 100 = 27 ri= 27/99 = 0.2727
x12 = (x11+x7) mod 100 = (27+23) mod 100 = 50 ri= 50/99 = 0.5050

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5

4.- COMPETENCIAS ESPECÍFICAS


Dar a los alumnos los diferentes algoritmos congruenciales y no congruenciales, para generar números
pseudoaleatorios y solicitar que conviertan su algoritmo a un programa de cómputo para generar n
números pseudoaleatorios, posteriormente, comparar si es mejor un algoritmo congruencial o uno que
no lo es. Posteriormente se solicitará que generen un ciclo de vida de al menos 15, 1000, 3000, 5000 y
25000 valores distintos.

5. RESULTADOS
Al finalizar los programas, el alumno deberá ser capaz de analizar qué tipo de algoritmo es mejor ante
situaciones que requieren generar un cierto periodo de vida de números pseudoaleatorios.

6. CONCLUSIONES
Ésta práctica es la base para generar variables aleatorias discretas y continuas, por lo que es muy importante
que aprenda a generar sus NPA con los algoritmos vistos en clases para que en la siguiente unidad los pueda
utilizar en sus programas.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]
Simulación [SCD-1022]

Práctica 3
PRUEBAS DE ALEATORIEDAD A NÚMEROS
PSEUDOALEATORIOS
Observaciones: Esta práctica incluye a la Práctica # 3 del temario de
Simulación que dice “Aplicar las pruebas de aleatoriedad, uniformidad e
independencia a las series obtenidas en la práctica anterior, utilizando un
lenguaje de programación o una aplicación”.

1.- OBJETIVO
Aplicar diferentes pruebas de aleatoriedad que cumplan las propiedades deseadas de uniformidad e
independencia a los números pseudoaleatorios para poder aceptar o rechazar el número dado.

2.- MARCO TEÓRICO


Estrictamente hablando, obtener sucesiones de números realmente aleatorios implica la utilización de
algún fenómeno físico de naturaleza estocástica, como el arrojar una moneda al aire, el ruido de un
circuito electrónico, el decaimiento de un material radioactivo, el conteo de fotones mediante detectores
centelladores y, más recientemente, se han propuesto métodos menos tradicionales basados en
fenómenos tales como el flujo turbulento de aire formado por el movimiento de los discos duros en una
computadora y otro tipo de hardware, péndulos caóticos e incluso del tipo biométricos, pero debido a
las inherentes dificultades que ofrece este enfoque, entre las que podemos mencionar los errores
sistemáticos introducidos por el arreglo experimental, la nula reproducibilidad de la sucesión obtenida,
así como la baja frecuencia en la generación de números aleatorios, han hecho necesaria la búsqueda
de otras formas más eficientes para obtener estos números.

Desde hace ya algunos años, se utilizan computadoras digitales para implementar programas a los que
llamamos generadores de números pseudoaleatorios o simplemente generadores, los cuales mediante
reglas deterministas y operaciones aritméticas muchas veces sencillas, producen sucesiones de
números que se asemejan en un sentido limitado, a las obtenidas mediante un experimento aleatorio y
que se denominan sucesiones de números pseudoaleatorios.

Se conocen muchas implementaciones diferentes para generar números pseudoaleatorios que hacen
uso de una gran variedad de técnicas y algoritmos que comprenden desde el uso de algoritmos de
congruencias lineales hasta otros asociados con autómatas celulares, algoritmos de criptografía de
curvas elípticas, etcétera.

La actual utilización de series muy grandes de números pseudoaleatorios en muchas aplicaciones, así
como algunos episodios de resultados dudosos, obtenidos debido a la baja calidad de los generadores
utilizados, ha fortalecido la necesidad de contar con mejores y cada vez más eficientes pruebas de la
calidad. El campo de investigación de las pruebas de calidad de generadores de números
pseudoaleatorios (y por supuesto, también de su implementación), es tan activo que prácticamente no
hay mes en el que no se reporten en la literatura científica nuevas pruebas de calidad que utilizan una
gran variedad de criterios y técnicas (teoría de la información, técnicas estadísticas, power spectrum,
gambling tests, sistemas físicos, entropía, etc.).
Simulación [SCD-1022]

Las pruebas de calidad de los generadores de números pseudoaleatorios se pueden dividir en:

o Pruebas teóricas. Se realizan estudiando los algoritmos generadores de números


pseudoaleatorios mediante el uso de herramientas como la teoría de números. Estos tipos de
pruebas son útiles por su generalidad y están basadas en el estudio de algunas propiedades
tales como la longitud del periodo de la secuencia y la uniformidad del algoritmo.

o Pruebas empíricas. Estas pruebas se concentran en las sucesiones de números


pseudoaleatorios y sus propiedades. Son usadas para encontrar correlaciones locales no
triviales presentes en las sucesiones de números pseudoaleatorios y mostrar aspectos
desapercibidos en las pruebas teóricas.

 Pruebas de aleatoriedad
Para comprobar si los números aleatorios obtenidos cumplen las propiedades deseadas de uniformidad
e independencia se deben realizar una serie de pruebas.

o Prueba de frecuencia.
o Pruebas de series.
o Prueba de autocorrelación.
o Prueba de saltos.
o Prueba de poker.

Cuando se prueba la uniformidad las hipótesis son:

o H0: Ri ~ U[0,1]
o H1: Ri ≠ U[0,1]

La hipótesis nula supone que la secuencia de números obtenidos está distribuida uniformemente en el
intervalo [0,1].

 Prueba de frecuencia (Kolmogorov)

La prueba básica a la que se debiera someter cualquier nuevo generador de números aleatorios es la
de uniformidad. Existen dos métodos para realizar esta prueba:

o Prueba de Kolmogorv-Smirnov.
o Prueba de chi-cuadrado.

Kolmogorov-Smirnov compara la función de distribución acumulada F(x) de la distribución uniforme con


la empírica, SN(x), de la muestra de N observaciones. Por definición: F(x) = x para 0 ≤ x ≤ 1

Para una muestra de R1, R2, ...,RN la función de distribución acumulada, SN(x), está definida por:
SN(x) = (número de R1, R2, ...,RN que son ≤ 1)/N

D = max |F(x) - SN(x)|

La forma de obtenerlo es de la siguiente manera:


o Se ordenan los datos de menor a mayor R(1) ≤ R(2) ≤ ... ≤ R(N)
o Se calcula: D+ = max 1 ≤ i ≤ N {i/N - R(N)}
o D- = max 1 ≤ i ≤ N {R(N) - (i-1)/N }
Simulación [SCD-1022]

o Se obtiene D = max(D+,D-)
o Se compara con el valor de la tabla para un α dado.

Tabla 2: Valores cíticos para la prueba de Kolmogorov-Smirnov

 Ejemplo de prueba Kolmogorov-Smirnov

Sean 5 números 0,44, 0,81, 0,14, 0,05, 0,93 generados por algún método.

D+ = max 1 ≤ i ≤ N {i/N - R(N)} = 0,26


D- = max 1 ≤ i ≤ N {R(N) - (i-1)/N}= 0,21
Por tanto D = 0,26. Para α = 0,05 y N = 5 el valor de la tabla es 0,565 por tanto no se puede rechazar la
hipótesis nula.

 Prueba de frecuencia (Chi Cuadrada)


Simulación [SCD-1022]

Se necesita un conjunto mínimo de 50 datos generados que se organizarán en un histograma que


cumpla lo siguiente:

o La cantidad de aleatorios esperados en cada una de las clases del histograma será de cinco
datos como mínimo.

o Para aplicar esta prueba se necesita un conjunto de (N) aleatorios que sean calculados con el
generador que se desea probar, y ejecutar los siguientes pasos: (N >= 50)

1.- Organizar los datos en un histograma (con n clases).

2.- Calcular el número de datos esperados en cada clase del histograma suponiendo aleatorios
idealmente uniformes.

3.- Calcular el estadístico Chi-cero cuadrado con las diferencias entre las cantidades de aleatorios
esperados (Ei) y los observados realmente (Oi) en cada una de las (n) clases del histograma, según la
muestra que se inspecciona.

4.- Se establece el nivel máximo de variación del estadístico que se calcula (ji-cero) cuando los grados
de libertad son iguales al número de clases menos uno; y la significación de la prueba es alfa. Estos
valores se encuentran tabulados para la prueba de la Chi-cuadrada.

5.- Se compara el estadístico calculado con el máximo permitido que leyó de tablas; si es menor
entonces se concluye que no hay evidencia estadística para afirmar que los aleatorios de la muestra no
tienen una distribución uniforme. Si es mayor no se acepta la hipótesis de uniformidad en los aleatorios
generados.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Hoja de cálculo
 Procesador de textos

4.- COMPETENCIAS ESPECÍFICAS


Analizar si un grupo de números pseudoaleatorios dado cumple las propiedades deseadas de
uniformidad e independencia para poder aceptar o rechazar el número.

Se tiene un generador de números en el intervalo (0,1) y se desea probar la uniformidad en los


números que genera, con un nivel de confianza del 95%. Para ello se generan 100 números con él y se
siguen los pasos de la prueba de Chi-cuadrada.
Simulación [SCD-1022]

Paso 1.- Se organizan los datos en un histograma, supongamos con 10 clases de igual longitud,
encuentre la cantidad de aleatorios que cae en cada clase. En este caso los resultados se muestran a
continuación:

CLASE INTERVALO FRECUENCIA


1 (0-0.1] 9
2 (0.1-0.2] 11
3 (0.2-0.3] 12
4 (0.3-0.4] 10
5 (0.4-0.5] 8
6 (0.5-0.6] 9
7 (0.6-0.7] 10
8 (0.7-0.8] 11
9 (0.8-0.9] 10
10 (0.9-1.0] 10

Paso 2.- Calcular los datos esperados en cada clase si el generador fuese completamente uniforme.
En ese caso en cada clase se esperan la misma cantidad de números es decir 100/10=10; en general
se esperan Ei datos en cada clase donde

Ei=#total de datos/#de clases (para el caso de uniformidad).

Con esto se verifica que se cumple con las condiciones de Chi-cuadrada que son: N > = 50 y Ei > = 5.
Por tanto se puede aplicar la prueba.

Paso 3.- Calcular el estadístico chi-cero cuadrada con las diferencias entre la cantidad esperada y la
observada en cada una de las clases.

CLASE Intervalo Frecuencia Esperado (Oi-Ei)*(Oi-


observada Ei)/Ei
1 (0-0.1] 9 10 0.1
2 (0.1-0.2] 11 10 0.1
3 (0.2-0.3] 12 10 0.4
4 (0.3-0.4] 10 10 0.0
5 (0.4-0.5] 8 10 0.4
6 (0.5-0.6] 9 10 0.1
7 (0.6-0.7] 10 10 0.0
8 (0.7-0.8] 11 10 0.1
9 (0.8-0.9] 10 10 0.0
10 (0.9-1.0] 10 10 0.0
Total 1.2

Tabla 3: de Chi-cuadrada
Simulación [SCD-1022]

Por tanto el estadístico que se busca es: 1.2

Paso 4.- El valor máximo aceptable se lee de tablas para un alfa de 0.05 y grados de libertad 10-1=9;
cuyo valor es: 16.9 (tabla para Chi-cuadrada).

Paso 5.- Como 16.9 > 1.2 entonces no hay evidencia estadística para rechazar la hipótesis de
uniformidad en los números generados. Por tanto se acepta la uniformidad en ellos.

5. RESULTADOS
Tener una lista de números a los que se les ha aplicado las pruebas necesarias para aceptar o rechazar
los números generados.

6. CONCLUSIONES
Ésta práctica ayuda a que el estudiante proponga números que al menos se distribuyan uniformemente para
que la generación no se cargue en un pequeño intervalo.
Simulación [SCD-1022]

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 4
MÉTODO DE MONTECARLO
Observaciones: Esta práctica incluye a la Práctica # 4 del temario de
Simulación que dice “Aplicar el método de Montecarlo para la solución de una
integral utilizando números pseduoaleatorios de la práctica anterior”.

1.- OBJETIVO
Comprender el funcionamiento y posibles aplicaciones del método de Montecarlo en la simulación y
ejemplificar con los juegos que requieren el uso de números aleatorios, probabilidad y estadística.

2.- MARCO TEÓRICO


Los métodos de Monte Carlo abarcan una colección de técnicas que permiten obtener soluciones de
problemas matemáticos o físicos por medio de pruebas aleatorias repetidas. En la práctica, las pruebas
aleatorias se sustituyen por resultados de ciertos cálculos realizados con números aleatorios.

Bajo el nombre de Método Monte Carlo o Simulación Monte Carlo se agrupan una serie de
procedimientos que analizan distribuciones de variables aleatorias usando simulación de números
aleatorios.

El Método de Monte Carlo da solución a una gran variedad de problemas matemáticos haciendo
experimentos con muestreos estadísticos en una computadora. El método es aplicable a cualquier tipo
de problema, ya sea estocástico o determinístico.

Generalmente en estadística los modelos aleatorios se usan para simular fenómenos que poseen algún
componente aleatorio. Pero en el método Monte Carlo, por otro lado, el objeto de la investigación es el
objeto en sí mismo, un suceso aleatorio o pseudo-aleatorio se usa para estudiar el modelo.

A veces la aplicación del método Monte Carlo se usa para analizar problemas que no tienen un
componente aleatorio explícito; en estos casos un parámetro determinista del problema se expresa
como una distribución aleatoria y se simula dicha distribución. Un ejemplo sería el famoso problema de
las Agujas de Bufón.

La simulación de Monte Carlo también fue creada para resolver integrales que no se pueden resolver
por métodos analíticos, para solucionar estas integrales se usaron números aleatorios. Posteriormente
se utilizó para cualquier esquema que emplee números aleatorios, usando variables aleatorias con
distribuciones de probabilidad conocidas, el cual es usado para resolver ciertos problemas estocásticos
y determinísticos, donde el tiempo no juega un papel importante.

El algoritmo de Simulación Monte Carlo Crudo o Puro está fundamentado en la generación de números
aleatorios por el método de Transformación Inversa, el cual se basa en las distribuciones acumuladas
de frecuencias:

1. Determinar la/s V.A. y sus distribuciones acumuladas(F)


2. Generar un número aleatorio uniforme Î (0,1).
Simulación [SCD-1022]

3. Determinar el valor de la V.A. para el número aleatorio generado de acuerdo a las clases que
tengamos.
4. Calcular media, desviación estándar error y realizar el histograma.
5. Analizar resultados para distintos tamaños de muestra.

Iterar los pasos 2, 3 y 4 tantas veces como muestras necesitemos.

Otra opción para trabajar con Monte Carlo, cuando la variable aleatoria no es directamente el resultado
de la simulación o tenemos relaciones entre variables es la siguiente:

1. Diseñar el modelo lógico de decisión


2. Especificar distribuciones de probabilidad para las variables aleatorias relevantes.
3. Incluir posibles dependencias entre variables.
4. Muestrear valores de las variables aleatorias.
5. Calcular el resultado del modelo según los valores del muestreo (iteración) y registrar el
resultado
6. Repetir el proceso hasta tener una muestra estadísticamente representativa
7. Obtener la distribución de frecuencias del resultado de las iteraciones
8. Calcular media, desvío.
9. Analizar los resultados

Las principales características a tener en cuenta para la implementación o utilización del algoritmo son:

o El sistema debe ser descripto por 1 o más funciones de distribución de probabilidad (fdp)
o Generador de números aleatorios: como se generan los números aleatorios es importante para
evitar que se produzca correlación entre los valores muestrales.
o Establecer límites y reglas de muestreo para las fdp: conocemos que valores
o pueden adoptar las variables.
o Definir Scoring: Cuando un valor aleatorio tiene o no sentido para el modelo a simular.
o Estimación Error: Con que error trabajamos, cuanto error podemos aceptar para que una
corrida sea válida?
o Técnicas de reducción de varianza.
o Paralelización y vectorización: En aplicaciones con muchas variables se estudia trabajar con
varios procesadores paralelos para realizar la simulación.

 Ejemplo:

Tenemos la siguiente distribución de probabilidades para una demanda aleatoria y queremos ver qué
sucede con el promedio de la demanda en varias iteraciones:
Simulación [SCD-1022]

Utilizando la distribución acumulada (F(x) es la probabilidad que la variable aleatoria tome valores
menores o iguales a x) podemos determinar cuál es el valor obtenido de unidades cuando se genera un
número aleatorio a partir de una distribución continua uniforme. Este método de generación de variable
aleatoria se llama Transformación Inversa.

Generando los valores aleatorios vamos a ver como se obtiene el valor de la demanda para cada día,
interesándonos en este caso como es el orden de aparición de los valores. Se busca el número
aleatorio generado en la tabla de probabilidades acumuladas, una vez encontrado (si no es el valor
exacto, éste debe se menor que el de la fila seleccionada pero mayor que el de la fila anterior), de esa
fila tomada como solución se toma el valor de las unidades (Cuando trabajamos en Excel debemos
tomar el límite inferior del intervalo para busca en las
acumuladas, para poder emplear la función BUSCARV(),
para 42 sería 0, para 43 0,100001 y así sucesivamente).
Ejemplo: Supongamos que el número aleatorio generado
sea 0,52, ¿a qué valor de unidades corresponde? Nos
fijamos en la columna de frecuencias acumuladas, ese
valor exacto no aparece, el siguiente mayor es 0,70 y
corresponde a 48 unidades. Se puede apreciar mejor en el
gráfico, trazando una recta desde el eje de la frecuencia
hasta que intersecta con la línea de la función acumulada,
luego se baja a la coordenada de unidades y se obtiene el
valor correspondiente; en este caso 48. Cuando trabajamos con variables discretas la función
acumulada tiene un intervalo o salto para cada variable (para casos prácticos hay que definir los
intervalos y luego con una función de búsqueda hallar el valor). Para funciones continuas se puede
hallar la inversa de la función acumulada.

De esta forma logramos a partir de la distribución de densidad calcular los valores de


la variable aleatoria dada.
Simulación [SCD-1022]

En la siguiente tabla, vemos como a medida que aumenta el numero de simulaciones, el valor simulado
se acerca al valor original de la media y desviación estándar, además de la disminución del error típico.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Hoja de cálculo
 Procesador de textos
 Lenguaje de programación Java
 JDK 1.6 o superior
 IDE NetBeans 7.3, JGrasp o JCreator 4.5

4.- COMPETENCIAS ESPECÍFICAS


Poder comprender de forma clara el funcionamiento del método de Montecarlo y aplicarlo en algún
proyecto que se haya dejado en la materia. Por ejemplo, el juego de 7 y medio.

Si deseamos reproducir, mediante números aleatorios, la tirada sucesiva de una moneda, debemos
previamente asignarle un intervalo de números aleatorios a CARA y otro a CRUZ, de manera de poder
interpretar el resultado de la simulación. Tales intervalos se asignan en función de las probabilidades de
ocurrencia de cada cara de la moneda. Tenemos así:

CARA Probabilidad: 0,50 Números aleatorios: 0,000 al 0,499

CRUZ Probabilidad: 0,50 Números aleatorios: 0,500 al 0,999

Después, al generar un número aleatorio a partir de la función RAN de la calculadora, por ejemplo,
obtenemos el resultado simulado. Así, si obtenemos el número aleatorio 0,385, observamos que está
incluido en el intervalo asignado a CARA.

5. RESULTADOS
Que el alumno aplique ésta técnica en la unidad 5: Proyecto integrador.
Simulación [SCD-1022]

6. CONCLUSIONES
Ésta práctica le sirve al alumno a concluir de forma satisfactoria su proyecto integrador de materia, ya que es
muy importante aplicar el método de Montecarlo a los proyectos.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 5
GENERACIÓN DE VARIABLES ALEATORIAS CONTINUAS
Observaciones: Esta práctica incluye a la Práctica # 5 del temario de
Simulación que dice “Generar variables aleatorias continuas utilizando los
números pseudoaleatorios probados en la práctica 3, implementarlo en un
lenguaje de propósito general”.

1.- OBJETIVO
Crear un programa que permita simular a través de variables aleatorias discretas los t tiempos de
llegada de n clientes a un supermercado.

2.- MARCO TEÓRICO


Definición:
Una variable aleatoria es aquella que tiene un comportamiento probabilístico en la realidad. Por
ejemplo, el número de clientes que llega cada hora a un banco depende del momento del día, del día
de la semana y de otros factores; por lo general, la afluencia de clientes será mayor al medio día que
muy temprano; la demanda será mayor el viernes que el miércoles, habrá más clientes en un día de
pago que un día normal, etc.

Reglas:
1. La suma de las probabilidades asociadas a todos los valores posibles de la variable aleatoria es 1.
2. La probabilidad de que un posible valor de la variable x se presente siempre es mayor o igual a 0.
3. El valor esperado de la distribución de la variable aleatoria es la media de la misma, la cual a su
vez estima la verdadera media de la población.

Tipos de Variables Aleatorias:


Podemos diferenciar las VA de acuerdo con el tipo de valores aleatorios que representan, por ejemplo,
si hablamos del número de clientes que llegan a una tienda de auto servicio, encontramos valores
como: 0, 1, 2, 3, … n. es un comportamiento de distribuciones de probabilidd discretas. Por otro lado, si
habláramos del tiempo que tarda en ser atendida una persona, nuestros datos producidos podrían ser:
1.54 días, .35 horas ó 3.65 minutos. Este es un comportamiento similar al de las distribuciones de
probabilidad continuas.
Por lo tanto, tenemos dos tipos de variables aleatorias:
o Variables aleatorias discretas
o Variables aleatorias continuas
Simulación [SCD-1022]

 Variables aleatorias discretas


Éste tipo de variables deben cumplir con los siguientes parámetros:

P(X) = 0

∑ pi=1
i=0

P(a ≤ x ≤ b) =
b

∑ pi= p a+ …+ pb
i=a

Algunas distribuciones de probabilidad son la uniforme discreta, la de Bernoulli, la hipergeométrica, la


de Poisson y la Binomial.

Podemos asociar a éstas u otras distribuciones de probabilidad el comportamiento de una variable


aleatoria. Por ejemplo, si queremos analizar un muestreo de calidad consiste en decidir si la pieza es
buena o no, estamos realizando un experimento con dos posible resultados, la pieza es buena o es
mala. Éste tipo de comportamiento está asociado a una distribución de Bernoulli.

 Método de la transformada inversa:

Suponga que queremos generar el valor de una Variable Aleatoria Discreta X con función de masa de
probabilidad:

P(X = xj) = Pj; j = 0, 1,…

∑ p j=1
j

Para esto generamos un número aleatorio U; es decir, U está distribuido uniformemente en el intervalo
[0,1] y sea

X0 si U < P0
X1 si P0 ≤ U < P0 + P1
Simulación [SCD-1022]


Xj si
X=
j−1 j

∑ pi ≤U ≤ ∑ pi
i=1 i=1

Como P(a ≤ U ≤ b) = b – a para 0 < a < b < 1, tenemos que:


j−1 j
P ( X= X j ) =P ∑ pi ≤ U < ∑ pi
i =1 i=1

Y entonces, X tiene la distribución deseada. Podríamos escribir lo anterior en forma algorítmica como:

Generar un número aleatorio U


Si U < P0 hacer X = X0 y terminar
Si U < P0 + P1 hacer X = X1 y terminar
Si U < P0 + P1 + P2 hacer X = X2 y terminar

Ejemplo: si queremos simular una Variable Aleatoria Discreta X tal que:

p0 = 0.2; p1 = 0.15; p2 = 0.25; p3 = 0.4


donde pj = P(X = j), entonces podemos generar U y hacer lo siguiente:
Generamos un numero aleatorio U = 0.6321
Si U < P0 hacer X = X0 y terminar à ¿0.6321 < 0.2? NO
Si U < P0 + P1 hacer X = X1 y terminar à ¿0.6321 < 0.2 + 0.15? NO
Si U < P0 + P1 + P2 hacer X = X2 y terminar à ¿0.6321 < 0.2 + 0.15 + 0.25? NO
Si U < P0 + P1 + P2 + P3 hacer X = X3 y terminar à ¿0.6321 < 0.2 + 0.15 + 0.25 + 0.4? SI

Por lo tanto nuestra variable aleatoria X = 3

 Generación de t tiempos mediante el uso de un proceso de Poisson


Suponga que queremos generar los primeros t tiempos de evento de un proceso Poisson con razón ƛ.
Para esto, nos servimos del resultado de que los tiempos entre los eventos consecutivos de dicho
proceso son variables aleatorias exponenciales independientes, cada una con razón ƛ.
Simulación [SCD-1022]

Así, una forma de generar el proceso es generar estos tiempos entre llegadas. Así, si generamos n
números aleatorios U1, U2,…, Un y Xi = (-1/ƛ)(log Ui), entonces Xi se puede considerar como el tiempo
entre el (i - 1) - ésimo y el i-ésimo evento en el proceso Poisson.

Como el tiempo real del j-ésimo evento será igual a la suma de los primeros j tiempos entre llegadas,
los valores generados por los primeros tiempos de evento son:
j

∑ Xi j=1, 2, …
i=1

Si quisiéramos generar las primeras T unidades de tiempo del proceso Poisson podemos seguir el
procedimiento:

Generemos de manera sucesiva los tiempos entre las llegadas y nos detenemos cuando su suma
exceda a T. con el siguiente algoritmo se generan todos los tiempos de eventos que ocurren en (0,T) de
un proceso Poisson con razón ƛ.

En el algoritmo, t se refiere al tiempo, I es el número de eventos que han ocurrido hasta el instante t, y,
S (I) es el tiempo del evento más reciente.

Algoritmo: Generación de las primeras T unidades de tiempo de un proceso de Poisson con razón ƛ:

Paso 1: t = 0; I = 0;
Paso 2: generamos un número aleatorio U
Paso 3: t = t – logU; si t > T terminar
Paso 4: I = I + 1; S (I) = t
Paso 5: Ir al paso 2

El valor final de I en el algoritmo anterior representará el número de eventos que ocurren hasta el
instante T, y los valores S(1), S(2), …, S(I) serán los I tiempos de evento en orden creciente.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5

4.- COMPETENCIAS ESPECÍFICAS


Identificar el comportamiento de las variables aleatorias discretas y de las variables aleatorias
continuas. Se realizarán ejercicios mediante la distribución Poisson para generar los dos tipos de
variables y analizar su comportamiento.
Simulación [SCD-1022]

Crear un programa utilizando el procesos de Poisson para generar variables aleatorias discretas que
nos indiquen cuántos clientes llegan a un supermercado en un tiempo T = 12. Esto permite visualizar el
comportamiento de llegada de los clientes a un supermercado en el lapso de 12 horas

5. RESULTADOS
Al terminar la práctica, el alumno debe ser capaz de identificar claramente el comportamiento de un
proceso Poisson para los t tiempos de llegada de n clientes.

6. CONCLUSIONES
Ésta práctica aplica los conocimientos previos de la generación de números aleatorios y aprende a
identificar la diferencia entre variables aleatorias contínuas y variables aleatorias discretas.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 6
PRUEBAS ESTADÍSTICAS A VARIABLES ALEATORIAS
Observaciones: Esta práctica incluye a la Práctica # 6 del temario de
Simulación que dice “Implementar pruebas estadísticas a las variables
generadas en las 2 prácticas anteriores”.

1.- OBJETIVO
Aplicar las pruebas estadísticas de promedios a las variables aleatorias generadas con los métodos de
Poisson o la distribución binomial en la práctica anterior.

2.- MARCO TEÓRICO


 PRUEBAS ESTADISTICAS DE ALETORIEDAD

Las variables aleatorias no uniformes (normal, exponencial, Poisson, etc), se obtienen a partir de
números uniformes por lo que se debe poner énfasis con respecto al generador de números
pseudoaleatorios, ya que la deficiencia estadística de una distribución no uniforme se deberá
exclusivamente a un generador eficiente.

PRUEBAS ESTADISTICAS.

o PRUEBA DE PROMEDIOS

La función de probabilidad más simple es la distribución uniforme que se caracteriza por ser constante
en el intervalo (0,1) y cero fuera de él. También se llama “RECTANGULAR”

Matemáticamente, la función es.

Densidad uniforme:

1 si 0 < X < 1
f(x) =

0 si 0 > X > 1

X es una variable aleatoria definida en (0,1);

F(x) = X
E(x) = ½
VAR = 1/12

Conociendo los parámetros de la distribución uniforme, es posible plantear una prueba de hipótesis de
promedios para probar que los números pseudoaleatorios provienen de un universo uniforme con
media 0.5
Simulación [SCD-1022]

Para ello formulamos las hipótesis


Hipótesis nula Ho:
Hipótesis alternativa H1: U 1 2 U 1 2

Para realizar la prueba se requiere una muestra de tamaño N de números pseudoaleatorios. Se evalúa
se promedio aritmético.

Media = U1 + U2 +..... Un / N

Se determina el valor de Z con la fórmula

Zo = ( (Media – ½ ) √ n ) / √1/12
α = nivel de significancia

Si /Zo/ < Zα/2 no se rechaza la hipótesis de que los números provienen de una distribución uniforme
PRUEBA DE FRECUENCIAS

Una de las pruebas más importantes es la prueba de frecuencias sobre los números pseudoaleatorios.

Consiste en dividir el intervalo (0, 1) en n subintervalos.

Frecuencia N/n N/n N/n ..... N/n N/n


Esperada

Frecuencia Fo1 Fo2 Fo3 ..... Fon-1 Fon


observada

1/n 2/n 3/n n-1/n n/n = 1

Luego se compara la frecuencia esperada con la observada.

Si estas frecuencias son bastante parecidas, entonces provienen de una distribución uniforme.
X2
El estadístico usado es 0 = (chi- cuadrada) y se obtiene con la expresión

2
FOi FEi
X2
0 FEi

FOi = Frecuencia observada del i subintervalo


FEi = Frecuencia esperada del i subintervalo
N = Tamaño de la muestra
n = Número de subintervalos.

X2
Este estadístico 0 se compara con:
Simulación [SCD-1022]

2 La cual representa una variable aleatoria chi cuadrada con n-1 grados de libertad y un
X
, n 1 nivel de significancia de α
Si

X2 X 2
0 , n 1
Entonces, no se puede rechazar la hipótesis de que la muestra proviene de una
distribución uniforme.

Distribución Chi-cuadrada en Excel:


 DISTR.CHI

Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de
una sola cola. La distribución γ2 está asociada a una prueba γ2. Utilice la prueba γ2 para comparar los
valores observados con los esperados. Por ejemplo, un experimento genético podría estar basado en la
hipótesis de que la próxima generación de plantas presentará un conjunto determinado de colores. Al
comparar los resultados observados con los resultados esperados, puede decidir si su hipótesis original
es válida.

Sintaxis:
DISTR.CHI(x;grados_de_libertad)

X es el valor al que desea evaluar la distribución.


Grados_de_libertad es el número de grados de libertad.

Observaciones

o Si uno de los argumentos no es numérico, DISTR.CHI devuelve el valor de error #¡VALOR!


o Si el argumento x es negativo, DISTR.CHI devuelve el valor de error #¡NUM!
o Si el argumento grados_de_libertad no es un entero, se trunca.
o Si el argumento grados_de_libertad < 1 o si grados_de_libertad ≥ 10^10, DISTR.CHI devuelve
el valor de error #¡NUM!
o DISTR.CHI se calcula como DISTR.CHI = P(X>x), donde X es una variable aleatoria de γ2.

 PRUEBA.CHI

Devuelve la prueba de independencia. PRUEBA.CHI devuelve el valor de la distribución chi cuadrado


(γ2) para la estadística y los grados de libertad apropiados. Las pruebas γ2 pueden utilizarse para
determinar si un experimento se ajusta a los resultados teóricos.

Sintaxis:
PRUEBA.CHI(rango_actual;rango_esperado)

Rango_actual es el rango de datos que contiene observaciones para probar frente a valores esperados.
Rango_esperado es el rango de datos que contiene la relación del producto de los totales de filas y
columnas con el total global.

Observaciones
Simulación [SCD-1022]

o Si rango_actual y rango_esperado tienen un número diferente de puntos de datos,


PRUEBA.CHI devuelve el valor de error #N/A.
o La prueba γ2 primero calcula una estadística γ2 y después suma las diferencias entre los
valores reales y los valores esperados. La ecuación para esta función es
PRUEBA.CHI=p( X>γ2 ), donde:

Aij = frecuencia actual en la iésima fila, jésima columna


Eij = frecuencia esperada en la iésima fila, jésima columna
r = número de filas
c = número de columnas
PRUEBA.CHI devuelve la probabilidad para una estadística γ2 y grados de libertad, gl, donde gl = (r - 1)
(c - 1).

 PRUEBA.CHI.INV

Devuelve para una probabilidad dada, de una sola cola, el valor de la variable aleatoria siguiendo una
distribución chi cuadrado. Si el argumento probabilidad = DISTR.CHI(x;...), entonces
PRUEBA.CHI.INV(probabilidad,...) = x. Utilice esta función para comparar los resultados observados
con los resultados esperados, a fin de decidir si la hipótesis original es válida.

Sintaxis:
PRUEBA.CHI.INV(probabilidad;grados_de_libertad)

Probabilidad es una probabilidad asociada con la distribución chi cuadrado.


Grados_de_libertad es el número de grados de libertad.

Observaciones

o Si uno de los argumentos no es numérico, PRUEBA.CHI.INV devuelve el valor de error


#¡VALOR!
o Si probabilidad < 0 o si probabilidad > 1, PRUEBA.CHI.INV devuelve el valor de error #¡NUM!
o Si el argumento grados_de_libertad no es un entero, se trunca.
o Si grados_de_libertad < 1 o si grados_de_libertad ≥ 10^10, PRUEBA.CHI.INV devuelve el valor
de error #¡NUM!

PRUEBA.CHI.INV usa una técnica iterativa para calcular la función. Dado un valor de probabilidad,
PRUEBA.CHI.INV itera hasta que el resultado tenga una exactitud de ± 3x10^-7. Si PRUEBA.CHI.INV
no converge después de 100 iteraciones, la función devuelve el valor de error #N/A.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5
 Hoja de cálculo

4.- COMPETENCIAS ESPECÍFICAS


Simulación [SCD-1022]

Aplicar las pruebas estadísticas que permitan aceptar o rechazar una variable aleatoria continua o
discreta.

Disponemos de una hoja de cálculo con las horas trabajadas durante una semana por los
trabajadores de una plan ta de procesado de fruta de una empresa según los diferentes
cargos que ocupa.

Queremos crear una tabla dinámica que muestre, para cada empleado de la empresa, en páginas
individuales, el total de horas trabajadas en cada uno de las funciones durante la última semana.

Sitúate en una de las celdas que contienen los datos y ve a Datos (Menú principal), Asistente para
tablas dinámicas. Se iniciará el Asistente, que consta de cuatro cuadros de diálogo consecutivos.

En el primer cuadro de diálogo (paso 1 de 4) se solicita el origen de los datos a organizar en forma de
tabla dinámica, en éste caso, dejamos la opción preseleccionada (Lista o base de datos de Microsoft
Excel) y pulsamos siguiente.

En el siguiente cuadro de dialogo (paso 2 de 4) permite seleccionar el rango de celdas en el que están
situados los datos a organizar.

En el tercer cuadro de diálogo (paso 3 de 4) se diseñará la distribución de los campos en la tabla a


crear.

En la parte derecha de la ventana se muestra un botón para cada campo de la lista y en la parte
izquierda aparece el área en donde se diseñará la tabla, que está dividida en cuatro secciones
(PÁGINA, FILA, COLUMNA y DATOS), en las que se pueden colocar los distintos campos, pulsando
sobre el botón del campo y arrastrándolo a una sección.

A la hora de organizar los datos en nuestro ejemplo deberá tenerse en cuenta lo siguiente:

1. El campo que se coloque en la sección PÁGINA aparecerá en forma de una lista desplegable desde
la que se podrá seleccionar aquel elemento del que se desee mostrar el resumen. Existirá además la
posibilidad de mostrar el resumen correspondiente a cada empleado en una hoja diferente.
Simulación [SCD-1022]

2. El campo que se coloque en la sección FILA mostrará sus elementos como encabezados o títulos de
las filas en la tabla

3. El campo que se coloque en la sección COLUMNA, mostrará sus elementos como encabezados de
las columnas de la tabla

4. En cuanto al campo que se coloque en la sección DATOS, sus datos se someterán a una
determinada operación de cálculo: Suma (es la que se ofrece por defecto cuando los datos de este
campo son todos numéricos), Contar (la que se ofrece por defecto en los demás casos), Promedio,
Mínimo, Máximo, Producto, etc.

En nuestro ejemplo, por tanto, colocaremos los campos del siguiente modo:

o El campo Empleado en la sección PÁGINA


o El campo Proyecto en la sección FILA
o El campo Fecha en la sección COLUMNA
o El campo Horas (que contiene los valores que queremos sumar) en la sección DATOS,
aceptando la función de SUMA que Excel propone por defecto.
Simulación [SCD-1022]

Notas:

a) La forma elegida aquí para organizar los datos sólo es una de entre todas las posibles. Cabe
organizar los datos de otra manera; no obstante, hemos de procurar que la forma elegida sea la más
clara y fácil de interpretar.

b) Aunque los datos de una tabla dinámica tienen el mismo aspecto que cualquier hoja de cálculo, no
se pueden introducir ni editar los datos directamente en ella. Para modificar sus resultados deberán
modificarse forzosamente los datos a partir de los cuales se ha creado.

c) No obstante, las tablas dinámicas no se actualizan automáticamente cuando los datos de origen
cambian, sino que, cambiados los datos fuente es necesario seleccionar con el botón derecho del ratón
una celda cualquiera de la tabla y elegir la opción Actualizar datos del menú contextual
correspondiente.

d) Una vez creada la tabla dinámica, se puede cambiar fácilmente su diseño arrastrando los botones
sombreados con los nombres de los campos a otras posiciones de la tabla (por esta razón se llaman
“dinámicas”, precisamente)

5. RESULTADOS
Al terminar la práctica, el estudiante entenderá de una mejor manera que no todas las variables aleatorias que
se creen con un generador de variables aleatorias pueden ser aceptadas, para lo cual debemos aplicar ciertas
pruebas estadísticas.

6. CONCLUSIONES
Ésta práctica nos ayuda a analizar cuando una variables aleatoria discreta o continua la podemos tomar como
válida o rechazarla.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 7
APLICACIÓN DE LA SIMULACIÓN
Observaciones: Esta práctica incluye a la Práctica # 7 del temario de
Simulación que dice “Identificación y análisis de un sistema en donde se
puede aplicar la simulación”.

1.- OBJETIVO
El alumno identifique y realice un análisis de sistemas reales donde se puedan aplicar las etapas y
conceptos de la simulación tanto en el campo de las ciencias exactas como en el campo del área de
ingeniería

2.- MARCO TEÓRICO


Definición:
Es el proceso de diseñar y desarrollar un modelo computarizado de un sistema o proceso y conducir
experimentos con este modelo con el propósito de entender el comportamiento del sistema o evaluar
varias estrategias con las cuales se puede operar el sistema.
Robert e. Shannon
Importancia de la simulación:
A través de un estudio de simulación, se puede estudiar el efecto de cambios internos y externos del
sistema.
La técnica de simulación puede ser utilizada para experimentar con nuevas situaciones, sobre las
cuales tiene poca o ninguna información. A través de esta experimentación se puede anticipar mejor a
posibles resultados no previstos.
Cuando nuevos elementos son introducidos en un sistema, la simulación puede ser usada para
anticipar cuellos de botella o algún otro problema que puede surgir en el comportamiento del sistema.
La simulación de sistemas complejos puede ayudar a entender mejor la operación del sistema, a
detectar las variables más importantes que interactúan en el sistema y a entender mejor las
interrelaciones entre estas variables.

Aplicaciones de la simulación:
o Análisis del impacto ambiental .
o Análisis y diseño de sistemas de comunicaciones.
o Evaluación del diseño de organismos prestadores de servicios públicos (por ejemplo:
hospitales, oficinas de correos, telégrafos, casas de cambio, etc.).
o Análisis de sistemas de transporte terrestre, marítimo o por aire.
Simulación [SCD-1022]

o Análisis de un departamento dentro de una fábrica.


o Adiestramiento de operadores (centrales nucleoeléctricas, aviones, etc.).
o Análisis de sistemas de acondicionamiento de aire.
o Análisis financiero de sistemas económicos.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Reproductor de video
 Software de simulación Arena o Promodel
 Procesador de textos
 Acceso a internet
 Java Virtual Machine

4.- COMPETENCIAS ESPECÍFICAS


Identificar los puntos importantes de un sistema en la vida cotidiana para que el alumno tenga una
mayor percepción de cómo se aplica la simulación en el área de sistemas.

Mostrar en un video la corrida de un programa que este simulando el tráfico de una ciudad, en el que
coloquemos diferentes criterios de tráfico, como pueden ser calles cerradas, mas semáforos, etc. Con
el fin de que el alumno identifique claramente lo que es un proceso de simulación de eventos discretos
o continuos. El software que se puede utilizar para la simulación es starlogo o en internet, visitando la
siguiente página: http://www.traffic-simulation.de/

5. RESULTADOS
El alumno identifique más áreas de aplicación de la simulación en la vida cotidiana.

6. CONCLUSIONES
Ésta práctica ayuda al alumno a identificar sistemas que requieren ser simulados.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
3. http://www.traffic-simulation.de/ (visitada en Julio 2013)
Simulación [SCD-1022]

Práctica 8
REPRESENTACIÓN DE VARIABLES EN UN SISTEMA
Observaciones: Esta práctica incluye a la Práctica # 8 del temario de
Simulación que dice “Identificación y representación de cada uno de los
eventos y variables de un sistema simulado”.

1.- OBJETIVO
Identificar las variables (tiempo, edad, llegadas, etc.) y eventos (atendido, llegada, en espera, etc.) que
están dentro de un sistema simulado.

2.- MARCO TEÓRICO


Una variable aleatoria es aquella que tiene un comportamiento probabilístico en la realidad. Por
ejemplo, el número de clientes que llega cada hora a un banco depende del momento del día, del día
de la semana y de otros factores; por lo general, la afluencia de clientes será mayor al medio día que
muy temprano; la demanda será mayor el viernes que el miércoles, habrá más clientes en un día de
pago que un día normal, etc.

En procesos, Son aquellas variables que permiten conocer y controlar los procesos. Las variables
pueden ser:
o Temperatura
o Presión
o Nivel
o Caudal
o Distancia
o Posiciones
o Torque

En las investigaciones experimentales una variable puede ser:

Variable independiente: variables que el investigador manipula y/o mide para ver los efectos que
produce sobre otra variable.

Variable moderadora: tipo de variable independiente que se manipula y/o mide para comprobar si
modifica la relación entre la variable independiente y la variable dependiente. Se incluye para ver sus
efectos sobre la variable dependiente, pero el investigador le da un papel secundario

Variable de control: es un tipo de variable independiente que no se manipula sino que se mantiene
constante para neutralizar sus efectos sobre la variable dependiente (ya que en un experimento no es
posible estudiar simultáneamente todas las variables independientes)

Variable aleatoria: variables cuyos efectos se neutralizan mediante métodos aleatorios


Simulación [SCD-1022]

Variable intermediaria (o mediatriz): un tipo de variable a través de la que se trasmite la influencia de


la(s) o variable(s) independientes y/o moderadoras sobre la variable dependiente. En su relación con la
variable dependiente sería independiente. Pero en su relación con la variable independiente sería
dependiente

Variables dependientes: variables cuyos valores van a depender de los valores de la o las variables
independientes

Clasificación funcional de las variables:

Variable independiente

Variable moderadora
Variable mediadora Variable dependiente
Variable aleatorizada

Variable de control Transmisión Efecto

Causas

Definición operativa de las variables:


La descripción de las variables debe permitir la adecuación entre:
o Los instrumentos utilizados,
o Las variables elegidas
o Los conceptos teóricos descritos

La descripción operativa debe tener en cuenta dos clases de restricciones:


o Restricciones de acceso a datos
o Restricciones de adecuación para la medición de los conceptos.

Descripción de las variables:


Las variables constituyen un primer nivel de operacionalización de un modelo teórico y será necesario
darle a cada una, una descripción operacional (conjunto de operaciones necesarias para medirla):

1. Definir los indicadores a utilizar para cada dimensión (y componente) que se desee medir
2. Definir los extremos generales de variación de los indicadores
3. Definir los extremos de cada intervalo de medición de los indicadores
4. Definir los instrumentos de medición de cada indicador
5. Definir las condiciones operacionales de la medición de cada indicador
Simulación [SCD-1022]

En general las variables pueden ser medidas de formas diferentes y no todas conducen a resultados
equivalentes

La medición puede ser un proceso sumamente complejo cuando se trata de variable s de múltiples
dimensiones, componentes y condiciones específicas de medición

El concepto de sistema de evento discreto tiene por finalidad identificar a sistemas en los que los
eventos que cambian el estado del mismo ocurren en instantes espaciados en el tiempo, a diferencia
de los sistemas cuyo estado puede cambiar continuamente en el tiempo (como la posición de un
vehículo en movimiento). Aunque aparentemente simples, los sistemas de eventos discretos, pueden
modelar muchos de los fenómenos que enfrentan los responsables de la administración de los
procesos productivos en una empresa. Por ejemplo, los inventarios de cualquier producto sólo se
alteran ante la ocurrencia de alguno de dos eventos: (1) ingreso de un lote de abastecimiento, o (2)
retiro de cierta cantidad del producto para satisfacer el pedido de un cliente, de la misma manera como
el dinero disponible en cualquier cuenta bancaria sólo puede cambiar a consecuencia de un depósito, o
a consecuencia de un retiro Rico (1992)

Los primeros intentos para simular sistemas de eventos discretos, datan de la década de los años 60,
donde se desarrollan las primeras simulaciones en ordenador para planear proyectos de gran
envergadura, aunque a un costo alto y utilizando lenguajes de propósito general (a menudo
FORTRAN). Las primeras herramientas para facilitar el uso de la simulación de evento discreto
aparecen en la forma de lenguajes de simulación en la década de los años 70, aunque la programación
en estos lenguajes se realiza todavía por medio de comandos escritos en un archivo. Lenguajes como
GPSS, SIMSCRIPT, SLAM y SIMAN tienen una amplia difusión en los años 80, paralela a una gran
producción científica relacionada con las posibles aplicaciones de la simulación de evento discreto, y el
desarrollo de métodos para el análisis de experimentos por simulación, para generar por ordenador la
ocurrencia de eventos siguiendo patrones probabilísticos, y para permitir que el motor del lenguaje
pueda modelar una gama amplia de aplicaciones.

En la década de los 90, la difusión de los ordenadores personales, y la aparición de paquetes de


simulación que se programan en ambientes gráficos, y con capacidades de animación, permite que la
simulación se difunda ampliamente como herramienta para el diseño y análisis en diversos sectores
tanto de la industria de manufacturas como de servicios (por ejemplo, telecomunicaciones, salud,
transporte y cadenas de restaurantes).

Actualmente se pueden distinguir en el mercado dos tipos de paquetes para simulación de evento
discreto: los de propósito general y los orientados hacia alguna aplicación o sector industrial específico.
Entre los paquetes más conocidos de propósito general, se pueden mencionar a Arena, Simul8,
GPSS/H, AweSim, y MODSIM III, mientras que entre los paquetes con orientación hacia alguna
aplicación se puede mencionar a AutoMod, ProModel, SIMFACTORY II.5, QUEST y Arena Packaging
Edition para manufactura, COMNET III y OPNET Modeler para redes de comunicaciones,
SIMPROCESS, ProcessModel, ServiceModel y Arena Business Edition para analizar flujos en procesos
de negocios, y MedModel para servicios del cuidado de la salud. Los paquetes mencionados permiten
la programación en un ambiente gráfico por medio de módulos, y pueden incorporar animación a sus
modelos, lo que además de facilitar la programación del modelo de simulación, se constituye en una
herramienta valiosa para la verificación y demostración de las capacidades del modelo.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Reproductor de video
 Software de simulación Arena o Promodel
 Procesador de textos
Simulación [SCD-1022]

 Acceso a internet
 Java Virtual Machine

4.- COMPETENCIAS ESPECÍFICAS


Identificar claramente todas las variables y eventos que ocurren cuando se simula un proyecto. En
nuestra práctica, será una simulación del tráfico.

Ir a la página http://www.traffic-simulation.de/ para visualizar el simulador del trafic flow, o puedes


descargar el Applet de la misma dirección. Se deberá manipular los siguientes eventos:

Ring – On – Laneclosin Uphill Traffic Lights


Road Ramp g grade

Cada que se manipule algún evento descrito anteriormente, manipularemos las siguientes variables
Main Inflow
Truck Percentage
Politeness factor
Simulation Speed
Desired Velocity
Acceleration a
Deceleration b
Time Gap T
Minimum gap s0

Realiza un reporte de lo que sucede en cada evento y con las diferentes variables que intervienen en la
simulación del flujo vehicular.

5. RESULTADOS
El alumno al finalizar la practica podrá comprender cada uno de los eventos simulados en control de tráfico,
ya sea si un automóvil ha llegado, si un auto grande, si les toco un semáforo, etc., así como las variables que
influyen en el tráfico: número de autos que llegaron en un tiempo t con razón ƛ.

6. CONCLUSIONES
Esta práctica es muy interactiva por lo que el alumno podrá observar en tiempo real cada uno de los eventos y
variables que intervienen en la simulación del control de tráfico vehicular.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
3. http://www.traffic-simulation.de/ (visitada en Julio 2013)
Simulación [SCD-1022]

Práctica 9
REPRESENTACIÓN DE LA METODOLOGÍA DE
SIMULACIÓN
Observaciones: Esta práctica incluye a la Práctica # 9 del temario de
Simulación que dice “Análisis y representación de un sistema real empleando
la metodología de simulación”.

1.- OBJETIVO
El alumno debe analizar y desarrollar las diferentes etapas de un modelo de simulación para el
proyecto integrador de materia.

2.- MARCO TEÓRICO


Metodología de la simulación.

Los pasos para realizara la simulación de un sistema, de manera secuencial consiste en:

o Identificación y análisis del objetivo


o Recolección de datos
o Diseño del modelo de simulación
o Construcción del modelo de simulación.
o Validación y verificación
o Simulación.
o Análisis de la simulación.
o Alternativas de solución generadas.

La identificación y análisis del objetivo se refiere a definir plenamente el sistema que se estudiará, las
entidades que conforman el sistema, las variables exógenas (independientes o de entrada), las variables
endógenas (dependientes o de estado), las variables de salida, los atributos, las interrelaciones existentes, los
supuestos (ya que no se pueden reflejar todas las condiciones del sistema), el entorno, los límites y el objetivo
del sistema.

La recolección de datos es la parte más lenta y costosa, ya que exige tiempo y dedicación por parte del
responsable de dicha recolección. También es la que reflejará el éxito de los resultados según la calidad de la
información, reflejada por el grado de certeza de ésta.

El diseño del modelo de simulación es donde aterrizaremos los conocimientos e información de los dos
puntos anteriores, dentro de una mezcla que constituirá un reflejo de la esencia del sistema, así como de los
cambios deseados en los parámetros y variables para ver distintos escenarios de éste.

La construcción del modelo de simulación está enfocado, a la captura del código en la computadora y que
refleje el diseño del modelo.
Simulación [SCD-1022]

La validación y verificación consiste en despejar todas las dudas que se tengan respecto a la credibilidad del
diseño del modelo, el programa computacional y su funcionamiento.

La simulación es el proceso de repetir el comportamiento del sistema mediante el modelo, bajo diferentes
condiciones en su operación o en sus estímulos; ésta por lo general se realiza aprovechando los medios
computacionales, debido a la rapidez y precisión que brindan.

El análisis de la simulación es la fase donde se estudian los resultados obtenidos mediante varias corridas y
se detectan soluciones al objetivo planteado para el sistema.

Las alternativas de solución generadas es la parte final del proceso y consiste en enmarcar el análisis dentro
de distintas perspectivas para brindar los caminos que puede tomar la empresa.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5

4.- COMPETENCIAS ESPECÍFICAS


Se deben crear equipos de 4 a 6 personas dependiendo del tamaño del grupo, asignarles a cada
equipo un proyecto integrador de materia, el cual solo se deberán dar las indicaciones generales del
sistema a simular sin entrar a detalle. Posteriormente proponerle a los equipos que establezcan de
forma clara el objetivo general del proyecto, así como los objetivos particulares del mismo. Deberán
delegar la responsabilidad de que un compañero de ellos sea la persona que recolecte los datos
necesarios para el sistema, deberá identificar todos los posibles eventos y variables que se presenten
en la simulación y por último, el resto del equipo deberá generar el modelo de simulación en hojas
blancas o en un software. Una vez terminados los modelos, deberán entregarlos al docente para que
pueda revisarlos y emitir las recomendaciones necesarias.

5. RESULTADOS
Al concluir esta práctica, el alumno ya será capaz de analizar y representar claramente al menos las primeras
tres etapas del modelo de simulación aplicadas a su proyecto final de materia.

6. CONCLUSIONES
Ésta práctica ayuda a que el alumno aplique tres etapas de modelos de simulación a problemas reales.

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 10
PROGRAMACIÓN DE UN SISTEMA QUE APLIQUE
VARIABLES ALEATORIAS
Observaciones: Esta práctica incluye a la Práctica # 10 del temario de
Simulación que dice “Representación, análisis y programación en el
comportamiento de variables aleatorias que representan un evento dentro de
un sistema”.

1.- OBJETIVO
Que el alumno pueda representar en un sistema simulado todos los temas vistos de este curso, desde
variables aleatorias y las etapas de un modelo de simulación.

2.- MARCO TEÓRICO


Sistema computacional:
Son conjuntos de dispositivos, instrucciones y personas que interactúan para llevar a cabo un proceso,
estos varían en forma, tamaño, capacidad y tecnología. Están compuestos por aparatos o componentes
físicos que interactúan mediante conjuntos de instrucciones lógicas establecidas para lograr un
objetivo.

Programación:
La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas
computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la
programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir
código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del
lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente
otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí
suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.

Para crear un programa, y que la computadora lo interprete y ejecute las instrucciones escritas en él,
debe usarse un lenguaje de programación. En sus inicios las computadoras interpretaban sólo
instrucciones en un lenguaje específico, del más bajo nivel, conocido como código máquina, siendo
éste excesivamente complicado para programar. De hecho sólo consiste en cadenas de números 1 y 0
(sistema binario). Para facilitar el trabajo de programación, los primeros científicos que trabajaban en el
área decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o letras
provenientes del inglés; las codificaron y crearon así un lenguaje de mayor nivel, que se conoce como
Assembly o lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add
(sumar). En realidad escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo en
lenguaje máquina, pero las letras y palabras son bastante más fáciles de recordar y entender que
secuencias de números binarios. A medida que la complejidad de las tareas que realizaban las
computadoras aumentaba, se hizo necesario disponer de un método sencillo para programar.
Simulación [SCD-1022]

Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos
números puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto
nivel bastará con solo una. Una vez que se termina de escribir un programa, sea en ensamblador o en
un lenguaje de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje máquina.

La programación debe perseguir la obtención de programas de calidad. Para ello se establece una
serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad más
importantes son los siguientes:

o Corrección. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las
fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy
importante especificar claramente qué debe hacer el programa antes de desarrollarlo y, una vez
acabado, compararlo con lo que realmente hace.

o Claridad. Es muy importante que el programa sea lo más claro y legible posible, para facilitar
así su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su
estructura sea sencilla y coherente, así como cuidar el estilo en la edición; de esta forma se ve
facilitado el trabajo del programador, tanto en la fase de creación como en las fases posteriores
de corrección de errores, ampliaciones, modificaciones, etc. Fases que pueden ser realizadas
incluso por otro programador, con lo cual la claridad es aún más necesaria para que otros
programadores puedan continuar el trabajo fácilmente. Algunos programadores llegan incluso a
utilizar Arte ASCII para delimitar secciones de código. Otros, por diversión o para impedir un
análisis cómodo a otros programadores, recurren al uso de código ofuscado.

o Eficiencia. Se trata de que el programa, además de realizar aquello para lo que fue creado (es
decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza.
Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que
tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita,
pero hay otros recursos que también pueden ser de consideración al obtener la eficiencia de un
programa, dependiendo de su naturaleza (espacio en disco que utiliza, tráfico de red que
genera, etc.).

o Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una


plataforma, ya sea hardware o software, diferente a aquélla en la que se elaboró. La
portabilidad es una característica muy deseable para un programa, ya que permite, por
ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse también
en la familia de sistemas operativos Windows. Esto permite que el programa pueda llegar a
más usuarios más fácilmente.

Análisis de sistemas.
El análisis de sistemas es la ciencia encargada del análisis de sistemas grandes y complejos y la
interacción entre esos sistemas. Esta área se encuentra muy relacionada con la Investigación de
operaciones. También se denomina análisis de sistemas a una de las etapas de construcción de un
sistema informático, que consiste en relevar la información actual y proponer los rasgos generales de la
solución futura.

Modelado.

Teoría de sistemas de cómputo es la base de modelado para sistemas complejos, los cuales se dividen
en tres conceptos básicos: unidades, procesos y estructuras. Una vez que se han identificado esos
Simulación [SCD-1022]

componentes, se genera un modelo de teoría de juegos. Este modelo después puede ser llevado a la
simulación.

Análisis de sistemas es impartida en la Universidad y tiene mucha relación con la Ingeniería de


Software, en resumen un sistema es un conjunto de elementos interrelacionados o componentes
entrelazados entre si para lograr un objetivo común entre los elementos del sistema.

Análisis y diseño de sistemas

o kendal & kendal


o james Senn
o Robert S. McNamara
o Buckminster Fuller
o Gregory Bateson
o Stewart Brand
o Liaison job

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5
 Hoja de cálculo

4.- COMPETENCIAS ESPECÍFICAS


Desarrollar un sistema de cómputo que permita crear distintos eventos y variables aleatorias.
Desarrollar un proyecto de software que definirá el profesor dependiendo de las capacidades del grupo.
Pueden ser varios proyectos para diferentes equipos de alumnos o el mismo proyecto para todos, el
proyecto deberá incluir los eventos y variables a simular, por ejemplo, en un casino, el número de
clientes que ha llegado a apostar en la ruleta, quienes son los ganadores y perdedores, cantidad de
apuestas y monto total de apuesta. Los proyectos deberán implementar técnicas vistas durante el curso
para generar números aleatorios y variables aleatorias. Preferentemente utilizar el método de
Montecarlo a los proyectos que sean necesarios, por ejemplo, el juego de cartas llamado “Siete y
medio”.

5. RESULTADOS
Al terminar ésta práctica, los alumnos después de realizar el análisis de variables y eventos que intervienen
en un sistema simulado, deberán ser capaces de poder implementar todas las técnicas vistas en clases.

6. CONCLUSIONES
En ésta práctica los alumnos deben ser capaces de analizar, diseñar e implementar un sistema con eventos.
Simulación [SCD-1022]

7.- BIBLIOGRAFÍA
1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.
2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

Práctica 11
IMPLEMENTACIÓN DE UN PROYECTO FINAL
Observaciones: Esta práctica incluye a la Práctica # 11 del temario de
Simulación que dice “Implementar un modelo (líneas de espera o sistema de
inventario) utilizando una herramienta o lenguaje de simulación”.

1.- OBJETIVO
Implementar un programa en Java, C o cualquier otro lenguaje de programación de los distintos
modelos de colas aplicándolo al área de sistemas computacionales.

2.- MARCO TEÓRICO


Características de un sistema de líneas de espera

o Características de las llegadas


o Características de la línea de espera
o Características del dispositivo de servicio
o Medida del funcionamiento de las colas
o Costos de las colas

Tipos de modelos de colas:


o Modelo A: modelo de cola de canal único y tiempos exponenciales de servicio.
o Modelo B: modelo de cola multicanal.
o Modelo C: modelo de cola de tiempo constante
o Modelo D: modelo de población limitada
Simulación [SCD-1022]

Figura 1: línea de espera


Ejemplos de líneas de espera:

Situación Llegadas Servidores Proceso de servicio

Banco Clientes Cajero Depósito, etc.

Consulta médica Paciente Doctor Tratamiento

Cruce controlado de Coches Luz Paso


tráfico

Cadena de montaje Piezas de montaje. Trabajadores

Estudiadas por primera vez por A. K. Erlang en 1913: análisis de los servidores telefónicos. Área de
conocimiento denominada teoría de colas (cola es otra denominación para líneas de espera). Problema
de decisión: equilibrio entre el costo de suministrar un buen servicio y el costo de tiempo de espera de
los clientes.

Figura 2: Costos de las líneas de espera

Terminología de las líneas de espera:


Cola: línea de espera.
Llegada de clientes: una persona, máquina, pieza, etc. Que llega y demanda un servicio.
Disciplina de cola: reglas para determinar el orden en el cuál las llegadas reciben un servicio.
Canal: número de líneas de espera o unidades de servicio.
Fase: número de pasos a seguir en el servicio.
Simulación [SCD-1022]

Características de la llegada:

Distribución de la llegada:
o Poisson
o Otras

Patrón de las llegadas:


o Aleatoria.
o Secuencia conocida

Tamaño de la población:
o Limitada
o Ilimitada

Comportamiento de las llegadas:


o Ponerse a la cola y esperar a ser servido
o Se niegan a colocarse en la cola
o Reniegan, abandonan la cola.

Llegadas aleatorias:
o Los clientes llegan en forma aleatoria.
o Distribución discreta.
o X es el número de llegadas durante una unidad de tiempo determinada (una hora, un minuto,
etc.)
o E{x} = número promedio de llegadas por unidad de tiempo.

Distribución de Poisson:
Número de llegadas que ocurren en un intervalo de tiempo, por ejemplo, número de clientes que llegan
en 15 minutos. Media = ƛ (po ejemplo 5/hora).

La función de probabilidad:
−ƛ k
e ƛ
P x =k =
( )
k!
Simulación [SCD-1022]

La media y la varianza son:


E { x }=ƛ
Var { x } =ƛ

Ejemplo: En una instalación de servicio llegan los clientes de acuerdo a una distribución Poisson con
una tasa de 4/minuto. ¿Cuál es la probabilidad de que al menos un cliente llegue en cualquier intervalo
dado de 30 segundos?

4 2 clientes
ƛ 30 seg= =
2 30 segundos
−2 0
e 2
P ( X=0 )= =0.1353
0!

P { X ≥ 1 }=1−P { x =0 }=1−0.1353=0.8647

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR


 Computadora
 Lenguaje de programación Java
 JDK 1.6 o superior
 Procesador de textos
 IDE NetBeans 7.3, JGrasp o JCreator 4.5

4.- COMPETENCIAS ESPECÍFICAS


Aplicar los modelos de líneas de espera (modelos de colas) al proyecto final, aplicándolo a juegos de
azar.
Utilizando la práctica “implementación de un proyecto final”, darle el enfoque para que simule un
modelo de líneas de espera, como puede ser el número de jugadores que ganan en la ruleta en un día
determinado, el número de jugadores que apuestan al mismo número de la lotería en un periodo de
tiempo, número de clientes que llegan a jugar en la ruleta y tiempo en que son atendidos, etc.

5. RESULTADOS
Al terminar ésta práctica el alumno habrá aplicado los conocimientos adquiridos para el control de líneas de
espera en un sistema simulado.

6. CONCLUSIONES
Ésta práctica permite aplicar los conocimientos adquiridos en todas las competencias de la materia ya que es
un proyecto integrador y requiere de todos los conceptos, métodos y técnicas vistas en el curso.

7.- BIBLIOGRAFÍA
Simulación [SCD-1022]

1. ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, México. 1997.


2. BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. Prentice-Hall, Englewood
Cliffs, N.J.1984.
Simulación [SCD-1022]

8.- LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR


FOLI
NOMBRE DEL MATERIAL, EQUIPO O REACTIVO CANT. UNIDAD
O
1 Computadora. 1

2 Hoja de cálculo. 1

3 Procesador de textos 1

4 Proyector digital 1
Lenguaje de programación Java
5 1

6 JDK 1.6 o superior 1

7 Acceso a Internet 1
IDE NetBeans 7.3, JGrasp o JCreator 4.5
8 1
Reproductor de video
9 1
Software de simulación Arena o Promodel
10 1
Java Virtual Machine
11 1

9.- LISTA DE BIBLIOGRAFÍA REQUERIDA


FOLI
BIBLIOGRAFIA CANT
O
BANKS, J. & Carson, J.S. Discrete event system simulation, Ed. 1
1 Prentice-Hall,
Englewood Cliffs, N.J.1984.
ROSS,Sheldon M.Simulación, Segunda Edición, Prentice Hall, 1
2
México. 1997.
SHANNON,Robert E.Simulación de Sistemas, Diseño, Desarrollo e 1
3
implementación. Trillas, México. 1992.
PARDO, Leandro, Valdez, Teófilo.Simulación aplicaciones prácticas 1
4 en la
empresa, Ediciones Díaz Santos. 1987.
5 http://www.gerentes.com/biblioteca/simulacion.htm
http://exa.unne.edu.ar/depar/areas/informatica/evalua/simulacion.PD
6
F
http://www.traffic-simulation.de/ (visitada en Julio 2013)
7
Simulación [SCD-1022]
Simulación [SCD-1022]
10.- CONTROL DE CAMBIOS DEL MANUAL DE PRÁCTICAS

DATOS GENERALES
FECHA DE
ELABORÓ Y/O ACTUALIZÓ DESCRIPCIÓN DE LA ACTUALIZACIÓN
ACTUALIZACION

 LIC. IVAN RAFAEL SÁNCHEZ JUÁREZ  SE CREÓ POR PRIMERA VEZ ESTE MANUAL DE PRÁCTICAS EN EL MES DE AGOSTO DE 2013, PARA LA DIVISIÓN DE SISTEMAS
15/08/2013
COMPUTACIONALES DEL ITSMT

 LIC. IVAN RAFAEL SÁNCHEZ JUÁREZ


15/09/2013  SE MODIFICÓ ÚNICAMENTE LA ESTRUCTURA DEL DOCUEMNTO QUITANDO ALGUNOS PUNTOS

Fecha de Actualización 15/09/2013 Página 57

You might also like