Integrations#
Surfaces integrates seamlessly with popular optimization frameworks. Use your favorite optimizer with any Surfaces test function.
Supported Frameworks#
Scientific Python’s optimization module.
Built-in to_scipy() conversion.
Hyperparameter optimization framework.
Works with suggest_* API.
Sequential Model-based Algorithm Configuration. ConfigSpace integration.
Distributed hyperparameter tuning. Scalable experimentation.
Simple gradient-free optimization. Native search space compatibility.
Advanced optimization toolkit. Direct integration.
Quick Comparison#
Framework |
Type |
Scale |
Best For |
|---|---|---|---|
scipy |
Classical |
Single machine |
Quick prototyping, gradient methods |
Optuna |
Bayesian |
Distributed |
HPO, pruning, visualization |
SMAC |
Bayesian |
Single machine |
Algorithm configuration, research |
Ray Tune |
Various |
Distributed |
Large-scale, multi-GPU |
GFO |
Gradient-free |
Single machine |
Simple API, exploration |
Hyperactive |
Meta-heuristic |
Single machine |
Advanced search strategies |
Common Pattern#
All integrations follow a similar pattern:
Create a Surfaces test function
Extract the search space
Define an objective that calls the test function
Run the optimizer
from surfaces.test_functions.algebraic import RastriginFunction
# 1. Create function
func = RastriginFunction(n_dim=5)
# 2. Get search space
space = func.search_space()
# 3. Define objective
def objective(params):
return func(params)
# 4. Run optimizer (framework-specific)
# ...
Choosing a Framework#
For quick experiments:
Use scipy or GFO. Minimal setup, fast iteration.
For serious benchmarking:
Use Optuna or SMAC. Better optimization, logging, visualization.
For large-scale studies:
Use Ray Tune. Distributed execution, checkpointing, scalability.
For research:
Use SMAC or custom. Fine-grained control, reproducibility.