Search Results for

    Show / Hide Table of Contents

    Population Annealing

    Simulates a population of metropolis walkers with birth-death process resampling. The qiotoolkit implementation uses variable setpping in temperatures according to one of 4 available resampling strategies:

    • linear_schedule: Change the temperature according to a fixed schedule (non-adaptive).
    • friction_tensor: Estimate the next temperature step such that the friction tensor remains stable with a constant of friction_tensor_constant
    • energy_variance: Adjust culling such that the energy variance remains stable, using initial_culling_constant for the first step.
    • constant_culling: Adjust stepping such that a constant portion culling_fraction of the population is replaced each resampling step.

    The initial number of replicas can be specified via initial_population_size. The solver will double the population size whenever

    • There is no remaining cost variance (all replicas are in an equal-cost state)
    • The ratio of families remaining in the population drops below alpha (indicating that one family dominates the population).

    Additionally, you may increase the number of sweeps between resamplings using the sweeps_per_replica parameter.

    Example

    {
      "target": "population-annealing.cpu",
      "version": "1.0",
      "input_params": {
        "seed": 42,
        "population": 100
      },
      "input_data_uri": "..."
    }
    

    Parameters Specification

    • List
    • Schema
    param type required/default description
    seed integer time-based
    population integer >1 number of threads population size.
    constant_population bool false whether to keep the population constant between restarts
    resampling_strategy string linear_schedule resample by linear_schedule, friction_tensor, energy_variance or constant_culling.
    beta Schedule linear 0..5 The schedule by which to anneal the system.
    beta_start float >0 0.0 initial beta for the linear_schedule.
    beta_stop float >beta_start 5.0 final beta for the linear_schedule.
    friction_tensor_constant float >0.0 1.0 friction tensor constant (required for friction_tensor
    initial_culling_fraction float [0,1] 0.5 initial culling rate (for energy_variance)
    culling_fraction float [0,1] 0.2 constant culling rate (for constant_culling)
    alpha float >1.0 2.0 ratio to trigger a restart
    {
      "$id": "solver/populationannealing.qiotoolkit.schema",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "qiotoolkit Population Annealing",
      "type": "object",
      "required": ["target", "input_params"],
      "properties": {
        "target": {
          "type": "string",
          "const": "populationannealing.qiotoolkit"
        },
        "input_params": {
          "type": "object",
          "required": ["resampling_strategy"],
          "properties": {
            "alpha": {
              "type": "number",
              "minimum": 1.0,
              "default": 2.0,
              "description": "ratio to trigger a restart"
            },
            "population": {
              "type": "number",
              "minimum": 2,
              "description": "desired population size (defaults to the number of threads)"
            },
            "constant_population": {
              "type": "boolean",
              "default": "false",
              "description": "whether to keep the population constant between restarts"
            },
            "beta": {
              "type": "object",
              "$ref": "../schedule/schedule.schema",
              "description": "How the temperature should be changed over time."
            },
            "beta_start": {
              "type": "number",
              "description": "float specifying the starting inverse temperature."
              "minimum": 0,
            },
            "beta_stop": {
              "type": "number",
              "description": "float specifying the stopping inverse temperature."
              "minimum": 0,
            },
            "resampling_strategy": {
              "type": "string",
              "enum": ["linear_schedule", "friction_tensor", "energy_variance", "constant_culling"],
              "default": 'linear_schedule',
              "description": "resample by 'linear_schedule', 'friction_tensor', 'energy_variance' or 'constant_culling'."
            },
            "friction_tensor_constant": {
              "type": "number",
              "minimum": 0.0,
              "default": 1.0,
              "description": "friction tensor constant"
            },
            "initial_culling_fraction": {
              "type": "number",
              "minimum": 0.0,
              "maximum": 1.0,
              "default": 0.5,
              "description": "initial culling rate"
            },
            "culling_fraction": {
              "type": "number",
              "minimum": 0.0,
              "maximum": 1.0,
              "default": 0.2,
              "description": "constant culling rate"
            },
            "sweeps_per_replica" {
              "type": "number",
              "minimum": 1,
              "multipleOf": 1,
              "default": 1,
              "sweeps per replica between resampling."
            }
          }
        }
      }
    }
    
    In This Article
    Back to top Generated with Doxygen and DocFX