/// <summary> /// Método que inicia el algoritmo evolutivo para obtener las generaciones /// </summary> /// <param name="sentense"> Texto de la generación perfecta </param> /// <returns> Lista con el mejor de cada generación </returns> public List <Loop> InitAlgorithm(string sentense) { tempListBankLoop = new List <Loop>(); EvolutionaryAlgorithm evolutionaryAlgorithm = new EvolutionaryAlgorithm(); Loop loop = new Loop(); evolutionaryAlgorithm.Sentense = sentense; evolutionaryAlgorithm.AddMissingCharacter(sentense); // 1. Iniciar con una cadena aleatoria de 30 caracteres. loop.Sentence = evolutionaryAlgorithm.FillSentense(); loop.Value = evolutionaryAlgorithm.GetScore(loop.Sentence); // 2. Realizar 100 copias de la cadena inicial, teniendo en cuenta que cada carácter en la cadena copiada // tendrá un 5% de probabilidad de que sea reemplazado por un nuevo carácter aleatorio. return(evolutionaryAlgorithm.GenerateCopy(loop, 1, new List <Loop>())); }
private void Generate_Click(object sender, EventArgs e) { string perfectGeneration = TbPerfectGeneration.Text; if (perfectGeneration.Length > 0) { this.DGVGeneration.Rows.Clear(); this.DGVGeneration.Visible = true; EvolutionaryAlgorithm evolutionaryAlgorithm = new EvolutionaryAlgorithm(); List <Loop> loops = evolutionaryAlgorithm.InitAlgorithm(perfectGeneration); for (int pos = 0; pos < loops.Count(); pos++) { int r = DGVGeneration.Rows.Add(); DGVGeneration.Rows[r].Cells["ClGeneration"].Value = loops[pos].Generation; DGVGeneration.Rows[r].Cells["ClMutation"].Value = loops[pos].Sentence; DGVGeneration.Rows[r].Cells["ClScore"].Value = loops[pos].Value; } } }