Added the descrition of evolution engines in eoEngine
and links to SGAI STL Web site in eoTutorial and eoProgramming
This commit is contained in:
parent
c34e94b0d0
commit
4b83dbd0f4
3 changed files with 104 additions and 23 deletions
|
|
@ -232,17 +232,15 @@ that offspring and parents are of the same size (but does not check!).</li>
|
|||
<li>
|
||||
<a NAME="SSGA"></a><b><tt><font color="#009900">eoMergeReduce</font></tt></b>
|
||||
This is one the basic types of replacement in EO. It has two major steps,
|
||||
<font color="#FF6600">merging</font> both populations of parents and offspring,
|
||||
and <font color="#FF6600">reducing</font> this big population to the right
|
||||
size. It <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eomegereduce.html">contains
|
||||
<font color="#FF6600">merging</font>
|
||||
both populations of parents and offspring, and <font color="#FF6600">reducing</font>
|
||||
this big population to the right size. It <font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eomegereduce.html">contains
|
||||
two objects</a></font></font> of respective types <b><font color="#009900"><a href="#merge">eoMerge</a></font></b>
|
||||
and <b><font color="#009900"><a href="#reduce">eoReduce</a></font></b>
|
||||
and you can probably guess what each of them actually does :-)</li>
|
||||
|
||||
<br>
|
||||
<p>
|
||||
<p>Available <font color="#FF6600">instances of eoMergeReduce</font> replacement
|
||||
include
|
||||
<p><br>Available <font color="#FF6600">instances of eoMergeReduce</font>
|
||||
replacement include
|
||||
<ul>
|
||||
<li>
|
||||
<b><tt><font color="#009900">eoCommaReplacement</font></tt></b>, one of
|
||||
|
|
@ -302,7 +300,7 @@ Additional parameter (in the constructor) is the tournament rate, a <b><tt><font
|
|||
</ul>
|
||||
|
||||
<hr WIDTH="50%">
|
||||
<br><b><font color="#000099">Replacement: </font><font color="#FF0000">Adding
|
||||
<br><a NAME="weakelitism"></a><b><font color="#000099">Replacement: </font><font color="#FF0000">Adding
|
||||
(weak) elitism</font></b>
|
||||
<p>You can add what is called <font color="#FF6600">weak elitism</font>
|
||||
to any replacement by encapsulating it into an <b><tt><font color="#009900">eoWeakElitismReplacement</font></tt></b>
|
||||
|
|
@ -337,25 +335,88 @@ that all of these are already implemented in EO (except maybe some of the
|
|||
last category :-) !!!!!!
|
||||
<p>The most popular evolution engines are listed below, together with the
|
||||
way to use them in EO. If you don't find your particuler algorithm, please
|
||||
send it to us, and we might include it here!
|
||||
send it to us, and we might include it here! In the following, P will denote
|
||||
the number of individuals in the initial population.
|
||||
<ul>
|
||||
<li>
|
||||
<a NAME="GGA"></a>Generational Genetic Algorihtm</li>
|
||||
<a NAME="GGA"></a><b><font color="#000099">Generational Genetic Algorihtm</font></b><font color="#000000">:
|
||||
popularized by Holland (75) and Goldberg (89), it uses <br>
|
||||
</font><font color="#FF0000">Number of offspring: </font><font color="#000000">
|
||||
P<br>
|
||||
</font><font color="#FF0000">Selection:</font><font color="#000000"> Proportional
|
||||
(the historical roulette wheel) </font><b><font color="#FF6600">when maximizing
|
||||
a positive scalar fitness</font></b><font color="#000000">, ranking or
|
||||
tournament (stochatic or deterministic) in all cases.<br>
|
||||
</font><font color="#FF0000">Replacement:</font><font color="#000000">
|
||||
Generational.<br>
|
||||
</font><font color="#FF0000">Remark:</font><font color="#000000"> You could
|
||||
use also the Comma replacement, with exactly the same result as there are
|
||||
as many offspring as we need indiviudals in the next population. And using
|
||||
the eoSSGAWorseReplacement would also give the same result, but would be
|
||||
very inefficient!<br>
|
||||
You can also add <a href="#weakelitism">weak elitism</a> to preserve the
|
||||
best individual.</font></li>
|
||||
|
||||
<li>
|
||||
<a NAME="SSGA"></a>Steady-State Genetic Algorithm</li>
|
||||
<a NAME="SSGA"></a><b><font color="#000099">Steady-State Genetic Algorithm</font></b><font color="#000000">:
|
||||
widely used in GA/GP community<br>
|
||||
</font><font color="#FF0000">Number of offspring: </font><font color="#000000">
|
||||
small (historically, 1)<br>
|
||||
</font><font color="#FF0000">Selection:</font><font color="#000000"> tournament
|
||||
(you can use ranking or proportional, but it will be rather inefficient).<br>
|
||||
</font><font color="#FF0000">Replacement:</font><font color="#000000">
|
||||
An eoSSGAxxxReplacement. <br>
|
||||
</font><font color="#FF0000">Remark:</font><font color="#000000"> You can
|
||||
also use the eoPlusReplacement, but you divert from the original SSGA</font></li>
|
||||
|
||||
<li>
|
||||
<a NAME="ESPlus"></a>(MU+Lambda)-Evolution Strategy</li>
|
||||
<a NAME="ESPlus"></a><b><font color="#000099">(MU+Lambda)-Evolution Strategy</font></b><font color="#000000">:
|
||||
The elitist ES strategy (Rechenberg 71 and Schwefel 81)<br>
|
||||
</font><font color="#FF0000">Number of offspring: </font><font color="#000000">
|
||||
Any<br>
|
||||
</font><font color="#FF0000">Selection:</font><font color="#000000"> eoDetSelect
|
||||
(batch deterministic).<br>
|
||||
</font><font color="#FF0000">Replacement:</font><font color="#000000">
|
||||
eoPlusReplacement<br>
|
||||
</font><font color="#FF0000">Remark:</font><font color="#000000"> You could
|
||||
also use eoEPReplacement, to smoothen the selective pressure during replacement,
|
||||
thus getting close to EP evolution engine</font></li>
|
||||
|
||||
<li>
|
||||
<a NAME="ESComma"></a>(MU,LAMBDA)-Evolution Strategy</li>
|
||||
<a NAME="ESComma"></a><b><font color="#000099">(MU,Lambda)-Evolution Strategy</font></b><font color="#000000">:
|
||||
The non-elitist ES strategy<br>
|
||||
</font><font color="#FF0000">Number of offspring: </font><font color="#000000">
|
||||
> P<br>
|
||||
</font><font color="#FF0000">Selection:</font><font color="#000000"> eoDetSelect
|
||||
(batch deterministic).<br>
|
||||
</font><font color="#FF0000">Replacement:</font><font color="#000000">
|
||||
eoCommaReplacement<br>
|
||||
</font><font color="#FF0000">Remark:</font><font color="#000000"> You can
|
||||
also add <a href="#weakelitism">weak elitism</a> to preserve the best individual
|
||||
- though you'd probably use the plus strategy if you want (strong) elitism.</font></li>
|
||||
|
||||
<li>
|
||||
<a NAME="EP"></a>Evolutionary Programming</li>
|
||||
<a NAME="EP"></a><b><font color="#000099">Evolutionary Programming</font></b><font color="#000000">:
|
||||
The historical method of L. Fogel (65)<br>
|
||||
</font><font color="#FF0000">Number of offspring: </font><font color="#000000">
|
||||
P<br>
|
||||
</font><font color="#FF0000">Selection:</font><font color="#000000"> eoDetSelect
|
||||
(batch deterministic). Every individual reproduces exactly once.<br>
|
||||
</font><font color="#FF0000">Replacement:</font><font color="#000000">
|
||||
eoEPReplacement, though one historical replacement was the determnistic
|
||||
replacement - i.e. in EO the eoPlusReplacement).<br>
|
||||
</font><font color="#FF0000">Remark:</font><font color="#000000"> Close
|
||||
to an (P+P)-ES</font></li>
|
||||
|
||||
<li>
|
||||
<a NAME="General"></a>You name it :-)</li>
|
||||
<a NAME="General"></a><font color="#FF0000">You name it :-)</font><font color="#000000">:
|
||||
you can of course choose whatever combination you like - respecting a few
|
||||
constraints and common-sense remarks. For instance, eoProportionalSelect
|
||||
should be used only when maximizing a positive fitness, eoCommaReplacement
|
||||
requires more offspring than parents, and, over all, existing EO algorithms
|
||||
wirk with fixed size population - and it is your responsability to use
|
||||
a cmbinatino of selection/replacement that fulfills this requirement (or
|
||||
to create your own eoAlgo that handles varying size populations).</font></li>
|
||||
</ul>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
|
|
|
|||
|
|
@ -73,8 +73,13 @@ has been designed to hold all functors. This base class is itself divided
|
|||
into three derived class. These classes tell you immediately what kind
|
||||
of arguments the <b><tt><font color="#993300">operator()</font></tt></b>
|
||||
method requires and what kind of result it produces. See <a href="#notations">EO
|
||||
conventions</a>, and the <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eofunctorbase.html">inheritance
|
||||
conventions</a>,
|
||||
and the <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eofunctorbase.html">inheritance
|
||||
diagram of class eoFunctorBase</a>.</font></font></b>
|
||||
<br>For a more complete introduction to functors, with detailed discussion,
|
||||
go to the <a href="http://www.sgi.com/Technology/STL/functors.html">STL
|
||||
documentation</a> - as STL also heavily relies on functors, and the eoFunctorBase
|
||||
paradigm is borrowed from there.
|
||||
<p><b><font color="#FF0000">Functors:</font><font color="#000099"> Example:</font></b>
|
||||
<p>The following is a basic example of how to program and use a functor
|
||||
object: First code the class:
|
||||
|
|
@ -170,15 +175,21 @@ Template Library</font></b>.
|
|||
<br>But <font color="#FF6600">you don't have to know more than a few words
|
||||
of STL</font> to use EO (like with "hello", "please" and "goodbye" you
|
||||
can survive in a foreign country :-) and even to contribute to new EO features.
|
||||
<p>You will only find here the basics of STL that you will need to understand
|
||||
most of EO code - and to guess what the parts you don't understand are
|
||||
actually doing. Don't worry, <b><font color="#FF6600">I </font></b>don't
|
||||
understand everything :-)
|
||||
Moreover, while browsing through EO code, you will gradually learn how
|
||||
to use STL, especially if you check at the <a href="http://www.sgi.com/Technology/STL/">SGI STL
|
||||
Web site</a> from time to time, where you can not only download STL, but
|
||||
also browse in the Programmer's guide for isntance from the <a href="http://www.sgi.com/Technology/STL/table_of_contents.html">Table
|
||||
of Content</a>.
|
||||
<p>Anyway, you will only find here, in EO tutorial, the basics of STL that
|
||||
you will need to understand most of EO code - and to guess what the parts
|
||||
you don't understand are actually doing. Don't worry, <b><font color="#FF6600">I
|
||||
</font></b>don't understand everything :-)
|
||||
<p>STL provides the user with <b><font color="#FF6600">container</font></b>s,
|
||||
<b><font color="#FF6600">iterators</font></b>
|
||||
and <b><font color="#FF6600">algorithms</font></b>. And you can access
|
||||
(almost) all containers content using (almost) all iterators, or apply
|
||||
(almost) all algorithms on (almost) all containers.
|
||||
(almost) all algorithms on (almost) all containers (of course the tricky
|
||||
part is to instanciate the "almost" in the previous sentence :-)
|
||||
<p><b><font color="#FF0000">STL: </font><font color="#000099">Containers</font></b>
|
||||
<br>Containers are high level data types used to hold simpler data - the
|
||||
most widely used example of a container is the <b><font color="#FF6600">vector</font></b>
|
||||
|
|
@ -351,6 +362,8 @@ names of the variables they are used to initialize, e.g.</li>
|
|||
|
||||
<br>
|
||||
<p>
|
||||
<br>
|
||||
<br>
|
||||
<p><b><tt><font color="#993300">class eoMyClass</font></tt></b>
|
||||
<br><b><tt><font color="#993300">{</font></tt></b>
|
||||
<br><b><tt><font color="#993300">public:</font></tt></b>
|
||||
|
|
|
|||
|
|
@ -11,8 +11,9 @@
|
|||
documentation</a></font></font></b>
|
||||
<hr WIDTH="100%">
|
||||
<center><b><font color="#FF0000">Welcome to EO, the Evolving Objects library,
|
||||
and to</font></b>
|
||||
<b><font color="#FF0000"></font></b>
|
||||
and to</font></b></center>
|
||||
|
||||
<center>
|
||||
<h1>
|
||||
<font color="#FF0000">EO Tutorial</font></h1></center>
|
||||
|
||||
|
|
@ -63,6 +64,12 @@ and to quickly reach some specific part of the code.</li>
|
|||
|
||||
<br>The top page of each class documentation is for instance the inheritance
|
||||
diagram of the class, and you'll learn a lot by simply looking at it.
|
||||
<li>
|
||||
For those who wish to get deeper in STL (Standard Template Library), you
|
||||
might visit the well documented <a href="http://www.sgi.com/Technology/STL/">SGI
|
||||
STL Web site</a>. But don't forget you'll find the very basic minimum in
|
||||
EO <a href="eoProgramming.html#STL">programming hints</a>.</li>
|
||||
|
||||
<li>
|
||||
And, last but not least, we assume you know approximately that an Evolutionary
|
||||
Algorithm looks like this, but otherwise you can try this <a href="eoIntroEA.html">very
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue