Ask/Tell Optimizers

The optimizers in the gradient_free_optimizers.ask_tell subpackage provide the same algorithms as the main package, but with a batch-capable ask(n=...) / tell(scores) interface in place of the managed search() loop. They are the right choice when you need to keep evaluation control on your side: external worker pools, async job queues, distributed clusters, or integration into a larger framework.

For an introduction and trade-off discussion, see Ask/Tell Interface. The constructor signatures match the corresponding main-package optimizers, with two differences: initialize is replaced by initial_evaluations, and nth_process is not exposed.

Optimizers

gradient_free_optimizers.ask_tell.HillClimbingOptimizer(...)

Hill Climbing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.StochasticHillClimbingOptimizer(...)

Stochastic Hill Climbing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.RepulsingHillClimbingOptimizer(...)

Repulsing Hill Climbing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.SimulatedAnnealingOptimizer(...)

Simulated Annealing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.DownhillSimplexOptimizer(...)

Downhill Simplex optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.RandomSearchOptimizer(...)

Random Search optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.GridSearchOptimizer(...)

Grid Search optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.RandomRestartHillClimbingOptimizer(...)

Random Restart Hill Climbing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.RandomAnnealingOptimizer(...)

Random Annealing optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.PatternSearch(...)

Pattern Search optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.PowellsMethod(...)

Powell's Method optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.LipschitzOptimizer(...)

Lipschitz optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.DirectAlgorithm(...)

DIRECT algorithm optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.ParticleSwarmOptimizer(...)

Particle Swarm optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.SpiralOptimization(...)

Spiral Optimization with ask/tell interface.

gradient_free_optimizers.ask_tell.ParallelTemperingOptimizer(...)

Parallel Tempering optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.GeneticAlgorithmOptimizer(...)

Genetic Algorithm optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.EvolutionStrategyOptimizer(...)

Evolution Strategy optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.DifferentialEvolutionOptimizer(...)

Differential Evolution optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.CMAESOptimizer(...)

CMA-ES optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.BayesianOptimizer(...)

Bayesian optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.TreeStructuredParzenEstimators(...)

Tree-structured Parzen Estimator optimizer with ask/tell interface.

gradient_free_optimizers.ask_tell.ForestOptimizer(...)

Forest optimizer with ask/tell interface.

Common Interface

All ask/tell optimizers expose the same methods and attributes:

optimizer = OptimizerClass(
    search_space,                    # dict: parameter name -> numpy array
    initial_evaluations=[            # list[tuple[dict, float]]
        (params_dict, score),
        ...,
    ],
    constraints=[],                  # optional list of constraint callables
    random_state=None,               # optional int seed
    # plus algorithm-specific parameters (epsilon, population, ...)
)

params_list = optimizer.ask(n=4)     # list[dict] of length n
optimizer.tell(scores)               # list[float] of length n

optimizer.best_score                 # float, -inf before any tell()
optimizer.best_para                  # dict