Пример #1
0
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")
Пример #3
0
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")