Example #1
0
Puzzle.initialize_pdb(3)  # heuristica basda en distancia manhattan
heuristic = Puzzle.pdb_best  # una heurística basada en pattern databases que debes implementar
# inicialización de la heurística basada en PDBs

print('%5s%10s%10s%10s%10s%10s' %
      ('#prob', '#exp', '#gen', '|sol|', 'tiempo', 'maxsubopt'))
problems = []
load_problems(problems)
total_time = 0
total_cost = 0
total_expansions = 0
#num_problems = len(problems) # cambiar si quieres ejecutar sobre todos los problemas
num_problems = 10  # solo ejecutamos los primeros 10 problemas
for prob in range(0, num_problems):
    init = problems[prob]
    s = Astar(
        init, heuristic, 2
    )  # agregar un tercer parámetro una vez que lo hayas transformado en Weighted A*
    result = s.search()
    print('%5d%10d%10d%10d%10.2f%10.2f' %
          (prob + 1, s.expansions, len(s.generated), result.g,
           s.end_time - s.start_time, s.estimate_suboptimality()))
    total_time += s.end_time - s.start_time
    total_cost += result.g
    total_expansions += s.expansions
    if show_solutions:
        print(result.trace())
print('Tiempo total:        %.2f' % (total_time))
print('Expansiones totales: %d' % (total_expansions))
print('Costo total:         %d' % (total_cost))