Releases: geneticpy/geneticpy
Releases · geneticpy/geneticpy
v2.0.0
[2.0.0] - 2025-10-11
Changed
- BREAKING: Removed scikit-learn dependency and
GeneticSearchCVclass - BREAKING: Minimum Python version increased from 3.8 to 3.10
- Migrated from setuptools to hatchling build backend
- Migrated from pip to uv for dependency management
- Modernized CI/CD workflows to use uv
- Updated README with modern development workflow
Added
- Comprehensive type hints across entire codebase
- NumPy-style docstrings on all public APIs
- Makefile with helpful development targets (test, lint, format, typecheck, build, coverage, clean)
- MyPy type checking with strict mode enabled
- Ruff for linting and formatting with docstring validation
- Coverage reporting configuration
- Python 3.13 and 3.14 support
- Tournament selection option for improved parent selection pressure (
use_tournament_selection,tournament_sizeparameters) - Diversity protection with automatic population diversity monitoring and injection when diversity falls below threshold
- Handles both numeric parameters (variance-based) and categorical choice parameters (unique ratio)
- Automatically injects random individuals when diversity falls below threshold
- Adaptive mutation that automatically adjusts exploration vs exploitation based on optimization progress
- Early stopping via
patienceparameter to halt optimization when no improvement is seen for N generations - Enhanced mutation with
mutation_rateparameter (0.0-1.0) for probabilistic per-parameter mutation - Comprehensive test suite with 15 new tests covering all new features (64 total tests, 97% coverage)
Fixed
- ReadTheDocs configuration for proper documentation building
- Docstring formatting for Sphinx compatibility
- Infinite loop bug in breeding logic where
if set1 != set2condition could hang indefinitely - Incomplete random seeding - now seeds both
randomandnumpy.randomfor full reproducibility - Weak elitism protection - top performers are now preserved correctly across generations
- Improved breeding algorithm to always produce valid offspring
v1.4.0
v1.3.0
New Feature
- Added the ability to provide an asynchronous loss/reward function to the optimize function.
Miscellaneous Changes
- Added documentation to https://geneticpy.readthedocs.io.
Full Changelog: v1.2.3...v1.3.0
v1.2.3
Bug Fix
- Updated Scikit-Learn support to include >=0.23.2.
Miscellaneous Changes
- Changed CI/CD from Travis to GitHub Actions
- Utilizing pyproject.toml and setup.cfg files instead of setup.py
- Using
setuptools-git-versioningfor automatic versioning with release. - Adding
Releasestep to GitHub actions to automate deployment to Pypi.
v1.2.2
Bug Fix
- Fixed issue with complex pipelines and GeneticSearchCV.
v1.2.1
Bug Fix
- Complex pipelines can now be used with GeneticSearchCV.
v1.2.0
New Features
- Introduced GeneticSearchCV class.
Changes
- Removed Python 3.4 and Python 3.5 support.
v1.1.0
Bug Fixes
- Using tqdm autonotebook to allow tqdm counter to automatically detect Jupyter notebooks.
- Fixed incorrect counting of tqdm counter.
Other Changes
- Returning dictionary by default for the optimize function.
- Added DeprecationWarning for "tuple" optimize return type.
v1.0.1
New Features
- Created dictionary return type for optimize function.
Other Changes
- Added PendingDeprecationWarning for "tuple" optimize return type.
- Added Python 3.8 testing.
v1.0.0
New Features
- Created 'seed' parameter to allow for reproducible results.
- Allowing for early stopping when 'target' loss is reached.
- Added 'total_time' to output of the optimize() function.
Bug Fixes
- Exception is raised if loss function returns None.
Other Changes
- Added test coverage report.
- Achieved 100% test coverage.