29 lines
No EOL
4.1 KiB
TeX
29 lines
No EOL
4.1 KiB
TeX
\hypertarget{index_shortcuts}{}\doxysection{In one word}\label{index_shortcuts}
|
|
The best place to learn about the features and approaches of EO with the help of examples is to look at the \href{../../tutorial/html/eoTutorial.html}{\texttt{ tutorial}}.
|
|
|
|
Once you have understand the \mbox{\hyperlink{index_design}{Overall Design}} of EO, you could search for advanced features by browsing the \href{modules.html}{\texttt{ modules}} page.\hypertarget{index_intro}{}\doxysection{Introduction}\label{index_intro}
|
|
EO is a template-\/based, A\+N\+S\+I-\/\+C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast.
|
|
|
|
It contains classes for almost any kind of evolutionary computation you might come up to -\/ at least for the ones we could think of. It is component-\/based, so that if you don\textquotesingle{}t find the class you need in it, it is very easy to subclass existing abstract or concrete classes.
|
|
|
|
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.
|
|
|
|
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 fitness function (which computes the quality of a given solution).
|
|
|
|
If your problem is a bit more exotic, you will have to code a class that represents how your individuals (a solution to your problem) are represented, and perhaps some variations operators, but most of the other operators (selection, replacement, stopping criteria, command-\/line interface, etc.) are already available in EO.\hypertarget{index_design}{}\doxysection{Overall Design}\label{index_design}
|
|
EO is a framework. It is oriented toward facilitating the design of adhoc evolutionary algorithms. It is not (at the moment) a complete library of algorithms ready to use on canonical problems.
|
|
|
|
If you have a well-\/known problem and want to solve it as soon as possible, try another software. If you have a real problem and want to build the best evolutionary algorithm to solve it, you\textquotesingle{}ve made the good choice.
|
|
|
|
Bascially, EO manipulate \char`\"{}individuals\char`\"{} with a \char`\"{}fitness\char`\"{}, that is objects encoding a solution to a given optimization problem, associated with the quality of this solution. The fitness is defined in the EO class, but the representation of a solution cannot be as generic. Thus, EO massively use templates, so that you will not be limited by interfaces when using your own representation.
|
|
|
|
Once you have a representation, you will build your own evolutionary algorithm by assembling \mbox{\hyperlink{group___operators}{Evolutionary Operators}} in \mbox{\hyperlink{group___algorithms}{Algorithms}}. In EO, most of the objects are functors, that is classes with an operator(), that you can call just as if they were classical functions. For example, an algorithm is a functor, that manipulate a population of individuals, it will be implemented as a functor, with a member like\+: operator()(eo\+Pop$<$\+E\+O\+T$>$). Once called on a given population, it will search for the optimum of a given problem.
|
|
|
|
Generally, operators are instanciated once and then binded in an algorithm by reference. Thus, you can easily build your own algorithm by trying several combination of operators.
|
|
|
|
For a more detailled introduction to the design of EO you can look at the slides from a talk at EA 2001 or at the corresponding article in Lecture Notes In Computer Science, 2310, Selected Papers from the 5th European Conference on Artificial Evolution\+:
|
|
\begin{DoxyItemize}
|
|
\item \href{http://portal.acm.org/citation.cfm?id=727742}{\texttt{ http\+://portal.\+acm.\+org/citation.\+cfm?id=727742}}
|
|
\item \href{http://eodev.sourceforge.net/eo/doc/LeCreusot.pdf}{\texttt{ http\+://eodev.\+sourceforge.\+net/eo/doc/\+Le\+Creusot.\+pdf}}
|
|
\item \href{http://eodev.sourceforge.net/eo/doc/EO_EA2001.pdf}{\texttt{ http\+://eodev.\+sourceforge.\+net/eo/doc/\+E\+O\+\_\+\+E\+A2001.\+pdf}}
|
|
\end{DoxyItemize} |