EO Evolutionary Computation Framework and Library
EO (Evolvable|Evolutionary objects) is a C++ toolbox for evolutionary computation which defines interfaces for
many classes of algorithms used in evolutionary computation, and, at the
same time, provides some examples that use those interfaces. The client/user
can include those objects in his or her programs, or create their own. If new objects are created, the GeNeura team commit themselves to test them, and make them available
to the Evolutionary Computation community. In this way, no changes have
to be made to the library design or to a program that implements an EC algorithm: just new classes added. Our intention would be that, in the future, somebody implementing an EC algorithm would say "I am using EO, plus a class that hs been made publicly available", improving repeatability of EC results and easing its availability.
EO uses STL, and ANSI C++. So far, it has been tested and works
with gcc 2.8.1 and egcs 1.0.2 in Linux, Irix, Win95/NT (with Cygwin) and
Solaris Machines, and with Visual C++ 5.0 in WinNT machines. Makefiles for Unix and project
files and makefiles for NT are provided.
Installing EO and compiling examples in UNIX
To start and use it, first you can untar or unzip it (depending on the distribution you got), by doing,
bash$ zcat eo-0.6.tgz | tar xvf -
or
bash$ unzip eo-0.6.zip
Once everything is decompressed to the eo-0.6 directory (or whatever), cd to it and type
bash$ configure
or
bash$ configure --prefix=/my/fav/directory
if you intend to use it from another directory. If you do so, youŽll have then to copy manually all the .h and .a files to it. Right now, EO is mostly templates-based, so it has mainly got header files, plus a small and independent utility library.
After that, type
bash$ make
This makes the object and library files needed, makes the examples
in the apps/examples directory, and builds the genetic mastermind
application in the apps/master directory. If anything goes wrong at this stage, e-mail us. It should work properly with the compilers mentioned so far.
Then, to unzip the documentation
bash$ make docunzip
which unzips the HTML documentation into the doc directory.
If there is any problem, write to any of the addresses below, or
just do
bash$ make bug-report
and tell us your problem, indicating EO release, the C++ compiler you
are using, and the platform.
Installing EO and compiling examples in Win95/NT
Unzip the library to your favorite directory by double-clicking on the eo-0.6 icon, and then load apps/examples/examples.dsw or
apps/examples/master.dsw workspaces; then define the main
directory you installed it to as default include directory (in
tools->directories or somesuch) and press F7 for compiling. Alternatively, if you favor makefiles, change into the apps/examples directory and run
C:\my\dir\eo-0.6\apps\examples> nmake /f examples.mak
which will create debug executables for all the examples.
In the CygWin environment, everything should work in the same way as in UNIX, but for a couple of things. To run configure, type
bash$ sh ./configure, or, much better, create a \bin directory and copy sh.exe to it; that way, shell scripts will work properly.
Availability
The latest versions of EO are always available from http://geneura.ugr.es/~jmerelo/eo
and ftp://geneura.ugr.es/pub/eo.
Working with EO
For a quick dive into the eo library, check the SGA
Then go ahead to the EasyGA,
which is a more flexible implementation of a Genetic Algorithm.
Then, why not, see how EO implements Simulated Annealing in EOSimAnnAlg. If you have unzipped the documentation, there should be also local copies of these files.
Tell us something!
If you have any problem, have created a new class, or just want to
tell us something, write to eo@kal-el.ugr.es.
The eo mailing list is hosted by OneList,
[Click to subscribe to eodev@onelist.com].
Legal Stuff
EO is free and free distribution; however, if you include parts of EO in
a commercial product, you have to request authorization from us.
The usual things apply too. If it does not work, if your wife or dogs
abandons you, or your room humector stops working, it's not our fault.