This C++ library provides a collection of classes useful for probabilistic machine learning within dynamic systems. It features the following:
Filtering and smoothing
- Kalman filter and smoother
- Rauch-Tung-Striebel (RTS) smoother
- Unscented Kalman filter and smoother
- Particle filter and forward-backward smoother
- Multiple resampling strategies for particle filters, including stratified and auxiliary resampling
Probability distributions
- Gaussian and Gaussian mixture distributions
- Dirac and Dirac mixture (weighted sample set) distributions
- Density tree and kernel density (kd) trees
Differential equations
- Stochastic and deterministic Runge-Kutta numerical solvers with adaptive time step
Parallelisation
- Parallel particle filter and smoother
- Distributed storage of mixtures
Serialization
- Serialization of probability distributions for convenient data management
Performance
- Use of BLAS and LAPACK
- Template meta-programming
- Code profiling
- Compiler optimisation
Features are added to the library as needed, so that it does lack some completeness. What is included, however, is well documented and tested, and may be considered sound for research purposes.
The library has been optimised for performance, while maintaining a modularity and generality that makes it suitable for a wide range of applications.
