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")
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:
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)