Skip to content

Releases: SimonBlanke/Gradient-Free-Optimizers

v1.10.1

19 Feb 23:55

Choose a tag to compare

Fixed

  • optimum="minimum" parameter in search() had no effect on the actual optimization. The objective adapter received the raw function instead of the negated one, causing the optimizer to maximize regardless of the optimum setting. The negation was only applied to the progress bar display.

Full Changelog: v1.10.0...v1.10.1

v1.10.0

16 Feb 17:34

Choose a tag to compare

Added

  • New optimizer module (optimizers/) using the Template Method Pattern with explicit hook methods (_iterate_continuous_batch, _iterate_categorical_batch, _iterate_discrete_batch)
  • Extended search space dimension types: continuous (min, max) tuples, categorical ["a", "b"] lists, and discrete numerical NumPy arrays
  • DimensionType enum, DimensionInfo dataclass, and DimensionMasks for dimension-aware vectorized operations
  • Automatic vectorization for search spaces with 1000+ dimensions via DimensionIteratorMixin
  • resolution parameter for GridSearchOptimizer and DirectAlgorithm to handle continuous dimensions
  • Mixed-type distance metric (Gower-like) for the DIRECT algorithm across heterogeneous dimensions
  • Lazy search data construction in ResultsManager for reduced memory footprint during optimization
  • State management via property setters with automatic history tracking in CoreOptimizer
  • Extended search-space tests for all optimizers
  • Examples for mixed and large search spaces
  • Sphinx documentation site with landing page, logos, and navigation

Changed

  • All optimizers reimplemented to comply with the new Template Method architecture
  • Legacy optimizer implementations preserved in optimizers_legacy/ (not part of public API)
  • SciPy restored as a core dependency
  • Wall clipping algorithm reworked
  • Optimizer initialization refactored (finish_initialization, _generate_position pattern)
  • Converter enhanced with dimension type analysis (_analyze_dimension_types)
  • Updated CI workflow configuration

Fixed

  • finish_initialization in Downhill Simplex and other optimizers
  • _move_random in sequential model-based optimizers
  • Init position and evaluate_init override issues in optimizer subclasses
  • Empty scores edge case in evaluation

Full Changelog: v1.9.0...v1.10.0

v1.9.0

15 Jan 19:39

Choose a tag to compare

Added

  • Private array backend (_array_backend) for pure Python array operations without NumPy
  • Private math backend (_math_backend) for mathematical operations without SciPy
  • Native DecisionTreeRegressor implementation
  • Native ExtraTreesRegressor implementation
  • Native RandomForestRegressor implementation
  • Native GradientBoostingRegressor implementation
  • SimpleProgressBar class as fallback when tqdm is unavailable
  • Sigma self-adaptation for EvolutionStrategyOptimizer
  • convergence_threshold parameter for Powell's Method
  • Type hints to all optimizer classes and Search class
  • Comprehensive docstrings for all optimizer classes
  • Sphinx documentation with ReadTheDocs integration
  • API tests for all optimizer categories

Changed

  • scikit-learn is now an optional dependency (native estimators used by default)
  • SciPy is now an optional dependency
  • tqdm is now an optional dependency
  • Complete reimplementation of Powell's Method with improved line search algorithms
  • Reworked README with new 3D optimization animation
  • Consolidated CI workflows into single ci.yml
  • Restructured test directory (tests/test_main/, tests/test_internal/, etc.)
  • Improved error messages with actionable suggestions

Removed

  • BayesianRidge estimator
  • Linear GP option from Gaussian Process regressor

Fixed

  • Golden section search algorithm in Powell's Method
  • Mutable default argument anti-pattern (constraints=[] changed to constraints=None)
  • Missing @functools.wraps on internal decorators
  • Division by zero edge case in print-times
  • Bug in evaluate method

v1.8.1

29 Dec 10:22

Choose a tag to compare

Build

v1.8.0

29 Dec 10:09

Choose a tag to compare

Python Version Support

  • Removed support for Python 3.9
  • Added support for Python 3.14
  • Updated CI workflows for macOS, Ubuntu, and Windows

Package Metadata

  • Added keywords and classifiers to pyproject.toml for better PyPI discoverability

Testing Improvements

  • Optimized test suite for faster execution
  • Reduced test iterations in multiple test files
  • Added optimizers_representative parametrization for subset testing
  • Fixed sporadic test failures:
    • test_inf_nan_1: Relaxed lower bound from 10 to 5 for probabilistic validation
    • test_start_temp_1: Added deterministic random seeds and relaxed assertion to allow equality

v1.7.2

25 Sep 17:43

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.7.1...v1.7.2

v1.7.1

07 Dec 12:30

Choose a tag to compare

  • add docstring to public API classes
  • add type hints
  • drop support for python 3.8

v1.6.0

14 Aug 15:05

Choose a tag to compare

  • add support for numpy v2
  • add support for pandas v2
  • add support for python 3.12
  • transfer setup.py to pyproject.toml
  • change project structure to src-layout

v1.5.0

29 Jul 13:04

Choose a tag to compare

  • add Genetic algorithm optimizer
  • add Differential evolution optimizer

v1.4.0

11 May 14:59

Choose a tag to compare

  • add Grid search parameter that changes direction of search
  • add SMBO parameter that enables to avoid replacement of the sampling
  • fix bug in transition probability of stochastic-hill-climbing and simulated-annealing