Multi expression programming
Multi Expression Programming (MEP) is a genetic programming variant encoding multiple solutions in the same chromosome. MEP representation is not specific (multiple representations have been tested). In the simplest variant, MEP chromosomes are linear strings of instructions. This representation was inspired by Three-address code. MEP strength consists in the ability to encode multiple solutions, of a problem, in the same chromosome. In this way one can explore larger zones of the search space. For most of the problems this advantage comes with no running-time penalty compared with genetic programming variants encoding a single solution in a chromosome.

Example of MEP program

Here is a simple MEP program:
1: a
2: b
3: + 1, 2
4: c
5: d
6: + 4, 5
7: * 3, 5

On each line we can have a terminal or a function. In the case of functions we also need pointers to its arguments.

When we decode the chromosome we obtain multiple expressions:

E1 = a,
E2 = b,
E4 = c,
E5 = d,
E3 = a + b.
E6 = c + d.
E7 = (a + b) * d.
Which expression will represent the chromosome? In MEP each expression is evaluated and the best of them will represent the chromosome. For most of the problems, this evaluation has the same complexity as in the case of encoding a single solution in each chromosome.

Software

MEPX 
MEPX is a cross platform (Windows, Mac OSX, and Linux Ubuntu) free software for automatic generation of computer programs. It can be used for data analysis, particularly for solving regression and classification problems.

libmep 

Libmep is a free and open source library implementing Multi Expression Programming technique. It is written in C++.

hmep 

hmep is a new open source library implementing Multi Expression Programming technique in Haskell programming language.