private void iniciarEvolucion(object sender, EventArgs e) { List <Imagen> imagenesFinales = new List <Imagen>(); if (!validateInput()) { MessageBox.Show("Por favor inserte parámetros correctos.", "Error en las configuraciones", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } button1.Text = "Detener"; SingletonCache singleton = SingletonCache.Instance; singleton.DistGChecked = DistanciaGCheck.Checked; singleton.DistManChecked = DistanciaManCheck.Checked; singleton.histColorChecked = histColorCheck.Checked; singleton.histFormaChecked = histFormaCheck.Checked; singleton.tamPoblacion = Int32.Parse(entryPoblacion.Text); singleton.porcCruses = float.Parse(entryCruces.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.porcMenosApt = float.Parse(entryMenosApt.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.porcMutacion = float.Parse(entryMutacion.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.cantidadItereaciones = Int32.Parse(entryIteraciones.Text); SingletonCache.crearEstadisticas(); AlgoritmoGenetico.primeraGeneracion(pixel); imagenGenerada.Image = singleton.poblacion[0].image; singleton.indMenosAptoHist = singleton.poblacion[singleton.tamPoblacion - 1]; singleton.indMasAptoHist = singleton.poblacion[0]; updateStatistics(); singleton.objetivo.calcularDiferencia(singleton.objetivo); Console.WriteLine(singleton.objetivo.diferencia); bool trampa = conTrampaCheck.Checked; if (trampa) { for (int i = 1; i < SingletonCache.Instance.cantidadItereaciones; i++) { if (continuar) { trampa = false; if (i % 10 == 0) { trampa = true; } AlgoritmoGenetico.siguienteGeneracion(trampa); SingletonCache.Instance.numGeneracion++; updateStatistics(); if ((i - 1) % (SingletonCache.Instance.cantidadItereaciones / 10) == 0) { imagenesFinales.Add(SingletonCache.Instance.indMasAptoGen); SingletonCache.agregarGeneracion(); } } else { break; } } } else { int boosts = (SingletonCache.Instance.cantidadItereaciones / 5); for (int i = 1; i < SingletonCache.Instance.cantidadItereaciones; i++) { if (continuar) { trampa = false; if (i % boosts == 0) { trampa = true; } AlgoritmoGenetico.siguienteGeneracion(trampa); SingletonCache.Instance.numGeneracion++; updateStatistics(); if ((i - 1) % (SingletonCache.Instance.cantidadItereaciones / 10) == 0) { imagenesFinales.Add(SingletonCache.Instance.indMasAptoGen); SingletonCache.agregarGeneracion(); } } else { break; } } } if (continuar) { Form2 muestraResultados = new Form2(this); singleton.imagenesFinales = imagenesFinales; muestraResultados.pictureBox1.Image = (imagenesFinales[0].image); muestraResultados.pictureBox2.Image = (imagenesFinales[1].image); muestraResultados.pictureBox3.Image = (imagenesFinales[2].image); muestraResultados.pictureBox4.Image = (imagenesFinales[3].image); muestraResultados.pictureBox5.Image = (imagenesFinales[4].image); muestraResultados.pictureBox6.Image = (imagenesFinales[5].image); muestraResultados.pictureBox7.Image = (imagenesFinales[6].image); muestraResultados.pictureBox8.Image = (imagenesFinales[7].image); muestraResultados.pictureBox9.Image = (imagenesFinales[8].image); muestraResultados.pictureBox10.Image = (imagenesFinales[9].image); muestraResultados.Visible = true; Visible = false; } else { MessageBox.Show("Se ha detenido el programa", "Detención manual", MessageBoxButtons.OK, MessageBoxIcon.Information); Restablecer(); } }