AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
probability_aware_pdb_heuristic.h
1#ifndef PROBFD_HEURISTICS_PROBABILITY_AWARE_PDB_HEURISTIC_H
2#define PROBFD_HEURISTICS_PROBABILITY_AWARE_PDB_HEURISTIC_H
3
4#include "probfd/pdbs/types.h"
5
6#include "probfd/heuristics/task_dependent_heuristic.h"
7#include "probfd/task_evaluator_factory.h"
8
9#include <memory>
10#include <vector>
11
12// Forward Declarations
13namespace utils {
14class LogProxy;
15}
16
17namespace probfd::pdbs {
18class PatternCollectionGenerator;
19class SubCollectionFinder;
20} // namespace probfd::pdbs
21
22namespace probfd::heuristics {
23
31class ProbabilityAwarePDBHeuristic : public TaskDependentHeuristic {
32 const value_t termination_cost_;
33
34 std::shared_ptr<pdbs::PPDBCollection> pdbs_;
35 std::shared_ptr<std::vector<pdbs::PatternSubCollection>> subcollections_;
36 std::shared_ptr<pdbs::SubCollectionFinder> subcollection_finder_;
37
38public:
40 std::shared_ptr<ProbabilisticTask> task,
41 std::shared_ptr<FDRCostFunction> task_cost_function,
42 std::shared_ptr<pdbs::PatternCollectionGenerator> generator,
43 double max_time_dominance_pruning,
44 utils::LogProxy log);
45
46 value_t evaluate(const State& state) const override;
47};
48
49class ProbabilityAwarePDBHeuristicFactory : public TaskEvaluatorFactory {
50 const std::shared_ptr<probfd::pdbs::PatternCollectionGenerator> patterns_;
51 const double max_time_dominance_pruning_;
52 const utils::Verbosity verbosity_;
53
54public:
55 ProbabilityAwarePDBHeuristicFactory(
56 std::shared_ptr<probfd::pdbs::PatternCollectionGenerator> patterns,
57 double max_time_dominance_pruning,
58 utils::Verbosity verbosity);
59
60 std::unique_ptr<FDREvaluator> create_evaluator(
61 std::shared_ptr<ProbabilisticTask> task,
62 std::shared_ptr<FDRCostFunction> task_cost_function) override;
63};
64
65} // namespace probfd::heuristics
66
67#endif // PROBFD_HEURISTICS_PROBABILITY_AWARE_PDB_HEURISTIC_H
The probability-aware PDB heuristic.
Definition probability_aware_pdb_heuristic.h:31
This namespace contains heuristic implementations.
Definition additive_cartesian_heuristic.h:19
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
double value_t
Typedef for the state value type.
Definition aliases.h:7