Releases: leap-ec/LEAP
Releases · leap-ec/LEAP
v0.8.1
0.8.1, 10/10/2023
-
New Features
- Added asynchronous NSGA-II, which is in
leap_ec.distrib.asynchronous
;
note that the API may change in the future
- Added asynchronous NSGA-II, which is in
-
API changes
- Added
CGPDecoder.initialize()
method for convenience, offering a default genome initializer - Replaced
n_ary_crossover
anduniform_crossover
functions with classesNAryCrossover
andUniformCrossover
- Added a
persist_children
flag to crossover operators, which allows offspring pairs
to be used with steady-state algorithms - Added a
uuid
field to theIndividual
base class, andIndividual
now also tracks parent & offspring UUIDs; this
moved UUID support fromDistributedIndividual
- Added a
parents
attribute toIndividual
base class that tracks the
UUIDs of the parents via clone or crossover - Improved auto-scaling of axes for
PopulationMetricsPlotProbe
andFitnessPlotProbe
- standardized on parameter name
bounds
for mutation operators; previously was inconsistent nomenclature between
hard_bounds
andbounds
- Made improvements to ReadTheDocs documentation.
- Added
v0.8.0
0.8.0, 4/14/2023
-
New Features
- Added
FitnessOffsetProblem
convenience wrapper to theproblem
module - Added
ParabaloidProblem
andQuadraticFamilyProblem
to thereal_rep.problems
module - CGP now supports auxiliary constant parameters on each node via
CGPWithParametersDecoder
- Added
ImageXYProblem
toexecutable_rep.problems
, and acgp_images.py
example demonstrating it - Added experimental parameters to
mutate_gaussian()
to allow transforming genes by a linear function - Added a
check_constraints()
operator to theCGPDecoder
class, to help verify custom algorithms - Added
LeadingOnes
,DeceptiveTrap
, andTwoMax
problems tobinary_rep.problems
module - Added
SumPhenotypePlotProbe
, and a new example using it to visualizing MaxOnes-style problems - Added
multiobjective
sub-package that provides support for NSGA-IImultiobjective.nsga2.nsga2()
top-level monolithic functionmultiobjective.problems.MultiObjectiveProblem
is new abstract base class for multiobjective problemsmultiobjective.ops
contains supporting pipeline operators, though most users will not see those if they usensga()
- Added
-
API changes
Individual
now has aphenome
property- Mutation operators (
mutate_gaussian()
andmutate_binomial()
) can now be passed a list ofstd
values to adjust the mutation width by gene. - Removed an undocumented normalization term from
real_rep.problems.CosineFamilyProblem
- Expose a
reset
method onPopulationMetricsPlotProbe
util.inc_generation()
now takes astart_generation
argumentgenome_mutate_gaussian()
is now a curried function instead of a closureplot_2d_problem()
andplot_2d_function()
now accept extrakwargs
to forward to MatplotlibMaxOnes
now takes an optionaltarget_string
to generalize it to other target patterns
v0.7.0
0.7.0, 8/5/2021
-
New features
- Added
ops.sus_selection()
andops.proportional_selection()
- Added
-
API changes
- Made
numpy
arrays (instead of lists) the default representation for most LEAP operators and examples, for a significant speedup. - Added
indices
parameter toops.random_selection()
plot_2d_problem()
now defaults to checking theproblem.bounds
field forxlim
andylim
valuesea_solve()
now accepts optional DaskClient
object to enable
parallel evaluationsgenerational_ea()
now supports elitism by default
- Made
v0.6.0
v0.6.0, 6/13/2021
-
Drop support for Python 3.6
- This keeps us in sync with numpy and dask that also dropped support for 3.6 this year
-
New features
- Added
landscape_features
package with some initial exploratory landscape analysis tools - Added elitism
- Added a new example demonstrating integer representations
- Added a
mutate_binomial()
operator for integer representations - Added visualization of ANN weights for
SimpleNeuralNetworkExecutable
phenotypes - Added metrics for logging population diversity
- Added support for lexicographical and Koza-style parsimony pressure
- Added
HistPhenotypePlotProbe
- Added
ops.grouped_evaluate()
for evaluating batches of individuals - Added
ExternalProcessproblem
for using external programs as fitness functions
- Added
-
Documentation
- Added documentation on
leap_ec.context
and updated software development
guidelines to encourage its use if tracking persistent state outside of
function calls was necessary.
- Added documentation on
-
CI/CD
- Added a
make test-slow
harness - Added tests that run the
examples/
scripts - Organized examples into subdirectories
- Improved test coverage
- Added a
-
Bugfixes
- Fix
viz
parameter when callingsimple.ea_solve()
- Fix algebra error in
real_rep.problems.NoisyQuarticProblem
- Tell
dask
that functions are impure by default, to make sure it doesn't cache results - Change
Makefile
to usepip install -e .
instead of the deprecatedpython setup.py develop
- Fix
-
API changes
- Significantly refactored the
executable_rep.rules
package to simplify learning classifier systems - Added
leap_ec.__version__
attribute - Added a
hard_bounds
flag toea_solve()
to tell it to respect thebounds
at all times (rather than just initialization); defaults toTrue
- Added the most frequent imports (ex.
Individual
,Representation
) into the top-level package - Renamed the
generations
parameter ofgenerational_ea()
tomax_generations
and added an optionalstop
parameter for other stopping conditions - Added probability parameter for the
uniform_crossover
operator mutate_gaussian
now accepts a list of gene-wise hard bound- Added
select_worst
Boolean parameter totournament_selection
- Added
notes
columns parameter toFitnessStatsCSVProbe
- Added a
pad_inputs
parameter toTruthTableProblem
to handle varying-dimension inputs - Added a
pad
parameter toCartesianPhenotypePlotProbe
to plot 2D projections of higher-D functions - Added
FitnessPlotProbe
as a convenience wrapper forPopulationMetricsPlotProbe
- Added an
x_axis_value
parameter toFitnessPlotProbe
andPopulationMetricsPlotProbe
- Renamed
PlotTrajectoryProbe
to the more descriptiveCartesianPhenotypePlotProbe
- Renamed
PopulationPlotProbe
to the more descriptivePopulationMetricsPlotProbe
- Renamed
leap_ec.distributed
toleap_ec.distrib
to reduce name space
confusion withdask.distributed
- Renamed
leap_ec.context
toleap_ec.global_vars
- Default behavior changes
Individual.decoder
andRepresentation.decoder
now uses a phenotypic representation (IdentityDecoder
) by default- Mutation operators no longer have default mutation rates (they must be explicitly set by the user).
- Set default
p_swap = 0.2
foruniform_crossover
, instead of 0.5 - Set default
num_points = 2
forn_ary_crossover
, instead of 1 - Set default value for
context
parameter on probes, so users needn't set it - standardized on making
context
last function argument that defaults to
leap_ec.context.context
- Significantly refactored the
0.5.0, 1/9/2021
- Added probability parameter for the
n_ary_crossover
operator - Greatly improved test coverage
- Added support for static- and variable-length segments, which are fixed-length "chunks" of values
- Added a simple neural network representation,
executable_rep.neural_network
, and made it the default forexamples/openai_gym.py
- Changed the
Executable
interface to act as aCallable
object (rather than using a customoutput()
method) - Added
statistical_helpers
to assist with writing unit tests for stochastic algorithms - Added support for integer representations, via the
int_rep
package - Added a Cartesian genetic programming (CGP) representation,
executable_rep.cgp
, with example inexamples/cgp.py
- Added support for heterogeneous island models, demoed in
examples/multitask_island_model.py
Release 0.4.0
Release 0.4.0, 9/19/2020
- Significantly added to online documentation
- Major code reorganization
- exception management for
Individual
has been moved toRobustIndividual
DistributedIndividual
now inherits fromRobustIndividual
core.py
has been broken out to separate modulesIndividual
andRobustIndividual
now inindividual.py
- representation specific entities moved to new sub-packages,
binary_rep
andreal_rep
Representation
now inrepresentation.py
Decoder
now indecoder.py
- documentation, doctests, examples, Jupyter notebooks, and unit tests updated accordingly
- exception management for
- added ability to pass ancillary information during evaluation, such as UUIDs
that could be used to name output files and directories, yet do not have a
direct impact on fitness
LEAP v0.3.0
A minor release, consisting mostly of code cleaning and documentation.
LEAP v0.2.0
An initial release, corresponding to the version of LEAP described in our GECCO 2020 workshop paper.