AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
scp_heuristic.h
1#ifndef PROBFD_HEURISTICS_SCP_HEURISTIC_H
2#define PROBFD_HEURISTICS_SCP_HEURISTIC_H
3
4#include "probfd/heuristics/task_dependent_heuristic.h"
5
6#include "probfd/task_evaluator_factory.h"
7
8#include <memory>
9#include <vector>
10
11// Forward Declarations
12namespace utils {
13class RandomNumberGenerator;
14class LogProxy;
15} // namespace utils
16
17namespace probfd::pdbs {
18class ProbabilityAwarePatternDatabase;
19class PatternCollectionGenerator;
20} // namespace probfd::pdbs
21
22namespace probfd::heuristics {
23
24class SCPHeuristic : public TaskDependentHeuristic {
25public:
26 enum OrderingStrategy { RANDOM, SIZE_ASC, SIZE_DESC, INHERIT };
27
28private:
29 const value_t termination_cost_;
30 const OrderingStrategy ordering_;
31 const std::shared_ptr<utils::RandomNumberGenerator> rng_;
32
33 std::vector<pdbs::ProbabilityAwarePatternDatabase> pdbs_;
34
35public:
36 explicit SCPHeuristic(
37 std::shared_ptr<ProbabilisticTask> task,
38 std::shared_ptr<FDRCostFunction> task_cost_function,
39 utils::LogProxy log,
40 std::shared_ptr<pdbs::PatternCollectionGenerator> generator,
41 OrderingStrategy order,
42 std::shared_ptr<utils::RandomNumberGenerator> rng);
43
44protected:
45 value_t evaluate(const State& state) const override;
46};
47
48class SCPHeuristicFactory : public TaskEvaluatorFactory {
49 const std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
50 pattern_collection_generator_;
51 const SCPHeuristic::OrderingStrategy ordering_;
52 const int random_seed_;
53 const utils::Verbosity verbosity_;
54
55public:
56 SCPHeuristicFactory(
57 std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
58 pattern_collection_generator,
59 SCPHeuristic::OrderingStrategy ordering,
60 int random_seed,
61 utils::Verbosity verbosity);
62
63 std::unique_ptr<FDREvaluator> create_evaluator(
64 std::shared_ptr<ProbabilisticTask> task,
65 std::shared_ptr<FDRCostFunction> task_cost_function) override;
66};
67
68} // namespace probfd::heuristics
69
70#endif // PROBFD_HEURISTICS_SCP_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