##########################################
# 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))
示例#2
0
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!")