Práctica 4a Algoritmos Genéticos En esta práctica vamos a ver cómo abordan las búsquedas los llamados algoritmos genéticos. Veremos diversos applets que muestran el funcionamiento de los estos algoritmos de una manera visual, sencilla y amena 1 Applet que calcula el máximo de una función Este applet es accesible desde: http://www.aic.uniovi.es/ssii/Tutorial/Ejemplo_maximo.htm Figura 1.- Applet que calcula el máximo de una función En la figura vemos, en la parte inferior, la función para la cual estamos buscando el máximo (representada en azul). Las líneas verticales representan los 16 individuos de la población actual. La representación gráfica de estos individuos puede verse en la parte superior izquierda. Se utiliza la representación binaria, quedando señalados los unos en azul y los ceros en amarillo. Los individuos están ordenados de mejor a peor fitness. Si pulsamos sobre Empezar o Paso a Paso vamos viendo la siguiente secuencia de acciones: • En primer lugar aplica elitismo a los dos mejores individuos de la población • A continuación se seleccionan dos individuos de la población mediante la regla de la ruleta, éstos son los denominados padres. • Se establece el punto en el que van a ser cruzados o en el caso de que no se supere la probabilidad de cruce se dirá que no se cruzan y entonces sus hijos serán iguales a ellos • El último paso es la mutación de los nuevos individuos creados, se utiliza una mutación de inversión, es decir, se seleccionan un gen del individuo y invierte su valor, si valía 0 pasa a valer 1 y viceversa. Si no se supera la probabilidad de mutación no se produce ninguna inversión. Trabajo: ejecutarlo paso a paso para ver y comprender el funcionamiento de los genéticos. 2 Applet para el viajante de comercio Este applet es accesible desde: http://www.aic.uniovi.es/ssii/Tutorial/TSP.htm Figura 2.- Applet para el problema del viajante de comercio El problema del viajante de comercio consiste en localizar la mejor ruta que pase por todas las ciudades una única vez. En la figura podemos observar 16 individuos (rutas) de la población. Debajo de cada individuo figura su fitness (distancia recorrida). Pulsando sobre el botón Cambiar Vista veremos únicamente el mejor individuo ampliado o una gráfica que representa la evolución del fitness. Podemos cambiar el porcentaje de mutación o de cruce, así como la manera de aplicar ambos operadores. Este applet permite añadir nuevas ciudades o eliminar alguna existente. Trabajo: borrar el grafo que aparece y crear uno nuevo con un número considerable de ciudades (por ejemplo 30). Ejecutar el algoritmo hasta que se estabilice el fitness del mejor. Cambiar parámetros del genético y ver si mejora. Pulsar el botón Reiniciar para iniciar el algoritmo con otros individuos iniciales aleatorios y ver si mejora. Elimina una ciudad que creas que entorpece una mejor solución y observa si se alcanza sin ella. 3 Applet para el coloreamiento de un grafo Puede descargarse de: http://www.aic.uniovi.es/ssii/P4a/Coloreamiento.zip Figura 3.- Applet para el coloreamiento de un grafo El problema del coloreamiento consiste en que dado un grafo (no dirigido) se ha de encontrar el coloreamiento mínimo. Es decir se han de utilizar el menor número de colores cumpliéndose la restricción siguiente: dos nodos adyacentes (unidos por un arco) no pueden tener el mismo color. En la figura podemos ver que este applet es parecido al anterior. Los parámetros del genético son ajustables en la ventana Botones de parámetros para el genético (ventana superior derecha de la figura 3) y su significado es el siguiente: • Tamaño de la Población: Número de individuos que se crean en cada generación. • Porcentaje de Cruce: Establece la frecuencia. con la que el operador de cruce será utilizado para la reproducción. El Porcentaje de Mutación será el inverso de este porcentaje. • Número de Generaciones: Establece el número de poblaciones a crear • Porcentaje de Selección: Establece cuántos individuos se van a elegir para reproducir Podemos también crear nuevos grafos utilizando la ventana Botones de dibujo, elección problema y gráfica (ventana superior izquierda de la figura 3). [Nota]: La opción de cargar un problema predefinido no está disponible Trabajo: Ejecutar el applet con diversos grafos. Aumentar la complejidad de los grafos y observar las soluciones aportadas por el genético. Cambiar los parámetros del genético y analizar las soluciones. 4 Applet para buscar el máximo o el mínimo de una función Este applet es accesible desde: http://www.obitko.com/tutorials/genetic-algorithms/example-3d-function.php El applet (figura 4) nos permite indicar la función para la cual queremos obtener el máximo o el mínimo. Su funcionamiento es muy sencillo: 1. Indicar la función dependiente de dos variables (x,y) en el edit correspondiente. Pulsando sobre el botón Change representa la función introducida. 2. Modificar el rango de los ejes si se considera oportuno 3. Comenzar la ejecución del genético (botones Start o Step) Este applet nos permite también modificar parámetros del genético como el porcentaje de cruce y de mutación. Podemos también decidir si que queremos que el algoritmo sea elitista o no, así como el tipo de objetivo a buscar: máximo o mínimo. Se puede rotar el gráfico pulsando con el ratón sobre el mismo y desplazándolo. Trabajo: Indicar diferentes funciones y ejecutar el genético. Ver como los diferentes parámetros afectan a la convergencia de la solución. Figura 4.- Applet que calcula máximos o mínimos