1#ifndef PROBFD_CARTESIAN_SUBTASK_GENERATORS_H
2#define PROBFD_CARTESIAN_SUBTASK_GENERATORS_H
15class RandomNumberGenerator;
20class ProbabilisticTask;
23namespace probfd::cartesian_abstractions {
25using Facts = std::vector<FactPair>;
26using SharedTasks = std::vector<std::shared_ptr<ProbabilisticTask>>;
28enum class FactOrder { ORIGINAL, RANDOM, HADD_UP, HADD_DOWN };
33class SubtaskGenerator {
35 virtual SharedTasks get_subtasks(
36 const std::shared_ptr<ProbabilisticTask>& task,
37 utils::LogProxy& log)
const = 0;
38 virtual ~SubtaskGenerator() =
default;
44class TaskDuplicator :
public SubtaskGenerator {
48 explicit TaskDuplicator(
int copies);
50 SharedTasks get_subtasks(
51 const std::shared_ptr<ProbabilisticTask>& task,
52 utils::LogProxy& log)
const override;
58class GoalDecomposition :
public SubtaskGenerator {
59 FactOrder fact_order_;
60 std::shared_ptr<utils::RandomNumberGenerator> rng_;
63 explicit GoalDecomposition(FactOrder order,
int random_seed);
65 SharedTasks get_subtasks(
66 const std::shared_ptr<ProbabilisticTask>& task,
67 utils::LogProxy& log)
const override;
74class LandmarkDecomposition :
public SubtaskGenerator {
75 FactOrder fact_order_;
77 std::shared_ptr<utils::RandomNumberGenerator> rng_;
80 explicit LandmarkDecomposition(
85 SharedTasks get_subtasks(
86 const std::shared_ptr<ProbabilisticTask>& task,
87 utils::LogProxy& log)
const override;
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8