You are on page 1of 4

Cuarto ejercicio Algoritmos Evolutivos, curso 2010-11

rbol de expansin mnima

Juan D. Glvez Cobo Correo-e: 100079719@alumnos.uc3m.es

Resumen. Para la realizacin de esta prctica se ha seguido el mismo tipo de patrn que se utilizaba en la prctica anterior de estrategias evolutivas realizada en Matlab. Se pretende encontrar el mejor individuo de una poblacin de cromosomas, que sea el recorrido mnimo de una serie de coordenadas, el cual debe ser un camino que las conecte a todas sin bucles ni dejar nodos aislados.

1 Definicin del problema


Se tiene un fichero.txt en el cual cada lnea representa una coordenada X e Y, y en el que hay varias lneas con coordenadas. Se pretende encontrar por medio de una poblacin de individuos inicializada aleatoriamente, que representan las conexiones entre coordenadas (1 si est conectado, 0 si no est conectado) el rbol de expansin mnima, es decir el camino que conecte a todas las coordenadas sin que haya bucles, ni nodos aislados, tambin hay que controlar que el nmero de conexiones sea igual a n-1, donde n es el nmero de nodos. Cada fila de la poblacin representa las conexiones de un individuo de la poblacin, al pasarlo a matriz tenemos representado tanto en filas como en columnas los individuos y si estn conectados o no como se ha dicho anteriormente mediante el uso de 1 o 0. A continuacin se pasa a describir las clases utilizadas para la realizacin de la resolucin del problema:

1.2 Proceso
Se encarga de generar el nmero de generaciones mximas introducidas por parmetro o de parar el proceso al llegar a un criterio de parada establecido por parmetro. Llamar recursivamente a EvaluarAdecuacin, Seleccin y CruzamientoYMutacin para llevar a cabo la estrategia evolutiva correspondiente. Por ltimo, una vez terminado el proceso evaluara una vez ms la adecuacin y se sale del proceso.

1.3 EvaluarAdecuacin
Se usa para calcular la distancia existe por individuo de la poblacin, pasando cada uno de los individuos de la poblacin a matriz y comprobando las conexiones existentes, mediante el uso de la frmula de la distancia eucldea. Se va sumando por cada individuo de la poblacin y se va obteniendo el fitness individual, tambin se obtiene el fitness normalizado para usarlo posteriormente y el valor mejor medio y peor. Se ordenan los individuos de la poblacin por el valor de fitness y se devuelven para seguir operando con ellos.

1.1 ArbolDeExpansionMinima
Se usa para introducir por teclado los datos referentes a la poblacin de coordenadas, a la estrategia evolutiva, es decir nmero de individuos, nmero de generaciones, porcentaje de mutacin, sobrecruzamiento y mutacin utilizados, crear la poblacin inicial de conexiones generadas aleatoriamente y llamar al proceso, que es el encargado de realizar la estrategia evolutiva con los datos indicados. Posteriormente se encargara de transformar la mejor poblacin de conexiones a una matriz, para poder representar las conexiones mediante el comando gplot de Matlab con la matriz de conexiones y las coordenadas.

1.4 Seleccin
Se puede hacer mediante dos mtodos, torneo o ruleta, previamente seleccionado por teclado al inicio del algoritmo. 1.4.1 Torneo

Se eligen los individuos mejores de la poblacin aleatoriamente, se van seleccionando de dos en dos, se ordenan por el valor de fitness y se escoge el mejor, sucesivamente hasta completar la nueva poblacin. 1.4.2 Ruleta

Se ordenan los individuos por el valor de fitness y sumndolo para tener el total, y se genera un nmero

aleatorio, si el nmero aleatorio entra dentro del intervalo de uno de los individuos de la poblacin, este es el seleccionado y se aade a la nueva poblacin, hasta completar la poblacin, por ltimo se ordenan los individuos por su valor de fitness.

Cabe destacar que la matriz solo podr estar llena hasta la diagonal de la misma.

1.7 MatrizAIndividuo
Convierte la matriz pasada por parmetro a un individuo de la poblacin de individuos, recorriendo la matriz hasta la diagonal y aadiendo los elementos de la misma hasta llegar a filas-1. Los elementos de la diagonal no son incluidos en el individuo.

1.5 CruzamientoyMutacion
Se llevan a cabo el cruzamiento y la mutacin: 1.5.1 Cruzamiento

Se van cogiendo los individuos de la poblacin dos a dos y se sobrecruzan, pero solo los terminales que sean comunes, es decir, aquellos nodos en los que solo se tenga una conexin y sean el mismo nodo, y se realiza con todos los nodos terminales comunes existentes en los individuos. Comprobando que el nmero de conexiones sea menor que n-1, donde n es el nmero de coordenadas existentes. Si la probabilidad de sobrecruzamiento no se cumple, se iguala a la poblacin anterior y se prosigue. 1.5.2 Mutacion

2 Pruebas adicionales
En este algoritmo adems de calcular la solucin buscada, se ejecuta un nmero de iteraciones x, para poder observar con cuantas iteraciones el algoritmo es viable, adems se prueba con varios ficheros de entrada para ver si vara mucho la solucin y la distancia entre nodos y el nmero de generaciones necesarias para encontrarla. Se ha implementado un men para que se pueda seleccionar la opcin que se desee al ejecutar el algoritmo, ya sea la seleccin por torneo o ruleta, el nmero de generaciones permitidas, los porcentajes de elitismo, sobrecruzamiento y mutacin, solo se tienen que seguir las instrucciones que aparecen por pantalla para hacer que el algoritmo del rbol de expansin mnima funcione, inicindose en el proceso de bsqueda del camino ms corto entre todos los nodos existentes.

Se van cogiendo los individuos uno a uno y si la probabilidad de mutacin se cumple, se sacan los terminales y se elige aleatoriamente un terminal, se desconecta de la conexin que tena inicialemnte y se busca aleatoriamente otro terminal del individuo, se conecta el nodo anterior con el nodo terminal aleatorio buscado. Mediante la utilizacin de estas reglas para el sobrecruzamiento y la mutacin, conseguimos que no se produzcan nodos aislados, es decir, sin conexiones, ni bucles entre nodos, y siempre se obtienen n-1 conexiones, donde n es el nmero de nodos existentes Dentro de las funciones sobrecruzamiento y mutacin se utilizan una seria de funciones adicionales que no se explican, pero que son muy simples, como por ejemplo, obtenerTerminales, comprobarComunes, y sobrecruzarTerminales y mutarTerminales, que es donde se realiza el proceso de sobrecruzar o mutar los terminales y en donde se utilizan todas estas funciones, que se pueden ver en el cdigo de la prctica y estn correctamente comentadas. Por ltimo se realiza un elitismo con los individuos de la poblacin anterior, mediante el porcentaje de elitismo introducido por teclado, quedndose con una parte de los mejores individuos de la poblacin inicial y el resto de los individuos mejores de la poblacin nueva.

2.1 Figuras y Tablas


A continuacin se muestran los datos reales obtenidos en las iteraciones del algoritmo, y las grficas de uniones entre nodos existentes en la poblacin, junto con la tabla de medias de distintas pruebas realizadas con el algoritmo con sus distintas grficas. Se van a utilizar para las pruebas distintos ficheros, tanto aleatorios como de rejilla, con distintas dimensiones, que se representan en la siguiente tabla:

2.1.1

ArbolDeExpansionMinima

1.6 IndividuoAMatriz
Convierte el individuo pasado a una matriz, en donde las filas y las columnas representan las coordenadas existentes y cada una de las posiciones de la matriz son las conexiones entre cada una de las coordenadas, 1 si est conectado, 0 si no est conectado.
2

Fig. 3 Rejilla3.txt Fig. 1 Rejilla1.txt

Fig. 4 Aleatorio1.txt

Fig. 2 Rejilla2.txt

2.2 Abreviaturas y Acrnimos


n-1 nmero de conexiones existentes entre nodos que tiene que ser siempre una menos que el nmero de nodos. Fig figuras representativas del algoritmo, en donde aparecen en la primera las conexiones que se producen entre los nodos, y en la segunda los valores del mejor, medio y peor individuo en cada iteracin.

3 Conclusiones
Fig. 5 Aleatorio2.txt Se ha intentado crear un algoritmo de expansin mnima que por medio de distintos parmetros saque el camino ms corto entre todos los nodos de la poblacin, parece que aunque aproxime bien, no llega a ser perfecto, puede ser debido a la generacin aleatorio de la poblacin inicial, a la eleccin de los parmetros de entrada de sobrecruzamiento y mutacin, o a las funciones de sobrecruzamiento y mutacin, a una combinacin de las tres, pero ms debido a la ltima. Se podran realizar algunas modificaciones para que se ajuste mejor el intercambio de conexiones entre nodos, pero con las funciones que hay implementadas, parece que no se producen bucles ni nodos aislados, siendo un buen aproximador del rbol de expansin mnima.

Fig. 6 Aleatorio3.txt

Se han realizado diversas pruebas tanto con nodos en forma de rejilla como aleatorios, de 10, 20 y 30 nodos (aleatorio1/rejilla1, aleatorio2/rejilla2 y aleatorio3/rejilla3 respectivamente), se observa claramente que con menor nmero de nodos el algoritmo parece funcionar mejor, a mayor nmero de nodos hay una peor conexin. Se han probado distintas combinaciones de sobrecruzamiento, mutacin, elitismo, nmero de individuos, y se observa que se produce una mejor dispersin en las conexiones poniendo un nmero alto de individuos, para que haya diversidad en los individuos.

You might also like