GGGP: Grow and Graft Genetic Programming
Prof. Mark Harman,
Prof. William B. Langdon,
Prof. Darrell Whitley,
Colorado State University
Dr. Wes Weimer,
University of Michigan
Microsoft: Redmond, Cambridge
Public Understanding Consultant
Prof. Sue Black
EPSRC Grant Ref:
Software is not fragile
of random mutations run and produce answers as good as the
33% are worse
(a tiny fraction, here
2.5%, are better).
What is Grow and Graft Genetic Programming (GGGP)?
Programming is hard. Adding new functionality to an existing, large,
and perhaps poorly-understood system is a challenge, even for the most
competent human programmer. Despite much progress in software
development environments, programming still includes many human
activities that are dull, unproductive and tedious.
The GGGP project
is motivated by the frustration often expressed as questions such as
"Why do software engineers spend so long repeatedly performing the
same tedious low level software development tasks?" and "How many
times do programmers work out how to express the idea of null pointer
checking in a particular context or adapt existing code for searching
an iterated data structure?"
We want to find a radically new approach to software development,
supported by automated search that, we believe, will yield a dramatic
reduction in development time. We propose a new approach to software
development: Grow and Graft Genetic Programming (GGGP), in which a new
feature is grown (using genetic programming) and subsequently grafted
into an existing system. This grow and graft development approach aims
to reduce the amount of tedious effort required by human programmer in
order to develop and add new functionality into an existing system.
Our initial proof of concept work found that surprisingly little human
guidance and domain knowledge is required from the programmer to guide
Grow and Graft Genetic Programming. We therefore believe that it can
radically change programming,
making it faster and less error prone, with a consequent
transformative effect on the software industry. We also believe it may
make it more enjoyable to a wider range of people, with potentially
transformative impact on the wider public involvement in
(and understanding of) software development.
Our approach can be best understood in the context of the recent trend
in Search Based Software Engineering (SBSE) called "genetic
improvement", which uses existing code as "genetic material" that
helps to automatically improve existing software systems, which has
achieved several recent notable breakthroughs, such as speed ups of 7
to 70 times on real-world systems, human competitive results in
optimising constraint solvers, and automated bug fixing and repair
work on existing systems.
The Problem Addressed by GGGP?
To achieve its aims, the GGGP project will:
- Develop a theory of Grow and Graft Genetic Improvement (GGGP).
- Develop new method and algorithms for growing and grafting code into existing software systems.
- Quantitatively evaluate the project's algorithms and methods, using examples from the industrial
partners, benchmarks and specially constructed demanding examples.
Future Presentations and Events
Centre for Medical Image Computing (CMIC),
Department of Medical Physics and Biomedical Engineering,
University College London
27 February 2019.
Genetic Improvement by Evolving Program Data,
Queen Mary University of London
12 December 2018.
60th CREST Open Workshop
Evolving Square Root into Binary Logarithm,
3rd December 2018.
Evolving Better Software Parameters,
Thelma Elita Colanzi and Phil McMinn (eds.),
8-9 September, Montpellier,
LNCS 110361, 363-369.
14th Training And Research On Testing Summer School
on Software Testing, Verification & Validation,
5 July 2018.
demo opencv code)
Novel Algorithm Workshop, ARM, 20th June 2018
4th Genetic Improvement Workshop (GI 2018 @ ICSE)
RNAfold structure prediction,
New RNAfold parameters: rna_langdon2018.par
Genetic Improvement of Software, 28 Jan-2 Feb 2018
Emergent and Self-Adaptive Systems: Theory and Practice,
19-20 October 2017.
Panel discussion on
"The role of humans in designing and validating future systems"
54th CREST Open Workshop
Faster folds, better folds, GGGP version of RNAfold,
25 September 2017.
Improving SSE Parallel Code with Grow and Graft Genetic Programming,
July 16th 2017.
Genetic Improvement of Computational Biology Software,
July 16th 2017.
Long-Term Evolution of Genetic Programming Populations,
15-19 July 2017.
Applying Genetic Improvement to Bioinformatics GPU Software,
University of Edinburgh,
15 June 2017.
Optimizing Bioinformatics Software With Genetic Programming,
University of Exeter
25 May 2017.
Inferring Automatic Test Oracles.
May 22-23th 2017,
Landscape of the Triangle Program
Convergence in Genetic Programming
Visualising the Search Landscape of the Triangle Program,
Long-Term Evolution in Genetic Programming,
7 March 2017.
The 50th CREST Open Workshop -
30-31 January 2017.
Revolutionising the Process of Software Development
API-Constrained Genetic Improvement
Kin Selection with Twin Genetic Programming.
Optimising Quantisation Noise in Energy Measurement.
PPSN 2016 Workshop on Landscape-Aware Heuristic Search
Fitness Landscape of the Triangle Program.
Key Challenges and Future Directions of Evolutionary Computation
(CEC 2016) workshop,
Genetic Improvement: A Key Challenge for Evolutionary Computation.
Genetic Improvement 2016,
July 20 2016.
Benchmarking Genetically Improved
on Epigenetic Methylation NGS datasets and nVidia GPUs.
29 June 2016.
UK Many-Core Developer Conference 2016.
(eg GPGPU general purpose computation on GPUs).
Using evolutionary computing to optimise
10 May 2016.
DAASE project meeting,
Optimising Quantisation Noise In Energy Measurement,
2 March 2016
29 February 2016
Hertfordshire CS Research Colloquium
17 February 2016
CREST Open Workshop on Genetic Improvement
The GI COW is the first workshop to be sponsored by GGGP.
Approaches and Applications of Inductive Programming
25-30 October 2015
Stephen H. Muggleton,
Benjamin Zorn (Microsoft Research, Redmond, USA)
To avoid duplications publications are in my home pages for
Ultra fast GPQUICK with double parallelism of posix thread PTHREADS and
contains sextic benchmark
which technical report RN/19/01 runs GP for a million generations.
Data transplantation in GNU C library
(square root to cube root and binary logarithm)
Simple blue example of grammar based Genetic Improvement
partition crossover in C px_nk.c
GI for AVX RNAfold (71 Mbytes)
GI on SSE RNAfold (70 Mbytes)
GPQuick (sub-machine code) binary tree genetic programming for
the 6 multiplexor problem
High order mutations of the
21 Jan 2016
(last update 21 March 2019).