1#ifndef PROBFD_CARTESIAN_ASTAR_TRACE_GENERATOR_H
2#define PROBFD_CARTESIAN_ASTAR_TRACE_GENERATOR_H
4#include "probfd/cartesian_abstractions/trace_generator.h"
5#include "probfd/cartesian_abstractions/types.h"
7#include "probfd/value_type.h"
9#include "downward/algorithms/priority_queues.h"
19namespace probfd::cartesian_abstractions {
20class CartesianAbstraction;
21class CartesianHeuristic;
24namespace probfd::cartesian_abstractions {
28class AStarTraceGenerator :
public TraceGenerator {
29 class AbstractSearchInfo;
32 priority_queues::HeapQueue<value_t, int> open_queue_;
33 std::vector<AbstractSearchInfo> search_info_;
35 std::unique_ptr<Trace>
36 extract_solution(
int init_id,
int goal_id, utils::CountdownTimer& timer)
39 void update_heuristic(
40 CartesianAbstraction& abstraction,
41 CartesianHeuristic& heuristic,
42 const Trace& solution)
const;
45 AStarTraceGenerator();
47 std::unique_ptr<Trace> find_trace(
48 CartesianAbstraction& abstraction,
50 CartesianHeuristic& heuristic,
51 utils::CountdownTimer& timer)
override;
53 void notify_split()
override;