1#ifndef PROBFD_ALGORITHMS_INTERVAL_ITERATION_H
2#define PROBFD_ALGORITHMS_INTERVAL_ITERATION_H
4#include "probfd/algorithms/topological_value_iteration.h"
6#include "probfd/preprocessing/end_component_decomposition.h"
7#include "probfd/preprocessing/qualitative_reachability_analysis.h"
9#include "probfd/quotients/quotient_system.h"
11#include "probfd/storage/per_state_storage.h"
13#include "probfd/mdp_algorithm.h"
24 void print(std::ostream& out)
const
26 tvi_statistics.print(out);
27 ecd_statistics.print(out);
61template <
typename State,
typename Action>
63 using Base =
typename IntervalIteration::MDPAlgorithm;
65 using MDPType =
typename Base::MDPType;
66 using EvaluatorType =
typename Base::EvaluatorType;
67 using PolicyType =
typename Base::PolicyType;
69 using QSystem = quotients::QuotientSystem<State, Action>;
70 using QState = quotients::QuotientState<State, Action>;
71 using QAction = quotients::QuotientAction<Action>;
80 const bool extract_probability_one_states_;
87 Statistics statistics_;
91 bool extract_probability_one_states,
96 EvaluatorType& heuristic,
99 double max_time)
override;
101 std::unique_ptr<PolicyType> compute_policy(
103 EvaluatorType& heuristic,
106 double max_time)
override;
110 template <
typename ValueStoreT,
typename SetLike,
typename SetLike2>
113 EvaluatorType& heuristic,
115 ValueStoreT& value_store,
117 SetLike2& one_states,
118 double max_time = std::numeric_limits<double>::infinity());
121 std::unique_ptr<QSystem> create_quotient(
123 EvaluatorType& heuristic,
125 utils::CountdownTimer& timer);
127 template <
typename ValueStoreT,
typename SetLike,
typename SetLike2>
130 EvaluatorType& heuristic,
132 ValueStoreT& value_store,
134 SetLike2& one_states,
136 utils::CountdownTimer& timer);
141#define GUARD_INCLUDE_PROBFD_ALGORITHMS_INTERVAL_ITERATION_H
142#include "probfd/algorithms/interval_iteration_impl.h"
143#undef GUARD_INCLUDE_PROBFD_ALGORITHMS_INTERVAL_ITERATION_H
Interface for MDP algorithm implementations.
Definition mdp_algorithm.h:29
A registry for print functions related to search progress.
Definition progress_report.h:33
Implemention of interval iteration haddad:etal:misc-17.
Definition interval_iteration.h:62
void print_statistics(std::ostream &out) const override
Prints algorithm statistics to the specified output stream.
Definition interval_iteration_impl.h:55
A builder class that implements end component decomposition.
Definition end_component_decomposition.h:86
Namespace dedicated to interval iteration on MaxProb MDPs.
Definition interval_iteration.h:18
typename std::conditional_t< is_cheap_to_copy_v< T >, T, const T & > param_type
Alias template defining the best way to pass a parameter of a given type.
Definition type_traits.h:25
Represents a closed interval over the extended reals as a pair of lower and upper bound.
Definition interval.h:12
Topological value iteration statistics.
Definition topological_value_iteration.h:32
Contains printable statistics for the end component decomposition.
Definition end_component_decomposition.h:29