Skip to main content

Genetic Programming with Types and Grammars

Project description

Genetic Engine

Documentation codecov

A hybrid between strongly-typed (STGP) and grammar-guided genetic programming (GGGP).

About GeneticEngine

GeneticEngine is a Genetic Programming framework for single- and multi-objective optimization. GeneticEngine allows the user to provide domain knowledge about the shape of the solution (using type annotations) and by defining the fitness function.

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. UIDB/00408/2020 and UIDP/00408/2020)
  • 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},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

GeneticEngine-0.8.5.tar.gz (70.4 kB view details)

Uploaded Source

Built Distribution

GeneticEngine-0.8.5-py3-none-any.whl (109.8 kB view details)

Uploaded Python 3

File details

Details for the file GeneticEngine-0.8.5.tar.gz.

File metadata

  • Download URL: GeneticEngine-0.8.5.tar.gz
  • Upload date:
  • Size: 70.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for GeneticEngine-0.8.5.tar.gz
Algorithm Hash digest
SHA256 4bf2c6020ee861d85f8fd6f6235bddc3bc54bade61797ca4f88b75dbf22dac2b
MD5 6c7ddebd96b87d999b540c6236dc5a6f
BLAKE2b-256 224d3197962629d32961a1422a7bcdc93d35969d93859f0d3917369eac32a278

See more details on using hashes here.

File details

Details for the file GeneticEngine-0.8.5-py3-none-any.whl.

File metadata

File hashes

Hashes for GeneticEngine-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 50d3c238efa0f884e9b93d50cf3492fa0d73a9c3d104dbfe5c7b10acb762244d
MD5 2b4c9e84f7bf1ab6dd7bfd4e145669c3
BLAKE2b-256 852b288cc511698ce46da6bb40b745fa080a3a6e20f207eebca9943ce43eab1e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page