KJB
|
#include <sample_proposer.h>
Public Types | |
typedef Mh_model_proposer < double >::Type | Proposer |
typedef Get_model_parameter < Model >::Type | Get_param |
typedef Set_model_parameter < Model >::Type | Set_param |
typedef Model_dimension< Model > ::Type | Dimension |
typedef std::vector< Proposer > | Proposer_vector |
Public Member Functions | |
Single_dimension_proposer (const Proposer_vector &proposers, const Get_param &get_param=get_vector_model_parameter< Model >, const Set_param &set_param=set_vector_model_parameter< Model >, const Dimension &model_dimension=get_vector_model_dimension< Model >) | |
Constructs a Single_dimension_proposer with a uniform distribution. More... | |
Single_dimension_proposer (const Proposer_vector &proposers, const kjb::Categorical_distribution< int > &dist, const Get_param &get_param=get_vector_model_parameter< Model >, const Set_param &set_param=set_vector_model_parameter< Model >, const Dimension &model_dimension=get_vector_model_dimension< Model >) | |
Constructs a Single_dimension_proposer with the given proposers and their distribution. More... | |
Mh_proposal_result | operator() (const Model &m, Model &m_p) const |
Proposes new model. More... | |
int | get_last_modified_dimension () const |
Returns the most recently changed dimension of the model. More... | |
Model | The model type. Must comply with BaseModel concept. |
Single_dimension_proposer is a proposer that proposes models by changing a single dimension – chosen according to a distribution – of the given model. It receives a vector of proposers, one for each dimension of the model. At each iteration it chooses a dimension at random and proposes that dimension of the new model using the corresponding proposer. The rest of the proposed model is the same as the given model. Clearly, the number of proposers must be equal to the dimension of the model.
There is one exception to this: if given only ONE proposer, Single_dimension_proposer will use that proposer no matter what dimension of the model was chosen.
Note that the user must provide a parameter setter and a parameter getter; otherwise, vector getters and setters are used.
typedef Model_dimension<Model>::Type Single_dimension_proposer< Model >::Dimension |
typedef Get_model_parameter<Model>::Type Single_dimension_proposer< Model >::Get_param |
typedef Mh_model_proposer<double>::Type Single_dimension_proposer< Model >::Proposer |
typedef std::vector<Proposer> Single_dimension_proposer< Model >::Proposer_vector |
typedef Set_model_parameter<Model>::Type Single_dimension_proposer< Model >::Set_param |
|
inline |
Constructs a Single_dimension_proposer with a uniform distribution.
|
inline |
Constructs a Single_dimension_proposer with the given proposers and their distribution.
|
inline |
Returns the most recently changed dimension of the model.
|
inline |
Proposes new model.
See Mh_model_proposer concept for more information