PonyGE2: grammatical evolution in Python

  title={PonyGE2: grammatical evolution in Python},
  author={Michael Fenton and James McDermott and David Fagan and Stefan Forstenlechner and Michael O’Neill and Erik Hemberg},
  journal={Proceedings of the Genetic and Evolutionary Computation Conference Companion},
Grammatical Evolution (GE) is a population-based evolutionary algorithm, where a formal grammar is used in the genotype to phenotype mapping process. PonyGE2 is an open source implementation of GE in Python, developed at UCD's Natural Computing Research and Applications group. It is intended as an advertisement and a starting-point for those new to GE, a reference for students and researchers, a rapid-prototyping medium for our own experiments, and a Python workout. As well as providing the… 

Figures from this paper

Software review: Pony GE2

  • T. Vu
  • Biology, Computer Science
    Genetic Programming and Evolvable Machines
  • 2021
PonyGE2 is an open source Python implementation of Grammatical Evolution, a Genetic Programming algorithm which uses formal grammars in the genotype to phenotype mapping to guide the search process

GRAPE: Grammatical Algorithms in Python for Evolution

The results show that GRAPE has a similar performance, but is able to avail of all the extra facilities and functionality found in the DEAP framework, and enables GE to be applied to systems identification problems.

Handbook of Grammatical Evolution

This chapter gives a brief introduction to EAs, paying particular attention to those involved in automatic program generation, before detailing how GE’s usage of grammars is one of the key differentiators between it and other EAs.

Introduction to 20 Years of Grammatical Evolution

This chapter gives a brief introduction to EAs, paying particular attention to those involved in automatic program generation, and describes grammars, the core building blocks of programs, before detailing how GE’s usage of them is one of the key differentiators between it and other EAs.

GEMO: Grammatical Evolution Memory Optimization System

GEMO is introduced, a two-stage evolutionary system that uses a multi-objective approach to identify the optimal, or at least, near-optimal, genome length for the problem being examined and significantly improves memory usage and reduces computation time.

Mutational Robustness and Structural Complexity in Grammatical Evolution

A recent study in Artificial Life found that the need for mutational robustness can give rise to simpler structures in an evolving population. This begs the question, do we observe a similar

A Preliminary Exploration of Floating Point Grammatical Evolution

A new framework is described: Floating Point Grammatical Evolution (FP-GE) which uses a single floating point genotype to encode an individual program, which permits easier visualisation of the fitness landscape arbitrary problems by providing a way to map fitness against a single dimension.

A GE Benchmark and an automated GE comparison system

This work is proposing a highly-flexible benchmark for GE systems and applied this benchmark into an automatic GE comparison system, which can be used to compare the performance of different GE and GE-variant systems.

Stock Price Prediction Using Grammatical Evolution

The paper aims to apply GE to predict the price of various stock market indices using an open source implementation PonyGE2 that was developed by the Natural Computing and Applications group at UCD.

Franken-swarm: grammatical evolution for the automatic generation of swarm-like meta-heuristics

This proposal decomposes popular, human-crafted, swarm-like optimizers such as PSO, CS, ABC into a list of basic rules, and uses Grammatical Evolution to procedurally generate variations on this base structure by recombining these operators.



Grammatical evolution - evolutionary automatic programming in an arbitrary language

Grammatical Evolution is the first comprehensive introduction to Grammatical Evolution, a novel approach to Genetic Programming that adopts principles from molecular biology in a simple and useful manner, coupled with the use of grammars to specify legal structures in a search.

Grammatically-based Genetic Programming

The use of a context free grammar to specify structure in the hypothesis language allows a clear statement of inductive bias and control over typing, and leads to declarative approaches to evolutionary learning.

Termination in Grammatical Evolution: grammar design, wrapping, and tails

The appending of non-coding genetic material to genotype strings, at the start of the run, is suggested, and the benefits of this approach are higher probability of creating terminated individuals, better or similar experimental performance, and a tendency to generate smaller solutions, when compared to the use of wrapping.

gramEvol: Grammatical Evolution in R

We describe an R package which implements grammatical evolution (GE) for automatic program generation. By performing an unconstrained optimization over a population of R expressions generated via a

Managing Repetition in Grammar-Based Genetic Programming

Experimental evidence suggests that these useless evaluations can be instead be used either to speed-up the evolutionary process, or to delay convergence.

Structural and nodal mutation in grammatical evolution

The result in this case being a form of mutation for Grammatical Evolution, node mutation, with a better property of locality than standard integer-based mutation, which does not discriminate between structural and nodal contexts.

GE, explosive grammars and the lasting legacy of bad initialisation

  • R. Harper
  • Computer Science
    IEEE Congress on Evolutionary Computation
  • 2010
It is shown that for each of these test cases, where the “wrong” initialisation method is utilised, the chance of achieving a successful run is decreased even if the runs are continued long enough for the populations to stagnate, suggesting that the system does not typically recover from a “bad” start.

Exploring position independent initialisation in grammatical evolution

This new approach toInitialisation in Grammatical Evolution is shown to provide a viable alternative to the commonly used approaches, whilst avoiding the common pitfalls of traditional approaches to initialisation.

Crossover in Grammatical Evolution

The mechanism of crossover in GE is analysed and termed ripple crossover, due to its defining characteristics, and the results show that ripple crossover is more effective in exploring the search space of possible programs than sub-tree crossover by examining the rate of premature convergence during the run.

A Grammar Design Pattern for Arbitrary Program Synthesis Problems in Genetic Programming

The object of this study is to match or outperform PushGP on problems without tuning grammars to solve each specific problem without having to tailor a grammar for every single problem.