Exemple #1
0
        public void EjecutaHilo()
        {
            using (System.IO.Stream fileStream = new FileStream(@"C:\SimulacionesRentas\" + ArchivoSalida, FileMode.Create),
                   bs = new BufferedStream(fileStream))
            {
                Console.WriteLine(ArchivoSalida + " INI");
                using (var file = new BinaryWriter(bs))
                {
                    for (int s = 0; s < (NumeroDeSimulaciones); s++)
                    {
                        simulacion.EjecutaSimulación(file, TA, NumeroDeRentas, CostoDistribuidor, periodosDelPlazo,
                                                     TazaFalloEquipo, TazaCancelación, TazaNoPago);
                        MeanIngresosTotales    += simulacion.Result.IngresosTotales;
                        MeanCostosFallasEquipo += simulacion.Result.CostosFallasEquipo;
                        MeanFallasTotales      += simulacion.Result.FallasTotales;
                        MeanCancelaciones      += simulacion.Result.CuantasCancelaciones;
                        MeanNoPagos            += simulacion.Result.CuantosNoPagos;
                    }
                }
                Console.WriteLine(ArchivoSalida + " FIN");
            }

            RentasData datos = new RentasData();

            byte[] arrBytes;

            using (System.IO.Stream fileStream = new FileStream(@"C:\SimulacionesRentas\" + ArchivoSalida, FileMode.Open),
                   bs = new BufferedStream(fileStream))
            {
                using (var file = new BinaryReader(bs))
                {
                    for (int i = 0; i < 5; i++)
                    {
                        Int32 size = file.ReadInt32();
                        arrBytes = file.ReadBytes(size);
                        datos.Deserialize(ref arrBytes);
                        datos.PrintConsole(ArchivoSalida);
                    }
                }
            }
        }
        public void  EjecutaSimulación(BinaryWriter file, TablaAmortización TA, int NumeroDeRentas, double costoDistribuidor, int periodosDelPlazo, double TazaFalloEquipo, double TazaCancelación, double TazaNoPago)
        {
            int CuantasFallas        = 0;
            int CuantasCancelaciones = 0;
            int CuantosNoPagos       = 0;

            double CostoInicialEquipo = 0;
            double CostosFallasEquipo = 0;
            double IngresosTotales    = 0;
            Renta  renta = new Renta();
            Random rand  = new Random();

            CostoInicialEquipo = costoDistribuidor;
            RentasData datos = new RentasData();

            for (int i = 0; i < NumeroDeRentas; i++)
            {
                renta.SimulaRenta(periodosDelPlazo, TazaFalloEquipo, TazaCancelación, TazaNoPago, rand);
                datos.PagoPeriodico       = TA.PagoPeriodico();
                datos.CostoInicialEquipo  = CostoInicialEquipo;
                datos.FalloEquipo         = renta._FalloEquipo;
                datos.CancelaciónContrato = renta._CancelaciónContrato;
                datos.PeriodoCancelación  = renta._PeriodoCancelación;
                datos.NoPago        = renta._NoPago;
                datos.PeriodoNoPago = renta._PeriodoNoPago;
                datos.Plazos        = periodosDelPlazo;
                if (renta._FalloEquipo)
                {
                    CuantasFallas++;
                }
                double PagoTotal = 0;
                if (renta._CancelaciónContrato)
                {
                    CuantasCancelaciones++;
                    PagoTotal        = renta._PeriodoCancelación * TA.PagoPeriodico();
                    IngresosTotales += PagoTotal;
                    datos.PagoTotal  = PagoTotal;
                    //Console.WriteLine(PagoTotal);
                }
                else
                {
                    if (renta._NoPago)
                    {
                        CuantosNoPagos++;
                        PagoTotal        = (renta._PeriodoNoPago - 1) * TA.PagoPeriodico();
                        IngresosTotales += PagoTotal;
                        datos.PagoTotal  = PagoTotal;
                        //Console.WriteLine(PagoTotal);
                    }
                    else
                    {
                        PagoTotal        = periodosDelPlazo * TA.PagoPeriodico();
                        IngresosTotales += PagoTotal;
                        datos.PagoTotal  = PagoTotal;
                        //Console.WriteLine(PagoTotal);
                    }
                }
                byte[] byteArr       = datos.Serialize();
                Int32  sizeOfarrByte = byteArr.Length;
                file.Write(sizeOfarrByte);
                file.Write(byteArr);
            }
            CostosFallasEquipo          = CuantasFallas * costoDistribuidor;
            Result.PagoMensual          = TA.PagoPeriodico();
            Result.CostoInicialEquipo   = costoDistribuidor * NumeroDeRentas;
            Result.IngresosTotales      = IngresosTotales;
            Result.CostosFallasEquipo   = CostosFallasEquipo;
            Result.FallasTotales        = CuantasFallas;
            Result.CuantasCancelaciones = CuantasCancelaciones;
            Result.CuantosNoPagos       = CuantosNoPagos;
        }