Este proyecto implementa el Algoritmo de Colonia de Hormigas (Ant Colony Optimization, ACO) para resolver el Problema del Viajante de Comercio (TSP), optimizando el camino más corto para visitar una serie de ciudades y regresar al punto de partida. El código usa el enfoque de feromonas para guiar a las hormigas en la construcción de caminos de manera estocástica, con dos variantes: SH y SHE, las cuales utilizan un enfoque de selección y evaporación de feromonas.
El código está escrito en Python y se compone de las siguientes partes principales:
- Lectura de datos del archivo TSP: Usa
parse_tsp_file
para cargar las coordenadas de las ciudades desde archivos.tsp
. - Cálculo de distancias:
distancia_euclidea
ymatriz_distancia
crean una matriz de distancias usando la distancia euclidiana. - Inicialización de feromonas:
matriz_feromonas
crea una matriz de feromonas inicializadas. - Algoritmo Greedy: Usado para obtener una solución inicial rápida.
- Regla de Transición: Las hormigas eligen el siguiente nodo basándose en la feromona y la distancia entre ciudades.
- Actualización de Feromonas: Dos variantes de actualización: SH (sin elitismo) y SHE (con elitismo).
- Visualización de los caminos obtenidos:
mostrar_camino
grafica el recorrido de cada hormiga.
numero_hormigas
: Número total de hormigas.numero_hormigas_elitista
: Número de hormigas elitistas en SHE.evaporacion
: Tasa de evaporación de feromonas.alpha
ybeta
: Parámetros de importancia de la feromona y la visibilidad (distancia) en la regla de transición.numero_iteraciones
: Número de iteraciones del algoritmo.semillas
: Lista de semillas aleatorias para experimentar con distintos caminos iniciales.
Ambas variantes se ejecutan en dos instancias de datos, CH130.tsp
y A280.tsp
. Las hormigas construyen sus caminos basándose en la probabilidad de transición, y después de cada iteración, las feromonas en los caminos de menor costo se refuerzan mientras las demás se evaporan.
- SH - Algoritmo sin elitismo:
Caminos, Costes, Evaluaciones = SH("./Datos/ch130.tsp", numero_hormigas, evaporacion, alpha, beta, semillas, numero_iteraciones, 180) ## Resultados de las Simulaciones