1#ifndef PROBFD_CARTESIAN_ABSTRACTION_H
2#define PROBFD_CARTESIAN_ABSTRACTION_H
4#include "probfd/cartesian_abstractions/abstract_state.h"
5#include "probfd/cartesian_abstractions/types.h"
8#include "probfd/type_traits.h"
9#include "probfd/types.h"
10#include "probfd/value_type.h"
12#include "downward/utils/logging.h"
14#include "downward/abstract_task.h"
15#include "downward/task_proxy.h"
23class ProbabilisticTaskProxy;
28namespace probfd::cartesian_abstractions {
29class ProbabilisticTransitionSystem;
30struct ProbabilisticTransition;
33namespace probfd::cartesian_abstractions {
40class CartesianAbstraction
41 :
public SimpleMDP<int, const ProbabilisticTransition*> {
42 const std::unique_ptr<ProbabilisticTransitionSystem> transition_system_;
43 const State concrete_initial_state_;
44 const std::vector<FactPair> goal_facts_;
47 AbstractStates states_;
53 std::vector<value_t> operator_costs_;
55 mutable utils::LogProxy log_;
57 void initialize_trivial_abstraction(
const std::vector<int>& domain_sizes);
61 const ProbabilisticTaskProxy& task,
62 std::vector<value_t> operator_costs,
64 ~CartesianAbstraction()
override;
66 CartesianAbstraction(
const CartesianAbstraction&) =
delete;
68 StateID get_state_id(
int state)
override;
70 int get_state(StateID state_id)
override;
72 void generate_applicable_actions(
74 std::vector<const ProbabilisticTransition*>& result)
override;
76 void generate_action_transitions(
78 const ProbabilisticTransition* action,
79 Distribution<StateID>& result)
override;
81 void generate_all_transitions(
83 std::vector<const ProbabilisticTransition*>& aops,
84 std::vector<Distribution<StateID>>& successors)
override;
86 void generate_all_transitions(
88 std::vector<TransitionType>& transitions)
override;
90 bool is_goal(
int state)
const override;
91 value_t get_non_goal_termination_cost()
const override;
93 value_t get_action_cost(
const ProbabilisticTransition* t)
override;
95 value_t get_cost(
int op_index)
const;
97 int get_num_states()
const;
98 const AbstractState& get_initial_state()
const;
99 const Goals& get_goals()
const;
100 const AbstractState& get_abstract_state(
int state_id)
const;
101 const ProbabilisticTransitionSystem& get_transition_system()
const;
104 void mark_all_states_as_goals();
107 std::pair<int, int> refine(
108 RefinementHierarchy& refinement_hierarchy,
109 const AbstractState& abstract_state,
111 const std::vector<int>& wanted);
113 void print_statistics()
const override;
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8
double value_t
Typedef for the state value type.
Definition aliases.h:7