Professional Documents
Culture Documents
El PMX puede ser visto como una extensin del mtodo crossover de dos
puntos aplicado a
una cadena binaria. Emplea un mtodo especial de
reparacin para resolver la ilegitimidad causada por el simple mtodo
crossover de dos puntos. As que lo esencial del PMX es un simple mtodo
crossover de dos puntos junto con un mtodo de reparacin.
Paso 1. Seleccione dos posiciones a lo largo de la cadena uniformemente al
azar. Las subcadenas definidas por las dos posiciones son llamadas las
secciones de mapeo.
Paso 2. Intercambie dos subcadenas entre padres para producir un protohijo.
Paso 3. Determine la relacin de mapeo entre las dos secciones de mapeo.
Paso 4. Legalice la descendencia con la relacin de mapeo.
Cruce en Orden (OX)
Este puede ser visto como una clase de variacin del PMX con un diferente
mtodo de reparacin. OX trabaja de la siguiente manera:
Paso 1. Seleccione una subcadena de un padre al azar
Paso 2. Se produce un proto-hijo mediante la copia de la subcadena dentro de
la correspondiente posicin de este.
Paso 3. En el segundo padre borre las ciudades que estn ya en la subcadena.
La secuencia resultada de ciudades contiene las ciudades que el proto-hijo
necesita.
Paso 4. Coloque las ciudades dentro de las posiciones sin arreglo del protohijo
de izquierda a derecha de acuerdo a la orden de la secuencia para producir una
descendencia.
Cruce en Ciclo (CX)
CX toma algunas ciudades de un padre y selecciona las restantes ciudades del
otro padre, las ciudades del primer padre no son seleccionadas aleatoriamente
sino que en este caso se define un ciclo el cual decide que ciudades con sus
posiciones sern seleccionadas. CX trabaja de la siguiente manera:
Paso 1. Encuentre el ciclo con el cual define la correspondencia de posiciones
entre las ciudades de los dos padres
Paso 2. Copie las ciudades en el ciclo para un hijo con la correspondencia de
posiciones de un padre.
Paso 3. Determine las ciudades restantes para el hijo mediante la eliminacin
de estas ciudades las cuales ya estn en el ciclo del otro padre.
Paso 4. A completar el hijo con las ciudades restantes.
Mtodos de seleccin
Ejemplo 1
Vamos a partir de una funcin f(x) muy sencilla:
f(x) =x2
Imagina que deseas encontrar el valor de x que hace que la funcin f(x)
alcance su valor mximo, pero restringiendo a la variable x a tomar valores
comprendidos entre 0 y 31. An ms, a x slo le vamos a permitir tomar
valores enteros, es decir: 0,1, 2, 3,..., 30, 31. Obviamente el mximo se tiene
para x =31, donde f vale 961. No necesitamos saber algoritmos genticos para
resolver este problema, pero su sencillez hace que el algoritmo sea ms fcil
de comprender.
Lo primero que debemos hacer es encontrar una manera de codificar las
posibles soluciones (posible valores de x). Una manera de hacerlo es con la
codificacin binaria. Con esta codificacin un posible valor de x es: (0, 1, 0, 1,
1).
Cmo se interpreta esto? Muy sencillo: multiplica la ltima componente (un 1)
por 1, la penltima (un 1) por 2, la anterior (un 0) por 4, la segunda (un 1) por y
la primera (un 0) por 16 y a continuacin haz la suma: 11. Observa que (0, 0,
0, 0, 0) equivale a x = 0 y que (1, 1, 1, 1, 1) equivale a x = 31.
A cada posible valor de la variable x en representacin binaria le vamos a
llamar individuo. Una coleccin de individuos constituye lo que se denomina
poblacin y el nmero de individuos que la componen es el tamao de la
poblacin.
Una vez que tenemos codificada la solucin, debemos escoger un tamao de
poblacin. Para este ejemplo ilustrativo vamos a escoger 6 individuos.
Debemos partir de una poblacin inicial. Una manera de generarla es
aleatoriamente: coge una moneda y lnzala al aire; si sale cara, la primera
componente del primer individuo es un 0 y en caso contrario un 1. Repite el
lanzamiento de la moneda y tendremos la segunda componente del primer
individuo (un 0 si sale cara y un 1 si sale cruz). As hasta 5 veces y obtendrs el
primer individuo. Repite ahora la secuencia anterior para generar los individuos
de la poblacin restantes. En total tienes que lanzar 5 * 6 = 30 veces la
moneda.
Nuestro siguiente paso es hacer competir a los individuos entre s. Este proceso
se conoce como seleccin. La tabla 1 resume el proceso.
Tabla 1.- SELECCION
(1) (2) (3) (4) (5)
1 (0,1,1,0,0) 12 144 6
2
3
4
5
6
(1,0,0,1,0)
(0,1,1,1,1)
(1,1,0,0,0)
(1,1,0,1,0)
(0,0,0,0,1)
18 324
15 225
24 576
26 676
111
3
2
5
4
=
=
=
=
Ejemplo 2
En esta entrada vamos a poner un ejemplo de cmo obtener el mximo de la
funcin que se muestra a continuacin en el rango de [0-15] utilizando un
algoritmo gentico (el argumento del seno de la funcin se da en radianes). En
este ejemplo que ponemos, esta funcin sera la Funcin de Fitness o
funcin de calidad que utilizaremos en este problema, ya que la x que
maximize esta funcin, sera la mejor solucin al problema.
Una vez llegado a este punto en el que tenemos definida la funcin de fitness y
como representar a los individuos, tenemos que ver: como generamos la
primera generacin de individuos, como los emparejamos y como mutan. Para
realizar todas estas cosas se generar un conjunto de nmeros aleatorios con
los que trabajaremos y que veremos su significado a continuacin. Para ello y
antes de nada deberemos definir con que numero de individuos queremos
trabajar, la probabilidad de generacin del cromosoma, la probabilidad de
emparejamiento y la probabilidad de mutacin. Para ver de forma detallada
todo este proceso y siguiendo el pseudocdigo mostrado en la entrada
de Que es la Computacin Evolutiva? vamos a definir todas estas cosas y
ver de forma detallada el transcurso del algoritmo:
1. Longitud del cromosoma: 4
2. Conjunto de elementos del cromosoma: {0,1}
3. Nmero de individuos de la poblacin: 2
4. Para
la
creacin
de
la
primera
generacin:
3.1.- Probabilidad del elemento 0: num aleatorio < 0.5
3.2.- Probabilidad del elemento 1: num aleatorio >0.5
5. Probabilidad de emparejamiento: 0.7
6. Probabilidad de mutacin: 0.3
En primer lugar vamos a obtener los dos primeros individuos que van a
formar la generacin inicial. Para obtener los cromosomas de los dos
individuos vamos a utilizar los 8 primeros nmeros aleatorios (4 por
individuo). Si el numero aleatorio es menor que 0.5 pondremos el
elemento 0 al cromosoma y si es mayor que 0.5 le daremos valor 1. A
continuacin mostramos como generamos los individuos:
Una vez que conocemos los individuos, aplicamos la funcin de fitness para
que nos diga que individuo es el mejor de los dos y cuanto mejor es uno que
otro para ver posteriormente que probabilidad de emparejamiento tiene cada
uno:
Como vemos ambos individuos son muy parecidos porque tienen una calidad
similar aunque el individuo 2 es un poco mejor que el individuo 1 ya que lo que
pretendemos es encontrar el mximo de la funcin. Ahora pasamos a calcular
las probabilidades de cada individuo para el emparejamiento y esto lo hacemos
con una regla de tres simple:
Con esto vemos que los dos individuos son aptos para el emparejamiento, pero
habr emparejamiento en esta generacin?. Para ver si en esta
generacin hay emparejamiento hay que ver si el siguiente numero aleatorio
esta dentro de la probabilidad de emparejamiento que la definimos como 0.7,
lo que quiere decir que si el nmero aleatorio esta en el rango [0-0.7) habr
emparejamiento y si esta entre [0.7-1] no habr emparejamiento. Esto lo
mostramos a continuacin:
Vemos que en esta generacin hay emparejamiento y que adems los dos
individuos se van a emparejar, as que ahora hay que ver como se emparejan
estos dos individuo. Para ello hay que calcular el punto de corte del
cromosoma sobre el que se va ha hacer el intercambio. Como se muestra a
continuacin se ve que hay 3 puntos de corte en el cromosoma para que se
puedan emparejar:
Con todo lo calculado podemos ya generar unos nuevos individuos. Dado que
hemos seleccionado como punto de corte al tercer cromosoma, querr decir
que el primer individuo tendr como valor de la ltima posicin del cromosoma
el valor de la ultima posicin del cromosoma del individuo 2, lo que quiere decir
que el emparejamiento dar como resultado dos nuevos individuos con el
intercambio en los valores del cromosoma. Esta intercambio lo mostramos a
continuacin:
Ya por ltimo queda ver si alguno de los individuos sufrir alguna mutacin.
Para ello cogemos un nmero aleatorio por cromosoma (8 nmeros aleatorio, 4
por cada individuo) y vemos si esta dentro de la probabilidad de mutacin, es
decir, que si el numero aleatorio esta dentro del rango [0-0.3) el elemento del
cromosoma mutar a su complementario y sino esta en ese rango no habr
mutacin. A continuacin vemos las mutaciones que se producen: