AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
probfd::algorithms Namespace Reference

Description

This namespace contains implementations of SSP search algorithms.

Namespaces

namespace  acyclic_vi
 Namespace dedicated to the acyclic value iteration algorithm.
 
namespace  ao_search
 
namespace  exhaustive_ao
 I do not know this algorithm.
 
namespace  exhaustive_dfs
 namespace for anytime TVI
 
namespace  fret
 Namespace dedicated to the Find, Revise, Eliminate Traps (FRET) framework.
 
namespace  heuristic_depth_first_search
 
namespace  heuristic_search
 
namespace  idual
 Namespace dedicated to the i-dual MDP algorithm.
 
namespace  interval_iteration
 Namespace dedicated to interval iteration on MaxProb MDPs.
 
namespace  lrtdp
 Namespace dedicated to labelled real-time dynamic programming (LRTDP).
 
namespace  ta_topological_vi
 Namespace dedicated to trap-aware Topological Value Iteration (TATVI).
 
namespace  topological_vi
 Namespace dedicated to Topological Value Iteration (TVI).
 
namespace  trap_aware_dfhs
 Namespace dedicated to the depth-first heuristic search (DFHS) family with native trap handling support.
 
namespace  trap_aware_lrtdp
 Namespace dedicated to labelled real-time dynamic programming (LRTDP) with native trap handling support.
 

Classes

class  ClearGuard
 Helper RAII class that ensures that containers are cleared when going out of scope. More...
 
struct  get_t
 Function object calling std::get<n> on its argument. Useful in ranges algorithms. More...
 
class  OpenList
 An interface for open lists used during search algorithms. More...
 
class  PolicyPicker
 An strategy interface used to choose break ties between multiple greedy actions for a state. More...
 
class  StateProperties
 Interface providing access to various state properties during heuristic search. More...
 
class  SuccessorSampler
 An interface used to sample a state from a successor distribution. More...
 
class  TransitionSorter
 An interface used to reorder a list of transitions. More...
 

Typedefs

template<bool UseInterval>
using AlgorithmValue = std::conditional_t<UseInterval, Interval, value_t>
 Convenience value type alias for algorithms selecting interval iteration behaviour based on a template parameter.
 

Functions

value_t as_lower_bound (Interval interval)
 Returns the lower bound of the interval.
 
value_t as_lower_bound (value_t single)
 Returns the value unchanged.
 
Interval as_interval (value_t lower_bound)
 Returns the interval with the given lower bound and infinte upper bound.
 
Interval as_interval (Interval value)
 Returns the value unchanged.
 
bool set_min (Interval &lhs, Interval rhs)
 Computes the assignments lhs.lower <- min(lhs.lower, rhs.lower) and lower <- min(lhs.lower, rhs.lower).
 
bool set_min (value_t &lhs, value_t rhs)
 Computes the assignment lhs <- min(lhs, rhs).
 
bool update (Interval &lhs, Interval rhs, value_t epsilon=g_epsilon)
 Intersects two intervals and assigns the result to the left operand.
 

Typedef Documentation

◆ AlgorithmValue

template<bool UseInterval>
using probfd::algorithms::AlgorithmValue = std::conditional_t<UseInterval, Interval, value_t>

Convenience value type alias for algorithms selecting interval iteration behaviour based on a template parameter.

Function Documentation

◆ as_lower_bound() [1/2]

value_t probfd::algorithms::as_lower_bound ( Interval interval)

Returns the lower bound of the interval.

◆ as_lower_bound() [2/2]

value_t probfd::algorithms::as_lower_bound ( value_t single)

Returns the value unchanged.

◆ as_interval() [1/2]

Interval probfd::algorithms::as_interval ( value_t lower_bound)

Returns the interval with the given lower bound and infinte upper bound.

◆ as_interval() [2/2]

Interval probfd::algorithms::as_interval ( Interval value)

Returns the value unchanged.

◆ set_min() [1/2]

bool probfd::algorithms::set_min ( Interval & lhs,
Interval rhs )

Computes the assignments lhs.lower <- min(lhs.lower, rhs.lower) and lower <- min(lhs.lower, rhs.lower).

Returns
True if and only if rhs.lower was less than lhs.lower .

◆ set_min() [2/2]

bool probfd::algorithms::set_min ( value_t & lhs,
value_t rhs )

Computes the assignment lhs <- min(lhs, rhs).

Returns
True if and only if rhs was less than lhs .

◆ update()

bool probfd::algorithms::update ( Interval & lhs,
Interval rhs,
value_t epsilon = g_epsilon )

Intersects two intervals and assigns the result to the left operand.

Returns
true if the lower or upper bound of the left operand changed by more than g_epsilon, false otherwise.
Warning
It is undefined behaviour to call this function with two non-intersecting intervals.