EO Evolutionary Computation Framework


EO has been completely redesigned for version 0.9 and moved to SourceForge. Main EO designers are now Maarten Keijzer and Marc Schoenauer.

You can still download old versions from here, and use http://geneura.ugr.es/~jmerelo/eo for the documentation, ftp://geneura.ugr.es/pub/eo/eo-0.8.7.tgz or ftp://geneura.ugr.es/pub/eo/eo-0.8.7.zip for the release. Latest release is 0.8.7, latest snapshot September 14 1999.


EO is a templates-based, ANSI-C++ compliant evolutionary computation library. It contains classes for any kind of evolutionary computation (specially genetic algorithms) you might come up to. It is component-based, so that if you don't find the class you need in it, it is very easy to subclass existing abstract or concrete class. Here are its features 
  • Chromosomes: Can be defined by the user, by subclassing the EOBase class; binary, floating point, bidimensional, string and value plus sigma, used in evolution strategies, are provided. All algorithms defined work on all kind of chromosomes. 
  • Genetic operators: Can be defined by the user, by subclassing the EOOp class. Operators can be unary, binary or n-ary (orgy) operators. Many floating point, bitstring, and generic operators are defined, like mutation, crossover, and things like that. 
  • Selection/elimination procedure: Can be defined by the user, by subclassing the EOSelect class. Steady-State and rank-based are provided. 
  • Reproduction procedure: Can be user defined (I'll skip that from now on, but everything can be user-defined) by subclassing EOBreed. Random, lottery, and rank-based are provided. 
  • Replacement procedure: Can be defined by the user, by subclassing the EOReplace class. Eliminate-all, eliminate-worst are provided
  • Termination conditions: (user-definable) fitness and generation-based. 
  • Algorithms: Easy Ga, Goldberg's SimpleGA, Evolution Strageties and simulated annealing with user-definable cooling schedule. 
  • Some utilities: command-line parsing, random-number generations 
  • Examples: examples that test all features and classes, plus genetic mastermind. 
  • User interface: an example that uses gtk and another with Borland Builderis provided 
  • Documentation in html
There is a huge PowerPoint presentation which shows the EO fphilosophy, and it includes a Visual Basic macro for evolving objects in Visual Basic for Applications. You can download it from here.


EO has been tested and works on the following platforms: 
  • Linux with egcs 1.0.2 
  • Irix 4.0 with egcs 1.0.2 
  • Solaris with egcs 1.0.2 and gcc 2.8.1 
  • Win95/NT with CygWin/egcs 1.0.2, VC++ 5.0 and Borland Builder. Makefiles and projects files are provided. 

Related Apps

EO 0.8.4 has been embedded in an ActiveX control, called DegaX by 3 degree students. You can download it from the DegaX directory. It's better if you download it by parts:
  • Start by the documentation, which is, as everthing else, in Spanish, explains how to decompress and use everything, and the evolutionary and Microsoftie basics. The documentation is also available from here.
  • Follow by downloading the ActiveX control, and install it. You'll need this to embed it in any application.
  • Several apps that use the ActiveX control are also there: in Visual Basic, in Visual C++, and in Excel.
  • Finally, if you feel like it, download the sources for everything.


Free, free distribution, but for commercial uses, check with us. 


New releases are made very often. Check at the EO site. All daily snapshots are available from ftp://geneura.ugr.es/pub/eo.

We have also set up remote CVS read access to the source tree. To get the version we are working in currently, first download a cvs client from Cyclic or from your closest GNU repository, and then do this:
bash%export CVSROOT=:pserver:anon@geneura.ugr.es:/home/cvs
csh%setenv CVSROOT :pserver:anon@geneura.ugr.es:/home/cvs
and then
$ cvs login
(Logging in to anon@geneura.ugr.es)
CVS password:
<press enter here>, and
$ cvs -z9 checkout oldEO
, which will download all the code, compressed to the maximum. This will create the eo source tree; from them on, you can check changes, get daily updates, and so on. This will be much faster than downloading the whole zipfile, and besides, if you have made local changes, cvs will merge them with whatever changes we have made.

Mailing List

We would like EO to be an open development effort; that is why we have created a mailing list to discuss future developments, solve technical problems, announce releases, publish patches, and discuss evolutionary computation in general. Join the mailing list by 
clicking here.

This page is also hosted by InternetJump.com,

Go ahead to the README doc or
Search EO documentation 

Juan Julian Merelo Guervos

Last modified: Thu Jul 10 13:50:03 CEST 1998