Ejemplo n.º 1
0
 public string ListaInasistencias()
 {
     return(Inasistencias.ToString());
 }
Ejemplo n.º 2
0
        //Iniciar Simulacion

        private void btnIniciar_Click(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                dgvMonteCarlo.Rows.Clear();

                int estrategia;

                double gananciaPasajero;
                double costoReprog;
                double aux = 0;

                GananciaAcumulada = 0;

                cantidadVuelos   = int.Parse(txtNroVuelos.Text);
                Desde            = int.Parse(txtDesde.Text);
                Hasta            = int.Parse(txtHasta.Text);
                gananciaPasajero = double.Parse(txtGanancia.Text);
                costoReprog      = double.Parse(txtCosto.Text);
                estrategia       = int.Parse(cmbEstrategia.SelectedItem.ToString());

                lblTituloEstrategia.Text = "Estrategia de Sobreventa de " + estrategia.ToString() + " Reservas posibles";

                //Calculo de prob acumuladas guardando en la lista probAcumulada
                for (int i = 0; i < dgv_probabilidades.Rows.Count; i++)
                {
                    aux = Convert.ToDouble(dgv_probabilidades.Rows[i].Cells[2].Value);

                    probAcumulada.Add(aux);
                }

                string[] array = new string[dgvMonteCarlo.Columns.Count];

                if (cmbVersion.SelectedIndex == 1)
                {
                    //Carga de datos en el excel
                    for (int i = 0; i < dgvMonteCarlo.Columns.Count; i++)
                    {
                        array[i] = dgvMonteCarlo.Columns[i].HeaderText;
                    }

                    oAlmacenamiento.newFile();
                    oAlmacenamiento.saveData(array);
                }


                for (int i = 0; i < cantidadVuelos; i++)
                {
                    int NroVuelo = i + 1;

                    double RNDAsistencia = Math.Truncate(oGenerador.generadorUniforme() * 10000) / 10000;

                    int Asistencias = compareRandom(RNDAsistencia, probAcumulada);

                    int Inasistencias;
                    int CantPasajeros;
                    int PasajerosReprogramados;

                    if (Asistencias > 30)
                    {
                        Inasistencias          = 0;
                        CantPasajeros          = 30;
                        PasajerosReprogramados = Asistencias - 30;
                    }
                    else
                    {
                        Inasistencias          = 30 - Asistencias;
                        CantPasajeros          = Asistencias;
                        PasajerosReprogramados = 0;
                    }

                    double GananciaVuelo = Math.Round((CantPasajeros * gananciaPasajero), 2);

                    double CostoReprog = Math.Round((PasajerosReprogramados * costoReprog), 2);

                    double GananciaNeta = GananciaVuelo - CostoReprog;

                    GananciaAcumulada += GananciaNeta;

                    if ((NroVuelo >= Desde && NroVuelo <= Hasta) || NroVuelo == cantidadVuelos)
                    {
                        dgvMonteCarlo.Rows.Add(NroVuelo, RNDAsistencia, Asistencias, Inasistencias, CantPasajeros, PasajerosReprogramados, GananciaVuelo, CostoReprog, GananciaNeta, GananciaAcumulada);
                    }

                    array = new string[] { NroVuelo.ToString(), RNDAsistencia.ToString(), Asistencias.ToString(), Inasistencias.ToString(), CantPasajeros.ToString(), PasajerosReprogramados.ToString(), GananciaVuelo.ToString(), CostoReprog.ToString(), GananciaNeta.ToString(), GananciaAcumulada.ToString() };

                    if (cmbVersion.SelectedIndex == 1)
                    {
                        oAlmacenamiento.saveData(array);
                    }
                }

                double GananciaPromedio = Math.Round((GananciaAcumulada / (double)cantidadVuelos), 2);

                cargarDatosEstrategias(estrategia, gananciaPasajero, costoReprog, GananciaPromedio);

                btnIniciar.Enabled = false;
            }
        }