AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
additive_cartesian_heuristic.h
1#ifndef PROBFD_HEURISTICS_ADDITIVE_CARTESIAN_HEURISTIC_H
2#define PROBFD_HEURISTICS_ADDITIVE_CARTESIAN_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 probfd::cartesian_abstractions {
13class CartesianHeuristicFunction;
14class FlawGeneratorFactory;
15class SplitSelectorFactory;
16class SubtaskGenerator;
17} // namespace probfd::cartesian_abstractions
18
20
21/*
22 Store CartesianHeuristicFunctions and compute overall heuristic by
23 summing all of their values.
24*/
25class AdditiveCartesianHeuristic : public TaskDependentHeuristic {
26 const std::vector<cartesian_abstractions::CartesianHeuristicFunction>
27 heuristic_functions_;
28
29public:
30 AdditiveCartesianHeuristic(
31 std::shared_ptr<ProbabilisticTask> task,
32 utils::LogProxy log,
33 std::vector<std::shared_ptr<cartesian_abstractions::SubtaskGenerator>>
34 subtask_generators,
35 std::shared_ptr<cartesian_abstractions::FlawGeneratorFactory>
36 flaw_generator_factory,
37 std::shared_ptr<cartesian_abstractions::SplitSelectorFactory>
38 split_selector_factory,
39 int max_states,
40 int max_transitions,
41 double max_time,
42 bool use_general_costs);
43
44protected:
45 value_t evaluate(const State& ancestor_state) const override;
46};
47
48class AdditiveCartesianHeuristicFactory : public TaskEvaluatorFactory {
49 const std::vector<
50 std::shared_ptr<probfd::cartesian_abstractions ::SubtaskGenerator>>
51 subtask_generators;
52 const std::shared_ptr<probfd::cartesian_abstractions ::FlawGeneratorFactory>
53 flaw_generator_factory;
54 const std::shared_ptr<probfd::cartesian_abstractions ::SplitSelectorFactory>
55 split_selector_factory;
56 const int max_states;
57 const int max_transitions;
58 const double max_time;
59 const bool use_general_costs;
60
61 const utils::LogProxy log_;
62
63public:
64 AdditiveCartesianHeuristicFactory(
65 std::vector<std::shared_ptr<
66 probfd::cartesian_abstractions ::SubtaskGenerator>> subtasks,
67 std::shared_ptr<probfd::cartesian_abstractions ::FlawGeneratorFactory>
68 flaw_generator_factory,
69 std::shared_ptr<probfd::cartesian_abstractions ::SplitSelectorFactory>
70 split_selector_factory,
71 int max_states,
72 int max_transitions,
73 double max_time,
74 bool use_general_costs,
75 utils::Verbosity verbosity);
76
77 std::unique_ptr<FDREvaluator> create_evaluator(
78 std::shared_ptr<ProbabilisticTask> task,
79 std::shared_ptr<FDRCostFunction> task_cost_function) override;
80};
81
82} // namespace probfd::heuristics
83
84#endif // PROBFD_HEURISTICS_ADDITIVE_CARTESIAN_HEURISTIC_H
This namespace contains heuristic implementations.
Definition additive_cartesian_heuristic.h:19
double value_t
Typedef for the state value type.
Definition aliases.h:7