He implementado un Algoritmo Genético para resolver el Problema del Viajero Vendedor (TSP). Cuando uso solo mutación, encuentro mejores soluciones que cuando agrego el cruce. Sé que los métodos de cruce normales no funcionan para TSP, así que implementé los métodos Ordered Crossover y PMX Crossover, y ambos tienen malos resultados.¿Por qué añadir Crossover a mi algoritmo genético me da peores resultados?
Éstos son los otros parámetros que estoy usando:
Mutación: sola mutación Intercambiar o invertido Subsequence Mutación (as described by Tiendil here) con tasas de mutación probados entre el 1% y el 25%.
Selección: Ruleta Selección Rueda función
aptitud: 1/distancia de recorrido
Tamaño de la población: Probado 100, 200, 500, que también corren el GA 5 veces para que Tengo una variedad de poblaciones iniciales.
parada Condición: 2500 generaciones
Con el mismo conjunto de datos de 26 puntos, por lo general obtener resultados de unos 500-600 distancia utilizando puramente mutación con altas tasas de mutación. Al agregar crossover, mis resultados generalmente están en el rango de distancia 800. La otra cosa confusa es que también he implementado un algoritmo de escalada en colina muy simple para resolver el problema y cuando corro esas 1000 veces (más rápido que correr el GA 5 veces) obtengo resultados alrededor de 410-450 de distancia, y esperaría para obtener mejores resultados usando una GA.
¿Alguna idea de por qué mi GA se desempeña peor cuando agrego crossover? ¿Y por qué funciona peor que un algoritmo Hill-Climb simple que debería atascarse en máximos locales ya que no tiene forma de explorar una vez que encuentra un máximo local?