• No se han encontrado resultados

4.4. Métodos de Selección

4.4.8. Selección Jerárquica

Los individuos atraviesan múltiples rondas de selección en cada generación, haciéndose cada vez más discriminatorias y rigurosas. La ventaja de este método es que reduce el tiempo total de cálculo.

4.5.

Cruzamiento

Una vez que se han generado los individuos y han sido seleccionados el siguiente operador genético en entrar en acción es el cruce (Crossover). El cruzamiento, requiere dos individuos que intercambien segmentos de su cromosoma, produciendo uno o dos individuos llamados descendencia artificial. Este proceso simula la combinación de los cromosomas del padre y la madre en la reproducción sexual.

29

El cruce (Crossover) es un método basado en la estrategia de reproducción sexual. Opera en la transición de generaciones y es aplicada al 90% de los individuos seleccionados. Existen diferentes métodos de cruce, pero la mayoría opera de dos maneras diferentes. La primera es llamada estrategia destructiva, donde los descendientes se insertarán en la nueva población, aunque sus padres tengan un mejor fitness. La otra estrategia es llamada no destructiva. Consiste en que si la descendencia no supera el fitness de los padres no se insertarán en la siguiente población. La idea del cruce consiste en que si se toman dos individuos con buena aptitud se obtiene una descendencia que comparte los genes de ambos padres, y por lo tanto, existe una alta posibilidad de que los genes heredados aumenten la aptitud del hijo. Al compartir las características buenas de ambos padres, la descendencia, o al menos alguna parte de ella, debiese ser mejor que la de los padres por separado.

Existen muchos tipos de cruce, pero los más utilizados son tres: Cruce de 1 punto, Cruce de 2 puntos y Cruce uniforme.

4.5.1. Cruce de 1 punto

El cruce de 1 punto comienza con la selección de dos individuos, donde se cortan sus cromosomas por un punto seleccionado aleatoriamente o no, para generar dos segmentos en cada cromosoma. Luego se intercambian los segmentos de los padres para generar dos nuevos descendientes.

Padre 1 Descendencia 1

0 1 0 0 1 1 1 1 0 0 1 1 Padre 2 Descendencia 2

1 1 1 0 0 0 0 1 1 0 0 0

Figura 14. Esquema del Cruzamiento de 1 punto

El siguiente código, esboza de manera genérica lo que podría ser un operador de cruce. Funciona cortando el material genético de dos cromosomas diferentes y formando uno tercer individuo que es conocido como hijo. En este operador, cada cromosoma tiene 8 genes y cada tira es cortada en dos. El primero individuo aporta la primera mitad del cromosoma, y el segundo la otra mitad.

Se puede decir que la característica más importante de un AG es el uso del cruce o crossover. Un punto de cruce es la forma más simple de este operador. Consiste en elegir un punto aleatoriamente donde los cromosomas de los padres serán intercambiados para crear dos descendientes. La idea es combinar los padres para producir diferentes cromosomas.

30

namespace CrossOver {

class Cruzamiento {

static void Main(string[] args) {

int i, j, nCount = 0; int[] Son = new int[8]; int[] C1 = new int[8]; int[] C2 = new int[8]; C1 = Chromosome(); C2 = Chromosome(); for (i = 0; i <= 3; i++) { Son[i] = C1[i]; } for (i = 4; i <= 7; i++) { Son[i] = C2[i]; } for (j = 0; j <= Son.GetUpperBound(0); j++) {

Console.WriteLine("the son has in position {0} the value {1}", j, Son[j]); if (Son[j] == 1) { nCount = nCount + 1; } }

Console.WriteLine("the total fitness of the Son is: {0}", nCount); Console.ReadLine();

} }

Pseudocódigo clase Cruzamiento

1. Crear tres listas de la misma longitud. Dos listas servirán para definir a los padres y la tercera para el hijo.

2. Llamar a la clase Chromosome dos veces para crear dos cromosomas que servirán de padres.

3. Elegir un punto de corte. En este caso 3

4. Copiar desde el primer gen del padre al punto de corte al hijo

5. Copiar desde el punto de corte + 1 de la madre hasta el último gen al hijo.

31

Figura 15. Resultado del operador de cruce genérico. En esta generación el primer individuo tuvo un fitness de 5. La mayoría de sus genes con valor 1 se encuentran en la primera mitad de su cromosoma. El segundo tuvo un fitness menor, sin embargo la mayoría de sus genes valor 1 se encuentran en la segunda mitad de su cromosoma. El punto de cruce es en el gen 4. La descendencia hereda del primer individuo del gen 0 al 4 y del segundo del 5 al 8. Finalmente la descendencia tiene un fitness de 7, heredando las mejores características del padre y la madre.

4.5.2. Cruce de 2 puntos

El cruce de 2 puntos es muy similar al de 1 punto, salvo que en este caso el cromosoma se parte en tres partes. Hay que considerar que ninguno de los puntos de corte coincida con el extremo final del cromosoma. Para generar la descendencia se escoge el segmento central de uno de los padres y los segmentos laterales del otro padre.

Padre 1 Descendencia 1

0 1 0 0 1 1 1 1 0 0 1 0 Padre 2 Descendencia 2

1 1 1 0 0 0 0 1 1 0 0 1

Figura 16. Esquema de cruce de 2 puntos.

4.5.3. Cruce Uniforme

Cada gen de la descendencia en el cruce uniforme tiene las mismas posibilidades de pertenecer a un padre u otro. Está técnica implica la generación de una lista binaria aleatoria de 1s y 0s. Si en la primera posición de la lista existe un 1, el gen situado en esa posición se copia del padre al hijo. Por el contrario, si existe un 0 se copiará el de la madre. Para producir el segundo descendiente se intercambian los papeles de los padres o bien se intercambiá la regla de descendencia en la lista. El resultado es que la descendencia contiene una mezcla de genes del padre y la madre.

32

Lista 1 0 1 0 0 0 1 1 1

Padre 2 3 4 5 6 7 8 9 10

Hijo 2 C 4 E F G 8 9 10

Madre B C D E F G H I J

Figura 17. Esquema del cruce uniforme.

Otros tipos de cruce

Usualmente los tipos de cruce hasta ahora vistos, son aplicados a casi cualquier tipo de cromosoma. En el caso de que se usen cromosomas con valores enteros o reales pueden definirse otros tipos de cruce, como por ejemplo, el cruce tipo media. Este consiste en calcular el valor medio de los padres y heredarlos al hijo. Este tipo de cruce solo genera un descendiente.

El cruce o crossover es clave en el desarrollo e implementación de un AG. Gracias al cruce es posible buscar rápidamente en el espacio de soluciones. El operador de cruce es el responsable de las propiedades del algoritmo genético, y determinará en gran medida la evolución de la población.

4.6.

Mutación

Una vez que los individuos seleccionados han sido cruzados y hay una descendencia que ha heredado las características de sus padres, el siguiente operador genético en entrar en acción es la mutación. Este operador consiste en alterar aleatoriamente los cromosomas de los individuos. Esto es hecho por dos motivos. El primero, es para que exista una probabilidad de mejoría de la aptitud en la siguiente generación y la segunda, es para abarcar el mayor espacio de búsqueda posible.

La mutación provoca que alguno de los genes varíe de forma aleatoria y usualmente se aplica a la descendencia de los individuos cruzados. De esta manera, se imita el comportamiento de la naturaleza porque cuando se genera la descendencia siempre se produce algún tipo de error, que por lo general no tiene mayor trascendencia en el paso de los datos genéticos del padre al hijo. La probabilidad de mutación siempre es muy baja, alrededor de un 1%. Esto se debe sobre todo a que los individuos suelen tener un fitness menor después de ser mutados. La mutación más usual es el remplazo aleatorio, que consiste en variar aleatoriamente un gen del cromosoma. Si se trabaja con cromosomas binarios (101001010), bastará con sólo invertir un 1 por un 0 o viceversa. También es posible realizar la mutación intercambiando valores dentro del cromosoma o multiplicar un gen por un valor aleatorio entre un mínimo y un máximo, etc.

33

La mutación de un individuo pasa por variar en alrededor de un 1% su cromosoma. La técnica y la manera que se emplee dependerán estrechamente, de las condiciones del problema y del tipo de dato que se tenga en el cromosoma.

1 1 0 0 1 0 1 1

0 1 1 0 1 1 0 1

Figura 18. Esquema de Mutación.

El siguiente código es un ejemplo de una mutación genérica. El operador que genera la mutación, elige al azar 4 genes del cromosoma. Estos modifican los 1s por 0s y viceversa. En el caso que el operador elija dos veces el mismo gen, este no cambiará, porque repetirá el proceso 2 veces. Por ejemplo el 1 por el 0 y luego el 0 por el 1.

namespace Mutation {

class Mutation {

static void Main() {

int i, j, n = 0;

int[] Chrom = new int[8]; int[] arrDat = new int[4]; Chrom = Chromosome(); Random R = new Random();

for (i = 0; i <= (Chrom.GetUpperBound(0) * 0.5); i++) {

int Rnd = R.Next(0, Chrom.GetUpperBound(0)); arrDat[i] = Rnd; if (Chrom[Rnd] == 0) { Chrom[Rnd] = 1; } else if (Chrom[Rnd] == 1) { Chrom[Rnd] = 0; } } for (j = 0; j <= Chrom.GetUpperBound(0); j++) {

Console.WriteLine("The mutated chromosome, position {0} has a new fitness of {1}", j, Chrom[j]);

if (Chrom[j] == 1) {

n = n + 1; }

}

Console.WriteLine("the total fitness of the new Chromosome is: {0}", n);

for(int p = 0; p <= arrDat.GetUpperBound(0); p++) Console.Write(arrDat[p]);

34 Pseudocódigo clase Mutation

1. Llamar a la clase Chromosome para obtener un cromosoma de longitud 8. 2. Crear una lista de 4 elementos para guardar la ubicación de los genes mutados. 3. Repetir la siguiente operación 4 veces.

Generar un número aleatorio entre 0 y la longitud del cromosoma. Usar este número para leer la información que existe en ese gen dentro del cromosoma.

Si existe un 0 cambiarlo por un 1. Si existe un 1 cambiarlo por un cero. 4. Imprimir los resultados en pantalla.

Figura 19. Resultados del operador de mutación genérico.

El operador de mutación recibe un cromosoma de 8 genes y elige al azar 4 genes del cromosoma para modificar sus genes. La condicional invierte en este caso el 1 por el 0 y el 0 por el 1. En la imagen de resultado, se puede ver que los genes 4, 3, 0 y 6 han sido modificados.

La literatura admite que el operador de cruce es el responsable de una búsqueda rápida a lo largo del espacio de soluciones, y que el operador de mutación es el encargado de explorar todos los rincones del espacio de búsqueda. Además a la mutación se le atribuye la particularidad de que gana importancia a medida que la población de individuos va convergiendo.22

Schaffer en 1989, encuentra en uno de sus experimentos que el efecto del cruce en la búsqueda es inferior al que previamente se esperaba. Implementa una técnica llamada evolución primitiva. La cual consta de selección y mutación. Schaffer reporta que esta implementación supera con creces a una evolución basada exclusivamente en cruce y

35

selección. Otra conclusión que obtiene, es que la definición del valor de probabilidad de mutación es mucho más crucial que el relativo a la probabilidad de cruce.23