Overview¶
This library started as a rewrite of DEAP and kept that toolbox model — register operators, run an algorithm. The published API is not a drop-in rename: function names, parameter order, and a few contracts changed, and the surface now includes families DEAP does not ship. Counted from the pages in this section:
- 18 still-open DEAP issues implemented (some older than a decade)
- 84 correctness bugs fixed — operators, GP, CMA, records, checkpoints, published benchmarks, creator, utilities, and algorithms
- 66 capabilities DEAP does not have, including boxed CMA, mixed-gene mutation, logbook JSON, columnar GP, and Push GP
The rest of this section is that inventory: the rewrite itself (this page), then the operators, bookkeeping, genetic programming, quality-diversity archives, and correctness work that accumulated on top of that base. Timed hot paths versus DEAP are on the performance page.
Rewrite and public API¶
- The codebase is a complete rewrite for Python 3.12 and newer. The license is Apache-2.0.
- Algorithms, strategies, and benchmarks live under the tools namespace.
- All camelCase functions and methods are snake_case.
- Some functions and methods were renamed entirely.
- The public surface has type hints.
- Many parameters were reordered or renamed.
- Some class properties are now method calls.
- Hypervolume, hypervolume contributions, and Pareto ranking delegate to moocore (prebuilt C wheels). deap-er stays a pure-Python package. moocore is licensed LGPL-2.1-or-later; do not vendor its sources into this tree.
- 3.0 breaking changes:
sort_log_non_dominatedand theHyperVolumeclass are removed.sort_non_dominatedno longer takesffo.sel_nsga_2/sel_nsga_3no longer takesorting.least_contribno longer takesmap_func.StrategyMultiObjectiveno longer takesmp_pool. - State persistence is implemented with the
Checkpointclass. - Deprecated and obsolete DEAP APIs are removed.
- The documentation matches the current API.