Algorithm-Based - Component-Based - Programming hints - EO documentation
Welcome to EO, the Evolving Objects library, and to

EO Tutorial

Important notice - December 2006

The code that is proposed in this tutorial should not be used as a basis for any comparison with any original method on any benchmark problem. It is an illustration of what you can achieve with EO, but reaching state-of-the-art results requires more work. In particular, if you want to compare your evolutionary algorithm with a good performing algorithm in parameteric optimisation, do not use ESEA in Lesson4, but go to the test directory, type make t-eoCMAES and use the resulting t-eoCMAES. But as of today, the latest algorithms (and comparative results) are better found on Nikolaus Hansen Web page and on his "Comparison of Evolutionary Algorithms on a Benchmark Function Set" page).

Version 0.98a - December 2004

Welcome to EO tutorial/on-line documentation.

About this tutorial

First, please note that this tutorial is not supposed to be printed and read off-line, as it takes full advantage of hyper-text links between the different parts, and with the technical documentation. This tutorial can be used in 2 different ways: algorithm-based and component-based. However, it is strongly recommended that you take some time on the first lesson of the Algorithm-Based approach to get familiar with the basic concepts that are used throughout EO. Anyway, as of today, December 19, the Component-Based is only very sparsely written :-)

Links and Related documents

Colors and navigation:

You will see this diagram in quite many places, as for instance at the top of all examples - usually it will be clickable and will help you navigate among the different parts of an EO program. See the brief introduction to Evolutionary Computation for a detailed explanation.

But in the text itself, colors are important, as they will be used throughout this tutorial to clearly mark which part of the algorithm we are discussing. So please keep in mind that, whereas orange is for emphasis,

This tutorial is not
Before you start

You should of course have downloaded and installed the whole EO library (how did you get this file if not???). If you are using a recent version of EO (0.9.3+), all tutorial Lessons should have been compiled when installing the library, and you can now proceed with Lesson1.

Otherwise, we'll assume that you are now in the tutorial directory, and that your prompt looks something like

(myname@myhost) EOdir/tutorial %

so you should now type in

make Lesson1

and see something like

(myname@myhost) EOdir/tutorial % make Lesson1
c++ -DPACKAGE=\"eo\" -DVERSION=\"0.9.1\" -I. -I../../src -Wall -g -c FirstBitGA.cpp
c++ -Wall -g -o FirstBitGA FirstBitGA.o ../../src/libeo.a ../../src/utils/libeoutils.a
c++ -DPACKAGE=\"eo\" -DVERSION=\"0.9.1\" -I. -I../../src -Wall -g -c FirstRealGA.cpp
c++ -Wall -g -o FirstRealGA FirstRealGA.o ../../src/libeo.a ../../src/utils/libeoutils.a

and two now executable files should have appeared in the subdirectory Lesson1, namely FirstBitGA and FirstRealGA (see First lesson to know more about these two ready-to-run programs). If this doesn't work, please go back to the main EO directory and run the installation program.

You should also test that you can access the EO documentation in the menu line below: you might not need to go there immediately, but just in case you make rapid progress ... This menu bar should be on all pages of this tutorial, allowing you to navigate easily.

Last, but not least: EO is improving only  from the good will of contributors. This is also true for this tutorial: If you find anything that you think could be improved, you are welcome to e-mail me.


Algorithm-Based - Component-Based - Programming hints - EO documentation

Marc Schoenauer

Last modified: Wed Feb 22 2006