layout | title | description | perma |
---|---|---|---|
page |
GI Tutorial @ ASE 2020 |
/gi2020ase/ |
Tutorial on Genetic improvement @ASE 2020
This Tutorial will be held at the at the 35th IEEE/ACM International Conference on Automated Software Engineering (ASE), 2020 ASE, 2020, on 21-25 September 2020. The conference will be fully virtual. Details can be found here.
Having roots in Search-Based Software Engineering (SBSE), the relatively young area of Genetic Improvement of Software (GI) aims to improve the properties of exisitng software. It can operate directly on source code, e.g., Java or C, and it typically starts with real-world software. This makes GI attractive for industrial applications, e.g. in contrast to Genetic Programming that aims to evolve applications from scratch. In this tutorial, we demonstrate how we can optimise with GI the physical properties of code such as power consumption, size of code, bandwidth, and other non-functional properties, including execution time.
In the past ten years there has been a dramatic increase in work on Search-Based Software Engineering (SBSE), an approach to software engineering in which search-based optimisation algorithms are used to address problems. The approach is attractive because it offers a suite of adaptive automated and semi-automated solutions in situations typified by large complex problem spaces with multiple competing and conflicting objectives.
This tutorial will be of interest to two groups of people. Firstly, software practitioners who are interested in using machine learning techniques to improve their software. Secondly, people with a genetic programming background, who are interested in applying their genetic programming techniques to real source code.
We will not assume prior knowledge of search-based software engineering or genetic programming.
This tutorial will be suitable for PhD students upwards -- novice/intermediate.
The aim of the tutorial is to
- examine the motives for evolving source code directly, rather than a language built from a function set and terminal set which has to be interpreted after a program has been evolved
- understand different approaches to implementing genetic improvement including operating directly on text files, and operating on abstract syntax trees
- appreciate the new research questions that can be addressed while operating on actual source code
- understand some of the issues regarding measuring non-functional properties such as execution time and power consumption
- examine some of the early examples of genetic improvement and our flagship application will be the world’s first implementation of GI in a live system (this technique has found and fixed all 40 bugs in its first 6 months while operating in a medical facility)
- understanding links between GI and other techniques such as hyper-heuristics, automatic parameter tuning, and deep parameter tuning
- highlight some of the multi-objective research where programs have been evolved that lie on the Pareto front with axes representing different non-functional properties
- give an introduction to GI in No Time - an open source simple micro-framework for GI - called Gin for short.