1. Práctica 1 de Algoritmos Evolutivos y Bioinspirados
Eduardo Moreno Díaz
Alumno Ingeniería Informática Universidad de Huelva
eduardo.diaz@alu.uhu.es
Resumen ya que cuando se enfrentan a casos muy complejos
resultan ineficientes respecto a tiempo y recursos
Este documento realiza un estudio entre empleados.
diferentes implementaciones de algoritmos
evolutivos genéticos aplicados para resolver el Este estudio analiza diferentes versiones de
problema del “viajante de comercio” o TSP estos algoritmos para enfrentarlos a tres casos del
(Travelling Salesman Problem en inglés). Los TSP, CH130, problema de 130 ciudades con 6110
algoritmos estudiados son el genético básico, con de coste; A280, 280 ciudades con un camino
población estacionaria y generacional, y paralelo mínimo de 2579; y P654, formado por 654 ciudades
con población estacionaria. Al final, se expondrán cuya solución óptima es 34643.
las diferencias de comportamiento entre el
algoritmo de colonia de hormigas SH y SCH y los Los algoritmos de comparación SH y SCH
diferentes algoritmos implementados. [2] son los algoritmos que funcionan a la perfección
sobre estos casos de estudio, por lo que acercarse a
PALABRAS CLAVES: Optimización, viajante, los resultados que éstos presentan hace que resulte
algoritmo evolutivo, colonia hormiga, algoritmo interesante la comparación con los genéticos.
genético, paralelización.
1. Introducción 2. Descripción de problema
El problema del viajante de comercio es En su descripción matemática, el TSP
uno de los problemas más conocidos y quizás el formado por el conjunto finto de ciudades C, trata
mejor estudiado en el campo de la optimización de encontrar la permutación P = {co, c1, …, cn} tal
combinatoria computacional. A pesar de la aparente que
sencillez de su planteamiento, el TSP es uno de los
problemas más complejos.
En su formulación más general, se trata de
que, dado un conjunto de N ciudades, encontrar el sea mínimo. La distancia entre ciudades viene dada
circuito más corto que partiendo de una de ellas, por la matriz D = N x N donde d[x, y] representa la
pase por todas las demás y retorne a la ciudad distancia entre las ciudades x e y.
origen. Cabe destacar que, en principio, esta
formulación no recoge premisas de conexión entre
ciudades, sino que el grafo formado por las ciudades
es fruto del producto cartesiano de todas las
ciudades, formando un grafo completo.
Evidentemente, dicho grafo presenta bucles o lazos Representación de la solución
que el algoritmo de resolución debe controlar.
La representación que se hará de la
Son muchos los intentos que los solución será la lista de ciudades, ordenada en orden
matemáticos han realizado para tratar de dar de paso, que representa el itinerario a seguir.
respuesta a estos problemas, Edsger Dijkstra,
Kruskal [1], etc. Dicho algoritmos de resolución son
muy eficientes en problemas de poca complejidad
2. Representación 1. Ejemplo de solución
Función objetivo
Representación 3. Operador de mutación 2-Opt
La función de evaluación para el problema
del TSP será la suma de las todas las distancias
entre ciudades que aparecen en la lista representada
por la solución. 3. Ciclo de Vida de los Algoritmos
Genéticos
Operador de selección
Un algoritmo genético básico sigue el
El operador de selección utilizado es el de procedimiento descrito en la figura 1:
“torneo”. Se eligen cierto número de individuos
aleatorios de la población y se selecciona al mejor, Procedure AGB
obteniéndose así al padre 1. Se repite de nuevo el
proceso y se elige al padre 2. Estos dos individuos Sf = 0
se cruzan para obtener a dos nuevos hijos que
formarán parte de la nueva población para las InicializarPoblación()
siguientes iteraciones.
Mientras (¬criterioParada) Hacer
Operador de cruce Padres = SeleccionarPadres()
Hijos = CruzarPadres()
Como operador de cruce se utilizará el Mutar(Hijos)
conocido como Order Crossover OX1 [3]. Consiste Reemplazar()
en tomar una parte de la solución de tamaño Sf = AlmacenarMejorIndividuo(Poblacion)
aleatorio no superior a la mitad del tamaño de la Fin
solución. Esta parte forma parte del nuevo hijo. El
resto del hijo se rellena con los datos del otro padre Devolver Sf
que son elegidos en orden, teniendo en cuenta de
que si el hijo ya tiene los valores que el segundo Fin
padre le va a proporcionar, éste no puede
duplicarlos. El proceso alterna a los padres y se crea Figura 1. Pseudocódigo Algoritmo Genético Básico
el nuevo hijo. Un ejemplo se puede ver en la
representación 2. Este procedimiento requiere de ciertas
particularidades a la hora de utilizarse en las
implementaciones estudiadas. Las principales
diferencias tienen que ver con la forma de
reemplazar la población al final del proceso. Para el
genético con población estacionaria, el hijo
reemplaza a la peor solución existente en la
población, siempre y cuando su función de coste
presente mejor valor que la que va a reemplazar. En
cambio, en el genético generacional los hijos
Representación 2. Operador de cruce OX1
siempre reemplazan a los padres. Además, otro
punto destacable es que en el generacional, se debe
Operador de mutación conservar el elitismo de la población, para ello,
siempre se pasa al mejor individuo a la nueva
El operador de mutación usado es el 2-Opt. población.
Se basa en realizar una permutación entre un par de
ciudades de la solución elegidas aleatoriamente El algoritmo genético paralelo estudiado
como puede apreciarse en la representación 3. esta realizado utilizando el esquema de islas que se
observa en la representación 4. Esta
3. implementación consiste en tener diferentes AGB Generacional
poblaciones de individuos separadas físicamente e ir - % de Cruce: 70%
transfiriendo el mejor individuo de cada una de - % de Mutación: 10%
ellas al resto. Con esta técnica se favorece - Tamaño torneo (tamaño población / 10)
principalmente la diversidad poblacional tan - # de torneos: tamaño de la población
necesaria en estos algoritmos. Además permite - Criterio de parada: 20.000 iteraciones sin
distribuir el coste computacional ente diferentes encontrar solución mejor
máquinas ya que cada isla podría estar ubicada en
una CPU diferente y que cada cierto tiempo se AG Estacionario Paralelo:
comunicarían entre ellas para transferir al mejor - # Islas: 6
individuo de su población. - Criterio de parada: las mismas que haya
dado el estacionario básico
- Iteraciones intercambio: 10*tamaño
Respecto a las técnicas de transferencia de solución
individuos existen varios tipos de interconexión:
anillo, estrella, topología tipo toro, etc. Para este El tamaño de la población esta ligado al
estudio se ha utilizado el esquema de anillo, en la caso de estudio que se esté realizando. Para el
que cada isla esta conectada a dos islas, una para CH130 se ha utilizado 100 individuos; para el A280
enviar y otra para recibir. Además se ha 150; y para el P654, 200.
implementado hilos (threads) que simulan las
diferentes CPUs. La máquina empleada es un ordenador
Intel Pentium Dual Core a 2.66 GHZ por CPU y
2GB de RAM bajo Windows XP SP2 y con
máquina Virtual de Java v1.6
A continuación, se muestran las tablas de
resultados parciales por algoritmo y caso de estudio:
Representación 4. Modelo de islas
4. Experimentación
Se ha realizado un proceso de
Tabla 1. Resultados Parciales AG Básico Estacionario
experimentación con las tres implementaciones del
estudio, genético básico con población estacionaria,
genético básico con población generacional y
genético paralelo con población estacionaria; con
tres casos de estudio del problema TSP: CH130,
A280 y P654. Además, se ha utilizado los
algoritmos SCH y SH cómo algoritmos de
comparación con los genéticos
Tabla 2. Resultados Parciales AG Básico Generacional
La parametrización utilizada en las pruebas
es la siguiente:
AGB Estacionario
- % de Cruce: 100%
- % de Mutación: 10%
- Tamaño torneo (tamaño población / 10)
- # de torneos: 2
- Criterio de parada: 20.000 iteraciones sin
encontrar solución mejor
4. 600000
opt) no representa un cambio lo bastante importante
Básico Estacionario como para que se produzcan resultados interesantes.
500000
Básico Generacional
400000
Atendiendo al tiempo empleado, cabe decir
que consumen muchos recursos a ese nivel. Los dos
300000
procesadores sobre los que se han estado ejecutando
200000 la batería de pruebas han estado funcionando a
pleno rendimiento durante todo el tiempo de
100000
ejecución.
0
CH130 A280 P654
Para comparar la versión básica
estacionaria con la paralela estacionaria, se calcula
Gráfica 1. Comparativa de resultados
el speedup (tiempo dividido entre el número de islas
utilizadas) sobre este último, resultando este valor
0,33 para el caso CH130, 2,66 para el A280 y 6 para
el P654. Como se aprecia, el tiempo de ejecución en
cada isla ha sido insuficiente ya que no se aproxima
5. Análisis de Resultados al tiempo de ejecución de la versión básica. Este
hecho explica los malos resultados que se han
Observando las gráficas 2, 3 y 4 se puede obtenido. El criterio de parada empleado en esta
notar la mala calidad que han ofrecido algunas de implementación no ha sido el adecuado, debiéndose
las semillas utilizadas. Además, para hacer cumplir haber optado por utilizar el mismo tiempo que en el
el criterio de parada establecido, algunas han básico en cada isla.
realizado muchas más iteraciones que otras.
En las gráficas 2 y 3, se muestra una 6. Concluciones
convergencia muy rápida para la versión con
población generacional. Además es la que ofrece los Los algoritmos genéticos son sencillos de
resultados con mejor calidad. implementar ya que ni sus estructuras de datos ni
sus funcionalidades requieren de conocimientos
También resulta interesante estudiar como muy avanzados sobre ellos, con lo cual resultan
el hecho de aumentar la población del genético muy interesantes para aplicar como primera idea a
básico al paralelo no ha ofrecido los resultados que cualquier problema al que se tenga que buscar
cabría esperar. La causa de este efecto podría solución. El hecho de no requerir una gran
deberse a la falta de diversidad poblacional de las experiencia sobre el propio problema en cuestión
islas. Puede observarse en los ficheros de resultados corrobora esta conclusión.
generados durante las pruebas, que el individuo
transferido pasa muy rápidamente de una isla otra Los resultados obtenidos en comparación
creando una élite que dificulta la selección de con los algoritmos basados en colonias de hormigas
individuos peores y que son los que realmente SCH y el SH han estado muy próximos incluso se
permiten el nacimiento de individuos diferentes que han llegado a mejorar con alguna semilla. Pero cabe
tal vez resulten interesantes. decir, que los tiempos con el que se han ejecutado
dichos algoritmos fueron mucho más cortos que los
La escala del caso de estudio también hace empleados por los genéticos [2].
que el algoritmo funcione peor en igualdad de
condiciones. Los algoritmos genéticos utilizan Requieren de tiempo de ajuste para que
muchos parámetros y es difícil un ajuste que funcionen adecuadamente. Son una ventaja ya que
funcione a la perfección para una gran variedad de el abanico de problemas a los que se puede aplicar
problemas. es bastante amplio pero que ofrezcan los resultados
deseados requiere de tiempo.
Respecto al operador de mutación, también
hubiera sido útil estudiar diferentes posibilidades de La versión con población generacional que
permutación como la 5-opt, 10-opt, etc. Al tratarse se ha desarrollado ha aportado los mejores
de casos de estudio con una longitud de solución resultados de entre las dos implementadas, haciendo
notable, un simple cambio de un valor por otro (2- interesante estudiar cómo se comportaría la versión
paralela con esta forma de evolución poblacional.
5. American Mathematical Society. 7 (1956), pp. 48–50
[2] E.M Díaz (2011). Práctica 1 Algoritmos Evolutivos y
7. Referencias Bioinspirados.
[1] J. B. Kruskal: On the shortest spanning subtree and
[3] Davis. L. (1985) Appliying Adaptative Algorithms to
the
Epistatic Domains
traveling salesman problem. En: Proceedings of the
Anexo I
Tabla de resultados globales
A continuación, se muestra la tabla de resultados globales obtenidos en la batería de pruebas realizada. Los
valores de tiempo están dados en minutos
Tabla 3. Resultados Finales
Gráficas de resultados parciales
Las siguientes gráficas muestran los resultados parciales obtenidos para las diferentes implementaciones del
algoritmo genético generados y los casos de estudio sobre los que se han aplicado
Gráfica 2. Evolución caso estudio CH130