Пример #1
0
        private void btnGenerar_Click(object sender, EventArgs e)
        {
            progressBar.Value             = 0;
            lblPorcClientePerdido.Visible = false;
            dgvSimulacion.Rows.Clear();
            dgvSimulacion.Enabled = false;
            btnGenerar.Visible    = false;
            progressBar.Visible   = true;

            Condiciones cIniciales = ObtenerCondiciones();

            if (Validar(cIniciales))
            {
                MessageBox.Show("Condiciones Erroneas");
                btnGenerar.Visible = true;
                return;
            }
            sim = new Simulacion(cIniciales);
            AgregarFila(sim.estadoAnterior);

            int i = 0;
            EstadoSimulacion s = sim.estadoAnterior;

            while (i <= Convert.ToInt32(txtCantSim.Text))
            {
                s = sim.GenerarSimulacion();
                if (s.numeroEvento >= Convert.ToInt32(txtSimApartir.Text) && s.numeroEvento <= Convert.ToInt32(txtSimApartir.Text) + 50)
                {
                    AgregarFila(s);
                }
                else if (s.numeroEvento % Convert.ToInt32(txtMostrarCada.Text) == 0)
                {
                    AgregarFila(s);
                }

                if (i == Convert.ToInt32(txtCantSim.Text) / 10)
                {
                    progressBar.Value = 10;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 2)
                {
                    progressBar.Value = 20;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 3)
                {
                    progressBar.Value = 30;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 4)
                {
                    progressBar.Value = 40;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 5)
                {
                    progressBar.Value = 50;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 60)
                {
                    progressBar.Value = 60;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 7)
                {
                    progressBar.Value = 70;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 8)
                {
                    progressBar.Value = 80;
                }
                if (i == Convert.ToInt32(txtCantSim.Text) / 10 * 9)
                {
                    progressBar.Value = 90;
                }
                if (i == Convert.ToInt32(txtCantSim.Text))
                {
                    progressBar.Value = 100;
                }
                i++;
            }
            lblPorcClientePerdido.Visible = true;
            lblPorcClientePerdido.Text    = StringifyCifra((double)(s.clientesPerdidos / (double)s.numeroCliente) * 100) + "%";
            progressBar.Visible           = false;
            btnGenerar.Visible            = true;
            dgvSimulacion.Enabled         = true;
        }
Пример #2
0
        private void AgregarFila(EstadoSimulacion estado)
        {
            int    NumeroEvento                = estado.numeroEvento;
            Evento TipoEvento                  = estado.eventoActual;
            string reloj                       = StringifyHora(estado.tiempo);
            string LlegadaProximoAlumno        = estado.tiempoLlegadaProximoAlumno > estado.condicionesIniciales.HorasSimulacion * 3600 ? " - " : StringifyHora(estado.tiempoLlegadaProximoAlumno);
            string LlegadaProximoMantenimiento = estado.tiempoLlegadaProximoMantenimiento > estado.condicionesIniciales.HorasSimulacion * 3600 ? " - " : StringifyHora(estado.tiempoLlegadaProximoMantenimiento);
            string colaAlumnos                 = estado.colaAlumnos.Count.ToString();
            string colaMantenimiento           = estado.ColaMantenimientos.Count.ToString();
            string regreso                     = estado.colaAbandono.Count > 0 && estado.colaAbandono.First().TiempoRegreso < estado.condicionesIniciales.HorasSimulacion * 3600 ? StringifyHora(estado.colaAbandono.First().TiempoRegreso) : " - ";

            #region Equipo1
            string    e1Estado          = estado.equipo1.Libre ? "Libre" : "Ocupado";
            Ocupacion e1TipoOcupacion   = Ocupacion.Libre;
            string    e1TiempoOcupacion = "-";
            string    e1FinOcupacion    = "-";
            string    e1Alumno          = "-";

            int cantAbandono = estado.AlumnosAbandono;
            int contadorE1   = estado.equipo1.CantidadInscripciones;
            int contadorE2   = estado.equipo2.CantidadInscripciones;
            int contadorE3   = estado.equipo3.CantidadInscripciones;
            int contadorE4   = estado.equipo4.CantidadInscripciones;
            int contadorE5   = estado.equipo5.CantidadInscripciones;

            if (estado.equipo1.Libre == false)
            {
                e1TipoOcupacion   = estado.equipo1.TipoOcupacion;
                e1TiempoOcupacion = StringifyHora(estado.equipo1.TiempoEjecucion);
                e1FinOcupacion    = StringifyHora(estado.equipo1.TiempoFinAtencion);
                if (e1TipoOcupacion == Ocupacion.Inscripcion)
                {
                    e1Alumno = estado.equipo1.alumno.id.ToString();
                }
            }
            #endregion

            #region Equipo2
            string    e2Estado          = estado.equipo2.Libre ? "Libre" : "Ocupado";
            Ocupacion e2TipoOcupacion   = Ocupacion.Libre;
            string    e2TiempoOcupacion = "-";
            string    e2FinOcupacion    = "-";
            string    e2Alumno          = "-";
            if (estado.equipo2.Libre == false)
            {
                e2TipoOcupacion   = estado.equipo2.TipoOcupacion;
                e2TiempoOcupacion = StringifyHora(estado.equipo2.TiempoEjecucion);
                e2FinOcupacion    = StringifyHora(estado.equipo2.TiempoFinAtencion);
                if (e2TipoOcupacion == Ocupacion.Inscripcion)
                {
                    e2Alumno = estado.equipo2.alumno.id.ToString();
                }
            }
            #endregion

            #region Equipo3
            string    e3Estado          = estado.equipo3.Libre ? "Libre" : "Ocupado";
            Ocupacion e3TipoOcupacion   = Ocupacion.Libre;
            string    e3TiempoOcupacion = "-";
            string    e3FinOcupacion    = "-";
            string    e3Alumno          = "-";
            if (estado.equipo3.Libre == false)
            {
                e3TipoOcupacion   = estado.equipo3.TipoOcupacion;
                e3TiempoOcupacion = StringifyHora(estado.equipo3.TiempoEjecucion);
                e3FinOcupacion    = StringifyHora(estado.equipo3.TiempoFinAtencion);
                if (e3TipoOcupacion == Ocupacion.Inscripcion)
                {
                    e3Alumno = estado.equipo3.alumno.id.ToString();
                }
            }
            #endregion

            #region Equipo4
            string    e4Estado          = estado.equipo4.Libre ? "Libre" : "Ocupado";
            Ocupacion e4TipoOcupacion   = Ocupacion.Libre;
            string    e4TiempoOcupacion = "-";
            string    e4FinOcupacion    = "-";
            string    e4Alumno          = "-";
            if (estado.equipo4.Libre == false)
            {
                e4TipoOcupacion   = estado.equipo4.TipoOcupacion;
                e4TiempoOcupacion = StringifyHora(estado.equipo4.TiempoEjecucion);
                e4FinOcupacion    = StringifyHora(estado.equipo4.TiempoFinAtencion);
                if (e4TipoOcupacion == Ocupacion.Inscripcion)
                {
                    e4Alumno = estado.equipo4.alumno.id.ToString();
                }
            }
            #endregion

            #region Equipo5
            string    e5Estado          = estado.equipo5.Libre ? "Libre" : "Ocupado";
            Ocupacion e5TipoOcupacion   = Ocupacion.Libre;
            string    e5TiempoOcupacion = "-";
            string    e5FinOcupacion    = "-";
            string    e5Alumno          = "-";
            if (estado.equipo5.Libre == false)
            {
                e5TipoOcupacion   = estado.equipo5.TipoOcupacion;
                e5TiempoOcupacion = StringifyHora(estado.equipo5.TiempoEjecucion);
                e5FinOcupacion    = StringifyHora(estado.equipo5.TiempoFinAtencion);
                if (e5TipoOcupacion == Ocupacion.Inscripcion)
                {
                    e5Alumno = estado.equipo5.alumno.id.ToString();
                }
            }
            #endregion

            dvgSim.Rows.Add(NumeroEvento, TipoEvento, reloj, LlegadaProximoAlumno, LlegadaProximoMantenimiento, regreso, colaAlumnos, colaMantenimiento,
                            e1Estado, e1TipoOcupacion, e1Alumno, e1TiempoOcupacion, e1FinOcupacion,
                            e2Estado, e2TipoOcupacion, e2Alumno, e2TiempoOcupacion, e2FinOcupacion,
                            e3Estado, e3TipoOcupacion, e3Alumno, e3TiempoOcupacion, e3FinOcupacion,
                            e4Estado, e4TipoOcupacion, e4Alumno, e4TiempoOcupacion, e4FinOcupacion,
                            e5Estado, e5TipoOcupacion, e5Alumno, e5TiempoOcupacion, e5FinOcupacion,
                            cantAbandono, contadorE1, contadorE2, contadorE3, contadorE4, contadorE5);
        }