# EO evolutionary computation framework
Author: J.J. Merelo

# 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.

Search EO documentation