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; }
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); }