AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
stubborn_sets_ec.h
1#ifndef PRUNING_STUBBORN_SETS_EC_H
2#define PRUNING_STUBBORN_SETS_EC_H
3
4#include "downward/pruning/stubborn_sets_action_centric.h"
5
6namespace stubborn_sets_ec {
7class StubbornSetsEC : public stubborn_sets::StubbornSetsActionCentric {
8private:
9 std::vector<std::vector<std::vector<bool>>> reachability_map;
10 std::vector<std::vector<int>> op_preconditions_on_var;
11 std::vector<bool> active_ops;
12 std::vector<std::vector<int>> conflicting_and_disabling;
13 std::vector<bool> conflicting_and_disabling_computed;
14 std::vector<std::vector<int>> disabled;
15 std::vector<bool> disabled_computed;
16 std::vector<bool> written_vars;
17 std::vector<std::vector<bool>> nes_computed;
18
19 bool is_applicable(int op_no, const State& state) const;
20 void
21 get_disabled_vars(int op1_no, int op2_no, std::vector<int>& disabled_vars)
22 const;
23 void build_reachability_map(const TaskProxy& task_proxy);
24 void compute_operator_preconditions(const TaskProxy& task_proxy);
25 const std::vector<int>& get_conflicting_and_disabling(int op1_no);
26 const std::vector<int>& get_disabled(int op1_no);
27 void add_conflicting_and_disabling(int op_no, const State& state);
28 void compute_active_operators(const State& state);
29 void enqueue_stubborn_operator_and_remember_written_vars(
30 int op_no,
31 const State& state);
32 void add_nes_for_fact(const FactPair& fact, const State& state);
33 void apply_s5(int op_no, const State& state);
34
35protected:
36 virtual void initialize_stubborn_set(const State& state) override;
37 virtual void
38 handle_stubborn_operator(const State& state, int op_no) override;
39
40public:
41 explicit StubbornSetsEC(utils::Verbosity verbosity);
42 virtual void initialize(const std::shared_ptr<AbstractTask>& task) override;
43};
44} // namespace stubborn_sets_ec
45#endif