This table is intended to be a comprehensive list of evolutionary algorithm software frameworks that support some flavour of genetic programming. Each entry lists the language the framework is written in, which program representations it supports and whether the software still appears to be being actively developed or not.

If you know of any other genetic programming software that has been omitted from this list, then please leave a comment with details.

Continue reading »

Framework License Lang Tree GE CFG-GP CGP GEP Active?
AForge.NET LGPL .NET
Beagle LGPL C++
DEAP LGPL Python
DGPF LGPL Java
DRP GPL Ruby
Discipulus Commercial
ECF ? C++
ECJ AFL Java
EO LGPL C++ ? ? ? ? ?
EpochX LGPL Java
ep4js Apache JScript
Eva2 LGPL Java

I stumbled across this video through a link on Stack Overflow. As well as providing a compelling argument for evolution against the old foe, intelligent design, it is also a great demonstration of the power of evolutionary algorithms. In the 9 minute video, he describes how evolution would approach the problem of reconstructing a smashed watch, and simulates it in Matlab. The result is an impressive progression from a collection of non-functioning components to a three or four handed timepiece. I am interested to know more about his implementation details, in particular the fitness function he uses. All his code is available, but as a non-Matlab programmer I haven’t invested the time to understand it yet.

EpochX genetic programming software

EpochX is a Java framework for genetic programming

I have just released version 1.3 of EpochX, a Java based genetic programming framework built specifically for researchers working with genetic programming. Significant additions in version 1.3 include a hooks system which allows the dynamic modification of the population and programs mid-execution and an expanded set of statistics that can be obtained live while the run proceeds. There are a whole swathe of other improvements and bugfixes too.

The documentation for EpochX is also expanding as well. The first half of the Complete Guide documentation has now been published to the website.

Downloads and documentation are all available from www.epochx.org.

Not exactly a catchy title is it. But that’s the name of the paper I’ve just had accepted for the 2010 EuroGP conference in Istanbul, Turkey. For interested parties, here is the abstract:

Abstract. An often-mentioned issue with Grammatical Evolution is that a small change in the genotype, through mutation or crossover, may completely change the meaning of all of the following genes. This paper analyses the crossover and mutation operations in GE, in particular examining the constructive or destructive nature of these operations when occurring at points throughout a genotype. The results we present show some strong support for the idea that events occurring at the first positions of a genotype are indeed more destructive, but also indicate that they may be the most constructive crossover and mutation points too. We also demonstrate the sensitivity of this work to the precise de finition of what is constructive/destructive.

And the full paper is available as a pdf, and postscript.

One of my worries about genetic programming is that we may just be shifting the problem of programming to the (equally difficult?) task of problem specification in the fitness function. This would be similar to the move made from assembly language to higher level languages such as Fortran in the 1950s. At the time this was seen as essentially solving the problem of programming, but that clearly isn’t the case, the problem was merely shifted to a different (albeit easier to understand) paradigm. In the 50s there were advantages such as easier to read and debug code, and shorter programs. Now, if we make the complete shift to formal specification for an evolving generator, what will the benefits be?

Initially it seemed to me that this would be a no-win situation. By requiring a formal definition of the problem, non-trivial programs are still going to require non-trivial specifications. Further, the skill of writing non-ambiguous and correct formal specifications is a challenging task requiring a reasonably in-depth knowledge of logic and the sort of mathematics that many shy away from.

What would be the ideal situation? Ideally any average non-programmer would be able to generate a program by doing no more than describing what it should do. That is still infeasible, but if we could automatically generate programs from an informal requirements document, then that would be a useful step! This has more practical potential than is immediately obvious. There has been a rather large amount of research, going back as far as the 1980s, into automatically generating formal specifications from informal, natural language definitions. Some of the results appear very impressive. So, if we are able to generate formal specifications from something close to natural language, and if we are able to automatically generate computer programs that satisfy those specifications, then it immediately becomes obvious that we can combine these two steps. We can generate programs from an informal description with very little expert interference. That is the theory at least.

This is not trivial in practice since there are difficulties in expressing formal specifications such that they provide a fitness function which rewards partial solutions and the generation of the specifications from natural language is farĀ  from perfect. However, these problems are certainly solvable and the solution would be a major step towards an admirable aim.

XGE is a serious research tool for grammatical evolution

http://xge.epochx.org

If you haven’t already heard – EpochX is an amazing new research tool for evolving computer programs using genetic programming. But then I would say that – I helped write it :) . For information about EpochX you should see the website, which as it so happens is what this post is all about.

epochx-logo-small

http://www.epochx.org

I have just launched the redesigned EpochX website at http://www.epochx.org. The new website is generally clearer and easier to use, it also incorporates the new branding imagery. There is also a discussion group available which will hopefully provide an avenue for questions, feedback and announcements. A sub-site is incorporated for XGE, the grammatical evolution version of the software. The XGE website is accessible directly at http://xge.epochx.org.

There is more work to be done on the website, particularly providing resources such as tutorials and indepth guides. These will come over time, and be published to the website when they’re completed, as will improvements to the code itself.

The first beta release of EpochX is now available under an LGPL licence from www.epochx.org.

EpochX is a tree based Genetic Programming API written in Java. It is written with GP researchers in mind and makes it simple to analyse runs in real-time. It is designed inside-out to be easy to get started with but with maximum flexibility for modification and extension, to make it easy for you to carry out your own research, gathering whatever statistics are relevant and ignoring any that aren’t.

The first full release will be a couple of months away, but the beta release is generally stable and very usable – we’re already using it for our own research!

© 2012 TC33.org Suffusion theme by Sayontan Sinha