Class model::AbstractPubo
Inherited Members
Constructors
AbstractPubo()
Declaration
model::AbstractPubo<State_T, Cost_T>::AbstractPubo()
Methods
get_identifier()
Returns the identifier string of the model type (e.g., "ising").
Declaration
std::string model::AbstractPubo<State_T, Cost_T>::get_identifier() const override
get_version()
Returns the version of the input format this implementation expects.
Declaration
std::string model::AbstractPubo<State_T, Cost_T>::get_version() const override
match_version()
Checks the string argument against the expected version.
This can be overloaded to accept other version than the one returned by get_version()
.
Declaration
void model::AbstractPubo<State_T, Cost_T>::match_version(const std::string&version) override
~AbstractPubo()
Declaration
virtual model::AbstractPubo<State_T, Cost_T>::~AbstractPubo()
configure()
Populates model internals from the input json.
Declaration
void model::AbstractPubo<State_T, Cost_T>::configure(const utils::Json&json) override
configure()
Declaration
void model::AbstractPubo<State_T, Cost_T>::configure(typename Graph::Configuration_T&configuration)
get_random_state()
Return a valid random state for the model.
The various algorithms don't know how to initialize a valid state; this allows them to start with a random one. NOTE: The rng
being passed should be used for randomness (as opposed to creating one for the model), as multiple threads can potentially use the same underlying model (albeit with separate rngs).
Declaration
State_T model::AbstractPubo<State_T, Cost_T>::get_random_state(utils::RandomGenerator&rng) const override
get_initial_configuration_state()
Declaration
State_T model::AbstractPubo<State_T, Cost_T>::get_initial_configuration_state() const override
get_random_transition()
Return a random transition starting at state.
The various algorithms don't know how to move throuhg markov space; this allows them to pick a random direction given a starting point.
- By definition, the next markov state should only depend on the current one, so only the last one is passed to this function.
- "random" does not necessitate equi-distributed here (you may choose a different distribution if your model dictates it). However, the the typical choise is to pick randomly from all possible moves at state with equal probability.
Declaration
Transition_T model::AbstractPubo<State_T, Cost_T>::get_random_transition(const State_T&, utils::RandomGenerator&rng) const override
apply_transition()
Apply a transition to a state.
This changes the configuration represented by *state
. Depending on the optimization algorithm, transition can either be applied conditionally or alaways (e.g., population dynamics). Separating the functionality into the three interfaces random_transition
, calculate_cost_difference
, apply_transition
leaves control over the strategy with the optimization method.
Declaration
virtual void model::AbstractPubo<State_T, Cost_T>::apply_transition(const Transition_T&transition, State_T&state) const override=0
render_state()
Render a state of this model.
Default implementation of how a state of this model is rendered (by' invoking the state's proper rendering mechanic). Overloading this method allows a model implementation to customize how a state is printed. This is relevant if the rendering needs to depend on model parameters in addition to the state.
Declaration
utils::Structure model::AbstractPubo<State_T, Cost_T>::render_state(const State_T&state) const override
state_memory_estimate()
Declaration
size_t model::AbstractPubo<State_T, Cost_T>::state_memory_estimate() const override
state_only_memory_estimate()
Declaration
size_t model::AbstractPubo<State_T, Cost_T>::state_only_memory_estimate() const override
estimate_min_cost_diff()
Declaration
double model::AbstractPubo<State_T, Cost_T>::estimate_min_cost_diff() const override
edges()
Return a vector of all the edges.
Declaration
const std::vector<Edge>&model::GraphModel<State_T, Transition_T, Cost_T>::edges() const
nodes()
Return a vector of all the nodes.
Declaration
const std::vector<Node>&model::GraphModel<State_T, Transition_T, Cost_T>::nodes() const