예제 #1
0
matrizFlujos = numpy.array(matrizFlujos)
matrizDistancias = numpy.array(matrizDistancias)
n = int(n)

matrizFlujos = [[int(matrizFlujos[i][j]) for j in range(len(matrizFlujos[i]))]
                for i in range(len(matrizFlujos))]
matrizDistancias = [[
    int(matrizDistancias[i][j]) for j in range(len(matrizDistancias[i]))
] for i in range(len(matrizFlujos))]

# Lectura del problema hecho.

tiempo_inicial = time()
# Algoritmo.

mejorSol = Permutacion.randPerm(D=matrizDistancias, F=matrizFlujos)
mejorSol = mejorSol.ES(nBusquedas=50000)

tiempo_final = time()

# Se guarda es MejorES a la mejor solución por enfriamiento simulado.
first_sol = mejorSol

with open(printFile, 'w') as f:
    f.write(str(first_sol) + "\n")
    f.write("TiempoES:\t" + str(tiempo_final - tiempo_inicial) + "\n")
    f.write("CosteES:\t" + str(
        coste(matDist=matrizDistancias,
              matFlujo=matrizFlujos,
              perm=first_sol.P)) + "\n")
예제 #2
0
matrizDistancias = numpy.array(matrizDistancias)
n = int(n)

matrizFlujos = [[int(matrizFlujos[i][j]) for j in range(len(matrizFlujos[i]))]
                for i in range(len(matrizFlujos))]
matrizDistancias = [[
    int(matrizDistancias[i][j]) for j in range(len(matrizDistancias[i]))
] for i in range(len(matrizFlujos))]

# Lectura del problema hecho.

tiempo_inicial = time()
# Algoritmo.
soluciones = []
for i in range(25):
    soluciones.append(Permutacion.randPerm(D=matrizDistancias, F=matrizFlujos))
mejorSol = None
for sol in soluciones:
    sol, j = sol.busquedaLocal(50000 // 25)

    if mejorSol == None:
        mejorSol = sol
    if mejorSol.coste() > sol.coste():
        mejorSol = sol

tiempo_final = time()

# Se guarda es MejorES a la mejor solución por enfriamiento simulado.
first_sol = mejorSol

with open(printFile, 'w') as f:
예제 #3
0
tiempo_greedy = time()
# print(greedySolution)
greedySol = Permutacion(P=greedySolution, F=matrizFlujos, D=matrizDistancias)

with open(printFile, 'w') as f:
    f.write(str(greedySol) + "\n")
    f.write("TiempoGreedy:\t" + str(tiempo_greedy - tiempo_inicial))
    f.write("\nCosteGreedy:\t" + str(
        coste(matDist=matrizDistancias,
              matFlujo=matrizFlujos,
              perm=greedySol.P)) + "\n")

    # Ahora comienza la búsqueda local.
    tiempo_inicio_BL = time()
    #BLSol,j = Permutacion.randPerm(F=matrizFlujos,D=matrizDistancias).busquedaLocal(MaxIter=50000)
    BLSol, j = Permutacion.randPerm(F=matrizFlujos,
                                    D=matrizDistancias).busquedaLocal()
    tiempo_final_BL = time()

    f.write(str(BLSol))
    f.write("\nTiempoBL:\t" + str(tiempo_greedy - tiempo_inicial +
                                  tiempo_final_BL - tiempo_inicio_BL))
    f.write("\nCosteBL:\t" + str(
        coste(matDist=matrizDistancias, matFlujo=matrizFlujos, perm=BLSol.P)) +
            "\n")

    # Búsqueda local realizada.

    mejorPerm, newCost = readSolution(solveName)

    mejorSol = Permutacion(P=mejorPerm, F=matrizFlujos, D=matrizDistancias)