Added the descrition of evolution engines in eoEngine

and links to SGAI STL Web site in eoTutorial and eoProgramming
This commit is contained in:
evomarc 2001-01-08 09:52:15 +00:00
commit 4b83dbd0f4
3 changed files with 104 additions and 23 deletions

View file

@ -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>&nbsp;
<p>&nbsp;
<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&nbsp;<br>
</font><font color="#FF0000">Number of offspring:&nbsp;</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:&nbsp;</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.&nbsp;<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:&nbsp;</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&nbsp;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:&nbsp;</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:&nbsp;</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%">

View file

@ -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&nbsp;STL
Web site</a> from time to time, where you can not only download STL, but
also browse in the Programmer's guide&nbsp; 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>&nbsp;
<p>&nbsp;
<br>&nbsp;
<br>&nbsp;
<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>

View file

@ -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>&nbsp;
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