AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
evaluators.h
1#ifndef PROBFD_PDBS_EVALUATORS_H
2#define PROBFD_PDBS_EVALUATORS_H
3
4#include "probfd/pdbs/types.h"
5
6#include "probfd/evaluator.h"
7#include "probfd/value_type.h"
8
9// Forward Declarations
10namespace pdbs {
11class PatternDatabase;
12}
13
14namespace probfd::pdbs {
15class StateRankingFunction;
16class ProbabilityAwarePatternDatabase;
17} // namespace probfd::pdbs
18
19namespace probfd::pdbs {
20
23
24class PDBEvaluator : public StateRankEvaluator {
25 const ::pdbs::PatternDatabase& pdb_;
26
27public:
28 explicit PDBEvaluator(const ::pdbs::PatternDatabase& pdb);
29
30 [[nodiscard]]
31 value_t evaluate(StateRank state) const override;
32};
33
34class DeadendPDBEvaluator : public StateRankEvaluator {
35 const ::pdbs::PatternDatabase& pdb_;
36
37public:
38 explicit DeadendPDBEvaluator(const ::pdbs::PatternDatabase& pdb);
39
40 [[nodiscard]]
41 value_t evaluate(StateRank state) const override;
42};
43
44class IncrementalPPDBEvaluator : public StateRankEvaluator {
45 const std::vector<value_t>& value_table_;
46
47 int left_multiplier_;
48 int right_multiplier_;
49 int domain_size_;
50
51public:
52 explicit IncrementalPPDBEvaluator(
53 const std::vector<value_t>& value_table,
54 const StateRankingFunction& mapper,
55 int add_var);
56
57 [[nodiscard]]
58 value_t evaluate(StateRank state) const override;
59
60private:
61 [[nodiscard]]
62 StateRank to_parent_state(StateRank state) const;
63};
64
65class MergeEvaluator : public StateRankEvaluator {
66 const StateRankingFunction& mapper_;
67 const ProbabilityAwarePatternDatabase& left_;
68 const ProbabilityAwarePatternDatabase& right_;
69 const value_t termination_cost_;
70
71public:
72 MergeEvaluator(
73 const StateRankingFunction& mapper,
74 const ProbabilityAwarePatternDatabase& left,
75 const ProbabilityAwarePatternDatabase& right,
76 value_t termination_cost);
77
78 [[nodiscard]]
79 value_t evaluate(StateRank state) const override;
80};
81
82} // namespace probfd::pdbs
83
84#endif // PROBFD_PDBS_EVALUATORS_H
The interface representing heuristic functions.
Definition mdp_algorithm.h:16
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
Evaluator< StateRank > StateRankEvaluator
Type alias for heuristics for projection states.
Definition evaluators.h:22
double value_t
Typedef for the state value type.
Definition aliases.h:7