AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
cartesian_heuristic_function.h
1#ifndef PROBFD_CARTESIAN_ABSTRACTIONS_CARTESIAN_HEURISTIC_FUNCTION_H
2#define PROBFD_CARTESIAN_ABSTRACTIONS_CARTESIAN_HEURISTIC_FUNCTION_H
3
4#include "probfd/cartesian_abstractions/types.h"
5
6#include "probfd/value_type.h"
7
8#include "downward/cartesian_abstractions/refinement_hierarchy.h"
9
10#include <memory>
11#include <vector>
12
13// Forward Declarations
14class State;
15
16namespace probfd::cartesian_abstractions {
17
18/*
19 Store RefinementHierarchy and heuristic values for looking up abstract state
20 IDs and corresponding heuristic values efficiently.
21*/
22class CartesianHeuristicFunction {
23 // Avoid const to enable moving.
24 std::unique_ptr<RefinementHierarchy> refinement_hierarchy_;
25 std::vector<value_t> h_values_;
26
27public:
28 CartesianHeuristicFunction(
29 std::unique_ptr<RefinementHierarchy>&& hierarchy,
30 std::vector<value_t>&& h_values);
31
32 CartesianHeuristicFunction(const CartesianHeuristicFunction&) = delete;
33 CartesianHeuristicFunction(CartesianHeuristicFunction&&) = default;
34
35 ~CartesianHeuristicFunction();
36
37 [[nodiscard]]
38 value_t get_value(const State& state) const;
39};
40
41} // namespace probfd::cartesian_abstractions
42
43#endif // PROBFD_CARTESIAN_ABSTRACTIONS_CARTESIAN_HEURISTIC_FUNCTION_H
double value_t
Typedef for the state value type.
Definition aliases.h:7