AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
higher_order_hpom_constraints.h
1#ifndef PROBFD_OCCUPATION_MEASURES_HIGHER_ORDER_HPOM_CONSTRAINTS_H
2#define PROBFD_OCCUPATION_MEASURES_HIGHER_ORDER_HPOM_CONSTRAINTS_H
3
4#include "probfd/occupation_measures/constraint_generator.h"
5
6#include <cstddef>
7#include <memory>
8#include <vector>
9
10// Forward Declarations
11class VariablesProxy;
12
15
20class HigherOrderHPOMGenerator : public ConstraintGenerator {
21 const int projection_size_;
22
23 struct PatternInfo {
24 int offset;
25 std::vector<int> multipliers;
26
27 explicit PatternInfo(int offset)
28 : offset(offset)
29 {
30 }
31
32 [[nodiscard]]
33 int get_state_id(const std::vector<int>& state) const;
34
35 [[nodiscard]]
36 int get_updated_id(
37 const std::vector<int>& pattern,
38 const std::vector<int>& state,
39 const std::vector<int>& pstate) const;
40
41 [[nodiscard]]
42 int to_id(const std::vector<int>& pattern, const State& state) const;
43 };
44
45 std::vector<PatternInfo> infos_;
46
47public:
48 explicit HigherOrderHPOMGenerator(int projection_size);
49
50 void initialize_constraints(
51 const std::shared_ptr<ProbabilisticTask>& task,
52 const std::shared_ptr<FDRCostFunction>& task_cost_function,
53 lp::LinearProgram& lp) final;
54
55 void update_constraints(const State& state, lp::LPSolver& solver) final;
56
57 void reset_constraints(const State& state, lp::LPSolver& solver) final;
58
59private:
60 [[nodiscard]]
61 std::vector<int> get_first_pattern() const;
62};
63
64} // namespace probfd::occupation_measures
65
66#endif // PROBFD_OCCUPATION_MEASURES_HIGHER_ORDER_HPOM_CONSTRAINTS_H
Implements the optimal operator cost partitioning heuristic over a set of PDBs.
Definition higher_order_hpom_constraints.h:20
Namespace dedicated to occupation measure heuristic base classes.
Definition occupation_measure_heuristic.h:10