Optimizer Configuration#

This page covers configuration options shared across all Hyperactive optimizers.

Common Parameters#

All optimizers accept these parameters:

optimizer = SomeOptimizer(  # noqa: F821
    search_space=search_space,  # Required: parameter ranges
    n_iter=5,  # Required: number of iterations
    experiment=objective,  # Required: objective function
    random_state=42,  # Optional: for reproducibility
    initialize={  # Optional: initialization settings
        "warm_start": [...],  # Starting points
        "grid": 4,  # Grid initialization points
        "random": 2,  # Random initialization points
        "vertices": 4,  # Vertex initialization points
    },
)

Initialization Strategies#

Control how the optimizer initializes its search:

# Start from known good points
optimizer = HillClimbing(
    search_space=search_space,
    n_iter=5,
    experiment=objective,
    initialize={
        "warm_start": [
            {"param1": 10, "param2": 0.5},
            {"param1": 20, "param2": 0.3},
        ]
    },
)
# Mix of initialization strategies
optimizer = ParticleSwarmOptimizer(
    search_space=search_space,
    n_iter=5,
    experiment=objective,
    initialize={
        "grid": 4,  # 4 points on a grid
        "random": 6,  # 6 random points
        "vertices": 4,  # 4 corner points
    },
)

Algorithm-Specific Parameters#

Many optimizers have additional parameters. Check the API Reference for details.

Example with Simulated Annealing:

from hyperactive.opt.gfo import SimulatedAnnealing

optimizer = SimulatedAnnealing(
    search_space=search_space,
    n_iter=5,
    experiment=objective,
    # Algorithm-specific parameters
    # (check API reference for available options)
)

Performance Tips#

  1. Start with baselines: Always run RandomSearch first to establish a baseline and understand your objective landscape.

  2. Match iterations to complexity: Complex optimizers (Bayesian, population-based) need more iterations to show their advantages.

  3. Consider evaluation cost: For cheap evaluations, simple optimizers work well. For expensive ones, use model-based approaches.

  4. Use warm starts: If you have prior knowledge, warm start can significantly speed up optimization.

  5. Set random seeds: For reproducible results, always set random_state.