MultiAgentDecisionProcess
AlphaVectorPlanning Class Reference

AlphaVectorPlanning provides base functionality for alpha-vector based POMDP or BG techniques. More...

#include <AlphaVectorPlanning.h>

Inheritance diagram for AlphaVectorPlanning:
[legend]

Public Member Functions

 AlphaVectorPlanning (const PlanningUnitDecPOMDPDiscrete *pu)
 (default) Constructor More...
 
 AlphaVectorPlanning (const boost::shared_ptr< const PlanningUnitDecPOMDPDiscrete > &pu)
 
 AlphaVectorPlanning (const PlanningUnitFactoredDecPOMDPDiscrete *pu)
 
 AlphaVectorPlanning (const boost::shared_ptr< const PlanningUnitFactoredDecPOMDPDiscrete > &pu)
 
GaoVectorSet BackProject (const ValueFunctionPOMDPDiscrete &v) const
 Back projects a value function. More...
 
GaoVectorSet BackProject (const VectorSet &v) const
 Back projects a value function, represented as a VectorSet. More...
 
VectorSet CrossSum (const VectorSet &A, const VectorSet &B) const
 Compute the cross-sum of two vector sets. More...
 
void ExportPOMDPFile (const std::string &filename) const
 Exports the POMDP to file named filename. More...
 
size_t GetAcceleratedPruningThreshold () const
 
ValueFunctionPOMDPDiscrete GetImmediateRewardValueFunction () const
 Returns the value function induced by the reward model. More...
 
const
PlanningUnitDecPOMDPDiscrete
GetPU () const
 Returns a ref to the PlanningUnit. More...
 
void Initialize ()
 
QFunctionsDiscrete Prune (const QFunctionsDiscrete &Q) const
 Prune a Q-valuefunction. More...
 
ValueFunctionPOMDPDiscrete Prune (const ValueFunctionPOMDPDiscrete &V) const
 Prune a POMDP valuefunction. More...
 
VectorSet Prune (const VectorSet &V) const
 Prune a VectorSet. More...
 
BeliefSet SampleBeliefs (const ArgumentHandlers::Arguments &args) const
 Sample a belief set according to the arguments. More...
 
BeliefSetNonStationary SampleBeliefsNonStationary (const ArgumentHandlers::Arguments &args) const
 Sample a non-stationary belief set according to the arguments. More...
 
BeliefSetNonStationary SampleBeliefsNonStationary (int nrBeliefs=10, int uniqueBeliefs=0, int resetAfter=0, int useQMDPforSamplingBeliefs=0, double QMDPexploreProb=0.1) const
 Sample a non-stationary belief set specifying each argument. More...
 
void SetAcceleratedPruningThreshold (size_t acceleratedPruningThreshold)
 
VectorSet Union (const VectorSet &A, const VectorSet &B) const
 Computes the union of two vector sets. More...
 
QFunctionsDiscrete ValueFunctionToQ (const ValueFunctionPOMDPDiscrete &V) const
 
virtual ~AlphaVectorPlanning ()
 Destructor. More...
 
- Public Member Functions inherited from TimedAlgorithm
void AddTimedEvent (const std::string &id, clock_t duration)
 Adds event of certain duration, e.g., an external program call. More...
 
std::vector< double > GetTimedEventDurations (const std::string &id)
 Returns all stored durations (in s) for a particular event. More...
 
void LoadTimers (const std::string &filename)
 Load timing info from file filename. More...
 
void PrintTimers () const
 Print stored timing info. More...
 
void PrintTimersSummary () const
 Sums data and prints out a summary. More...
 
void SaveTimers (const std::string &filename) const
 Save collected timing info to file filename. More...
 
void SaveTimers (std::ofstream &of) const
 Save collected timing info to ofstream of. More...
 
void StartTimer (const std::string &id) const
 Start to time an event identified by id. More...
 
void StopTimer (const std::string &id) const
 Stop to time an event identified by id. More...
 
 TimedAlgorithm ()
 (default) Constructor More...
 
virtual ~TimedAlgorithm ()
 Destructor. More...
 

Static Public Member Functions

static void CrossSum (const std::vector< AlphaVector > &A, const std::vector< AlphaVector > &B, std::vector< AlphaVector > &output)
 Compute the cross-sum of two vector sets. More...
 
static bool EqualVS (const VectorSet &VS1, const VectorSet &VS2)
 
static void ExportBeliefSet (const BeliefSet &B, const std::string &filename)
 Exports a belief set to a file. More...
 
static void ExportPOMDPFile (const std::string &filename, const DecPOMDPDiscreteInterface *decpomdp)
 Exports the POMDP represented by pu to file named filename. More...
 
static void ExportValueFunction (const std::string &filename, const ValueFunctionPOMDPDiscrete &V, bool includeBGindices=true)
 Exports a value function V to file named filename. More...
 
static void ExportValueFunction (const std::string &filename, const QFunctionsDiscrete &Q, bool includeBGindices=true)
 Exports a Q functions Q to file named filename. More...
 
static void ExportValueFunction (const std::string &filename, const QFunctionsDiscreteNonStationary &Q, bool includeBGindices=true)
 Exports a Q functions Q to file named filename. More...
 
static std::vector< int > GetDuplicateIndices (const VectorSet &V)
 Returns a vector<int> which for each vector k in V specifies whether it is unique, in which case vector<int>[k] is set to -1, or whether it is a duplicate of another vector l in V, in which case vector<int>[k] is set to the index of l, where 0 <= l < V.size()). More...
 
static ValueFunctionPOMDPDiscrete GetImmediateRewardValueFunction (const PlanningUnitDecPOMDPDiscrete *pu)
 Returns the value function induced by the reward model of pu. More...
 
static ValueFunctionPOMDPDiscrete ImportValueFunction (const std::string &filename)
 Imports a value function from a file named filename. More...
 
static
QFunctionsDiscreteNonStationary 
ImportValueFunction (const std::string &filename, size_t nr, size_t nrA, size_t nrS)
 
static ValueFunctionPOMDPDiscrete QFunctionsToValueFunction (const QFunctionsDiscrete &Q)
 Takes all the vectors from the Q-function Q and throws them together as a 'V' function. More...
 
static std::string SoftPrint (const VectorSet &VS)
 
static QFunctionsDiscrete ValueFunctionToQ (const ValueFunctionPOMDPDiscrete &V, size_t nrA, size_t nrS)
 
static VectorSet ValueFunctionToVectorSet (const ValueFunctionPOMDPDiscrete &V)
 
static bool VectorIsDominated (const AlphaVector &alpha, const ValueFunctionPOMDPDiscrete &V)
 
static bool VectorIsDominated (Index i, const VectorSet &V, const std::vector< bool > &vectorsInVtoConsider)
 
static bool VectorIsInValueFunction (const AlphaVector &alpha, const ValueFunctionPOMDPDiscrete &V)
 
static VectorSetVectorOfVectorsToVectorSet (const std::vector< std::vector< double > > &vectors)
 
static ValueFunctionPOMDPDiscrete VectorSetToValueFunction (const VectorSet &VS, Index a=0, AlphaVector::BGPolicyIndex betaI=-1)
 

Private Types

typedef
boost::numeric::ublas::compressed_vector
< double > 
SparseVector
 

Private Member Functions

GaoVectorSet BackProjectFull (const VectorSet &v) const
 Implements equation (3.11) of PhD thesis Matthijs. More...
 
GaoVectorSet BackProjectSparse (const VectorSet &v) const
 Implements equation (3.11) of PhD thesis Matthijs. More...
 
void DeInitialize ()
 

Private Attributes

size_t _m_acceleratedPruningThreshold
 
std::vector< std::vector
< std::vector< SparseVector * > > > 
_m_eventOsForBackup
 
bool _m_initialized
 
std::vector< const
ObservationModelMapping::Matrix * > 
_m_O
 
std::vector< std::vector
< const
EventObservationModelMapping::Matrix * > > 
_m_Oe
 
std::vector< std::vector
< const
EventObservationModelMappingSparse::SparseMatrix * > > 
_m_Oes
 
std::vector< const
ObservationModelMappingSparse::SparseMatrix * > 
_m_Os
 
std::vector< std::vector
< SparseVector * > > 
_m_OsForBackup
 
const
PlanningUnitDecPOMDPDiscrete
_m_pu
 A pointer to the PlanningUnit (which can only be a PlanningUnitDecPOMDPDiscrete or derived type). More...
 
boost::shared_ptr< const
PlanningUnitDecPOMDPDiscrete
_m_puShared
 
std::vector< const
TransitionModelMapping::Matrix * > 
_m_T
 
std::vector< const
TransitionModelMappingSparse::SparseMatrix * > 
_m_Ts
 
std::vector< std::vector
< SparseVector * > > 
_m_TsForBackup
 
std::vector< std::vector
< std::vector< SparseVector * > > > 
_m_TsOsForBackup
 
bool _m_useSparse
 

Detailed Description

AlphaVectorPlanning provides base functionality for alpha-vector based POMDP or BG techniques.

Member Typedef Documentation

typedef boost::numeric::ublas::compressed_vector<double> AlphaVectorPlanning::SparseVector
private

Constructor & Destructor Documentation

AlphaVectorPlanning::AlphaVectorPlanning ( const PlanningUnitDecPOMDPDiscrete pu)
AlphaVectorPlanning::AlphaVectorPlanning ( const boost::shared_ptr< const PlanningUnitDecPOMDPDiscrete > &  pu)
AlphaVectorPlanning::AlphaVectorPlanning ( const PlanningUnitFactoredDecPOMDPDiscrete pu)

References _m_pu.

AlphaVectorPlanning::AlphaVectorPlanning ( const boost::shared_ptr< const PlanningUnitFactoredDecPOMDPDiscrete > &  pu)
AlphaVectorPlanning::~AlphaVectorPlanning ( )
virtual

Destructor.

References DeInitialize().

Member Function Documentation

GaoVectorSet AlphaVectorPlanning::BackProject ( const VectorSet v) const
GaoVectorSet AlphaVectorPlanning::BackProjectFull ( const VectorSet v) const
private

Implements equation (3.11) of PhD thesis Matthijs.

The distinction between row and column stems from the fact that in a standard model, _m_O[a] is (s',o), while in an event-driven model, _m_Oe[a][o] is (s,s') (because _m_T[a] is also (s,s')) The distinction between row and column stems from the fact that in a standard model, _m_O[a] is (s',o), while in an event-driven model, _m_Oe[a][o] is (s,s') (because _m_T[a] is also (s,s'))

References _m_O, _m_Oe, _m_T, GetDuplicateIndices(), PlanningUnitMADPDiscreteParameters::GetEventObservability(), PlanningUnitMADPDiscrete::GetNrJointActions(), PlanningUnitMADPDiscrete::GetNrJointObservations(), PlanningUnitMADPDiscrete::GetNrStates(), PlanningUnitMADPDiscrete::GetParams(), GetPU(), TimedAlgorithm::StartTimer(), and TimedAlgorithm::StopTimer().

Referenced by BackProject().

void AlphaVectorPlanning::CrossSum ( const std::vector< AlphaVector > &  A,
const std::vector< AlphaVector > &  B,
std::vector< AlphaVector > &  output 
)
static
VectorSet AlphaVectorPlanning::CrossSum ( const VectorSet A,
const VectorSet B 
) const

Compute the cross-sum of two vector sets.

void AlphaVectorPlanning::DeInitialize ( )
private
bool AlphaVectorPlanning::EqualVS ( const VectorSet VS1,
const VectorSet VS2 
)
static
void AlphaVectorPlanning::ExportBeliefSet ( const BeliefSet B,
const std::string &  filename 
)
static

Exports a belief set to a file.

Referenced by PerseusStationary::ExportBeliefSet().

void AlphaVectorPlanning::ExportPOMDPFile ( const std::string &  filename) const

Exports the POMDP to file named filename.

References ExportPOMDPFile(), and GetPU().

void AlphaVectorPlanning::ExportValueFunction ( const std::string &  filename,
const ValueFunctionPOMDPDiscrete V,
bool  includeBGindices = true 
)
static

Exports a value function V to file named filename.

Export is in a simple text format used by Tony Cassandra for .alpha files.

The format is simply:

<action>

<action>

Referenced by PerseusNonStationary::ExportValueFunction(), PerseusStationary::ExportValueFunction(), ExportValueFunction(), MonahanPlanner::Plan(), Perseus::PlanStartOfIteration(), Prune(), and MonahanPlanner::Save().

void AlphaVectorPlanning::ExportValueFunction ( const std::string &  filename,
const QFunctionsDiscrete Q,
bool  includeBGindices = true 
)
static

Exports a Q functions Q to file named filename.

References ExportValueFunction(), and QFunctionsToValueFunction().

void AlphaVectorPlanning::ExportValueFunction ( const std::string &  filename,
const QFunctionsDiscreteNonStationary Q,
bool  includeBGindices = true 
)
static

Exports a Q functions Q to file named filename.

References ExportValueFunction().

size_t AlphaVectorPlanning::GetAcceleratedPruningThreshold ( ) const
vector< int > AlphaVectorPlanning::GetDuplicateIndices ( const VectorSet V)
static

Returns a vector<int> which for each vector k in V specifies whether it is unique, in which case vector<int>[k] is set to -1, or whether it is a duplicate of another vector l in V, in which case vector<int>[k] is set to the index of l, where 0 <= l < V.size()).

References PrintTools::PrintVectorCout(), and Globals::PROB_PRECISION.

Referenced by BackProjectFull(), and BackProjectSparse().

ValueFunctionPOMDPDiscrete AlphaVectorPlanning::GetImmediateRewardValueFunction ( ) const

Returns the value function induced by the reward model.

References GetPU().

Referenced by PerseusNonStationary::GetImmediateRewardBeliefSet(), PerseusStationary::GetImmediateRewardBeliefSet(), and MonahanPlanner::Plan().

ValueFunctionPOMDPDiscrete AlphaVectorPlanning::GetImmediateRewardValueFunction ( const PlanningUnitDecPOMDPDiscrete pu)
static
const PlanningUnitDecPOMDPDiscrete* AlphaVectorPlanning::GetPU ( ) const
inline

Returns a ref to the PlanningUnit.

Referenced by AlphaVectorPlanning(), AlphaVectorWeighted::AlphaVectorWeighted(), BackProject(), BackProjectFull(), MonahanBGPlanner::BackProjectMonahanBG(), BackProjectSparse(), AlphaVectorWeighted::BackProjectWeights(), PerseusPOMDPPlanner::BackupStage(), MonahanBGPlanner::BackupStage(), MonahanPOMDPPlanner::BackupStage(), PerseusConstrainedPOMDPPlanner::BackupStage(), TreeIncPruneBGPlanner::BackupStage(), QBGPlanner_TreeIncPruneBnB::BackupStage(), PerseusBGPOMDPPlanner::BackupStageAll(), PerseusBGNSPlanner::BackupStageAll(), PerseusBGPlanner::BackupStageAll(), Perseus::BackupStageLeadOut(), PerseusBGNSPlanner::BackupStageSampling(), PerseusBGPlanner::BackupStageSampling(), PerseusBGPOMDPPlanner::BackupStageSamplingAlt(), PerseusBGPlanner::BackupStageSamplingAlt(), MonahanBGPlanner::BackupStageSlow(), AlphaVectorPOMDP::BeliefBackup(), AlphaVectorConstrainedPOMDP::BeliefBackup(), AlphaVectorBG::BeliefBackupBGIP_Solver(), AlphaVectorBG::BeliefBackupExhaustiveOnlyKeepMax(), AlphaVectorBG::BeliefBackupExhaustiveStoreAll(), AlphaVectorConstrainedPOMDP::BeliefBackupQ(), Perseus::CheckConvergence(), QBGPlanner_TreeIncPruneBnB::CheckDominationPointWise(), MonahanBGPlanner::ComputeAllGaoa(), MonahanBGPlanner::ComputeGaoa(), TreeIncPruneBGPlanner::ComputeKey(), ExportPOMDPFile(), TreeIncPruneBGPlanner::GetGaoa(), QBGPlanner_TreeIncPruneBnB::GetGaoa(), PerseusNonStationary::GetImmediateRewardBeliefSet(), PerseusStationary::GetImmediateRewardBeliefSet(), GetImmediateRewardValueFunction(), Perseus::GetInitialNonStationaryQFunctions(), Perseus::GetInitialQFunctions(), Perseus::GetInitialValueFunction(), AlphaVectorBG::GetMask(), TreeIncPruneBGPlanner::GetObservationsFromDepth(), MonahanPlanner::GetQ(), TreeIncPruneBGPlanner::GetValidActions(), TreeIncPruneBGPlanner::Initialize(), QBGPlanner_TreeIncPruneBnB::Initialize(), Initialize(), PerseusNonStationary::Load(), MonahanPlanner::Load(), MonahanPOMDPPlanner::MonahanCrossSum(), MonahanBGPlanner::MonahanCrossSum(), MonahanPlanner::Plan(), PerseusNonStationaryQPlanner::PlanAll(), Perseus::PlanEndOfIteration(), Perseus::PlanLeadOut(), PerseusNonStationaryQPlanner::PlanSampling(), Perseus::PlanStartOfIteration(), SampleBeliefs(), SampleBeliefsNonStationary(), TreeIncPruneBGPlanner::SaveStats(), PerseusNonStationary::SetValueFunction(), PerseusStationary::SetValueFunction(), TreeIncPruneBGPlanner::SoftPrintStats(), TreeIncPruneBGPlanner::UnionNode(), Perseus::UpdateValueFunctionName(), and ValueFunctionToQ().

QFunctionsDiscreteNonStationary AlphaVectorPlanning::ImportValueFunction ( const std::string &  filename,
size_t  nr,
size_t  nrA,
size_t  nrS 
)
static
VectorSet AlphaVectorPlanning::Prune ( const VectorSet V) const

Prune a VectorSet.

References Prune(), ValueFunctionToVectorSet(), and VectorSetToValueFunction().

void AlphaVectorPlanning::SetAcceleratedPruningThreshold ( size_t  acceleratedPruningThreshold)
VectorSet AlphaVectorPlanning::Union ( const VectorSet A,
const VectorSet B 
) const

Computes the union of two vector sets.

References ValueFunctionToVectorSet(), and VectorSetToValueFunction().

Referenced by TreeIncPruneBGPlanner::UnionNode().

QFunctionsDiscrete AlphaVectorPlanning::ValueFunctionToQ ( const ValueFunctionPOMDPDiscrete V,
size_t  nrA,
size_t  nrS 
)
static
VectorSet AlphaVectorPlanning::ValueFunctionToVectorSet ( const ValueFunctionPOMDPDiscrete V)
static
bool AlphaVectorPlanning::VectorIsDominated ( const AlphaVector alpha,
const ValueFunctionPOMDPDiscrete V 
)
static
bool AlphaVectorPlanning::VectorIsDominated ( Index  i,
const VectorSet V,
const std::vector< bool > &  vectorsInVtoConsider 
)
static
VectorSet * AlphaVectorPlanning::VectorOfVectorsToVectorSet ( const std::vector< std::vector< double > > &  vectors)
static

Member Data Documentation

size_t AlphaVectorPlanning::_m_acceleratedPruningThreshold
private
std::vector<std::vector<std::vector<SparseVector* > > > AlphaVectorPlanning::_m_eventOsForBackup
private

Referenced by DeInitialize(), and Initialize().

bool AlphaVectorPlanning::_m_initialized
private
std::vector<const ObservationModelMapping::Matrix* > AlphaVectorPlanning::_m_O
private
std::vector< std::vector <const EventObservationModelMapping::Matrix* > > AlphaVectorPlanning::_m_Oe
private
std::vector< std::vector <const EventObservationModelMappingSparse::SparseMatrix* > > AlphaVectorPlanning::_m_Oes
private

Referenced by Initialize().

std::vector<const ObservationModelMappingSparse::SparseMatrix* > AlphaVectorPlanning::_m_Os
private
std::vector<std::vector<SparseVector* > > AlphaVectorPlanning::_m_OsForBackup
private

Referenced by DeInitialize(), and Initialize().

const PlanningUnitDecPOMDPDiscrete* AlphaVectorPlanning::_m_pu
private

A pointer to the PlanningUnit (which can only be a PlanningUnitDecPOMDPDiscrete or derived type).

Referenced by AlphaVectorPlanning().

boost::shared_ptr<const PlanningUnitDecPOMDPDiscrete> AlphaVectorPlanning::_m_puShared
private
std::vector<const TransitionModelMapping::Matrix* > AlphaVectorPlanning::_m_T
private
std::vector<const TransitionModelMappingSparse::SparseMatrix* > AlphaVectorPlanning::_m_Ts
private
std::vector<std::vector<SparseVector* > > AlphaVectorPlanning::_m_TsForBackup
private

Referenced by DeInitialize(), and Initialize().

std::vector<std::vector<std::vector<SparseVector* > > > AlphaVectorPlanning::_m_TsOsForBackup
private
bool AlphaVectorPlanning::_m_useSparse
private