AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
ucp_heuristic.h
1#ifndef PROBFD_HEURISTICS_UCP_HEURISTIC_H
2#define PROBFD_HEURISTICS_UCP_HEURISTIC_H
3
4#include "probfd/heuristics/task_dependent_heuristic.h"
5#include "probfd/task_evaluator_factory.h"
6
7#include <memory>
8#include <vector>
9
10namespace probfd::pdbs {
11class ProbabilityAwarePatternDatabase;
12class PatternCollectionGenerator;
13} // namespace probfd::pdbs
14
15namespace probfd::heuristics {
16
17class UCPHeuristic : public TaskDependentHeuristic {
18 const value_t termination_cost_;
19 std::vector<pdbs::ProbabilityAwarePatternDatabase> pdbs_;
20
21public:
22 UCPHeuristic(
23 std::shared_ptr<ProbabilisticTask> task,
24 std::shared_ptr<FDRCostFunction> task_cost_function,
25 utils::LogProxy log,
26 std::shared_ptr<pdbs::PatternCollectionGenerator> generator);
27
28 ~UCPHeuristic() override;
29
30 void print_statistics() const override
31 {
32 // TODO
33 }
34
35protected:
36 value_t evaluate(const State& state) const override;
37};
38
39class UCPHeuristicFactory : public TaskEvaluatorFactory {
40 const utils::Verbosity verbosity_;
41 const std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
42 pattern_collection_generator_;
43
44public:
45 UCPHeuristicFactory(
46 utils::Verbosity verbosity,
47 std::shared_ptr<probfd::pdbs::PatternCollectionGenerator> generator);
48
49 std::unique_ptr<FDREvaluator> create_evaluator(
50 std::shared_ptr<ProbabilisticTask> task,
51 std::shared_ptr<FDRCostFunction> task_cost_function) override;
52};
53
54} // namespace probfd::heuristics
55
56#endif // PROBFD_HEURISTICS_UCP_HEURISTIC_H
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