AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
gzocp_heuristic.h
1#ifndef PROBFD_HEURISTICS_GZOCP_HEURISTIC_H
2#define PROBFD_HEURISTICS_GZOCP_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
10// Forward Declarations
11namespace utils {
12class RandomNumberGenerator;
13class LogProxy;
14} // namespace utils
15
16namespace probfd::pdbs {
18class PatternCollectionGenerator;
19} // namespace probfd::pdbs
20
21namespace probfd::heuristics {
22
23class GZOCPHeuristic : public TaskDependentHeuristic {
24public:
25 enum OrderingStrategy { RANDOM, SIZE_ASC, SIZE_DESC, INHERIT };
26
27private:
28 const value_t termination_cost_;
29 const OrderingStrategy ordering_;
30 const std::shared_ptr<utils::RandomNumberGenerator> rng_;
31
32 std::vector<pdbs::ProbabilityAwarePatternDatabase> pdbs_;
33
34public:
35 explicit GZOCPHeuristic(
36 std::shared_ptr<ProbabilisticTask> task,
37 std::shared_ptr<FDRCostFunction> task_cost_function,
38 utils::LogProxy log,
39 std::shared_ptr<pdbs::PatternCollectionGenerator> generator,
40 OrderingStrategy order,
41 std::shared_ptr<utils::RandomNumberGenerator> rng);
42
43 void print_statistics() const override
44 {
45 // TODO
46 }
47
48protected:
49 value_t evaluate(const State& state) const override;
50};
51
52class GZOCPHeuristicFactory : public TaskEvaluatorFactory {
53 const std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
54 pattern_collection_generator_;
55 const GZOCPHeuristic::OrderingStrategy ordering_;
56 const int random_seed_;
57 const utils::Verbosity verbosity_;
58
59public:
60 explicit GZOCPHeuristicFactory(
61 std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
62 pattern_collection_generator_,
63 GZOCPHeuristic::OrderingStrategy ordering_,
64 int random_seed_,
65 utils::Verbosity verbosity_);
66
67 std::unique_ptr<FDREvaluator> create_evaluator(
68 std::shared_ptr<ProbabilisticTask> task,
69 std::shared_ptr<FDRCostFunction> task_cost_function) override;
70};
71
72} // namespace probfd::heuristics
73
74#endif // PROBFD_HEURISTICS_GZOCP_HEURISTIC_H
Implementation of a probability-aware pattern database.
Definition probability_aware_pattern_database.h:37
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