1#ifndef LANDMARKS_EXPLORATION_H
2#define LANDMARKS_EXPLORATION_H
4#include "downward/landmarks/util.h"
6#include "downward/task_proxy.h"
8#include "downward/algorithms/priority_queues.h"
10#include <unordered_map>
11#include <unordered_set>
24 std::vector<UnaryOperator*> precondition_of;
29 : fact(FactPair::no_fact)
35 bool operator<(
const Proposition& other)
const {
return fact < other.fact; }
40 const int num_preconditions;
43 int unsatisfied_preconditions;
46 const std::vector<Proposition*>& preconditions,
49 : op_or_axiom_id(op_or_axiom_id)
50 , num_preconditions(static_cast<int>(preconditions.size()))
52 , unsatisfied_preconditions(num_preconditions)
61 std::vector<UnaryOperator> unary_operators;
62 std::vector<std::vector<Proposition>> propositions;
63 std::deque<Proposition*> prop_queue;
65 void build_unary_operators(
const AxiomOrOperatorProxy& op);
66 void setup_exploration_queue(
68 const std::vector<FactPair>& excluded_props,
69 const std::vector<int>& excluded_op_ids);
70 void relaxed_exploration();
71 void enqueue_if_necessary(Proposition* prop);
74 Exploration(
const TaskProxy& task_proxy, utils::LogProxy& log);
85 std::vector<std::vector<bool>> compute_relaxed_reachability(
86 const std::vector<FactPair>& excluded_props,
87 const std::vector<int>& excluded_op_ids);