📄 particlefilters.h.svn-base
字号:
#include <cmath>#include <boost/graph/adjacency_list.hpp>#include <Generic.h>#include <Node.h>class ContinuousRandomVariable;class DiscreteRandomVariable;class Potential;class DiscretePotential;class GaussianPotential;class ChainedSinglePotential;class ChainedSingleDiscretePotential;//*************** ParticleFilterProposal Declaration ******************//class ParticleFilterProposal{ private: double means_sum; //double position; double constant_variance; unsigned int number_potentials; boost::variate_generator < boost::lagged_fibonacci607 &, boost::normal_distribution <double> > gaussian_proposal; public: ParticleFilterProposal(); // Normal functions void setup_proposal(const std::list < Potential * > & ); void setup_gaussian_proposal(const std::list < GaussianPotential * > & , const unsigned int); void setup_gaussian_proposal (ChainedSinglePotential * const, const unsigned int); void add_gaussian_proposal (const double, const double); double get_proposal_position(ContinuousRandomVariable &); void set_gaussian_variance(const double); double get_proposal_weight(const double) const; // Deprecated // double get_proposal_position(); // void setup_gaussian (const double, const double); // first is mean, second is variance // Debug methods #ifndef NDEBUG double debug_get_gaussian_mean() const; double debug_get_gaussian_variance() const; #endif };inline void ParticleFilterProposal::setup_proposal(const std::list < Potential * > &){ // General Purpose Function, not yet used }// Debug methods#ifndef NDEBUGinline double ParticleFilterProposal::debug_get_gaussian_mean() const{ return gaussian_proposal.distribution().mean();}inline double ParticleFilterProposal::debug_get_gaussian_variance() const{ return gaussian_proposal.distribution().sigma()* gaussian_proposal.distribution().sigma();}#endif//*************** End of ParticleFilterProposal Declaration ******************////*************** DiscreteParticleFilterProposal Declaration ******************//class DiscreteParticleFilterProposal{ private: std::vector <double> current_sampling_probabilities; std::vector <double> general_sampling_probabilities; public: DiscreteParticleFilterProposal(); void setup_discrete_proposal( const ChainedSingleDiscretePotential &, DiscreteRandomVariable &); void add_discrete_proposal( DiscretePotential &, DiscreteRandomVariable &); unsigned int get_proposal_position(DiscreteRandomVariable &); double get_proposal_weight(const unsigned int ) const; };//*************** End of DiscreteParticleFilterProposal Declaration ******************//template <class Graph>void metropolis (Graph &, const unsigned int, const unsigned int = 0, bool = false);template < class Graph >void forward_filtering_backward_smoothing(Graph &, const unsigned int);template < class Graph, class PositionMap , class WeightMap>void backward_smoothing_implementation (Graph & , const typename boost::graph_traits<Graph>::vertex_descriptor, PositionMap &, WeightMap &, const unsigned int = 1);template < class Graph, class PositionMap , class WeightMap>typename boost::graph_traits<Graph>::vertex_descriptor forward_filtering_implementation (Graph & , const typename boost::graph_traits<Graph>::vertex_descriptor, PositionMap &, WeightMap &);template <class Graph>void non_parametric_tree_gibbs_sampler(Graph &, const unsigned int, const unsigned int, const unsigned int = 1, bool = false);template <class Graph>void non_parametric_tree_gibbs_sampler_implementation(Graph &, const unsigned int, const unsigned int, const unsigned int, bool);template < class Graph, class PositionType, class ParticleFilterProposalType >void initialize_particles (Graph &, std::vector <PositionType> &, std::vector <double> &, const typename boost::graph_traits<Graph>::vertex_descriptor, ParticleFilterProposalType &);template <class PositionType>void resample( std::vector < PositionType> &, std::vector < double> &, std::vector < double> &, std::vector < double> &, std::vector < PositionType > &);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -