########################################## # No need to edit this file, only run it # and copy the outputs. ########################################## from consts import Consts from astar import AStar from ways import load_map_from_csv from busSolvers import GreedyBestFirstSolver from problems import BusProblem from costs import L2DistanceCost from heuristics import L2DistanceHeuristic roads = load_map_from_csv(Consts.getDataFilePath("israel.csv")) for fileName in [ "TLV_5.in", "SDEROT_50.in", "BEER_SHEVA_100.in", "HAIFA_100.in" ]: print("{}:".format(fileName).ljust(20), flush=True, end="") prob = BusProblem.load(Consts.getDataFilePath(fileName)) mapAstar = AStar(L2DistanceHeuristic(), shouldCache=True) pickingPath = GreedyBestFirstSolver(roads, mapAstar, L2DistanceCost(roads)).solve(prob) print("{:.2f}km".format(pickingPath.getDistance() / 1000))
from costs import L2DistanceCost from heuristics import L2DistanceHeuristic import numpy as np REPEATS = 150 # Load the files roads = load_map_from_csv(Consts.getDataFilePath("israel.csv")) prob = BusProblem.load(Consts.getDataFilePath("HAIFA_100.in")) mapAstar = AStar(L2DistanceHeuristic(), shouldCache=True) scorer = L2DistanceCost(roads) # Run the greedy solver pickingPath = GreedyBestFirstSolver(roads, mapAstar, scorer).solve(prob) greedyDistance = pickingPath.getDistance() / 1000 print("Greedy solution: {:.2f}km".format(greedyDistance)) # Run the stochastic solver #REPATS times solver = GreedyStochasticSolver(roads, mapAstar, scorer, Consts.STOCH_INITIAL_TEMPERATURE, Consts.STOCH_TEMPERATURE_DECAY_FUNCTION, Consts.STOCH_TOP_SCORES_TO_CONSIDER) results = np.zeros((REPEATS,)) print("Stochastic repeats:") for i in range(REPEATS): print("{}..".format(i+1), end=" ", flush=True) results[i] = solver.solve(prob).getDistance() / 1000 print("\nDone!")