Releases: darioizzo/dcgp
v1.6
Phenotype correction
New features
- Phenotype correction implemented and exposed. Allows for the symbolic expression to represent only part of an otherwise fixed mathematical formula
- Minor improvements over performances.
Code ameliorations
- Small refactoring
- Update to new obake
- Small bug fixes
dcgp: Differentiable Cartesian Genetic Programming made easy.
New
- A new UDA is introduced to solve symbolic regression problems.
Its called moes (Multi-Objective Evolutionary Startegy) and completes the
evolutionary approaches in dcgp which can now be selected to be memetic or not
and single objective or multi-objective.
Changes
-
The underlying computations of the symbolic regression optimizationlroblem (UDP)
is now performed by obake using a vectorized type. Speed improvements are observed
of orders between x4 and x100 depending on cases. -
The problem on nans appearing and exceptions being thrown has been solved
by guarding against symengine exceptions and by discarding zero columns and rows
when inverting hessians for the Newton step of memetic algorithms. -
BREAKING: the API has been made uniform for the four UDAs: es4cgp, moes4cgp, mes4cgp, momes4cgp
as well as the mutation mechanism. Named parameters have thus changed and default values too. -
The UDA es4cgp is no longer using a thread bfe to compute the loss. This avoids crashes when pythonic,
non thread-safe kernels are used. A bfe can still be set by the user (deprecated in python) after
the UDA has been instantiated. -
Documentation has been improved and all tutorials and examples updated to the new API.
Pybind11
DCGP 1.4.2
In this point release we have been enabling serialization for the pagmo related objects that are now compatible with the parallelization schemes of the island model. Tutorials have been added to the docs as well as tests as usual.
DCGP 1.4.1
A small point release to fix the build of the pip packages due to the version number not being updated.
DCGP 1.4
This release come with various important new features on the Python side. Most importantly, kernels, kernel sets and expressions are now picklable, and thus they can now be used in conjunction with pagmo/pygmo's parallel constructs.
As a consequence of various internal changes that we had to implement, there is currently a performance regression with scalar kernels. We will be addressing the performance issues in future DCGP releases.
dcgp v1.3
This is the largest dcgp release so far, coming after several months of hard work by the development team.
To start off, several changes have been done on dcgp dependencies. In particular:
- audi v1.7 is now used and that brings in a more efficient generalized dual numbers algebra
- symengine v0.5.0 is used and interfaced to dcgp to manipulate in c++ directly symbolic expressions represented by CGPs.
- pagmo v2.11 is now a dependency and used to represents symbolic regression as an optimization problem.
Then, we have the first version of a new feature that allows symbolic regression tasks to be solved with a much improved API and algorithms. In particular this involves
- a new pagmo UPDs (optimization problem) to represents symbolic regression tasks
- 4 new pagmo UDAs (solution strategies) able to solve the UDP
To end, major changes in packaging and distribution are made
- We dropped support for pip in WIndows, and only kept linux (for the time being)
- We started and will mainly support conda as a package manager.
- We started abandoning py27 support (still included in this release, but deprecated)
This first release of v1.3 will be followed shortly by one or more point releases aimed at fixing issues we already know of, but that are best tackled once an official release is available of the major version.
Update third party dependencies
-
This is a minor release including updates to soem of the third party dependencies we typically build our binaries with. In particular, linux binaries distributed via pip will now use boost 1.70 and Cmake 3.13.4
-
Also the python test suite has been improved
dCGPANN and general performance improvements
New Features
- dCGP-ANNs are added to the available expressions
- New kernels are available for CGP
- CGP expressions can be evaluated in parallel
- backpropagation is implemented in dCGPANNs
Bug Fixes
- Protected division had several issues and is now working as expected
- The dCGP headers have an improved usability in third party projects
Update of DCGP dependencies and PY36-37 packages
This release does not contain any new features, just a major update of the build system, and a refresh of a code that was two years old.
- Now compatible with piranha 0.11
- Now compatible with audi 1.5