9#ifndef __TRANSITION_KERNEL_H_INCLUDED__
10#define __TRANSITION_KERNEL_H_INCLUDED__
13#include <unordered_map>
36 std::unordered_map<typename Distribution::result_type, Distribution> m_distributions;
40 using state_type =
typename Distribution::result_type;
56 m_distributions[x] = d;
66 m_distributions[x] = std::move(d);
96 m_distributions[x] = d;
107 m_distributions[x] = std::move(d);
118 return m_distributions.find(x) != m_distributions.end();
126 template <
typename Generator> state_type
operator()(Generator &g, state_type
const &x)
128 assert(has_distribution(x));
129 return m_distributions.at(x).operator()(g);
151 std::unordered_map<Time, InsiderType> m_kernels;
155 using state_type =
typename Distribution::result_type;
239 if (m_kernels.count(t) == 1)
241 if (m_kernels.at(t).has_distribution(x))
255 template <
typename Generator> state_type
operator()(Generator &g, state_type
const &x, Time
const &t)
257 assert(this->has_distribution(x, t));
258 return m_kernels.at(t).operator()(g, x);
Discrete markovian transition kernel for sampling the next state knowing the present state .
Definition TransitionKernel.hpp:33
TransitionKernel< Distribution > & operator=(const TransitionKernel< Distribution > &)=default
Copy assignment operator.
TransitionKernel< Distribution > & set(state_type const &x, Distribution const &d)
Set a departure state and its associated distribution to the kernel.
Definition TransitionKernel.hpp:94
TransitionKernel(const TransitionKernel &)=default
Copy constructor.
TransitionKernel< Distribution > & set(state_type const &x, Distribution &&d)
Set a departure state and its associated distribution to the kernel.
Definition TransitionKernel.hpp:105
state_type operator()(Generator &g, state_type const &x)
Sample an arrival state conditionnaly to departure state.
Definition TransitionKernel.hpp:126
TransitionKernel< Distribution > & operator=(TransitionKernel< Distribution > &&)=default
Move assignment operator.
TransitionKernel(TransitionKernel &&)=default
Move constructor.
TransitionKernel()
Default constructor.
Definition TransitionKernel.hpp:45
TransitionKernel(state_type const &x, Distribution const &d)
Initialize a transition kernel with a state and its associated distribution.
Definition TransitionKernel.hpp:54
TransitionKernel(state_type const &x, Distribution &&d)
Initialize a transition kernel with a state and its associated distribution.
Definition TransitionKernel.hpp:64
bool has_distribution(state_type const &x) const
Checks if a probability distribution is associated to a departure state.
Definition TransitionKernel.hpp:116
TransitionKernel()
Default constructor.
Definition TransitionKernel.hpp:160
TransitionKernel(state_type const &x, Time const &t, Distribution const &d)
Initialize a transition kernel with a state/time couple and its associated distribution.
Definition TransitionKernel.hpp:170
TransitionKernel< Time, Distribution > & set(state_type const &x, Time const &t, Distribution &&d)
Set a probability distribution for a departure state and time.
Definition TransitionKernel.hpp:224
TransitionKernel< Time, Distribution > & operator=(TransitionKernel< Time, Distribution > &&)=default
Move assignment operator.
bool has_distribution(state_type const &x, Time const &t) const
Checks if a probability distribution is associated to a departure state x at time t.
Definition TransitionKernel.hpp:236
TransitionKernel(const TransitionKernel &)=default
Copy constructor.
TransitionKernel(TransitionKernel &&)=default
Move constructor.
TransitionKernel(state_type const &x, Time const &t, Distribution &&d)
Initialize a transition kernel with a state/time couple and its associated distribution.
Definition TransitionKernel.hpp:180
state_type operator()(Generator &g, state_type const &x, Time const &t)
Sample an arrival state conditionnaly to departure state and a time.
Definition TransitionKernel.hpp:255
TransitionKernel< Time, Distribution > & set(state_type const &x, Time const &t, Distribution const &d)
Set a probability distribution for a departure state and time.
Definition TransitionKernel.hpp:212
TransitionKernel< Time, Distribution > & operator=(const TransitionKernel< Time, Distribution > &)=default
Copy assignment operator.
Definition TransitionKernel.hpp:18
Random sampling processes.
Definition utils.hpp:26