1#ifndef PROBFD_CARTESIAN_COST_SATURATION_H
2#define PROBFD_CARTESIAN_COST_SATURATION_H
4#include "probfd/value_type.h"
6#include "downward/utils/logging.h"
21class ProbabilisticTaskProxy;
22class ProbabilisticTask;
25namespace probfd::cartesian_abstractions {
26class CartesianHeuristicFunction;
27class FlawGeneratorFactory;
28class SplitSelectorFactory;
29class SubtaskGenerator;
32namespace probfd::cartesian_abstractions {
42 const std::vector<std::shared_ptr<SubtaskGenerator>> subtask_generators_;
43 const std::shared_ptr<FlawGeneratorFactory> flaw_generator_factory_;
44 const std::shared_ptr<SplitSelectorFactory> split_selector_factory_;
45 const int max_states_;
46 const int max_non_looping_transitions_;
47 const double max_time_;
48 const bool use_general_costs_;
49 mutable utils::LogProxy log_;
51 std::vector<CartesianHeuristicFunction> heuristic_functions_;
52 std::vector<value_t> remaining_costs_;
53 int num_abstractions_;
55 int num_non_looping_transitions_;
57 void reset(
const ProbabilisticTaskProxy& task_proxy);
58 void reduce_remaining_costs(
const std::vector<value_t>& saturated_costs);
59 std::shared_ptr<ProbabilisticTask>
60 get_remaining_costs_task(std::shared_ptr<ProbabilisticTask>& parent)
const;
61 bool state_is_dead_end(
const State& state)
const;
62 void build_abstractions(
63 const std::vector<std::shared_ptr<ProbabilisticTask>>& subtasks,
64 const utils::CountdownTimer& timer,
65 std::function<
bool()> should_abort);
66 void print_statistics(utils::Duration init_time)
const;
70 const std::vector<std::shared_ptr<SubtaskGenerator>>&
72 std::shared_ptr<FlawGeneratorFactory> flaw_generator_factory,
73 std::shared_ptr<SplitSelectorFactory> split_selector_factory,
75 int max_non_looping_transitions,
77 bool use_general_costs,
82 std::vector<CartesianHeuristicFunction> generate_heuristic_functions(
83 const std::shared_ptr<ProbabilisticTask>& task);
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8