Optimization with SpotOptim
For practitioners needing robust, flexible black-box optimization, spotoptim offers a comprehensive, well-documented package with features like OCBA and restart mechanisms, but it is an incremental contribution combining existing methods.
The spotoptim package implements surrogate-model-based optimization for expensive black-box functions, providing Kriging-based optimization with Expected Improvement, support for mixed variable types, noise-aware evaluation, multi-objective extensions, and parallelization. It is compared with six other optimization frameworks and is open-source.
The `spotoptim` package implements surrogate-model-based optimization of expensive black-box functions in Python. Building on two decades of Sequential Parameter Optimization (SPO) methodology, it provides a Kriging-based optimization loop with Expected Improvement, support for continuous, integer, and categorical variables, noise-aware evaluation via Optimal Computing Budget Allocation (OCBA), and multi-objective extensions. A steady-state parallelization strategy overlaps surrogate search with objective evaluation on multi-core hardware, and a success-rate-based restart mechanism detects stagnation while preserving the best solution found. The package returns scipy-compatible `OptimizeResult` objects and accepts any scikit-learn-compatible surrogate model. Built-in TensorBoard logging provides real-time monitoring of convergence and surrogate quality. This report describes the architecture and module structure of spotoptim, provides worked examples including neural network hyperparameter tuning, and compares the framework with BoTorch, Optuna, Ray Tune, BOHB, SMAC, and Hyperopt. The package is open-source.