Skip to content

v1.13.0

Latest

Choose a tag to compare

@SimonBlanke SimonBlanke released this 15 May 19:01
· 3 commits to main since this release

Added

  • boundary optimizer parameter for out-of-bounds candidate handling, with clip, reflect, periodic, random, and intermediate strategies
  • Documentation and runnable example for boundary strategies
  • SciPy stats continuous distributions can now be used as search-space dimensions; optimizers operate on quantiles internally and pass ppf values to objective functions
  • Example for SciPy distribution-backed search spaces
  • SearchParams dict subclass carrying optimization metadata as private attributes for tooling integration

Changed

  • SciPy moved from core dependency to optional extra (pip install gradient-free-optimizers[scipy])
  • All optimizers ported from direct numpy imports to the internal array/math backends, enabling numpy-free operation
  • All pandas imports made lazy, reducing startup cost
  • Bayesian Optimization normalizes inputs to [0, 1] before GP fitting for better length-scale stability
  • GPR surrogate switched from Matern ν=0.5 to ν=2.5 with hyperparameter optimization (n_restarts_optimizer=3)
  • TPE bandwidth selection changed from hardcoded 1.0 to Silverman's rule
  • Performance improvements in GPR kernel and KDE score computation via vectorized distance matrices
  • License metadata migrated to PEP 639 format (license = "MIT" under [project]), fixing SetuptoolsDeprecationWarning

Removed

  • Legacy optimizer implementations (optimizers_legacy/)

Fixed

  • Warm-start rows with distribution values outside the search space are now dropped instead of being silently clipped to boundary quantiles
  • NaN distribution quantile positions now fall back to the midpoint quantile instead of propagating NaN to objective functions
  • KDE bandwidth computation on degenerate data (all identical points) causing division-by-zero
  • KDE bandwidth not recomputed on refit with new data
  • min/max broadcasting in the pure-Python array backend
  • norm_cdf/norm_pdf recursion when checking for iterability

Tests

  • Coverage for SciPy distribution-backed search spaces across optimizers, memory warm starts, SMBO warm starts, constraints, and ask/tell
  • Unit tests for all six internal estimators
  • Pure-Python backend integration tests (no numpy, no scipy)
  • Expanded coverage for distributed module and ask/tell interface
  • CI: no-scipy and no-numpy isolation jobs, coverage collection
  • CI: strict mode (GFO_CI_STRICT) prevents dependency-isolation tests from silently skipping when the wrong packages are installed

Full Changelog: v1.12.0...v1.13.0