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 (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.1.tar.gz (70.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

GeneticEngine-0.8.1-py3-none-any.whl (109.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: GeneticEngine-0.8.1.tar.gz
  • Upload date:
  • Size: 70.1 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.1.tar.gz
Algorithm Hash digest
SHA256 05dff6b52a66135a6922e30924771c92a7255ef9573cbb452d1bbdb9ddb93db8
MD5 fb1959158fea4a050fd2c69143c25895
BLAKE2b-256 dbbffa3a9b21800a73964a15a73b73eee12430bf0d3f1340c95b39c80419fb4b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: GeneticEngine-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 109.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for GeneticEngine-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 45a4627234d8b10a11c9acec013c3122bdc0df47eb39741bc80cd95576c7c3f1
MD5 697f6466e173cda64c0da4b105906782
BLAKE2b-256 7931c7b314c85c52c9205ca67473fde157d7fa55fba694a8bc3ac511a3939f3b

See more details on using hashes here.

Supported by

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