ssmkit
master-68aed98
|
A stochastic process constructed as hierarchy of stochastic processes. More...
Public Types | |
using | TRandomVAR = std::tuple< typename ProcessTraits< Args >::TRandomVAR...> |
Type of the random variable. More... | |
Public Member Functions | |
Hierarchical (Args...processes) | |
Constructor. More... | |
TRandomVAR | initialize () |
Initialize process. More... | |
template<class... TVARs> | |
TRandomVAR | random (const TVARs &...args) |
Sample random variable. More... | |
template<class... TArgs> | |
double | likelihood (const TRandomVAR &rvs, const TArgs &...args) |
Calculate likelihood. More... | |
template<size_t L> | |
std::tuple_element< L, std::tuple< Args...> >::type & | getProcess () |
get a reference to the process at level L More... | |
Public Member Functions inherited from BaseProcess< Hierarchical< Args...> > | |
decltype(auto) | random_n (const size_t &n, const TArgs &...args) |
A stochastic process constructed as hierarchy of stochastic processes.
A hierarchical dynamic Bayesian network is constructed by vertically stacking layers of stochastic processes such that in every time-slice a layer is only dependent on its immediate upper layer.
Args... | Type of the process levels |
Definition at line 31 of file hierarchical.hpp.
using TRandomVAR = std::tuple<typename ProcessTraits<Args>::TRandomVAR...> |
Type of the random variable.
This is a tuple of the random variables of every layer in top-down order \((\mathbf{x}_k^0, \cdots, \mathbf{x}_k^L)\).
Definition at line 46 of file hierarchical.hpp.
|
inline |
Constructor.
Construct a Hierarchical process object from a sequence of processes
. The first control variable of every process layer other than first one \((y^{1,0}, \cdots, y^{L,0})\) is used to connect upper layer to lower layer.
[in] | processes | ... Process objects of each level in top-down order |
Definition at line 66 of file hierarchical.hpp.
|
inline |
Initialize process.
Initialize and return initial random variable of all layers.
Definition at line 72 of file hierarchical.hpp.
|
inline |
Sample random variable.
Sample one random variable from all layers \((\mathbf{x}_k^0, \cdots, \mathbf{x}_k^L)\).
[in] | args | ... Control variables in top-down order \((y^{0,0}_k, \cdots, y^{0,N^0}_k, y^{1,0}_k, \cdots, y^{1,N^1}_k, \cdots, y^{L,0}_k, \cdots, y^{L,N^L}_k)\) |
random
method of every process layer. Depending on type of the process layer its internal state may changes. Definition at line 90 of file hierarchical.hpp.
|
inline |
Calculate likelihood.
calculate likelihood of one random variable \((\mathbf{x}_k^0, \cdots, \mathbf{x}_k^L)\) given internal states \((\mathbf{x}_{k-1}^0, \cdots, \mathbf{x}_{k-1}^L)\) and control variables \((y^{0,0}_k, \cdots, y^{0,N^0}_k, y^{1,0}_k, \cdots, y^{1,N^1}_k, \cdots, y^{L,0}_k, \cdots, y^{L,N^L}_k)\)
[in] | rvs | random variable whose likelihood is calculated \((\mathbf{x}_k^0, \cdots, \mathbf{x}_k^L)\) |
[in] | args | ... Control variables in top-down order \((y^{0,0}_k, \cdots, y^{0,N^0}_k, y^{1,0}_k, \cdots, y^{1,N^1}_k, \cdots, y^{L,0}_k, \cdots, y^{L,N^L}_k)\) |
rvs
Definition at line 120 of file hierarchical.hpp.
|
inline |
get a reference to the process at level L
Definition at line 140 of file hierarchical.hpp.