AIToolbox
A library that offers tools for AI problem solving.
AIToolbox::POMDP::SARSOP Class Reference

This class implements the SARSOP algorithm. More...

#include <AIToolbox/POMDP/Algorithms/SARSOP.hpp>

Public Member Functions

 SARSOP (double tolerance, double delta=0.1)
 Basic constructor. More...
 
void setTolerance (double tolerance)
 This function sets the tolerance to reach when solving a POMDP. More...
 
double getTolerance () const
 This function returns the currently set tolerance to reach when solving a POMDP. More...
 
void setDelta (double delta)
 This function sets the delta for pruning to use at the start of a solving process. More...
 
double getDelta () const
 This function returns the delta for pruning to use at the start of a solving process. More...
 
template<IsModel M>
std::tuple< double, double, VList, MDP::QFunctionoperator() (const M &model, const Belief &initialBelief)
 This function efficiently computes bounds for the optimal value of the input belief for the input POMDP. More...
 

Detailed Description

This class implements the SARSOP algorithm.

This algorithm works by computing lower and upper bounds on what is believed to be the optimal policy.

SARSOP tries to keep computational costs in check by only computing alphavectors and upper bounds by exploring future action/observation pairs which are believed to fall in the path of the optimal policy.

Since at the start the optimal policy is not known, SARSOP employs a series of heuristics to ensure that the paths it explores are indeed correct. At the same time, it also aggressively prunes the found alphavectors and beliefs to keep further exploration cheap.

The result should be lower/upper bounds that are reasonably close to optimal as long as one remains in the part of the belief space reachable via the optimal policy. Once a non-optimal action is taken, the bounds are likely to be loose.

Constructor & Destructor Documentation

◆ SARSOP()

AIToolbox::POMDP::SARSOP::SARSOP ( double  tolerance,
double  delta = 0.1 
)

Basic constructor.

Parameters
toleranceThe tolerance to reach when solving a POMDP.
deltaThe initial delta to use for pruning.

Member Function Documentation

◆ getDelta()

double AIToolbox::POMDP::SARSOP::getDelta ( ) const

This function returns the delta for pruning to use at the start of a solving process.

See also
deltaPrune()
Returns
The currently set delta.

◆ getTolerance()

double AIToolbox::POMDP::SARSOP::getTolerance ( ) const

This function returns the currently set tolerance to reach when solving a POMDP.

Returns
The current tolerance.

◆ operator()()

template<IsModel M>
std::tuple< double, double, VList, MDP::QFunction > AIToolbox::POMDP::SARSOP::operator() ( const M &  model,
const Belief initialBelief 
)

This function efficiently computes bounds for the optimal value of the input belief for the input POMDP.

Parameters
modelThe model to compute the gap for.
initialBeliefThe belief to compute the gap for.
Returns
The lower and upper gap bounds, the lower bound VList, and the upper bound QFunction.

◆ setDelta()

void AIToolbox::POMDP::SARSOP::setDelta ( double  delta)

This function sets the delta for pruning to use at the start of a solving process.

Note that during the solving process the delta is modified dynamically based on heuristics.

See also
deltaPrune()
Parameters
deltaThe new delta to use.

◆ setTolerance()

void AIToolbox::POMDP::SARSOP::setTolerance ( double  tolerance)

This function sets the tolerance to reach when solving a POMDP.

Parameters
toleranceThe new tolerance.

The documentation for this class was generated from the following file: