MicroGP v3.0

Description

MicroGP (codenamed ugp3) is an evolutionary approach to the generation of Turing-complete programs.

The resulting generated programs are realistic assembly programs tweaked for a target microprocessor: they take full advantage of the assembly syntax, exploiting the different addressing modes and instruction set asymmetries.
Despite its generality, μGP has some distinctive features that allow its use in specific contexts, such as test program generation.

The internal organizaton

The application is composed of three separated modules: the evolutionary core, the constraints  and an external evaluator.

The structure of the microGP application.

Some history

Our earliest attempt to evolve test programs was presented in [date01]. The approach relied on a library of sharp fragments of code, called macros. The optimal sequence of macros was heuristically determined, and then a genetic algorithm optimized their parameters. The approach is quite effective, but hardly scalable. An Intel i8051, a very simple microprocessor, required 213 macros; and the macro list was carefully compiled by an experienced engineer in two working days.

The embryonic idea of the μGP was presented in [cec02]. The paper described a GP-like framework for generating assembly language program with simple instructions tightly connected with a directed acyclic graph. It implemented a straightforward (μ+λ) evolution, with no recombination, nor other enhancements. Remarkably, the overall structure resembled the linear graph GP, developed independently, and concurrently. Shortly after, the naïve approach was used in [ats02] for validating a microprocessor design, and provided effective results with moderate effort by human experts.

Afterwards, the μGP was slightly improved, adding recombination and auto-adaptation. At the same time, the evaluation procedure was expanded and the correlation with hardware strengthened. The enhanced methodology was used on different problems and the results of [date01] were easily outperformed. Paraphrasing Samuel, the μGP was eventually able to do what was needed to be done, without being told exactly how to do it ("Some Studies in Machine Learning Using the Game of Checkers", IBM Journal of Research and Development, 1959). This is true at least in the very specialized context of microprocessor validation.

In 2003, the whole µGP was rewritten from scratch. The latest prototype is in (almost) ANSI C and consists of about 6,500 lines on 29 files. It has the ability to exploit single instructions, complex macros, or their combination. Individual representation has been completely disconnected from assembly specification. The number of different nodes has been reduced, and their expressiveness increased. The directed acyclic graph representation has been transformed to handle generic directed cyclic graphs. A new abstraction level has been added, enabling support for subroutines and software interrupts.

Currently, a new version of the program is being rewritten in ANSI C++ to simplify versioning and improve code reusability.

Papers

You may find a list of related papers on this page.

Download Information

You can download the latest unsupported and mostly undocumented beta version of μGP from sourceforge.net

Other resources:

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Related topics

Researchers

Matteo Sonza Reorda <matteo . sonzareorda @ polito . it>
Fulvio Corno <fulvio . corno @ polito . it>
Giovanni Squillero <giovanni . squillero @ polito . it>
Ernesto Sanchez <edgar . sanchez @ polito . it>

Contact information

Giovanni Squillero
Politecnico di Torino
Dipartimento di Automatica e Informatica
Corso Duca degli Abruzzi 24
I-10129 Torino
ITALY

Tel: +39-011564.7092
Fax: +39-011564.7099
E-mail: giovanni . squillero @ polito . it [mangled to prevent spamming]
Personal web page:
http://www.cad.polito.it/staff/squillero/
Politecnico info page: http://www.swas.polito.it/

Politecnico di Torino
Politecnico di Torino
Dipartimento di Automatica e Informatica


Valid XHTML 1.0
Valid CSS
Level A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0