Skip to main content

Genetic Engine

Documentation codecov

GeneticEngine is not a search-based Python library that allows you to describe the structure of your solutions as Python dataclasses and abstract classes, and explores the solution space using different algorithms, such as enumerative search, hill climbing, and several flavors of Genetic Programming.

Documentation

class MyExpr(ABC):
	"MyExpr is a non-terminal/abstract class."
	def eval(self):
		...

@dataclass
class Plus(MyExpr):
	"E -> E + E"
	left: MyExpr
	right: MyExpr

	def eval(self):
		return self.left.eval() + self.right.eval()

@dataclass
class Literal(MyExpr):
	"E -> <int>"
	value: int

	def eval(self):
		return self.value

In this small example, we are defining the language that supports the plus operator and integer literals. GeneticEngine will be able to automatically generate all possible expressions, such as Plus(left=Plus(left=Literal(12), right=Literal(12)), right=Literal(15)), and guide the search towards your goal (e.g., lambda x: abs(x-2022)). For this very simple toy problem, it will find an expression that computes 2022, ideally as small as possible. And this is a very uninteresting example. But if you introduce variables into the mix, you have a very powerful symbolic regression toolkit for arbitrarily complex expressions.

Contributing

After cloning the repo, please run source setup_dev.sh to install virtualenv, all dependencies and setup all pre-commit hooks.

Pull Requests are more than welcome!

Authors

GeneticEngine has been developed at LASIGE, University of Lisbon by:

Acknowledgements

This work was supported by Fundação para a Ciência e Tecnologia (FCT) through:

  • the LASIGE Research Unit (ref. UID/00408/2025)
  • Pedro Barbosa PhD fellowship (SFRH/BD/137062/2018)
  • Guilherme Espada PhD fellowship (UI/BD/151179/2021)
  • Paulo Santos CMU|Portugal PhD fellowship (SFRH/BD/151469/2021)
  • the FCT Exploratory project RAP (EXPL/CCI-COM/1306/2021)
  • the FCT Advanced Computing projects (2022.15800.CPCA.A1, CPCA/A1/395424/2021, CPCA/A1/5613/2020, CPCA/A2/6009/2020)

And by Lisboa2020, Compete2020 and FEDER through:

Publications

Applications of GeneticEngine

Let us know if your paper uses Genetic Engine, to list it here.

Please cite as:

Espada, Guilherme, et al. "Data types as a more ergonomic frontend for Grammar-Guided Genetic Programming.", GPCE '22: Concepts and Experiences, 2022

Bibtex:

@inproceedings{espada2022data,
  author={Guilherme Espada and Leon Ingelse and Paulo Canelas and Pedro Barbosa and Alcides Fonseca},
  editor    = {Bernhard Scholz and Yukiyoshi Kameyama},
  title={Datatypes as a More Ergonomic Frontend for Grammar-Guided Genetic Programming},
  booktitle = {{GPCE} '22: Concepts and Experiences, Auckland, NZ, December 6 - 7, 2022},
  pages     = {1},
  publisher = {{ACM}},
  year      = {2022},
}

Metadata

Release files for GeneticEngine 0.8.10.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for GeneticEngine 0.8.10.post1
File Size Uploaded
geneticengine-0.8.10.post1.tar.gz 132.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for GeneticEngine 0.8.10.post1
File Interpreter ABI Platform
geneticengine-0.8.10.post1-py3-none-any.whl Python 3 none any Details

Total release size: 341.7 kB

Release files / geneticengine-0.8.10.post1.tar.gz

Download URL geneticengine-0.8.10.post1.tar.gz
Size 132.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f90a162af55c854d2b1d9f3659711b522babe8fb3cf1516ade697280a679fd43
BLAKE2b-256 checksum
How to use checksums
cfd61d34185598ab39cac6091a3f1373f2006c337f85cf562a36877a9e001761
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / geneticengine-0.8.10.post1-py3-none-any.whl

Download URL geneticengine-0.8.10.post1-py3-none-any.whl
Size 209.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c67da6b8879369ed1afb421b82b7a45c32e605a18f9588edda1ad5c5de287c38
BLAKE2b-256 checksum
How to use checksums
6d8dcf6346fc535708457eaa9674be0924ac8461a0799b88c2a949ab70f88096
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.8.10.post1 This release

2 release files

0.8.10

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.1

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.0.48

2 release files

0.0.47

2 release files

0.0.46

2 release files

0.0.45

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.41

2 release files

0.0.40

2 release files

0.0.39

2 release files

0.0.38

2 release files

0.0.37

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.4

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page