Search Results for

    Show / Hide Table of Contents

    Class solver::PopulationAnnealing

    Population Annealing.

    Population based optimizer with variable beta stepping. PopulationAnnealing explores the configuration space using multiple Metropolis walkers subject to a birth-death process (depending on their relative cost-fitness within the population). Stepping method Population annealing supports three different resampling_strategys for dynamically selecting the next step in temperature space (delta_beta):

    • friction_tensor: The stepping size is calculated from
     \Delta\beta = c_{FT} / \sqrt\zeta 
    
    {
      'target': 'populationannealing.cpu',
      'version': '1.0',
      'resampling_strategy': 'friction_tensor',
      'friction_tensor_constant': 1
    }
    
    • energy_variance: Scale temperature stepping with the variance in the energy (cost):
     \Delta\beta = f_{culling} / \sqrt\sigma 
    

    for this, the initial value for the culling fraction needs to be specified:

    {
      'target': 'populationannealing.cpu',
      'version': '1.0',
      'resampling_strategy': 'energy_variance',
      'initial_culling_fraction': 0.5
    }
    
    • constant_culling: The stepping size is chosen to keep the culling rate constant at culling_fraction (by estimating the expected death ratio and solving for delta_beta):
    {
      'target': 'populationannealing.cpu',
      'version': '1.0',
      'resampling_strategy': 'constant_culling',
      'culling_fraction': 0.1
    }
    
    Inheritance
    solver::SteppingSolver
    solver::PopulationAnnealing
    solver::PAParameterFree
    Inherited Members
    clear_observable_label
    restart
    is_watching
    scoped_observable_label
    observe
    Observer
    render
    set_observable_label
    ~ModelSolver
    get_solutions
    copy_lowest_state
    copy_solutions
    get_model_properties
    update_lowest_cost
    get_model_term_size
    init_memory_check
    count_solutions
    copy_solutions
    get_model
    get_model_unconst
    copy_solutions_other
    ModelSolver
    populate_solutions
    max_replicas_adjusted_state
    set_model
    get_model_sweep_size
    is_empty
    get_lowest_cost
    adjust_states
    max_replicas_of_state
    set_time_limit
    get_result
    copy_limits
    ~Solver
    get_benchmark
    get_max_threads
    get_thread_count
    Solver
    fixed_step_per_tick
    update_accumulated_info
    handle_signals
    run
    current_steps
    reset
    get_cost_function_evaluation_count
    SteppingSolver
    get_solver_properties
    status
    get_seed
    ~SteppingSolver
    get_runtime
    seconds_per_step
    set_output_parameter
    set_output_parameter
    param
    get_output_parameters
    ~Component
    Component
    get_status
    get_class_name

    Constructors

    PopulationAnnealing()

    Declaration
    solver::PopulationAnnealing<Model_T>::PopulationAnnealing()

    PopulationAnnealing()

    Declaration
    solver::PopulationAnnealing<Model_T>::PopulationAnnealing(const PopulationAnnealing&)=delete

    Methods

    operator=()

    Declaration
    PopulationAnnealing&solver::PopulationAnnealing<Model_T>::operator=(const PopulationAnnealing&)=delete

    get_identifier()

    Identifier of this solver (target in the request)

    Declaration
    std::string solver::PopulationAnnealing<Model_T>::get_identifier() const override

    init_memory_check_error_message()

    Declaration
    std::string solver::PopulationAnnealing<Model_T>::init_memory_check_error_message() const override

    target_number_of_states()

    Declaration
    size_t solver::PopulationAnnealing<Model_T>::target_number_of_states() const override

    init()

    Initialize the solver.

    Declaration
    void solver::PopulationAnnealing<Model_T>::init() override

    init_population()

    Reset the population with size target_population

    Note

    This method is invoked both at the start of the simulation and whenever a restart/population increase is triggered.

    Declaration
    void solver::PopulationAnnealing<Model_T>::init_population()

    find_delta_beta()

    Adjust the stepping size delta_beta until the estimator returns an estimate of zero. NOTE: This is NOT a generic root finder, it makes several assumptions about the estimator being used.

    Declaration
    double solver::PopulationAnnealing<Model_T>::find_delta_beta(T&estimator)

    make_step()

    Declaration
    void solver::PopulationAnnealing<Model_T>::make_step(uint64_t step) override

    resample()

    Declaration
    void solver::PopulationAnnealing<Model_T>::resample(double delta_beta)

    configure()

    Check the identifier and version against the configuraiton.

    Declaration
    void solver::PopulationAnnealing<Model_T>::configure(const utils::Json&json) override

    finalize()

    Declaration
    void solver::PopulationAnnealing<Model_T>::finalize() override

    expand_population()

    expand the population to size target_population

    Note

    This method is called to expand population from current size to target_population

    Declaration
    void solver::PopulationAnnealing<Model_T>::expand_population()

    is_linear_schedule()

    Declaration
    bool solver::PopulationAnnealing<Model_T>::is_linear_schedule() const

    is_geometric_schedule()

    Declaration
    bool solver::PopulationAnnealing<Model_T>::is_geometric_schedule() const

    is_friction_tensor()

    Declaration
    bool solver::PopulationAnnealing<Model_T>::is_friction_tensor() const

    is_energy_variance()

    Declaration
    bool solver::PopulationAnnealing<Model_T>::is_energy_variance() const

    is_constant_culling()

    Declaration
    bool solver::PopulationAnnealing<Model_T>::is_constant_culling() const
    In This Article
    Back to top Generated with Doxygen and DocFX