1#ifndef PRUNING_STUBBORN_SETS_EC_H
2#define PRUNING_STUBBORN_SETS_EC_H
4#include "downward/pruning/stubborn_sets_action_centric.h"
6namespace stubborn_sets_ec {
7class StubbornSetsEC :
public stubborn_sets::StubbornSetsActionCentric {
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;
19 bool is_applicable(
int op_no,
const State& state)
const;
21 get_disabled_vars(
int op1_no,
int op2_no, std::vector<int>& disabled_vars)
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(
32 void add_nes_for_fact(
const FactPair& fact,
const State& state);
33 void apply_s5(
int op_no,
const State& state);
36 virtual void initialize_stubborn_set(
const State& state)
override;
38 handle_stubborn_operator(
const State& state,
int op_no)
override;
41 explicit StubbornSetsEC(utils::Verbosity verbosity);
42 virtual void initialize(
const std::shared_ptr<AbstractTask>& task)
override;