1#ifndef PROBFD_TASK_UTILS_PROBABILISTIC_SUCCESSOR_GENERATOR_FACTORY_H
2#define PROBFD_TASK_UTILS_PROBABILISTIC_SUCCESSOR_GENERATOR_FACTORY_H
9class PlanningTaskProxy;
11namespace probfd::successor_generator {
12class ProbabilisticGeneratorBase;
17namespace probfd::successor_generator {
19using GeneratorPtr = std::unique_ptr<ProbabilisticGeneratorBase>;
21class ProbabilisticSuccessorGeneratorFactory {
22 using ValuesAndGenerators = std::vector<std::pair<int, GeneratorPtr>>;
24 const PlanningTaskProxy& task_proxy_;
25 std::vector<OperatorInfo> operator_infos_;
28 GeneratorPtr construct_leaf(OperatorRange range)
const;
31 GeneratorPtr construct_switch(
33 ValuesAndGenerators values_and_generators)
const;
36 GeneratorPtr construct_recursive(
int depth, OperatorRange range)
const;
39 explicit ProbabilisticSuccessorGeneratorFactory(
40 const PlanningTaskProxy& task_proxy);
43 ~ProbabilisticSuccessorGeneratorFactory();
45 GeneratorPtr create();