Esempio n. 1
0
        //Constructor que recibe el minimo y maximo de valores posibles y el numero de particiones
        //Se calcula la longitud del gen y el incremento entre intervalos
        //Se crea un gen de manera aleatoria
        public Cromosoma(int min, int max, int P)
        {
            this.min = min;
            this.max = max;
            this.P   = P;

            size = (int)Math.Ceiling(Math.Log(P, 2));

            dx = Math.Abs(min - max);
            dx = dx / P;

            gene = new Gene(size);
        }
Esempio n. 2
0
        //Operador de AG: cruza, tipo: 1 punto
        //Cruza a este individuo con otro, intercalando apartir del punto de cruza una parte del cromosoma
        //Regresa dos individuos, uno más parecido el padre y otro mas parecido a la madre
        public Individuo[] CruzaPor1Punto(Individuo individuo, int puntoDeCruza)
        {
            Gene genePadre = this.cromosoma.getGene();
            Gene geneMadre = individuo.cromosoma.getGene();

            Individuo[] hijos = new Individuo[2];
            string      hijo1 = genePadre.GetBinario().Substring(0, puntoDeCruza) + geneMadre.GetBinario().Substring(puntoDeCruza);
            string      hijo2 = geneMadre.GetBinario().Substring(0, puntoDeCruza) + genePadre.GetBinario().Substring(puntoDeCruza);

            hijos[0] = new Individuo(hijo1, valorMinimo, valorMaximo, particiones);
            hijos[1] = new Individuo(hijo2, valorMinimo, valorMaximo, particiones);

            return(hijos);
        }