/// <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>()));
        }
Example #2
0
        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;
                }
            }
        }