Esta es la ultima libreria aqui les dejo el codigo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Montecarlo
{
public class montecarloSimulacion
{
public string prob1;
public string prob2;
public string prob3;
public string prob4;
public string prob5;
public string probac1;
public string probac2;
public string probac3;
public string probac4;
public string probac5;
public string intervalo1;
public string intervalo2;
public string intervalo3;
public string intervalo4;
public string intervalo5;
public double[] Resultado;
public string ProbaSimulada;
public string ProbaEsperada;
public void realizar(double digitos, double tamanio, double[] numerosaleatorios, double demanda1, double demanda2, double demanda3, double demanda4, double demanda5, double dias1, double dias2, double dias3, double dias4, double dias5)
{
string aumentadigitos = "1";
string inicia = "0";
for (int i = 2; i < int.Parse(digitos.ToString()); i++)
{
aumentadigitos = aumentadigitos + "0";
inicia = inicia + "0";
}
aumentadigitos = aumentadigitos + ".00";
inicia = inicia + "1";
double demandado1 = demanda1;
double demandado2 = demanda2;
double demandado3 = demanda3;
double demandado4 = demanda4;
double demandado5 = demanda5;
double frecdias1 = dias1;
double frecdias2 = dias2;
double frecdias3 = dias3;
double frecdias4 = dias4;
double frecdias5 = dias5;
double totaldias = frecdias1 + frecdias2 + frecdias3 + frecdias4 + frecdias5;
double acumulada1 = (frecdias1 / totaldias);
double acumulada2 = (frecdias2 / totaldias);
double acumulada3 = (frecdias3 / totaldias);
double acumulada4 = (frecdias4 / totaldias);
double acumulada5 = (frecdias5 / totaldias);
double promedioReal = (demandado1 * acumulada1) + (demandado2 * acumulada2) + (demandado3 * acumulada3) + (demandado4 * acumulada4) + (demandado5 * acumulada5);
prob1 = acumulada1.ToString(".##");
prob2 = acumulada2.ToString(".##");
prob3 = acumulada3.ToString(".##");
prob4 = acumulada4.ToString(".##");
prob5 = acumulada5.ToString(".##");
probac1 = acumulada1.ToString(".##");
probac2 = (acumulada1 + acumulada2).ToString(".##");
probac3 = (acumulada1 + acumulada2 + acumulada3).ToString(".##");
probac4 = (acumulada1 + acumulada2 + acumulada3 + acumulada4).ToString(".##");
probac5 = (acumulada1 + acumulada2 + acumulada3 + acumulada4 + acumulada5).ToString(".##") + ".00";
intervalo1 = inicia + " - " + ((double.Parse(probac1) * 100.00) * (double.Parse(aumentadigitos))).ToString();
intervalo2 = ((((double.Parse(probac1) * 100.00)) * (double.Parse(aumentadigitos))) + 1).ToString() + " - " + ((double.Parse(probac2) * 100.00) * (double.Parse(aumentadigitos))).ToString();
intervalo3 = ((((double.Parse(probac2) * 100.00)) * (double.Parse(aumentadigitos))) + 1).ToString() + " - " + ((double.Parse(probac3) * 100.00) * (double.Parse(aumentadigitos))).ToString();
intervalo4 = ((((double.Parse(probac3) * 100.00)) * (double.Parse(aumentadigitos))) + 1).ToString() + " - " + ((double.Parse(probac4) * 100.00) * (double.Parse(aumentadigitos))).ToString();
intervalo5 = ((((double.Parse(probac4) * 100.00)) * (double.Parse(aumentadigitos))) + 1).ToString() + " - " + (100.00 * (double.Parse(aumentadigitos))).ToString();
double a1 = ((double.Parse(probac1) * 100.00) * (double.Parse(aumentadigitos)));
double a2 = ((double.Parse(probac2) * 100.00) * (double.Parse(aumentadigitos)));
double a3 = ((double.Parse(probac3) * 100.00) * (double.Parse(aumentadigitos)));
double a4 = ((double.Parse(probac4) * 100.00) * (double.Parse(aumentadigitos)));
double a5 = (100.00 * (double.Parse(aumentadigitos)));
Resultado = new double[int.Parse(tamanio.ToString())];
double promedio = 0.00;
for (int i = 0; i < int.Parse(tamanio.ToString()); i++)
{
if (numerosaleatorios[i] > 1 && numerosaleatorios[i] <= a1)
{
Resultado[i] = demandado1;
}
else
if (numerosaleatorios[i] > a1 && numerosaleatorios[i] <= a2)
{
Resultado[i] = demandado2;
}
else
if (numerosaleatorios[i] > a2 && numerosaleatorios[i] <= a3)
{
Resultado[i] = demandado3;
}
else
if (numerosaleatorios[i] > a3 && numerosaleatorios[i] <= a4)
{
Resultado[i] = demandado4;
}
else
if (numerosaleatorios[i] > a4 && numerosaleatorios[i] <= a5)
{
Resultado[i] = demandado5;
}
else { }
promedio = promedio + Resultado[i];
}
promedio = promedio / int.Parse(tamanio.ToString());
ProbaSimulada = promedio.ToString(".####");
ProbaEsperada = promedioReal.ToString(".####");
}
}
}
con esto acabamos por completo toda la simulacion de montecarlo
espero que les sea de utilidad para sus programas
saludos
No hay comentarios:
Publicar un comentario