This file contains the detailed development roadmap. Each header contains the roadmap for a single task, i.e. a (possibly nested) list of subtasks. Non-periodic subtasks have a checkbox specifying whether the subtasks has been carried out or not. Tasks and subtasks can be numbered to specify the order in which they should be carried out or their relative priority. Important periodic tasks are usually placed at the beginning, before any non-periodic task. When the library version is updated, task and subtasks listed here that were completed during the update are removed from here and their contents are added to the changelog.
-
(last update 30 nov 2022) update the library when colab switches to new versions of Python and/or PyTorch
-
update code that is affected by Python changes
-
update code that is affected by PyTorch changes
-
update the versions of the dependencies:
-
in
setup.cfg
-
in
requirements.txt
-
-
-
polish
requirements.txt
with only a minimal list of packages needed for development -
use
setup.cfg
instead ofsetup.py
-
adopt the black code layout
-
run black on the whole codebase
-
add black to
requirements.txt
-
-
adopt sphinx for docs
-
add sphinx to the
requirements.txt
-
write and test stubs for the user manual and API documentation
-
-
document development process:
-
update workflow & code structure in
CONTRIBUTING.md
with:-
unit test workflow
-
code linter invocation
-
how to add documentation
-
-
add an introductory section to
CONTRIBUTING.md
which tells the reader where to look for dev stuff -
update
README.md
mentioningCONTRIBUTING.md
-
-
write the basic API documentation
-
find a way to run python 3.11 on colab
-
move the unit tests that need significant computational resources to a separate test module which is not invoked by default
-
write a jupyter notebook (compatible with colab) that runs those tests
-
update the unit test workflow section in CONTRIBUING.md
-
-
put stuff that is not specific to CGP in a separate module (e.g. selection stuff)
-
add a GenomeTensor ABC that provides genetic operators vectorized over 2-dimensional populations (i.e. vectorized over multiple populations, which is the current implementation)
-
add an abstract crossover method
-
make the classical CGP implementation a concrete subclass of the Genome ABC
-
add a concrete crossover method for the real-valued crossover from GECCO '07
-
-
polish the package structure: only leave genetic operators, selection operators and phenotype evaluation in
cgpv
; move the rest to:-
cgpv.common
: general purpose utilities (seeded pytorch RNG, symbolic regression losses, etc.) -
TODO
-
-
implement single-row CGP with no levels back
-
implement multiple rows
-
implement levels back parameter
-
implement the evotorch interface
-
add sensible utilities to the
cgpv.common
module:- TODO
-
add minimal code examples, tutorials and user manual
-
switch to hatchling as build system?
-
benchmark the library on Colab (and other platforms?), both on GPU and CPU
-
polish text files:
-
CONTRIBUTING.md
-
README.md
-
add an
env.yaml
for a conda environment for development -
TODO others
-
-
do the actual release:
-
tag the commit etc.
-
register package on PyPi
-
-
support the generation of torch module or python callable vectorized phenotypes
-
support the generation of "layered" phenotypes by using residual connections
-
extend the interface of the GenomeTensor ABC implementing functions that are vectorized over any population shape, by reshaping from and to 2-dimensional populations
-
add Genome and GenomeMatrix ABCs that provide genetic operators non-vectorized and vectorized over a single population, respectively
-
implement notable CGP variants (see the CGP bible and more recent stuff)