AG4 - Actividad Guiada 4 - Algoritmos Genéticos¶

Nombre: Carlos Javier Bravo Intriago

Link: https://colab.research.google.com/drive/18FHxc4yPpLlYE86Gjui10spmff-DP73P?usp=sharing

Github: https://github.com/carlosbravo1408/03MIAR-Algoritmos-de-Optimizacion-2025/tree/main/AG4

Carga de librerias¶

In [1]:
!pip install requests
!pip install tabulate>=0.9 networkx>=3.0
!pip install tsplib95 --no-deps
!pip install deprecated
Requirement already satisfied: requests in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (2.32.5)
Requirement already satisfied: charset_normalizer<4,>=2 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (from requests) (3.4.4)
Requirement already satisfied: idna<4,>=2.5 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (from requests) (3.11)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (from requests) (2.6.3)
Requirement already satisfied: certifi>=2017.4.17 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (from requests) (2026.1.4)

[notice] A new release of pip is available: 24.3.1 -> 26.0.1
[notice] To update, run: pip install --upgrade pip

[notice] A new release of pip is available: 24.3.1 -> 26.0.1
[notice] To update, run: pip install --upgrade pip
Requirement already satisfied: tsplib95 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (0.7.1)

[notice] A new release of pip is available: 24.3.1 -> 26.0.1
[notice] To update, run: pip install --upgrade pip
Requirement already satisfied: deprecated in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (1.2.18)
Requirement already satisfied: wrapt<2,>=1.10 in /home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages (from deprecated) (1.17.3)

[notice] A new release of pip is available: 24.3.1 -> 26.0.1
[notice] To update, run: pip install --upgrade pip

Importe de librerias¶

In [2]:
import os
import gzip
import math
import random
import shutil
import urllib.request
from IPython.display import HTML
from typing import Union, Tuple, List, Literal

import matplotlib.pyplot as plt

import tsplib95

Métodos Auxiliares y algunas definiciones necesarias¶

In [3]:
NumericType = Union[int, float]
NodeType = int
EdgeType = Tuple[NodeType, NodeType]
SolutionType = List[NodeType]
TSProblemType = tsplib95.models.Problem


def download_tsp_file(url: str, filename: str) -> None:
    # Descarga como archivo temporal
    local_path, headers = urllib.request.urlretrieve(url, filename + ".temp")
    mime_type = headers.get_content_type()
    # Descomprimir si es formato gzip
    if "gzip" in mime_type or local_path.endswith(".gz"):
        with gzip.open(local_path, 'rb') as f_in:
            with open(filename, 'wb') as f_out:
                shutil.copyfileobj(f_in, f_out)
        os.remove(local_path)
    # Caso contrario renombra el archivo temporal
    else:
        os.replace(local_path, filename)

Carga de datos del problema¶

In [4]:
#DATOS DEL PROBLEMA
# Matriz Adyacencia swiss42 problem (Staedte Schweiz/Fricker)
file = "swiss42.tsp"
download_tsp_file(
    "https://raw.githubusercontent.com/mastqe/tsplib/refs/heads/master/swiss42.tsp",
    file)
tsp_problem: tsplib95.models.Problem = tsplib95.load(file)

# Lo siguiente NO es una buena práctica de programacion y hay gente que
# considera sucia, pero permite optimizar algo más el código. Se inyecta la
# lista de nodos en el objeto tsp_problem, con ello se evita crear una nueva
# lista cada vez que se invoca a `get_nodes()`
tsp_problem.cached_nodes = list(tsp_problem.get_nodes())

#Nodos
nodes = tsp_problem.cached_nodes

Funciones básicas¶

Funciones de la Actividad Guiada 3

In [5]:
def crear_solucion(nodos: List[NodeType]) -> SolutionType:
    """
    Se genera una solución aleatoria con comienzo en el nodo 0
    :param nodos: Lista de nodos
    :return: Lista de nodos en posiciones aleatorias sin repetición
    """
    return random.sample(nodos, len(nodos))

def distancia(a: int, b: int, problem: TSProblemType) -> NumericType:
    """
    Devuelve la distancia entre dos nodos
    :param a: Nodo a
    :param b: Nodo b
    :param problem: Instancia de tsplib95.models.Problem
    :return:
    """
    return problem.get_weight(a, b)

def distancia_total(solucion: SolutionType, problem: TSProblemType) -> NumericType:
    """
    Devuelve la distancia total de una trayectoria/solución
    :param solucion: Lista de Nodos
    :param problem: Instancia de tsplib95.models.Problem
    :return:
    """
    distancia_total = 0
    n = len(solucion)
    for i in range(len(solucion)):
        distancia_total += distancia(solucion[i], solucion[(i + 1)%n], problem)
    return distancia_total

def validar_solucion(solucion: SolutionType, problem: TSProblemType) -> bool:
    """
    Método que retorna `True` en el caso de que la solución sea válida (no
    hay repetidos, ni elementos faltantes), caso contrario arroja `False`
    :param solucion:
    :param problem:
    :return:
    """
    return set(solucion) == set(problem.cached_nodes)


distancia_total(crear_solucion(nodes), tsp_problem)
Out[5]:
4946

Funciones Auxiliares¶

In [6]:
def generar_poblacion(problem:TSProblemType, N: int) -> List[SolutionType]:
    """
    Genera una poblacion inicial de soluciones de tamaño N.
    Se propone generar un 85% de poblacion aleatoria, y el 15% restante una
    poblacion voraz, con una predisposición a tener mejor gen con respecto a
    sus contrapartes generadas aleatoriamente.

    Inspirado del paper propuesto como material bibliográfico en clases
    https://indjst.org/articles/solving-travelling-salesman-problem-using-improved-genetic-algorithm,
    el cual el Autor propone la generación de cromosomas de manera Voraz,
    para este caso se generó un 15% de la poblacion inicial utilizando
    una estrategia constructiva voraz (Vecino más cercano) con la finalidad
    de agregar individuos genéticos más aptos, mientras que el 85% restante
    se generó de forma puramente aleatoria. Esta estrategia y esta proporción
    asignada promete una convergencia más rápida sin sacrificar la entropia
    necesaria para evitar estancamientos en optimos locales antes de tiempo.
    :param problem:
    :param N:
    :return:
    """
    nodos = problem.cached_nodes
    poblacion = []
    nodos_vistos = set()
    semilla = min(math.ceil(N * 0.15), len(nodos))
    poblacion.extend(generar_poblacion_voraz(problem, semilla))
    _ = [nodos_vistos.add(tuple(individuo)) for individuo in poblacion]
    while len(poblacion) < N:
        # Evitar duplicados, se debe procurar que en la generacion de
        # poblacion no haya individuos genéticamente iguales (comparación
        # rápida y amortizado lineal es con Tuplas y Set)
        individuo = tuple(random.sample(nodos, len(nodos)))
        if individuo not in nodos_vistos:
            nodos_vistos.add(individuo)
            poblacion.append(list(individuo))
    return poblacion

def generar_poblacion_voraz(problem: TSProblemType, N: int) -> List[SolutionType]:
    """
    Genera una poblacion usando una estrategia voraz para encontrar el vecino
    más cercano.
    :param problem:
    :param N:
    :return:
    """
    # TODO: Limpiar o refactorizar este método
    nodos = problem.cached_nodes
    nodos_iniciales = random.sample(nodos, min(N, len(nodos)))
    poblacion = []
    individuos_vistos = set()
    for nodo_inicial in nodos_iniciales:
        individuo = [nodo_inicial]
        no_visitados = set(nodos)
        no_visitados.remove(nodo_inicial)
        nodo_actual = nodo_inicial
        while no_visitados:
            siguiente_nodo = min(
                no_visitados,
                key=lambda candidato: distancia(nodo_actual, candidato, problem)
            )
            individuo.append(siguiente_nodo)
            no_visitados.remove(siguiente_nodo)
            nodo_actual = siguiente_nodo

        individuo = tuple(individuo)
        if individuo not in individuos_vistos:
            individuos_vistos.add(individuo)
            poblacion.append(list(individuo))
    return poblacion

poblacion_prueba = generar_poblacion(tsp_problem, 50)
assert validar_solucion(poblacion_prueba[0], tsp_problem)
_ = [print(p) for p in poblacion_prueba[:5]]
[15, 14, 16, 37, 17, 31, 7, 1, 0, 3, 2, 27, 28, 29, 30, 32, 34, 20, 33, 35, 36, 6, 4, 26, 5, 19, 13, 18, 12, 11, 25, 10, 8, 9, 23, 41, 21, 39, 22, 38, 24, 40]
[31, 17, 37, 15, 14, 16, 19, 13, 5, 26, 18, 12, 11, 25, 10, 8, 9, 23, 41, 29, 30, 28, 2, 27, 3, 4, 6, 1, 0, 7, 32, 34, 20, 33, 35, 36, 38, 22, 39, 21, 40, 24]
[16, 14, 15, 37, 17, 31, 7, 1, 0, 3, 2, 27, 28, 29, 30, 32, 34, 20, 33, 35, 36, 6, 4, 26, 5, 19, 13, 18, 12, 11, 25, 10, 8, 9, 23, 41, 21, 39, 22, 38, 24, 40]
[3, 2, 27, 28, 29, 30, 32, 0, 1, 6, 4, 26, 5, 19, 13, 18, 12, 11, 25, 10, 8, 9, 23, 41, 21, 39, 22, 38, 34, 20, 33, 31, 17, 37, 15, 14, 16, 7, 36, 35, 40, 24]
[33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 17, 31, 7, 36, 35]
In [7]:
def Evaluar_Poblacion(
        poblacion: List[SolutionType],
        problem: TSProblemType
) -> Tuple[SolutionType, NumericType]:
    """
    Evalúa la población y devuelve el mejor individuo.\n
    Ingenuamente retorna el individuo con menor coste.
    :param poblacion:
    :param problem:
    :return:
    """
    sol = min(poblacion, key=lambda s: distancia_total(s, problem))
    dist = distancia_total(sol, problem)
    return sol, dist

_ = Evaluar_Poblacion(poblacion_prueba, tsp_problem)
In [8]:
def Factibilizar(
        solucion: SolutionType,
        problem: TSProblemType,
        puntos_corte: List[int]
) -> SolutionType:
    """
    Para el operador de cruce 1-punto los hijos generados no son soluciones
    (algunos nodos se repiten y otros no están)\n
    Método que verifica y corrige aquellos hijos generados en el cruce.
    :param solucion:
    :param problem:
    :param puntos_corte:
    :return:
    """
    n = len(solucion)
    _solucion = list(solucion)
    all_nodes = set(problem.cached_nodes)
    faltantes = list(all_nodes - set(_solucion))
    random.shuffle(faltantes)
    start = puntos_corte[0]
    if len(puntos_corte) == 1:
        end = n
    else:
        end = puntos_corte[1]
    auxiliar = set(_solucion[:start] + _solucion[end:])
    for i in range(start, end):
        nodo_actual = _solucion[i]
        if nodo_actual in auxiliar:
            _solucion[i] = faltantes.pop()
        else:
            auxiliar.add(nodo_actual)
    if not validar_solucion(_solucion, problem):
        raise ValueError("Fallo en la Factibilización")
    return _solucion
In [9]:
def Mutar(solucion: SolutionType, mutacion: float):
    """
    Función de mutación. Se eligen dos nodos y se intercambia. Se podrían
    añadir otros operadores\n
    Se hace mutaciones mutación % de las veces
    :param solucion:
    :param mutacion:
    :return:
    """
    _solution = list(solucion)
    if random.random() <= mutacion:
        i, j = sorted(random.sample(range(0, len(solucion)), 2))
        _solution[i], _solution[j] = _solution[j], _solution[i]
    return _solution
In [10]:
def Descendencia(
        padres: Tuple[SolutionType, SolutionType],
        problem: TSProblemType,
        mutacion: float,
        estrategia_cruce: Literal["1-point", "2-point"] = "2-point"
) -> Tuple[SolutionType, SolutionType]:
    """
    Función para generar hijos a partir de 2 padres:
    Se elige el método de 1-punto o 2-puntos de cortes. Por defecto
    "2-point"
    :param padres:
    :param problem:
    :param mutacion:
    :param estrategia_cruce:
    :return:
    """
    padre_a = padres[0]
    padre_b = padres[1]
    n = len(problem.cached_nodes)
    num_cortes = 2 if estrategia_cruce == "2-point" else 1
    puntos_corte = sorted(random.sample(range(1, n), num_cortes))

    # division
    if len(puntos_corte) == 1:
        hijo_a = padre_a[:puntos_corte[0]] + padre_b[puntos_corte[0]:]
        hijo_b = padre_b[:puntos_corte[0]] + padre_a[puntos_corte[0]:]
    else:
        hijo_a = padre_a[:puntos_corte[0]] \
                 + padre_b[puntos_corte[0]:puntos_corte[1]] \
                 + padre_a[puntos_corte[1]:]
        hijo_b = padre_b[:puntos_corte[0]] \
                 + padre_a[puntos_corte[0]:puntos_corte[1]] \
                 + padre_b[puntos_corte[1]:]

    # factibilizar
    hijo_a = Factibilizar(hijo_a, problem, puntos_corte)
    hijo_b = Factibilizar(hijo_b, problem, puntos_corte)

    # mutar
    hijo_a = Mutar(hijo_a, mutacion)
    hijo_b = Mutar(hijo_b, mutacion)

    return hijo_a, hijo_b

s1, s2 = Descendencia(
    (poblacion_prueba[0], poblacion_prueba[1]), tsp_problem, 0.1, "2-point"
)
In [11]:
def Cruzar(
        poblacion: List[SolutionType],
        mutacion: float,
        problem: TSProblemType
) -> List[SolutionType]:
    """
    Función de cruce. Recibe una población (lista de soluciones) y devuelve la
    población ampliada con los hijos.\n
    Todos los individuos de la población son seleccionados para el cruce(si
    la población es par)\n
    Podría aplicarse un proceso previo de selección para elegir los
    individuos que se desea cruzar.
    :param poblacion:
    :param mutacion:
    :param problem:
    :return:
    """
    # recorrer solo los N primeros descendientes, los posteriores a encolar
    # tienden a ser los hijos
    n_padres = len(poblacion)
    _poblacion = list(poblacion)
    # se baraja la poblacion para garantizar un par de padres aleatorios.
    random.shuffle(_poblacion)
    for i in range(0, n_padres, 2):
        hijo_a, hijo_b = Descendencia(
            padres=(_poblacion[i], _poblacion[(i + 1) % n_padres]),
            mutacion=mutacion,
            problem=problem,
            estrategia_cruce="2-point"
        )
        poblacion.append(hijo_a)
        poblacion.append(hijo_b)

    return poblacion

cruce = Cruzar(poblacion_prueba, .15, tsp_problem)
In [12]:
def Seleccionar(
        problem: TSProblemType,
        poblacion: List[SolutionType],
        N: int,
        elitismo: float
):
    """
     Función de selección de la población. Recibe como parametro una
     poblacion y devuelve una poblacion a la que se ha eliminado individuos
     poco aptos(fitness alto) y para mantener una poblacion estable de N
     individuos\n
     Se tiene en cuenta el porcentaje elitismo pasado como parametro
     Para los individuos que no son de la elite podríamos usar una selección
     de ruleta(proporcional a su fitness)
    :param problem:
    :param poblacion:
    :param N:
    :param elitismo:
    :return:
    """
    _poblacion = sorted(poblacion, key=lambda x: distancia_total(x, problem))
    n_elitista = math.ceil(N*elitismo)
    nueva_poblacion = _poblacion[:n_elitista]
    individuos_restantes = _poblacion[n_elitista:]
    while len(nueva_poblacion) < N:
        # Se ha elegido la selección por torneo de 5 individuos
        participantes = random.sample(individuos_restantes, min(5, len(individuos_restantes)))
        # sobreviviente será agregado a la nueva poblacion
        ganador = min(participantes, key=lambda x: distancia_total(x, problem))
        nueva_poblacion.append(ganador)
        # removemos al ganador de la lista de individuos restantes, para asi
        # permitir a los otros participantes la posibilidad de volver a
        # participar
        individuos_restantes.remove(ganador)

    return nueva_poblacion

seleccion = Seleccionar(tsp_problem, cruce, 50, .1)

Proceso Principal¶

In [13]:
def algoritmo_genetico(
        problem: TSProblemType,
        N: int = 100,
        mutacion: float = .15,
        elitismo: float = .1,
        generaciones: int = 100,
        verbose: bool = False,
        dibujar_historico: bool = False,
):
    """
    Función principal del algoritmo genético
    :param problem: datos del problema
    :param N: Tamaño de la población
    :param mutacion: probabilidad de una mutación
    :param elitismo: porción de la mejor poblacion a mantener
    :param generaciones: nº de generaciones a generar para finalizar
    :return:
    """

    #Genera la poblacion inicial
    poblacion = generar_poblacion(problem, N)

    #Inicializamos valores para la mejor solucion
    mejor_solucion, mejor_distancia = Evaluar_Poblacion(poblacion, problem)

    # guardamos el historial de distancias para su posterior gratification
    distancias = [distancia_total(poblacion[0], problem), mejor_distancia]
    generacion = 0

    #Inciamos el ciclo de generaciones
    while generacion <= generaciones:

        #Cruce de la poblacion(incluye mutación)
        poblacion = Cruzar(poblacion, mutacion, problem)

        #Seleccionamos la población
        poblacion = Seleccionar(problem, poblacion, N, elitismo)

        #Evaluamos la nueva población
        solucion_actual, distancia_actual = Evaluar_Poblacion(
            poblacion, problem
        )
        distancias.append(distancia_actual)
        if verbose:
            print(
                "Generación #", generacion, "\nLa mejor solución es:", solucion_actual,
                "\ncon distancia ", distancia_actual, "\n"
            )

        # solo almacena la última mejor solucion
        if distancia_actual <= mejor_distancia:
            mejor_solucion = solucion_actual
            mejor_distancia = distancia_actual

        generacion += 1

    if dibujar_historico:
        x = range(len(distancias))
        plt.figure(figsize=(10, 6))
        plt.plot(
            x,
            distancias,
            color='#1f77b4', # Azul estándar y limpio
            linewidth=2,
            label='Mejor Distancia por Generación'
        )
        plt.title(
            f'Evolucion de Algoritmo genetico al problema {problem.name}'
        )
        plt.xlabel('Generaciones')
        plt.ylabel('Distancia Total')
        plt.tight_layout()
        plt.show()

    return mejor_solucion, mejor_distancia


sol, dis = algoritmo_genetico(
    problem=tsp_problem,
    N=500,
    mutacion=.3,
    elitismo=.40,
    generaciones=250,
    verbose=True,
    dibujar_historico=True
)
Generación # 0 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 17, 31, 7, 36, 35] 
con distancia  1437 

Generación # 1 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 17, 31, 7, 36, 35] 
con distancia  1437 

Generación # 2 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 17, 31, 7, 36, 35] 
con distancia  1437 

Generación # 3 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 17, 31, 7, 36, 35] 
con distancia  1437 

Generación # 4 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 5 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 6 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 7 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 8 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 9 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 10 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 11 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 12 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 13 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 14 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 15 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 16 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 17 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 18 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1392 

Generación # 19 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1367 

Generación # 20 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1367 

Generación # 21 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1367 

Generación # 22 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1367 

Generación # 23 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 22, 38, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1362 

Generación # 24 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 17, 7, 31, 36, 35] 
con distancia  1359 

Generación # 25 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1355 

Generación # 26 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1355 

Generación # 27 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1337 

Generación # 28 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 19, 13, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1337 

Generación # 29 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 25, 10, 8, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1333 

Generación # 30 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1315 

Generación # 31 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1315 

Generación # 32 
La mejor solución es: [33, 20, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1315 

Generación # 33 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1303 

Generación # 34 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1303 

Generación # 35 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 30, 29, 38, 22, 39, 21, 40, 24, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1298 

Generación # 36 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1291 

Generación # 37 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 12, 11, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1291 

Generación # 38 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 39 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 40 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 41 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 42 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 43 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 21, 24, 40, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1274 

Generación # 44 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 45 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 46 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 47 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 48 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 49 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 50 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 51 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 52 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 53 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 54 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 55 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 56 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 57 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 58 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 59 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 60 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 61 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 62 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 63 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 64 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 65 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 66 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 67 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 68 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 69 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 70 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 71 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 72 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 73 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 74 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 75 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 76 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 77 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 78 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 79 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 80 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 81 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 82 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 83 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 84 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 85 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 86 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 87 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 88 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 89 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 90 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 91 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 92 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 93 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 94 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 95 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 96 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 97 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 98 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 99 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 100 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 101 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 102 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 103 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 104 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 105 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 106 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 107 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 108 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 109 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 110 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 111 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 112 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 113 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 114 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 115 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 116 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 117 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 118 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 119 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 120 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 121 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 122 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 123 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 124 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 125 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 126 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 127 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 128 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 129 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 130 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 131 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 132 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 133 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 134 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 135 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 136 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 137 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 138 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 139 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 140 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 141 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 142 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 143 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 144 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 145 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 146 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 147 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 148 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 149 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 150 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 151 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 152 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 153 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 154 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 155 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 156 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 157 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 158 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 159 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 160 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 161 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 162 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 163 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 164 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 165 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 166 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 167 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 168 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 169 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 170 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 171 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 172 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 173 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 174 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 175 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 176 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 177 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 178 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 179 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 180 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 181 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 182 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 183 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 184 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 185 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 186 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 187 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 188 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 189 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 190 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 191 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 192 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 193 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 194 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 195 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 196 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 197 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 198 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 199 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 200 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 201 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 202 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 203 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 204 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 205 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 206 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 207 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 208 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 209 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 210 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 211 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 212 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 213 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 214 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 215 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 216 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 217 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 218 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 219 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 220 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 221 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 222 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 223 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 224 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 225 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 226 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 227 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 228 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 229 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 230 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 231 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 232 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 233 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 234 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 235 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 236 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 237 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 238 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 239 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 240 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 241 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 242 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 243 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 244 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 245 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 246 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 247 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 248 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 249 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

Generación # 250 
La mejor solución es: [20, 33, 34, 32, 0, 1, 6, 4, 3, 2, 27, 28, 29, 30, 38, 22, 39, 24, 40, 21, 9, 23, 41, 8, 10, 25, 11, 12, 18, 26, 5, 13, 19, 14, 16, 15, 37, 7, 17, 31, 36, 35] 
con distancia  1273 

No description has been provided for this image

Representación en un grafo a partir de la matriz de distancias (Optimización de posiciones usando escalado multidimensional (MDS)

Multidimensional scaling problem(MDS): https://en.wikipedia.org/wiki/Multidimensional_scaling

In [14]:
import networkx as nx
import matplotlib.pyplot as plt
from sklearn.manifold import MDS  # Multidimensional Scaling o Escalado Multidimensional


def plot_tsp_solution(
        problem: TSProblemType,
        tsp_solution: SolutionType,
        title: str = "",
) -> None:
    """
    Dibuja el grafo de un TSP con las posiciones calculadas mediante MDS y muestra
    solo las aristas correspondientes a la solución del TSP.

    :param distance_matrix: np.ndarray, matriz de distancias entre nodos
    :param tsp_solution: list, lista de nodos en el orden de la solución del TSP
    """
    # Validaciones para verificar si el problema esta definido por
    # coordenadas en R2
    COORD_TYPES = {'EUC_2D', 'ATT', 'CEIL_2D', 'GEO', 'PSEUDO'}
    w_type = getattr(problem, 'edge_weight_type', None)
    has_coords = (w_type in COORD_TYPES) or (len(list(problem.node_coords)) > 0)

    if has_coords:
        pos = problem.node_coords
    else:
        distance_matrix = problem.edge_weights
        num_nodes = len(distance_matrix)
        # Usar MDS para calcular posiciones de los nodos
        mds = MDS(n_components=2, dissimilarity="precomputed", random_state=40)
        positions = mds.fit_transform(distance_matrix)
        # Convertir las posiciones en un diccionario para networkx
        pos = {i: positions[i] for i in range(num_nodes)}

    # Crear un subgrafo con las aristas del camino TSP
    TSP_G = nx.Graph()
    TSP_G.add_nodes_from(tsp_solution)
    path_len = len(tsp_solution)
    for i in range(path_len):
        u = tsp_solution[i]
        v = tsp_solution[(i + 1) % path_len]
        TSP_G.add_edge(u, v, weight=problem.get_weight(u, v))
    # Dibujar el grafo
    plt.figure(figsize=(8, 6))

    # Dibujar nodos
    nx.draw_networkx_nodes(TSP_G, pos, node_color='lightblue', node_size=250)

    # Dibujar las aristas del camino TSP
    nx.draw_networkx_edges(TSP_G, pos, edge_color='red', width=2)

    # Añadir etiquetas a los nodos y pesos de las aristas
    nx.draw_networkx_labels(TSP_G, pos, font_size=8, font_weight='bold')
    edge_labels = nx.get_edge_attributes(TSP_G, 'weight')
    nx.draw_networkx_edge_labels(TSP_G, pos, edge_labels=edge_labels,
                                 font_size=6)

    plt.title(
        f"Grafo TSP con solución específica de {problem.name}"
        f" Costo Total: {distancia_total(tsp_solution, problem)}"
        f"{f' - {title}' if title else ''}"
    )

    plt.show()
In [15]:
plot_tsp_solution(
    problem=tsp_problem,
    tsp_solution=generar_poblacion(tsp_problem, 500)[0],
    title="Solución Voráz de la Primera generación"
)
/home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages/sklearn/manifold/_mds.py:677: FutureWarning: The default value of `n_init` will change from 4 to 1 in 1.9.
  warnings.warn(
No description has been provided for this image
In [16]:
plot_tsp_solution(
    problem=tsp_problem,
    tsp_solution=sol,
    title="Solución de la generación 250"
)
display(HTML(
    f"Para el problema {tsp_problem.name}, la solución mínima más baja "
    f"encontrada hasta el momento es 1273, y el mínimo que se obtuvo con GA "
    f"es {dis}"
))
/home/**/03MIAR-Algoritmos-de-Optimizacion-2025/.venv/lib/python3.10/site-packages/sklearn/manifold/_mds.py:677: FutureWarning: The default value of `n_init` will change from 4 to 1 in 1.9.
  warnings.warn(
No description has been provided for this image
Para el problema swiss42, la solución mínima más baja encontrada hasta el momento es 1273, y el mínimo que se obtuvo con GA es 1273

Ejemplos con otros problemas cortos de TSP¶

In [17]:
file = "att48.tsp"
download_tsp_file("https://raw.githubusercontent.com/mastqe/tsplib/refs/heads/master/att48.tsp", file)

att48_problem = tsplib95.load(file)
att48_problem.cached_nodes = list(att48_problem.get_nodes())

solucion_inicial_att48 = generar_poblacion(att48_problem, 500)[0]
mejor_solucion_att48, mejor_distancia = algoritmo_genetico(
    problem=att48_problem,
    N=500,
    mutacion=.3,
    elitismo=.40,
    generaciones=250,
    dibujar_historico=True
)
plot_tsp_solution(
    problem=att48_problem,
    tsp_solution=solucion_inicial_att48,
    title="Solución Voráz de la Primera generación"
)
plot_tsp_solution(
    problem=att48_problem,
    tsp_solution=mejor_solucion_att48,
    title="Solución de la generación 250"
)
display(HTML(
    f"Para el problema {att48_problem.name}, la solución mínima más baja "
    f"encontrada hasta el momento es 10628, y el mínimo que se obtuvo con GA "
    f"es {mejor_distancia}"
))
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Para el problema att48, la solución mínima más baja encontrada hasta el momento es 10628, y el mínimo que se obtuvo con GA es 11061
In [18]:
file = "eil51.tsp"
download_tsp_file("https://raw.githubusercontent.com/mastqe/tsplib/refs/heads/master/eil51.tsp", file)

eil51_problem = tsplib95.load(file)
eil51_problem.cached_nodes = list(eil51_problem.get_nodes())

solucion_inicial_eil51 = generar_poblacion(eil51_problem, 500)[0]
mejor_solucion_eil51, mejor_distancia = algoritmo_genetico(
    problem=eil51_problem,
    N=500,
    mutacion=.3,
    elitismo=.40,
    generaciones=250,
    dibujar_historico=True
)
plot_tsp_solution(
    problem=eil51_problem,
    tsp_solution=solucion_inicial_eil51,
    title="Solución Voráz de la Primera generación"
)
plot_tsp_solution(
    problem=eil51_problem,
    tsp_solution=mejor_solucion_eil51,
    title="Solución de la generación 250"
)
display(HTML(
    f"Para el problema {eil51_problem.name}, la solución mínima más baja "
    f"encontrada hasta el momento es 426, y el mínimo que se obtuvo con GA "
    f"es {mejor_distancia}"
))
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Para el problema eil51, la solución mínima más baja encontrada hasta el momento es 426, y el mínimo que se obtuvo con GA es 467

Bibliografia:¶

  • [1] S. Rana y S. R. Srivastava, "Solving travelling salesman problem using improved genetic algorithm," Indian Journal of Science and Technology, vol. 10, no. 30, pp. 1–6, ago. 2017. doi: 10.17485/ijst/2017/v10i30/115512.
  • [2] B. L. Miller y D. E. Goldberg, "Genetic algorithms, tournament selection, and the effects of noise," Complex Systems, vol. 9, no. 3, pp. 193–212, 1995.
  • [3] mastqe, "tsplib/solutions," Repositorio de GitHub, [En línea]. Disponible: https://github.com/mastqe/tsplib/blob/master/solutions. [Accedido: 28-feb.-2026].