Esempio n. 1
0
        private string GeneraGanadores(List <EntIndividuo> lstEntIndividuo)
        {
            string ganadores = string.Empty;

            for (int i = 0; i < lstEntIndividuo.Count; i++)
            {
                EntIndividuo oEntIndividuo1 = lstEntIndividuo[i];
                for (int j = 0; j < lstEntIndividuo.Count; j++)
                {
                    EntIndividuo oEntIndividuo2 = lstEntIndividuo[j];
                    if (oEntIndividuo1.rival == oEntIndividuo2.identificador)
                    {
                        if (oEntIndividuo1.valorFX >= oEntIndividuo2.valorFX)
                        {
                            ganadores += oEntIndividuo1.identificador.ToString() + ",";
                        }
                        else
                        {
                            ganadores += oEntIndividuo2.identificador.ToString() + ",";
                        }
                    }
                }
            }
            return(ganadores);
        }
Esempio n. 2
0
        /// <summary>
        /// Genera la población inicial
        /// </summary>
        /// <param name="cantidadIndividuos">cantidad de individuos que integrarán la población</param>
        /// <returns></returns>
        public List <EntIndividuo> GeneraArreglo(int cantidadIndividuos)
        {
            List <EntIndividuo> lstEntIndividuo = new List <EntIndividuo>();

            for (int i = 0; i < cantidadIndividuos; i++)
            {
                EntIndividuo oEntIndividuo = new EntIndividuo();
                oEntIndividuo.identificador = i + 1;
                oEntIndividuo.individuo     = this.GeneraIndividuo();
                oEntIndividuo.valor         = this.CalculaValor(oEntIndividuo.individuo);
                oEntIndividuo.valorFX       = oEntIndividuo.valor * oEntIndividuo.valor;
                oEntIndividuo.puntoCruce    = this.GeneraAleatorio(1, 3);

                for (int j = 0; j < 1; j++)
                {
                    oEntIndividuo.rival = this.GeneraAleatorio(1, cantidadIndividuos);
                    if (oEntIndividuo.identificador == oEntIndividuo.rival)
                    {
                        j--;
                    }
                }

                oEntIndividuo.cadenaCompleta = this.GeneraCadenaCompeta(oEntIndividuo);
                lstEntIndividuo.Add(oEntIndividuo);
            }

            return(lstEntIndividuo);
        }
Esempio n. 3
0
        private List <EntIndividuo> GeneraHijos(List <EntIndividuo> lstEntIndividuoPadres, int cantidadIndividuos)
        {
            List <EntIndividuo> lstEntIndividuoHijos = new List <EntIndividuo>();
            int identificador = 0;

            for (int i = 0; i < lstEntIndividuoPadres.Count; i++)
            {
                EntIndividuo oEntIndividuoPadre1 = lstEntIndividuoPadres[i];
                for (int j = 0; j < lstEntIndividuoPadres.Count; j++)
                {
                    EntIndividuo oEntIndividuoPadre2 = lstEntIndividuoPadres[j];
                    if (oEntIndividuoPadre1.identificador != oEntIndividuoPadre2.identificador && oEntIndividuoPadre2.esValidado == false)
                    {
                        lstEntIndividuoPadres[j].esValidado = true;
                        EntIndividuo oEntIndividuoHijo1 = new EntIndividuo();
                        EntIndividuo oEntIndividuoHijo2 = new EntIndividuo();
                        identificador++;
                        oEntIndividuoHijo1.identificador = identificador;
                        oEntIndividuoHijo1.individuo    += oEntIndividuoPadre1.individuo.Substring(0, oEntIndividuoPadre1.puntoCruce);
                        oEntIndividuoHijo1.individuo    += oEntIndividuoPadre2.individuo.Substring(oEntIndividuoPadre1.puntoCruce - 1, oEntIndividuoPadre1.individuo.Length - oEntIndividuoPadre1.puntoCruce);
                        oEntIndividuoHijo1.valor         = this.CalculaValor(oEntIndividuoHijo1.individuo);
                        oEntIndividuoHijo1.valorFX       = oEntIndividuoHijo1.valor * oEntIndividuoHijo1.valor;
                        oEntIndividuoHijo1.puntoCruce    = this.GeneraAleatorio(1, 3);
                        for (int x = 0; x < 1; x++)
                        {
                            oEntIndividuoHijo1.rival = this.GeneraAleatorio(1, cantidadIndividuos);
                            if (oEntIndividuoHijo1.identificador == oEntIndividuoHijo1.rival)
                            {
                                x--;
                            }
                        }
                        oEntIndividuoHijo1.cadenaCompleta = this.GeneraCadenaCompeta(oEntIndividuoHijo1);

                        identificador++;
                        oEntIndividuoHijo2.identificador = identificador;
                        oEntIndividuoHijo2.individuo    += oEntIndividuoPadre2.individuo.Substring(0, oEntIndividuoPadre1.puntoCruce);
                        oEntIndividuoHijo2.individuo    += oEntIndividuoPadre1.individuo.Substring(oEntIndividuoPadre1.puntoCruce - 1, oEntIndividuoPadre1.individuo.Length - oEntIndividuoPadre1.puntoCruce);
                        oEntIndividuoHijo2.valor         = this.CalculaValor(oEntIndividuoHijo2.individuo);
                        oEntIndividuoHijo2.valorFX       = oEntIndividuoHijo2.valor * oEntIndividuoHijo1.valor;
                        oEntIndividuoHijo2.puntoCruce    = this.GeneraAleatorio(1, 3);
                        for (int x = 0; x < 1; x++)
                        {
                            oEntIndividuoHijo2.rival = this.GeneraAleatorio(1, cantidadIndividuos);
                            if (oEntIndividuoHijo2.identificador == oEntIndividuoHijo2.rival)
                            {
                                x--;
                            }
                        }
                        oEntIndividuoHijo2.cadenaCompleta = this.GeneraCadenaCompeta(oEntIndividuoHijo2);

                        lstEntIndividuoHijos.Add(oEntIndividuoHijo1);
                        lstEntIndividuoHijos.Add(oEntIndividuoHijo2);
                    }
                }
            }
            return(lstEntIndividuoHijos);
        }
Esempio n. 4
0
        private string GeneraCadenaCompeta(EntIndividuo oEntIndividuo)
        {
            string cadena = " | " + oEntIndividuo.identificador.ToString("00") + " | " + oEntIndividuo.individuo +
                            " | " + oEntIndividuo.valor.ToString("000") + " | " +
                            oEntIndividuo.valorFX.ToString("000") + " | " + oEntIndividuo.rival.ToString("00") +
                            " | " + oEntIndividuo.puntoCruce.ToString("00") + " |";

            return(cadena);
        }