ordenFlujos = ordenSuma(matrizFlujos)[::-1] ordenDistancias = ordenSuma(matrizDistancias) for i in range(n): greedySolution[ordenFlujos[i][0]] = ordenDistancias[i][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")
i += Pobl.proximaGeneracion() if n % 10 == 0: i += Pobl.aplicaBL(maxEval=50000 - i, prob=0.1, mejores=False, nSteps=400) print(str(int(i / 500.0)) + "% en la generacion " + str(n)) print("Mejor coste hasta ahora: " + str(Pobl.mejor.coste())) tiempo_final = time() first_sol = Pobl.mejor with open(printFile, 'w') as f: f.write(str(first_sol) + "\n") f.write("TiempoGenetico2OPXM2:\t" + str(tiempo_final - tiempo_inicial) + "\n") f.write("CosteGenetico2OPXM2:\t" + str( coste(matDist=matrizDistancias, matFlujo=matrizFlujos, perm=first_sol.P)) + "\n") # Mejor Solucion mejorPerm, newCost = readSolution(solveName) mejorSol = Permutacion(P=mejorPerm, F=matrizFlujos, D=matrizDistancias) f.write(str(mejorSol) + "\n") f.write("Mejor:\t" + str(newCost) + "\n")
while i < 50000: #print(i) n+=1 i += Pobl.proximaGeneracion() if n %10 == 0: #Pobl.aplicaBL(maxEval=50000-i,prob=1,mejores = False,nSteps = 400) i+=Pobl.aplicaBL(maxEval=50000-i,prob=1,mejores = False,nSteps = 400) print(str(int(i/500.0))+"% en la generacion "+str(n)) print("Mejor coste hasta ahora: "+str(Pobl.mejor.coste())) tiempo_final = time() first_sol = Pobl.mejor with open(printFile,'w') as f: f.write(str(first_sol)+ "\n") f.write("TiempoGenetico2OPXM1:\t" + str(tiempo_final-tiempo_inicial)+ "\n") f.write("CosteGenetico2OPXM1:\t"+ str(coste( matDist = matrizDistancias, matFlujo = matrizFlujos,perm = first_sol.P)) + "\n") # Mejor Solucion mejorPerm, newCost = readSolution(solveName) mejorSol = Permutacion(P=mejorPerm,F=matrizFlujos,D = matrizDistancias) f.write(str(mejorSol)+"\n") f.write("Mejor:\t"+str(newCost)+"\n")