1#ifndef PROBFD_CARTESIAN_ABSTRACTIONS_CEGAR_H
2#define PROBFD_CARTESIAN_ABSTRACTIONS_CEGAR_H
4#include "probfd/cartesian_abstractions/types.h"
6#include "downward/utils/logging.h"
17class ProbabilisticTask;
18class ProbabilisticTaskProxy;
21namespace probfd::cartesian_abstractions {
23class CartesianAbstraction;
24class CartesianHeuristic;
27class FlawGeneratorFactory;
29class SplitSelectorFactory;
32namespace probfd::cartesian_abstractions {
40 std::unique_ptr<RefinementHierarchy> refinement_hierarchy;
41 std::unique_ptr<CartesianAbstraction> abstraction;
42 std::unique_ptr<CartesianHeuristic> heuristic;
55 const int max_states_;
56 const int max_non_looping_transitions_;
57 const double max_time_;
58 const std::shared_ptr<FlawGeneratorFactory> flaw_generator_factory_;
59 const std::shared_ptr<SplitSelectorFactory> split_selector_factory_;
61 mutable utils::LogProxy log_;
66 int max_non_looping_transitions,
68 std::shared_ptr<FlawGeneratorFactory> flaw_generator_factory,
69 std::shared_ptr<SplitSelectorFactory> split_selector_factory,
76 run_refinement_loop(
const std::shared_ptr<ProbabilisticTask>& task);
79 bool may_keep_refining(
const CartesianAbstraction& abstraction)
const;
89 void separate_facts_unreachable_before_goal(
92 RefinementHierarchy& refinement_hierarchy,
93 CartesianAbstraction& abstraction,
94 CartesianHeuristic& heuristic,
97 void refine_abstraction(
99 SplitSelector& split_selector,
100 RefinementHierarchy& refinement_hierarchy,
101 CartesianAbstraction& abstraction,
102 CartesianHeuristic& heuristic,
104 utils::Timer& timer);
106 void refine_abstraction(
108 RefinementHierarchy& refinement_hierarchy,
109 CartesianAbstraction& abstraction,
110 CartesianHeuristic& heuristic,
111 const AbstractState& abstract_state,
113 const std::vector<int>& wanted);
Proxy class used to inspect a probabilistic planning task.
Definition task_proxy.h:194
Find flaws in the abstraction.
Definition flaw_generator.h:31
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8