示例#1
0
 def GetOptimo(capital: Capital):
     opt = 10000
     capacum = 0
     capini = 99
     """Interacion entre capital el primer for """
     for cap in range(len(capital) - 1):
         DistanciaHelper.InicialCuidadVisitada(capital)
         Heuristica.GetRecorrerCuidad(cap, capital)
         capacum = 0
         """La cantidad KM recorrido """
         for km in range(len(capital) - 1):
             capacum += int(
                 DistanciaHelper.GetDistancia(
                     DistanciaHelper.Capitales[Heuristica.recorrido[km]],
                     DistanciaHelper.Capitales[Heuristica.recorrido[km +
                                                                    1]]))
         """Camparando para buscar el optimo"""
         if capacum <= opt:
             opt = capacum
             capini = cap
     print("El optimo: ", capital[capini].Nombre)
     """Vuelve a inicial las cuidad para poder calcular el recorrido de nuevo cal la capital opt"""
     DistanciaHelper.InicialCuidadVisitada(capital)
     Heuristica.GetRecorrerCuidad(capini, capital)
     Heuristica.PrintRecorrido()
示例#2
0
 def BuscarCiudadMasCercana(actual: Capital) -> Capital:
     """Busca la ciudad mas cercana a la actual de las que no se visitaron"""
     destino = None
     minimaDistancia = None
     for posibleDestino in list(
             filter(
                 lambda capital: capital.Visitada is False and capital !=
                 actual, DistanciaHelper.Capitales)):
         distancia = DistanciaHelper.GetDistancia(actual, posibleDestino)
         if (minimaDistancia is None or distancia < minimaDistancia):
             minimaDistancia = distancia
             destino = posibleDestino
     return destino
示例#3
0
 def PrintRecorrido():
     reckm = 0
     print("Indice" + ("Ciudad").center(30, " "))
     for rec in range(len(Heuristica.recorrido)):
         print(
             repr(DistanciaHelper.Capitales[
                 Heuristica.recorrido[rec]].Indice) +
             repr(DistanciaHelper.Capitales[
                 Heuristica.recorrido[rec]].Nombre).center(40, " "))
     for cap in range(len(DistanciaHelper.Capitales) - 1):
         reckm += int(
             DistanciaHelper.GetDistancia(
                 DistanciaHelper.Capitales[Heuristica.recorrido[cap]],
                 DistanciaHelper.Capitales[Heuristica.recorrido[cap + 1]]))
     print("El recorrido total es de " + repr(reckm) + " km")
示例#4
0
 def BuscarCiudad(actual):
     destino = 0
     menor = 10000
     for cap in range(len(DistanciaHelper.Capitales) - 1):
         """Revisando si ya no fue visitada"""
         if DistanciaHelper.Visitadas[cap] == 0:
             dis = int(
                 DistanciaHelper.GetDistancia(
                     DistanciaHelper.Capitales[actual],
                     DistanciaHelper.Capitales[cap]))
             """Compara la distancia encuentrado y va guardando el menor"""
             if dis < menor:
                 menor = dis
                 destino = cap
     return destino