Sunteți pe pagina 1din 8

Universidad Nacional Autnoma de Mxico

Facultad de Ciencias
Seminario de Inteligencia Artificial II
Aprendizaje de mquina 2014-2
24 de marzo de 2014
Prctica 3 - Algoritmos genticos
Objetivo
Conocer el funcionamiento de los algoritmos genticos, su aplicacin, pros y contras.
Entender los mecanismos de herencia, mutacin, seleccin y cruza, as como su relacin con la
seleccin natural.
Implementar un algoritmo genticos que resuelva y optimice un problema dado.
Introduccin
Un algoritmo gentico es una heurstica de bsqueda que est basada en el proceso
de seleccin natural. La seleccin natural es un proceso gradual mediante el cual las
caractersticas biolgicas se vuelven ms o menos comunes en una poblacin como una
funcin del efecto de las caractersticas heredadas de la diferencia de xito reproductivo de los
organismos que interactan con su entorno. Es el mecanismo clave de la evolucin. El trmino
de seleccin natural fue popularizado por Charles Darwin desde el ao de 1859.
Metodologa
En un algoritmo gentico, una poblacin de candidatos a solucin (tambin llamados
individuos o fenotipos) es evolucionada para obtener soluciones ptimas del problema. Cada
individuo tiene una representacin (sus cromosomas o genotipo) que puede ser alterada o
mutada; tradicionalmente, las representaciones son como cadenas binarias de 0s y 1s, pero
otras representaciones son posibles.
La evolucin es un proceso iterativo mediante el cual se generan individuos aleatoriamente
para crear otra poblacin en cada iteracin, llamada generacin. En cada generacin,
la aptitud (fitness) de cada individuo es evaluada. Usualmente la aptitud es el valor de la
funcin objetivo del problema de optimizacin que se quiere resolver. Se seleccionan de
manera aleatoria individuos de la poblacin para que modifiquen su genoma (recombinar) y
posiblemente mutar aleatoriamente para formar una nueva generacin. La nueva generacin
de posibles soluciones es usada en la siguiente iteracin del algoritmo. Comnmente, el
1
algoritmo termina cuando se alcanza el nmero mximo de iteraciones o el valor de aptitud de
un individuo ha alcanzado el ptimo.
Requisitos del algoritmo gentico
1. Una representacin gentica del dominio de la solucin.
2. Una funcin fitness (aptitud) a evaluar el dominio de la solucin.
La representacin estndar de cada individuo es una arreglo de bits, sin embargo, arreglos
de otro tipo y estructuras funcionan esencialmente de la misma manera. El motivo por el cual
se prefiere la representacin estndar es porque facilita las operaciones de recombinacin en
parte a la longitud fija del arreglo, tambin la operacin de mutacin se vuelve trivial como se
notar ms adelante.
Componentes del algoritmo gentico
Inicializacin
Usualmente se genera una cantidad de posibles soluciones de manera aleatoria para formar
la poblacin inicial. El tamao de la poblacin depende del problema, y pueden llegar a ser
cientos de miles de posibles soluciones en la poblacin.
Seleccin
La seleccin es una etapa del algoritmo gentico en el cul se selecciona un individuo de la
poblacin que despus ser recombinado con otro individuo.
Existen diferentes maneras de realizar el proceso de seleccin, el ms comn es la seleccin
proporcional de fitness (seleccin de ruleta). En este tipo de seleccin, el fitness (o aptitud)
del individuo se asocia con su probabilidad de seleccin.
Entonces si es el fitness del individuo en la poblacin, la probabilidad de ser seleccionado
es , donde es el nmero de individuos en la poblacin.
Esto es similar a imaginar una ruleta de casino. Usualmente una proporcin de la rueda de la
ruleta es asignada a cada posible individuo basado en su valor fitness. Esto se logra al dividir el
fitness de cada individuo entre el total de fitness de todos los individuos, que es equivalente a
normalizarlos a 1. Entonces un individuo es aleatoriamente seleccionado de la manera en que
lo hara una ruleta que est girando.
Operadores genticos
Recombinacin
2
La recombinacin es el operador gentico que permite la variacin de cromosomas de
los individuos de la poblacin de una generacin a otra. Es anloga a la reproduccin y la
recombinacin biolgica. El proceso de recombinacin consiste en tomar ms de un individuo y
producir un nuevo hijo o solucin.
Hay varias tcnicas de recombinacin, la ms habitual es la recombinacin de un punto
y consiste en seleccionar aleatoriamente un mismo punto de corte dentro de la cadena de
cromosomas de los padres e intercambiar sus contenido para generar nuevos hijos:
Fig. 1. Operacin gentica recombinacin de un punto.
Padre 1 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0
Padre 2 1 0 0 1 1 1 0 1 1 0 0 1 0 1 1
Hijo 1 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1
Hijo 2 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0
Tabla 1. Ejemplo numrico de recombinacin
Mutacin
La mutacin es el operador gentico que mantiene la diversidad gentica de una generacin
a otra, de manera anloga a la mutacin biolgica. La mutacin altera uno o ms de los genes
(valores) en el cromosoma. Esta alteracin puede cambiar por completo la solucin antes
de aplicar el operador de mutacin y puede llegar a obtener mejores soluciones dentro del
algoritmo gentico.
Las mutaciones ocurren de acuerdo a una probabilidad de mutacin que es definida por el
usuario. Esta probabilidad debera ser baja porque si se establece un probabilidad de mutacin
muy alta el algoritmo gentico se convierte en una bsqueda de soluciones de manera
aleatoria.
Cromosoma original 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0
Cromosoma mutada 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0
Tabla 2. Ejemplo del operador de mutacin
3
Terminacin del algoritmo
Las iteraciones del algoritmo gentico se termina hasta que se alcanza alguna de las
condiciones de terminaciones, que pueden ser:
Una solucin es encontrada tal que satisface un criterio mnimo.
Un nmero fijo de generaciones ha sido alcanzado.
Se alcanza el mximo de los recursos posibles (por ejemplo: tiempo de procesamiento).
Se alcanza el valor fitness ms alto posible o se llega a un estado en el cual las
iteraciones sucesivas no producen mejores resultados (puede deberse a la falta de
diversidad por ejemplo).
Al hacer una inspeccin manual.
O combinaciones de las anteriores.
Variaciones
Elitismo
Hay muchas variaciones que pueden hacerse a un algoritmo gentico, una de ellas es el
proceso de elitismo, el cual es una variante del proceso que permite que algunas de las
mejores soluciones pasen a la siguiente generacin sin alteraciones por recombinacin ni
mutacin.
Implementacin
El problema del agente viajero (TSP, por sus siglas en ingls) contesta a la siguiente pregunta:
Dada una lista de ciudades y las distancias entre cada par de ciudades, Cul es el la ruta
ms corta que visita cada ciudad exactamente una vez y regresa a la ciudad original? Es un
problema NP-completo en optimizacin combinatorial y de mucha importancia en teora de las
ciencias de la computacin.
La manera ms directa de resolver el problema es probar todas las permutaciones posibles
para visitar las ciudades y recordar la ruta ms corta (bsqueda por fuerza bruta). Sin embargo,
la complejidad del problema se vuelve exponencial con respecto a la cantidad de
ciudades y se vuelve una manera imprctica para solo 20 ciudades.
Se desea resolver el problema TSP con 30 ciudades, conocido como Oliver30 que fue
propuesto en: D.Whitley, T.Starkweather, D.Fuquay, "Scheduling Problems and Travelling
Salesman: the Genetic Edge Recombination Operator," Proceedings of the Third International
Conference on Genetic Algorithms, Morgan Kaufmann, 1989.
Las coordenadas indican la posicin de las ciudades en una regin de 100x100. Suponga que
todas las ciudades estn conectadas entre s. Utilice la distancia euclidiana para calcular el
costo entre cada ciudad. Establezca la matriz de adyacencia a partir de los datos.
Ciudad CoordX CoordY
4
1 54 67
2 54 62
3 37 84
4 41 94
5 2 99
6 7 64
7 25 62
8 22 60
9 18 54
10 4 50
11 13 40
12 18 40
13 24 42
14 25 38
15 44 35
16 41 26
17 45 21
18 58 35
19 62 32
20 82 7
21 91 38
22 83 46
23 71 44
24 64 60
25 68 58
26 83 69
27 87 76
28 74 78
29 71 71
30 58 69
Consideraciones de la implementacin
Representacin gentica
La mejor manera de representar un individuo o solucin es mediante una permutacin de las
ciudades. Si cada ciudad se asocia con un nmero entero, entonces un ejemplo es el siguiente:
[2, 1, 3, 8, 6, 4, 5, 7, 9]
Que indica que se comienza en la ciudad 2, despus se visita la ciudad 1, luego la 3 y as hasta
llegar a la ciudad 9 y finalmente se regresa a la ciudad inicial 2.
Funcin fitness
La optimizacin que se desea es encontrar el camino ms corto que visita todas las ciudades
una sola vez, de manera que la funcin fitness es inversamente proporcional a la distancia
recorrida de la representacin gentica. Es decir, entre menor sea la distancia del recorrido,
mayor es el valor de la funcin fitness.
5
Operador de recombinacin
Se utilizar el operador de corte de un punto eligiendo aleatoriamente un punto de corte.
Sin embargo hay que notar que hacer esta operacin puede llevar a resultados invlidos. Por
ejemplo:
Padre 1 [2, 1, 3, 8, 6, 4, 5, 7, 9]
Padre 2 [3, 6, 9, 7, 8, 5, 2, 1, 4]
Hijo [2, 1, 3, 8, 8, 5, 2, 1, 4]
En el ejemplo anterior se nota que si no se modifica el operador de recombinacin que se
planteaba originalmente se pueden llegar a resultados que no son permutacin de las ciudades
porque se repiten nmeros(1, 2, 8), y se omiten otros (6, 7, 9).
Una modificacin que permite que se generen resultados vlidos es el siguiente:
1. Copiar la primera mitad (antes del punto de corte) de uno de los padres y asignarla al
nuevo hijo para que se convierta en la primera mitad de su representacin gentica.
2. El resto de la representacin gentica del hijo consiste en recorrer de manera ordenada
el arreglo de nmeros del otro padre y copiar al hijo el nmero, solo si no se encuentra
repetido.
Siguiendo esta idea con el ejemplo anterior, se obtiene:
Padre 1 [2, 1, 3, 8, 6, 4, 5, 7, 9]
Padre 2 [3, 6, 9, 7, 8, 5, 2, 1, 4]
Hijo [2, 1, 3, 8, 6, 9, 7, 5, 4]
Usando el mismo punto de corte que en el ejemplo anterior, se copia la primer mitad del padre
1 y el resto del hijo consiste en el arreglo Padre2 - Hijo (visto como conjunto).
Operador de mutacin
El operador de mutacin ser definido con una probabilidad de mutacin de 0.2. Es decir,
se recorrer cada gen del cromosoma (cada nmero del arreglo) y se modificar su valor con
probabilidad 0.2.
Al igual que el operador de recombinacin, para seguir manteniendo resultados vlidos
(permutaciones), lugar de cambiar aleatoriamente uno de los genes por otro nmero aleatorio,
se intercambia de posicin con otro nmero del arreglo.
Cromosoma original [2, 1, 3, 8, 6, 9, 7, 5, 4]
Cromosoma mutado [2, 1, 3, 7, 6, 9, 8, 5, 4]
6
Seleccin
Se utilizar el mtodo proporcional de seleccin por ruleta descrito anteriormente.
Terminacin del algoritmo
El algoritmo gentico debe terminar cuando se hayan alcanzado 50000 generaciones.
Cantidad de poblacin
La poblacin de cada generacin estaa constituida de 50 individuos.
Elitismo
Para asegurarnos de mantener al menos una solucin lo suficientemente ptima, se utilizar
elitismo de 1 individuo en cada generacin.
Pseudocdigo
El comportamiento general del algoritmo gentico puede representarse a travs del siguiente
pseudocdigo.
poblacin := new Poblacion(50) //Inicializacin
while not limiteDeGeneraciones or optimoEntontrado //Criterio de trmino
poblacion.asignarFitness() //Calificar a todos los individuos
nuevaPoblacion.add(poblacion.elitismo(1)) //Elitismo
while not nuevaPoblacion.llena //Crear nueva generacin
individuo1:= poblacion.seleccionRuleta() //Seleccin por ruleta
individuo2:= poblacion.seleccionRuleta()
hijo := recombinacion(individuo1, individuo2) // Recombinacin
hijo.mutacion() //Mutacin
nuevaPoblacion.add(hijo) // Agregar a la nueva generacin
poblacion = nuevaPoblacion
print(poblacion.mejorIndividuo()) //Mostrar solucin ptima encontrada
El lenguaje de programacin es libre y la implementacin se puede llevar a cabo en el lenguaje
con el que estn ms cmodos. Documenten lo mejor posible su cdigo.
Si los parmetros mencionados para encontrar la solucin no funcionan, pueden cambiarse o
ajustarse para optimizar el tiempo necesario en encontrar la solucin.
Lineamientos de entrega
7
La prctica es individual. Anexen a su cdigo un archivo readme.txt con su nombre completo,
nmero de cuenta, nmero de la prctica y cualquier observacin o notas adicionales
(formas de compilar, ejecutar o interpretar el cdigo fuente, cambio de parmetros en la
implementacin, posibles errores, complicaciones, opiniones, crticas de la prctica o del
laboratorio, cualquier comentario relativo a la prctica).
Compriman la prctica en un solo archivo (.zip, .rar, .tar.gz, etc.) con una estructura adecuada,
por ejemplo:
ApellidopaternoNombreNumerodepractica.zip (por ejemplo: RiveraRodrigo03.zip)
src
AG.java
readme.txt
La fecha de entrega es hasta el da viernes 4 de abril a las 23:59:59 hrs.
Envenla por correo a la direccin: rodrigo.cln@ciencias.unam.mx con el asunto [Aprendizaje
Maquina] Practica03.
8

S-ar putea să vă placă și