Professional Documents
Culture Documents
SEXTO SEMESTRE
SIMULACIÓN DIGITAL
NRC: 2872
Foro 3
AUTORES:
ANDRADE JUAN
CABEZAS AYRTON
CARRERA HENRRY
CUICHAN CRISTHIAN
PROFESOR:
ING. FAUSTO MENESES
SANGOLQUI – ECUADOR
Abril – Agosto
2017
Contenido
a. Estado del Arte ................................................................................................................................ 3
1. Modelos discretos y continuos .................................................. Error! Bookmark not defined.
Modelos de Simulación de Eventos Discretos .............................. Error! Bookmark not defined.
Modelo de Simulación de Procesos Continuos ............................. Error! Bookmark not defined.
1.1. Variable aleatoria (V.A.) ....................................................... Error! Bookmark not defined.
1.1.1. Definición ..................................................................... Error! Bookmark not defined.
Estructura ...................................................................................... Error! Bookmark not defined.
1.1.2. Función de probabilidad................................................ Error! Bookmark not defined.
1.1.3. Distribución acumulativa .............................................. Error! Bookmark not defined.
1.2. V.A. Discreta: métodos de generación.................................. Error! Bookmark not defined.
1.2.1. Esperanza, varianza y desviación estándar ................... Error! Bookmark not defined.
Esperanza..................................................................................... Error! Bookmark not defined.
Varianza y desviación estándar ................................................. Error! Bookmark not defined.
1.2.2. Métodos de generación de VA discreta ........................ Error! Bookmark not defined.
Método de inversión de la función de distribución ....................... Error! Bookmark not defined.
Método de composición ................................................................ Error! Bookmark not defined.
Método de aceptación y rechazo ................................................... Error! Bookmark not defined.
1.2.3. Casos particulares de VA discreta................................. Error! Bookmark not defined.
b. Implementación de las aplicaciones ................................................................................................ 8
Ejercicio 1 ......................................................................................... Error! Bookmark not defined.
Código ........................................................................................... Error! Bookmark not defined.
Capturas ........................................................................................ Error! Bookmark not defined.
Ejercicio 2 ......................................................................................... Error! Bookmark not defined.
Código ........................................................................................... Error! Bookmark not defined.
Capturas ........................................................................................ Error! Bookmark not defined.
c. Obtención de Resultados............................................................................................................... 25
Ejercicio 1 ......................................................................................... Error! Bookmark not defined.
Ejercicio 2 ......................................................................................... Error! Bookmark not defined.
d. Conclusiones y recomendaciones. ................................................................................................ 25
e. Referencias.................................................................................................................................... 26
a. Estado del Arte
1. Modelos de fiabilidad y mantenimiento
Desde un punto de vista puramente económico, es deseable una alta fiabilidad para reducir los
costos totales del producto. El hecho de que en algunos sistemas militares el costo anual de
mantenimiento sea diez veces el costo original del mismo, pone de manifiesto esta necesidad. (ciclo
vida)
También hay que considerar el aspecto de seguridad (el fallo de un sistema ABS en un automóvil
puede ser catastrófico). Existen otro aspecto como retrasos de horarios, incomodidades,
insatisfacción del cliente y pérdida de prestigio del fabricante.
Desde el diseño existe la necesidad de entregar equipos o sistemas que tengan las prestaciones
deseadas por el cliente y que además sean Confiables, de fácil mantenimiento y con funcionamiento
seguro y económico durante su vida útil.
La aplicación de las técnicas de simulación a los procesos de fabricación está irrumpiendo con
fuerza permitiendo a las empresas disfrutar de los beneficios de la "Fabricación Virtual". Con
estas aplicaciones se pueden conseguir:
PUNTO DE REORDEN
También conocido como nivel de reposición es la cantidad de un producto que tiene que haber en
existencia para realizar un nuevo pedido del mismo o hacer la compra correspondiente. Esta
cantidad no es arbitraria aun cuando muchas de las veces se utilicen el sentido común y la
experiencia para hacer esta estimación.
El no establecer un punto de reorden para determinados productos puede ocasionar los siguientes
problemas:
Interrupción de la producción porque no hay materias primas o son insuficientes.
Clientes insatisfechos porque no encuentran lo que buscan o en la cantidad que requieren.
Perdidas económicas.
Niveles excesivos de inventario con el consiguiente costo financiero.
La demanda: Son todos los materiales requeridos para un proceso ya sea conociendo la
necesidad con precisión o en base a la probabilidad de su uso o con forme a los niveles de stock.
(Montenegro, 2011) La reducción del costo total está en función de la cantidad de pedido Q.
Para encontrar la cantidad de pedido económico Q*, se debe buscar el equilibrio entre el
mínimo costo de preparación y el costo de almacenaje.
El tamaño óptimo de pedido se localiza en el punto en que se cruzan las curvas del costo de
pedido y la de los costos de almacenaje. Fijándonos en el modelo EOQ (económica order
quintita), el tamaño óptimo de pedido es un punto en el que el costo total de preparación es
igual al costo total de almacenaje.
(Montenegro, 2011) Para el cálculo de la fórmula Q*, se consideran los siguientes aspectos:
Ejercicio 2
Se sabe que un cierto tipo de transistor falla de forma constante una vez cada 105 horas (más de 11 a ´
nos). Si un equipo consta de 100 transistores (en serie) y el equipo se quiere que funcione durante una
semana (168 horas), entonces no se puede asegurar que vaya a funcionar en ese periodo. Pero si
podemos hablar de la probabilidad de fallo (en este caso 85 %). Encontrar como se puede optimizar el
uso de las bombillas en una fábrica X.
Ejercicio 3
Implementación de un modelo de simulación que permita determinar la probabilidad de que un producto
nuevo sea redituable. Se desarrolla un modelo que relaciona el beneficio o utilidad (la medida del
resultado) con varios datos de entrada probabilísticos como demanda, costo de piezas y costo de mano
de obra. El único dato de entrada controlable es si se introduce el producto en el mercado. Este modelo
de la simulación es desarrollado para calcular la sobreventa de boletos de ferrocarril en la ciudad
italiana, por lo cual se tomará en cuenta la linea de espera de cada ferrocarril.
namespace SD_MonteCarlo_VAC
{
public partial class Form1 : Form
{
//Variables
int NumSimulaciones; //Numero de Simulaciones a realizar
//Datos del Modelo
int[] NumLicencias;
double[] ProbabilidadAsc;
double[] ProbabilidadAcu;
double[,] ExtremosIS;
int LicC;
//Modelo
Random rnd;
//Estadistica
int MediaMuestral;
double DesvEstandar;
int ValorMin, ValorMax;
double Significancia;
double IntConfianza;
public Form1()
{
InitializeComponent();
NumLicencias = new int[] { 100, 150, 200, 250, 300 };
ProbabilidadAsc = new double[] { 0.3, 0.2, 0.3, 0.15, 0.05 };
CalcularExtremos();
cargarTablaInicial();
LicC = 200;
}
private void CalcularExtremos()
{
int num = NumLicencias.Length;
ExtremosIS = new double[num,2];
//Calculo de la Propiedad Acumulada para los extremos
ProbabilidadAcu = new double[num];
for (int i = 0; i < ProbabilidadAsc.Length; i++)
{
if (i==0)
{
ProbabilidadAcu[i] = ProbabilidadAsc[i];
}
else
{
ProbabilidadAcu[i] = ProbabilidadAsc[i] + ProbabilidadAcu[i - 1];
}
}
//Colocacion de extremos
for (int i = 0; i < num; i++)
{
if (i==0)
{
ExtremosIS[i, 0] = 0;
ExtremosIS[i, 1] = ProbabilidadAcu[i];
}
else
{
//ExtremosIS[i, 0] = ProbabilidadAcu[i-1];
ExtremosIS[i, 1] = ProbabilidadAcu[i];
}
}
}
private void cargarTablaInicial()
{
DataTable DT = new DataTable();
DT.Columns.Add("Num. Licencias Vendidas", typeof(string));
DT.Columns.Add("Probabilidad", typeof(string));
DT.Columns.Add("Pro. Acumulada", typeof(string));
DT.Columns.Add("Extremo Inferior", typeof(string));
DT.Columns.Add("Extremo Superior", typeof(string));
string[] datos = new string[5];
for (int i = 0; i < ProbabilidadAcu.Length; i++)
{
datos[0] = NumLicencias[i].ToString();
datos[1] = ProbabilidadAsc[i].ToString();
datos[2] = ProbabilidadAcu[i].ToString();
datos[3] = ExtremosIS[i,0].ToString();
datos[4] = ExtremosIS[i, 0].ToString();
DT.Rows.Add(datos);
}
//Asignar DataTable a Datagrid
dataGridView1.DataSource = DT;
}
private void button1_Click(object sender, EventArgs e)
{
leerDatos();
Simular();
}
private void CalculoEstadistico(int Sumatoria, int[]ArregloB)
{
MediaMuestral = Sumatoria / NumSimulaciones;
//raiz(Sumatoria(x-media)^2/Num simulaciones -1
DesvEstandar = 0;
for (int i = 0; i < ArregloB.Length; i++)
{
DesvEstandar += Math.Pow(ArregloB[i] - DesvEstandar, 2);
}
DesvEstandar = Math.Sqrt(DesvEstandar/(NumSimulaciones-1));
txtMedia.Text = MediaMuestral.ToString();
txtDesviacion.Text = DesvEstandar.ToString();
}
private void leerDatos()
{
NumSimulaciones = int.Parse(txtNS.Text);
}
private void Simular()
{
double aleatorio;
rnd = new Random();
int Vedidas;
int Devueltas;
int Beneficio;
//Variables estadisticas
int Sumatoria_Bene=0;
int[] D_Beneficio = new int[NumSimulaciones];
for (int i = 0; i < NumSimulaciones; i++)
{
datos[0] = (i+1).ToString();
aleatorio = rnd.NextDouble();
datos[1] = aleatorio.ToString();
Vedidas = BuscarRango(aleatorio);
datos[2] = Vedidas.ToString();
Devueltas = LicC - Vedidas;
datos[3] = Devueltas.ToString();
Beneficio = Vedidas * 100 + Devueltas * 25 - LicC * 75;
datos[4] = Beneficio.ToString();
DT.Rows.Add(datos);
Sumatoria_Bene += Beneficio;
D_Beneficio[i] = Beneficio;
}
dataGridView2.DataSource = DT;
CalculoEstadistico(Sumatoria_Bene,D_Beneficio);
}
private int BuscarRango(double numBuscar)
{
for (int i = 0; i < 5; i++)
{
if (numBuscar>=ExtremosIS[i,0]&& numBuscar < ExtremosIS[i, 1])
{
if (NumLicencias[i]>LicC)
{
return LicC;
}
else
{
return NumLicencias[i];
}
}
}
return LicC;
}
}
}
Capturas
En la ejecución del programa
Excel
i Aleatorio Lic. Venida Lic. DevueltaCoste Ingresos venta Ingresos Dev. Beneficios
Variable beneficio
Media Muestral 1662,5
Desviacion estandar 3148,547645
Valor MIN -2500
Valor MAX 5000
nivel de significanica 0,05
Amplitud de intervalo de confianza617,1039988
2531,443646
namespace Optimizacion_Industrial_GrupoN._7
{
public partial class Form1 : Form
{
}
private void numRadonmicos()
{
Random rnd = new Random();
double x = rnd.NextDouble();
}
}
}
Capturas
Matlab
Excel
Aplicación: Como se puede optimizar el uso de las bombillas en una fabrica X ?
Datos: 512
T = duracion de una marca de bombilla de bajo consumo en años.
T= 20 datos.
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Web.UI.DataVisualization.Charting;
namespace Simulación_Inventario
{
public partial class Form1 : Form
{
//Variables
private Random rnd;
private int NumSimulaciones;
private double numReposicion,media, desviacionE;
private double utilidadBU, costoUR, costoUE;
//
private double sumUtilidadN;
double SumaDemanda = 0;
double SumaVentas = 0;
double MaxUtilidad = 0;
double MinUtilidad = 1000000000;
public Form1()
{
InitializeComponent();
}
private void LeerDatos()
{
try
{
NumSimulaciones = int.Parse(txtNumS.Text);
numReposicion = double.Parse(txtNivelReposicion.Text);
media = double.Parse(txtMedia.Text);
desviacionE = double.Parse(txtDesviacionEstd.Text);
utilidadBU = double.Parse(txtUnidadBrutaU.Text);
costoUR = double.Parse(txtCostoUnitarioR.Text);
costoUE = double.Parse(txtCostoUnitarioE.Text);
}
catch (Exception)
{
MessageBox.Show("Error en casting de datos");
}
}
private int calcularDemanda(double aleatorio)
{
int demanda;
Chart Chart1 = new Chart();
double resultA =
Chart1.DataManipulator.Statistics.InverseNormalDistribution(aleatorio);
demanda =(int)(media+resultA * desviacionE);
return demanda;
}
}
private void calcular()
{
System.Data.DataTable DT = new System.Data.DataTable();
DT.Columns.Add("Mes", typeof(string));
DT.Columns.Add("Demanda", typeof(string));
DT.Columns.Add("Ventas", typeof(string));
DT.Columns.Add("Utilidad Bruta", typeof(string));
DT.Columns.Add("Costo de retención", typeof(string));
DT.Columns.Add("Costo por escacez", typeof(string));
DT.Columns.Add("Utilidad Neta", typeof(string));
aleatorio = rnd.NextDouble();
int demanda = calcularDemanda(aleatorio);
SumaDemanda += demanda;
datos[1] = demanda.ToString();
double venta;
if (demanda<=numReposicion)
{
venta = demanda;
}
else
{
venta = media;
}
SumaVentas += venta;
datos[2] = venta.ToString();
double utilidadBruta;
utilidadBruta = venta * utilidadBU;
datos[3] = utilidadBruta.ToString();
// Costo de Retención
double costoRetencion;
if (demanda <= numReposicion)
{
costoRetencion = costoUR * (numReposicion - demanda);
}
else
{
costoRetencion = 0;
}
datos[4] = costoRetencion.ToString();
//Costo por escacez
double costoEscacez;
//Utilidad Neta
double utilidadNeta;
utilidadNeta = utilidadBruta - costoRetencion - costoEscacez;
datos[6] = utilidadNeta.ToString();
UtilidadNetaT[i] = utilidadNeta;
if (MaxUtilidad<utilidadNeta)
{
MaxUtilidad = utilidadNeta;
}
if (MinUtilidad>utilidadNeta)
{
MinUtilidad = utilidadNeta;
}
DT.Rows.Add(datos);
sumUtilidadN += utilidadNeta;
}
dataGridView1.DataSource = DT;
obtenerEstadisticas(UtilidadNetaT);
}
private void obtenerEstadisticas(double[] Utilidades)
{
double utilidadMedia;
double desviacionEstandar;
Chart Chart1 = new Chart();
Chart1.Series.Add("Utilidades");
Chart1.Series["Utilidades"].ChartType = SeriesChartType.Column;
for (int i = 0; i < NumSimulaciones; i++)
{
Chart1.Series["Utilidades"].Points.AddY(Utilidades[i]);
}
utilidadMedia = Chart1.DataManipulator.Statistics.Mean("Utilidades");
txtUtilidadM.Text = utilidadMedia.ToString();
desviacionEstandar =
Math.Sqrt(Chart1.DataManipulator.Statistics.Variance("Utilidades", false));
txtDesviacionEstandarU.Text = desviacionEstandar.ToString();
txtUtilidadMax.Text = MaxUtilidad.ToString();
txtUtilidadMin.Text = MinUtilidad.ToString();
txtNivelServicio.Text = (SumaVentas/SumaDemanda)*100+"%";
}
private void btnModificar_Click(object sender, EventArgs e)
{
}
}
}
Capturas
Ejecución del programa
d. Obtención de Resultados
Ejercicio 1
Mediante la aplicación del método de Monte Carlo se pudo simular un evento de la vida real como es
determinar la mejor decisión en la compra de productos para aumentar el beneficio económico, además
que ese método es posible simularlos en diferentes ámbitos como los juegos de azar y aplicaciones
estadísticas así como en el cálculo para la evaluación de integrales.
Ejercicio 2
En este análisis se puede observar que mediante el uso de un análisis de Monte Carlo podemos
evidenciar que los procesos de optimización de maquinarias, es efectivo ya que se determina el nivel
de complejidad que tendrán los mismos, en el caso de las maquinarias es necesarias para conocer el
funcionamiento de las bombillas eléctricas.
Ejercicio 3
En el ejercicio 3 se pudo observar que el método de inventarios se basa en un análisis de Monte Carlo,
se pudo evidenciar que el análisis de inventarios, es factible para determinar el funcionamiento de las
reservas en boletos de ferrocarril.
e. Conclusiones y recomendaciones.
La distribución binomial es una poderosa herramienta probabilística que bien aplicada podrá ayudar a
facilitar los cálculos para la solución de problemas y la validación.
Generalmente conocemos el valor de λ (la cantidad esperada de eventos por unidad de tiempo), y
entonces nos preguntamos cuántos eventos obtendremos en una determinada cantidad de tiempo, o
cuánto tiempo tendremos que esperar hasta observar una determinada cantidad de eventos.
Poisson consiste en preguntar por la cantidad de eventos en el período T (la longitud de un intervalo del
continuo que va a estudiarse). Es decir, dado T, calcular la distribución de k (la cantidad de eventos que
hay en ese intervalo).
La distribución de Poisson debemos tener en cuenta que el número de éxitos no sea mayor al número
de eventos. Esto con la finalidad de que la probabilidad sea la correcta.
Cuando la distribución de Poisson sea menor o igual a el número de eventos, debe tener en cuenta que
se debe restar del número uno, es por ello que se sumaran las probabilidades antecedentes del número.
Se debe tener en cuenta que la distribución de Poisson debe tener el valor del numero épsilon € el cual
es el valor es 2,718281 y este valor no va a ser cambiante en toda la distribución.
f. Referencias.
Stuart, Crainer. Ideas Fundamentales de la Administracin. PANOARAMA PERSON.
1996.México.
Porter, Michel, La ventaja competitiva de las organizaciones. Mc. Graw Hill. 1998. México
Www2.famaf.unc.edu.ar. (2017). Citar un sitio web - Cite This For Me. [online] Available at:
http://www2.famaf.unc.edu.ar/~jgimenez/Modelos_y_Simulacion/2013/clase7.pdf [Accessed
11 Dec. 2017].
Porter, Michel, La ventaja competitiva de las organizaciones. Mc. Graw Hill. 1998. México