Skip to content

Latest commit

 

History

History
104 lines (73 loc) · 2.71 KB

File metadata and controls

104 lines (73 loc) · 2.71 KB

Scipy Backend

Hyperactive provides wrappers for scipy.optimize algorithms, enabling well-tested, production-grade optimization for continuous parameter spaces.

Note

Scipy must be installed separately:

pip install scipy
# or
pip install hyperactive[all_extras]

Available Optimizers

The Scipy backend provides 7 optimizers divided into global and local methods.

Global Optimizers (5 algorithms):

Optimizer Description
ScipyDifferentialEvolution Population-based global optimizer. Robust for multi-modal landscapes.
ScipyDualAnnealing Combines classical simulated annealing with local search.
ScipyBasinhopping Random perturbations with local minimization. Good for finding global minima.
ScipySHGO Simplicial Homology Global Optimization. Finds multiple local minima.
ScipyDirect Deterministic DIRECT algorithm. No random seed required.

Local Optimizers (2 algorithms):

Optimizer Description
ScipyNelderMead Simplex-based optimizer. Fast for smooth functions.
ScipyPowell Conjugate direction method. Often faster than Nelder-Mead.

Quick Example

Scipy optimizers require continuous parameter spaces defined as tuples:

from hyperactive.opt.scipy import ScipyDifferentialEvolution

# Define a continuous search space (tuples, not arrays)
param_space = {
    "x": (-5.0, 5.0),
    "y": (-5.0, 5.0),
}

def objective(params):
    x, y = params["x"], params["y"]
    return -(x**2 + y**2)  # Maximize (minimize negative)

optimizer = ScipyDifferentialEvolution(
    param_space=param_space,
    n_iter=100,
    experiment=objective,
    random_state=42,
)

best_params = optimizer.solve()
print(f"Best parameters: {best_params}")

When to Use Scipy Backend

The Scipy backend is useful when:

  • Continuous parameters only: Your search space has no categorical or discrete values
  • Production-grade algorithms: You need well-tested, reliable implementations
  • Specific scipy features: You want scipy's differential evolution or simulated annealing
  • Deterministic optimization: Use ScipyDirect for reproducible results without random seeds

See Also