for iterr in [10**x for x in [3,4,5]]: with Timer() as t: solution, history = serial_parallel_tempering(graph, distance, initial_paths, initial_temps, iterr, changepath, nswaps, nbefore) print "Iterations: {:.2E}".format(iterr) print "Calculated path: " + str(solution) print "Calculated path length: " + str(distance(graph, solution)) print "Time: " + str(t.interval) + "\n" # Run parallel tempering in parallel print "\nParallel Parallel Tempering\n" for iterr in [10**x for x in [3, 4, 5]]: with Timer() as t: solution, history = parallel_parallel_tempering(graph, distance, initial_paths, initial_temps, iterr, changepath, nswaps, nbefore) print "Iterations: {:.2E}".format(iterr) print "Calculated path: " + str(solution) print "Calculated path length: " + str(distance(graph, solution)) print "Time: " + str(t.interval) + "\n"
dist_hist_ppt = [] time_hist_spt = [] dist_hist_spt = [] time_hist_sa = [] dist_hist_sa = [] for i in range(runs): # Use the same initial paths for all algorithms initial_Xs = [np.random.permutation(size) for a in range(num_processes)] # Run each algorithm using the specified parameters, take their best values and elapsed times throughout the algorithm, # and append these to a list for each. solution_ppt, histories_ppt = parallel_parallel_tempering( graph, distance, initial_Xs, initial_temps, iterr, changepath, nswaps, nbefore ) best_hist, time_hist = hist_best(histories_ppt[0]) time_hist_ppt.append(time_hist) dist_hist_ppt.append(best_hist) print "Parallel Parallel Tempering, run ", i, " complete." solution_spt, histories_spt = serial_parallel_tempering( graph, distance, initial_Xs, initial_temps, iterr, changepath, nswaps, nbefore ) best_hist, time_hist = hist_best(histories_spt[0]) time_hist_spt.append(time_hist) dist_hist_spt.append(best_hist) print "Serial Parallel Tempering, run ", i, " complete."