Releases: SimonBlanke/Gradient-Free-Optimizers
Releases · SimonBlanke/Gradient-Free-Optimizers
v1.10.1
Fixed
optimum="minimum"parameter insearch()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 theoptimumsetting. The negation was only applied to the progress bar display.
Full Changelog: v1.10.0...v1.10.1
v1.10.0
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 DimensionTypeenum,DimensionInfodataclass, andDimensionMasksfor dimension-aware vectorized operations- Automatic vectorization for search spaces with 1000+ dimensions via
DimensionIteratorMixin resolutionparameter forGridSearchOptimizerandDirectAlgorithmto handle continuous dimensions- Mixed-type distance metric (Gower-like) for the DIRECT algorithm across heterogeneous dimensions
- Lazy search data construction in
ResultsManagerfor 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_positionpattern) - Converter enhanced with dimension type analysis (
_analyze_dimension_types) - Updated CI workflow configuration
Fixed
finish_initializationin Downhill Simplex and other optimizers_move_randomin sequential model-based optimizers- Init position and
evaluate_initoverride issues in optimizer subclasses - Empty scores edge case in evaluation
Full Changelog: v1.9.0...v1.10.0
v1.9.0
Added
- Private array backend (
_array_backend) for pure Python array operations without NumPy - Private math backend (
_math_backend) for mathematical operations without SciPy - Native
DecisionTreeRegressorimplementation - Native
ExtraTreesRegressorimplementation - Native
RandomForestRegressorimplementation - Native
GradientBoostingRegressorimplementation SimpleProgressBarclass as fallback when tqdm is unavailable- Sigma self-adaptation for
EvolutionStrategyOptimizer convergence_thresholdparameter for Powell's Method- Type hints to all optimizer classes and
Searchclass - 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
BayesianRidgeestimator- Linear GP option from Gaussian Process regressor
Fixed
- Golden section search algorithm in Powell's Method
- Mutable default argument anti-pattern (
constraints=[]changed toconstraints=None) - Missing
@functools.wrapson internal decorators - Division by zero edge case in print-times
- Bug in evaluate method
v1.8.1
Build
- fix error during twine upload: "unrecognized or malformed field: 'license-file'
v1.8.0
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_representativeparametrization for subset testing - Fixed sporadic test failures:
test_inf_nan_1: Relaxed lower bound from 10 to 5 for probabilistic validationtest_start_temp_1: Added deterministic random seeds and relaxed assertion to allow equality
v1.7.2
What's Changed
- Bump pytest from 8.3.4 to 8.3.5 by @dependabot[bot] in #64
- ⚡️ Speed up function
normalizeby 79% by @misrasaurabh1 in #69 - ⚡️ Speed up function
normalizeby 90% by @misrasaurabh1 in #68 - Fix for issue "add support to maximize and minimize objective-function" by @smilingprogrammer in #71
- ⚡️ Speed up method
LipschitzFunction.find_best_slopeby 81% by @misrasaurabh1 in #67 - Resolve warnings of NumPy library by @emmanuel-ferdman in #79
- Bump pytest from 8.3.5 to 8.4.0 by @dependabot[bot] in #81
- Bump pytest from 8.4.0 to 8.4.1 by @dependabot[bot] in #83
- Bump pytest from 8.4.1 to 8.4.2 by @dependabot[bot] in #88
New Contributors
- @misrasaurabh1 made their first contribution in #69
- @smilingprogrammer made their first contribution in #71
- @emmanuel-ferdman made their first contribution in #79
Full Changelog: v1.7.1...v1.7.2
v1.7.1
- add docstring to public API classes
- add type hints
- drop support for python 3.8
v1.6.0
- 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
- add Genetic algorithm optimizer
- add Differential evolution optimizer
v1.4.0
- 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