Optimizer Configuration#

This page covers configuration options shared across all Hyperactive optimizers.

Common Parameters#

All optimizers accept these parameters:

optimizer = SomeOptimizer(
    search_space=search_space,  # Required: parameter ranges
    n_iter=100,                  # 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=50,
    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=100,
    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=100,
    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.