<p>With the help of EO, you can easily design evolutionary algorithms that will find solutions to virtually all kind of hard optimization problems, from continuous to combinatorial ones.</p>
<p>If you need <em>immediate support or have any question</em>, the best way to get
answers is to <ahref="https://lists.sourceforge.net/lists/listinfo/eodev-main">subscribe to the mailing list</a> and send your email to <ahref="mailto:eodev-main@lists.sourceforge.net">eodev-main@lists.sourceforge.net</a></p>
<p>Alternatively, you can join us on the official chatroom. If your browser supports it, you can simply click on the button on the bottom of the current webpage and enter your nick.Else, you can try our <ahref="http://chat.jabberfr.org/muckl_int/index.php?room=eo">webchat interface</a>. If you already have an XMPP account (Jabber or Google Talk, for example), you can directly connect to the <ahref="xmpp:eo@chat.jabberfr.org">eo@chat.jabberfr.org</a> multi-user chatroom with your favorite client.</p>
<p>If you want to know how to help us to improve EO, the easiest way is to click on the following button:
<p>If you need immediate support or have any question, you can join us on the official chatroom. Just go on our <ahref="http://chat.jabberfr.org/muckl_int/index.php?room=eo">webchat interface</a> and enter your nick. If you already have an XMPP account (Jabber or Google Talk, for example), you can directly connect to the <ahref="xmpp:eo@chat.jabberfr.org">eo@chat.jabberfr.org</a> MUC with your favorite client.</p>
<p>Designing an algorithm with EO consists in choosing what components you want to use for your specific needs, just as building a structure with Lego blocks.</p>
<p>If you have a classical problem for which available code exists (for example if you have a black-box problem with real-valued variables), you will just choose components to form an algorithm and connect it to your <em>fitness function</em> (which computes the quality of a given solution).</p>
<p>If your problem is a bit more exotic, you will have to code a class that represents how your <em>individuals</em> (a solution to your problem) are represented, and perhaps some <em>variations operators</em>, but most of the other operators (selection, replacement, stopping criteria, command-line interface, etc.) are already available in EO.</p>
<p><imgsrc="Evolutionary_algorithm.png"title="A typical Evolutionary Algorithm, as seen from the EO point of vue − Johann Dréo − CC-BY-SA"/></p>
<!-- <img src="http://upload.wikimedia.org/wikipedia/en/timeline/3f507249a36a4a38020e7fc0a5f448df.png" title="Metaheuristics that can be implemented with EO and ParadisEO, ordered by date of invention − Johann Dréo/Wikipédia − CC-BY-SA" style="float:right;" /> --><!-- http://en.wikipedia.org/wiki/Metaheuristic -->
<p>Designing an algorithm with EO consists in choosing what components you want to use for your specific needs, just as building a structure with Lego blocks.</p>
<p>If you have a classical problem for which available code exists (for example if you have a black-box problem with real-valued variables), you will just choose components to form an algorithm and connect it to your <em>fitness function</em> (which computes the quality of a given solution).</p>
<p>If your problem is a bit more exotic, you will have to code a class that represents how your <em>individuals</em> (a solution to your problem) are represented, and perhaps some <em>variations operators</em>, but most of the other operators (selection, replacement, stopping criteria, command-line interface, etc.) are already available in EO.</p>
<p><imgsrc="Evolutionary_algorithm.png"title="A typical Evolutionary Algorithm, as seen from the EO point of vue − Johann Dréo − CC-BY-SA"/></p>
<h2><aname="Main-Features"></a>Main Features</h2>
<!-- <img src="http://upload.wikimedia.org/wikipedia/en/timeline/3f507249a36a4a38020e7fc0a5f448df.png" title="Metaheuristics that can be implemented with EO and ParadisEO, ordered by date of invention − Johann Dréo/Wikipédia − CC-BY-SA" style="float:right;" /> --><!-- http://en.wikipedia.org/wiki/Metaheuristic -->
<tablestyle="float:right;"class="examples">
<tablestyle="float:right;"class="examples">
<caption>Examples of problems that you can solve with the help of EO:</caption>
<tr><td>
<imgsrc="Gallagher_Gaussian_BBOB_f21.png"title="Continuous problems (here Gallagher's Gaussian 101-me Peaks function, Black Box Optimization Benchmark, f21 − COCO team)"/><!-- http://coco.lri.fr/BBOB-downloads/download10.2/bbobdocfunctions.pdf -->
@ -205,345 +219,342 @@
<tr><td>
<imgsrc="BatchGantt1.png"title="Planning problems (here a Gantt Chart for a Batch Process − Casilett − DP)"/><!-- http://en.wikipedia.org/wiki/File:BatchGantt1.png -->
</tr></td>
</table>
</table>
<ul>
<ul>
<li>Flexible design that permits to easily create virtually any algorithm</li>
<li>Solution representation for continuous and combinatorial problems:
<ul>
<li>binary-strings,</li>
<li>permutations,</li>
<li>vectors,</li>
<li>easily write your own,</li>
<li>…</li>
</ul>
<ul>
<li>binary-strings,</li>
<li>permutations,</li>
<li>vectors,</li>
<li>easily write your own,</li>
<li>…</li>
</ul>
</li>
<li>Several algorithm paradigms:
<ul>
<li>evolution strategies,</li>
<li>genetic algorithms,</li>
<li>estimation of distribution,</li>
<li>particle swarm optimization</li>
<li>…</li>
</ul>
<ul>
<li>evolution strategies,</li>
<li>genetic algorithms,</li>
<li>estimation of distribution,</li>
<li>particle swarm optimization</li>
<li>…</li>
</ul>
</li>
<li>Many selection and replacement operators:
<ul>
<li>rank-based,</li>
<li>deterministic or stochastic tournaments,</li>
<li>roulette,</li>
<li>elitism,</li>
<li>…</li>
</ul>
<ul>
<li>rank-based,</li>
<li>deterministic or stochastic tournaments,</li>
<li>roulette,</li>
<li>elitism,</li>
<li>…</li>
</ul>
</li>
<li>Ready-to-use variations operators:
<ul>
<li>uniform initializer,
<li>gaussian mutation,
<li>subtree crossover,
<li>…</li>
</ul>
<ul>
<li>uniform initializer,</li>
<li>gaussian mutation,</li>
<li>subtree crossover,</li>
<li>…</li>
</ul>
</li>
<li>Easy combination of several operators:
<ul>
<li>proportional combination,</li>
<li>sequential call,</li>
<li>…</li>
</ul>
<ul>
<li>proportional combination,</li>
<li>sequential call,</li>
<li>…</li>
</ul>
</li>
<li>Portable and human-readable parameter files</li>
<li>Suspend and load population from files</li>
<li>Versatile checkpointing and logging:
<ul>
<li>graphical display,</li>
<li>file dump,</li>
<li>various statistics,</li>
<li>signal catching,</li>
<li>…</li>
</ul>
<ul>
<li>graphical display,</li>
<li>file dump,</li>
<li>various statistics,</li>
<li>signal catching,</li>
<li>…</li>
</ul>
</li>
<li>Mersenne Twister random number generator (and various distributions)</li>
<p> EO should work on Windows and any Un*x-like operating system with a
<h2><aname="Portability"></a>Portability</h2>
<p> EO should work on Windows and any Un*x-like operating system with a
standard-conforming C++ development system. </p>
<p>Recent versions of EO have been tested on the following platforms:
</p>
<p>Recent versions of EO have been tested on the following platforms:
</p>
<ul>
<li>Linux x86 with GCC 3.x and 4.x</li>
<li>Linux x86_64 with GCC 3.x and GCC 4.x</li>
<li>MacOS X/Darwin PowerPC with GCC 3.x</li>
<li>MacOS X/Darwin x86 with GCC 4.x</li>
<li>Microsoft Windows using Cygwin's GCC 3.x (cygming special).
<li>Microsoft Windows using Visual Studio 2003/2005; projects files
<ul>
<li>Linux x86 with GCC 3.x and 4.x</li>
<li>Linux x86_64 with GCC 3.x and GCC 4.x</li>
<li>MacOS X/Darwin PowerPC with GCC 3.x</li>
<li>MacOS X/Darwin x86 with GCC 4.x</li>
<li>Microsoft Windows using Cygwin's GCC 3.x (cygming special).</li>
<li>Microsoft Windows using Visual Studio 2003/2005; projects files
are provided.</li>
<li>Solaris SPARC with GCC 3.x</li>
<li>Solaris x86 with GCC 3.x</li>
</ul>
<li>Solaris SPARC with GCC 3.x</li>
<li>Solaris x86 with GCC 3.x</li>
</ul>
<p>Recent versions of EO uses the <ahref="http://www.cmake.org">CMake</a> portable build system, that permits to easily generate a build chain for your environment.</p>
<p>Recent versions of EO uses the <ahref="http://www.cmake.org">CMake</a> portable build system, that permits to easily generate a build chain for your environment.</p>
<p> If you have tested EO on a system not listed here, please <a
<fontcolor="#a52a2a">title</font> = "Evolving Objects: A General Purpose Evolutionary Computation Library ",<br>
<fontcolor="#a52a2a">author</font> = "Maarten Keijzer and J. J. Merelo and G. Romero and M. Schoenauer",<br>
<fontcolor="#a020f0">abstract</font> = "This paper presents the evolving objects library<br>
(EOlib), an object-oriented framework for evolutionary<br>
computation (EC) that aims to provide a flexible set of<br>
classes to build EC applications. EOlib design<br>
objective is to be able to evolve any object in which<br>
fitness makes sense.",<br>
<fontcolor="#a52a2a">title</font> = "Evolving Objects: A General Purpose Evolutionary Computation Library ",<br/>
<fontcolor="#a52a2a">author</font> = "Maarten Keijzer and J. J. Merelo and G. Romero and M. Schoenauer",<br/>
<fontcolor="#a020f0">abstract</font> = "This paper presents the evolving objects library<br/>
(EOlib), an object-oriented framework for evolutionary<br/>
computation (EC) that aims to provide a flexible set of<br/>
classes to build EC applications. EOlib design<br/>
objective is to be able to evolve any object in which<br/>
fitness makes sense.",<br/>
}<br/>
<br/>
</font>
</p>
<p>Here is a list of some known publications that used EO:</p>
<ulclass="publications">
<li>J.J. Gilijamse, J. Küpper, S. Hoekstra, S.Y.T. van de Meerakker, G. Meijer,
<ahref="http://dx.doi.org/10.1103/PhysRevA.73.063410">Optimizing the Stark-decelerator beamline for the trapping of
cold molecules using evolutionary strategies</a>,
<i> Physical Review</i>, A <b>73</b>, 063410 (2006). <br/>
Also available at <ahref="http://arxiv.org/abs/physics/0603108"><i>arXiv</i>
physics/0603108 (2006)</a>.</li>
<li>Johann Dreo, <ahref="http://www.nojhan.net/pro/spip.php?article31">Using Performance Fronts for Parameter Setting of Stochastic Metaheuristics</a>, <i>Genetic and Evolutionary Computation Conference</i>, (2009).</li>
<li>Jacques Bibaï, Pierre Savéant, Marc Schoenauer, Vincent Vidal, <ahref="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS10/paper/view/1414">An Evolutionary Metaheuristic Based on State Decomposition for Domain-Independent Satisficing Planning</a>, <i>Twentieth International Conference on Automated Planning and Scheduling </i> (2010).</li>
<li>Jacques Bibaï, Pierre Savéant, Marc Schoenauer, Vincent Vidal, <ahref="">An Evolutionary Metaheuristic for Domain-Independent Satisficing Planning</a>, <i>Genetic and Evolutionary Computation Conference</i> (2010). <em>Silver Medal at the Human-Competitive Competition</em></li>
<p>Here is a list of some known publications that used EO:</p>
<ulclass="publications">
<li>J.J. Gilijamse, J. Küpper, S. Hoekstra, S.Y.T. van de Meerakker, G. Meijer,
<ahref="http://dx.doi.org/10.1103/PhysRevA.73.063410">Optimizing the Stark-decelerator beamline for the trapping of
cold molecules using evolutionary strategies</a>,
<i> Physical Review</i>, A <b>73</b>, 063410 (2006). <br/>
Also available at <ahref="http://arxiv.org/abs/physics/0603108"><i>arXiv</i>
physics/0603108 (2006)</a>.</li>
<li>Johann Dreo, <ahref="http://www.nojhan.net/pro/spip.php?article31">Using Performance Fronts for Parameter Setting of Stochastic Metaheuristics</a>, <i>Genetic and Evolutionary Computation Conference</i>, (2009).</li>
<li>Jacques Bibaï, Pierre Savéant, Marc Schoenauer, Vincent Vidal, <ahref="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS10/paper/view/1414">An Evolutionary Metaheuristic Based on State Decomposition for Domain-Independent Satisficing Planning</a>, <i>Twentieth International Conference on Automated Planning and Scheduling </i> (2010).</li>
<li>Jacques Bibaï, Pierre Savéant, Marc Schoenauer, Vincent Vidal, <ahref="">An Evolutionary Metaheuristic for Domain-Independent Satisficing Planning</a>, <i>Genetic and Evolutionary Computation Conference</i> (2010). <em>Silver Medal at the Human-Competitive Competition</em></li>
or <ahref="http://eodev.git.sourceforge.net/git/gitweb.cgi?p=eodev/eodev;a=tree;f=eo;h=d93666f049104f360ffdff3af0bf54902e2feae1;hb=HEAD">browse the repository online</a>.
<p>Note that this license places copyleft restrictions on a program created with EO, but does not apply these restrictions to other software that would links with the program.</p>
<p>Note that this license places copyleft restrictions on a program created with EO, but does not apply these restrictions to other software that would links with the program.</p>
<h2><aname="Documentation"></a>Documentation</h2>
<h2><aname="Documentation"></a>Documentation</h2>
<p>The tutorial demonstrates that writing an evolutionary algorithm
<p>The tutorial demonstrates that writing an evolutionary algorithm
evolving your own structures is now <em>easy</em>, using ready-to-use
template files. Although the tutorial has not been upgraded for some
time now and refers to version 0.9.2 of EO, it nevertheless remains the
best way to dive into EO. You can start by trying it on-line at <a
<li><ahref="https://lsiit.u-strasbg.fr/easea/index.php/EASEA_platform">EASEA</a> was a GUI that permits to build evolutionary algorithm with EO or the <ahref="http://lancet.mit.edu/ga/">GAlib</a>.
It is now a platform that allows program evolutionary algorithms on massively parallel many-core architectures.</li>
<li><ahref="https://lsiit.u-strasbg.fr/easea/index.php/EASEA_platform">EASEA</a> was a GUI that permits to build evolutionary algorithm with EO or the <ahref="http://lancet.mit.edu/ga/">GAlib</a>.
It is now a platform that allows program evolutionary algorithms on massively parallel many-core architectures.</li>
<li><ahref="https://gforge.inria.fr/projects/guide">GUIDE</a> is a GUI that allows the generation of evolutionary algorithms. It can use EO or <ahref="http://cs.gmu.edu/~eclab/projects/ecj/">ECJ</a>.</li>
</ul>
<li><ahref="https://gforge.inria.fr/projects/guide">GUIDE</a> is a GUI that allows the generation of evolutionary algorithms. It can use EO or <ahref="http://cs.gmu.edu/~eclab/projects/ecj/">ECJ</a>.</li>
</ul>
<h2><aname="Authors"></a>Authors</h2>
<h2><aname="Authors"></a>Authors</h2>
<p>EO was started by the <ahref="http://geneura.ugr.es/">Geneura
Team</a> at the University of Granada, headed by <a
href="http://geneura.ugr.es/%7Ejmerelo/">Juan Julián Merelo</a>. The <a
>original Web site</a> is also the only place where you
will find old releases of EO (up to 0.8.7), but beware that it is not
compatible at all with the current version. </p>
<p>The developement team has then been reinforced by <a
href="http://www.cs.vu.nl/~mkeijzer">Maarten Keijzer</a>, the C++
<p>The developement team has then been reinforced by <a
href="http://www.cs.vu.nl/~mkeijzer">Maarten Keijzer</a>, the C++
wizzard, and <ahref="http://www.lri.fr/%7Emarc">Marc Schoenauer</a>.
Later came <ahref="http://www.liacs.nl/%7Ejeggermo/">Jeroen
Eggermont</a>, who, among other things, did a lot of work on GP,
Eggermont</a>, who, among other things, did a lot of work on GP,
INRIA Dolphin Team, <a
href="mailto:okoenig@users.sourceforge.net">Olivier König</a>, who did a
href="mailto:okoenig@users.sourceforge.net">Olivier König</a>, who did a
lot of useful additions and cleaning of the code and <a
href="http://www.jochen-kuepper.de">Jochen Küpper</a>, working on
href="http://www.jochen-kuepper.de">Jochen Küpper</a>, working on
infrastructure maintenance. </p>
<p>The project is now maintained by <ahref="http://johann.dreo.fr">Johann Dréo</a>,
<p>The project is now maintained by <ahref="http://johann.dreo.fr">Johann Dréo</a>,
working on it with the help of <ahref="http://caner.candan.fr">Caner Candan</a>.</p>
<h2><aname="Links"></a>Links</h2>
<h2><aname="Links"></a>Links</h2>
<ul>
<li><ahref="http://coco.gforge.inria.fr/">COCO (COmparing Continuous Optimisers)</a>, a platform for systematic and sound comparisons of real-parameter global optimisers. COCO provides benchmark function testbeds and tools for processing and visualizing data generated by one or several optimizers.</li>
<li><ahref="http://www.aip.de/~ast/EvolCompFAQ">The Hitch-Hiker's Guide to Evolutionary Computation</a>, FAQ for <ahref="news:comp.ai.genetic">comp.ai.genetic</a>.</li>
<li>Wikipedia entries on <ahref="http://en.wikipedia.org/wiki/Evolutionary_algorithm">Evolutionary algorithms</a>.</li>
<li>Charles Darwin: <ahref="http://en.wikipedia.org/wiki/The_Origin_of_Species">The Origin of Species</a>.</li>
<ul>
<li><ahref="http://coco.gforge.inria.fr/">COCO (COmparing Continuous Optimisers)</a>, a platform for systematic and sound comparisons of real-parameter global optimisers. COCO provides benchmark function testbeds and tools for processing and visualizing data generated by one or several optimizers.</li>
<li><ahref="http://www.aip.de/~ast/EvolCompFAQ">The Hitch-Hiker's Guide to Evolutionary Computation</a>, FAQ for <ahref="news:comp.ai.genetic">comp.ai.genetic</a>.</li>
<li>Wikipedia entries on <ahref="http://en.wikipedia.org/wiki/Evolutionary_algorithm">Evolutionary algorithms</a>.</li>
<li>Charles Darwin: <ahref="http://en.wikipedia.org/wiki/The_Origin_of_Species">The Origin of Species</a>.</li>
</ul>
</div><!-- id=main -->
</div><!-- id=main -->
<!-- Piwik -->
<scripttype="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/eodev/" : "http://sourceforge.net/apps/piwik/eodev/");