From 4b83dbd0f48842527f99e500223d73da8d4c3504 Mon Sep 17 00:00:00 2001 From: evomarc Date: Mon, 8 Jan 2001 09:52:15 +0000 Subject: [PATCH] Added the descrition of evolution engines in eoEngine and links to SGAI STL Web site in eoTutorial and eoProgramming --- eo/tutorial/html/eoEngine.html | 91 ++++++++++++++++++++++++----- eo/tutorial/html/eoProgramming.html | 25 ++++++-- eo/tutorial/html/eoTutorial.html | 11 +++- 3 files changed, 104 insertions(+), 23 deletions(-) diff --git a/eo/tutorial/html/eoEngine.html b/eo/tutorial/html/eoEngine.html index cfb095f81..b939046b8 100644 --- a/eo/tutorial/html/eoEngine.html +++ b/eo/tutorial/html/eoEngine.html @@ -232,17 +232,15 @@ that offspring and parents are of the same size (but does not check!).
  • eoMergeReduce This is one the basic types of replacement in EO. It has two major steps, -merging both populations of parents and offspring, -and reducing this big population to the right -size. It contains +merging +both populations of parents and offspring, and reducing +this big population to the right size. It contains two objects of respective types eoMerge and eoReduce and you can probably guess what each of them actually does :-)
  • -
      -

      -

    Available instances of eoMergeReduce replacement -include +


    Available instances of eoMergeReduce +replacement include

    • eoCommaReplacement, one of @@ -302,7 +300,7 @@ Additional parameter (in the constructor) is the tournament rate, a
      -
      Replacement: Adding +
      Replacement: Adding (weak) elitism

      You can add what is called weak elitism to any replacement by encapsulating it into an eoWeakElitismReplacement @@ -337,25 +335,88 @@ that all of these are already implemented in EO (except maybe some of the last category :-) !!!!!!

      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.

      • -Generational Genetic Algorihtm
      • +Generational Genetic Algorihtm: +popularized by Holland (75) and Goldberg (89), it uses 
        +
        Number of offspring:  +P
        +
        Selection: Proportional +(the historical roulette wheel) when maximizing +a positive scalar fitness, ranking or +tournament (stochatic or deterministic) in all cases.
        +
        Replacement: +Generational.
        +
        Remark: 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!
        +You can also add weak elitism to preserve the +best individual.
      • -Steady-State Genetic Algorithm
      • +Steady-State Genetic Algorithm: +widely used in GA/GP community
        +
        Number of offspring:  +small (historically, 1)
        +
        Selection: tournament +(you can use ranking or proportional, but it will be rather inefficient).
        +
        Replacement: +An eoSSGAxxxReplacement. 
        +
        Remark: You can +also use the eoPlusReplacement, but you divert from the original SSGA
      • -(MU+Lambda)-Evolution Strategy
      • +(MU+Lambda)-Evolution Strategy: +The elitist ES strategy (Rechenberg 71 and Schwefel 81)
        +
        Number of offspring:  +Any
        +
        Selection: eoDetSelect +(batch deterministic).
        +
        Replacement: +eoPlusReplacement
        +
        Remark: You could +also use eoEPReplacement, to smoothen the selective pressure during replacement, +thus getting close to EP evolution engine
      • -(MU,LAMBDA)-Evolution Strategy
      • +(MU,Lambda)-Evolution Strategy: +The non-elitist ES strategy
        +
        Number of offspring:  +> P
        +
        Selection: eoDetSelect +(batch deterministic).
        +
        Replacement: +eoCommaReplacement
        +
        Remark: You can +also add weak elitism to preserve the best individual +- though you'd probably use the plus strategy if you want (strong) elitism.
      • -Evolutionary Programming
      • +Evolutionary Programming: +The historical method of L. Fogel (65)
        +
        Number of offspring:  +P
        +
        Selection: eoDetSelect +(batch deterministic). Every individual reproduces exactly once.
        +
        Replacement: +eoEPReplacement, though one historical replacement was the determnistic +replacement - i.e. in EO the eoPlusReplacement).
        +
        Remark: Close +to an (P+P)-ES
      • -You name it :-)
      • +You name it :-): +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).

      diff --git a/eo/tutorial/html/eoProgramming.html b/eo/tutorial/html/eoProgramming.html index 2951fde81..2ad60f5c8 100644 --- a/eo/tutorial/html/eoProgramming.html +++ b/eo/tutorial/html/eoProgramming.html @@ -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 operator() method requires and what kind of result it produces. See EO -conventions, and the inheritance +conventions, +and the inheritance diagram of class eoFunctorBase. +
      For a more complete introduction to functors, with detailed discussion, +go to the STL +documentation - as STL also heavily relies on functors, and the eoFunctorBase +paradigm is borrowed from there.

      Functors: Example:

      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.
      But you don't have to know more than a few words of STL to use EO (like with "hello", "please" and "goodbye" you can survive in a foreign country :-) and even to contribute to new EO features. -

      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, I don't -understand everything :-) +Moreover, while browsing through EO code, you will gradually learn how +to use STL, especially if you check at the SGI STL +Web site from time to time, where you can not only download STL, but +also browse in the Programmer's guide  for isntance from the Table +of Content. +

      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, I +don't understand everything :-)

      STL provides the user with containers, iterators and algorithms. 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 :-)

      STL: Containers
      Containers are high level data types used to hold simpler data - the most widely used example of a container is the vector @@ -351,6 +362,8 @@ names of the variables they are used to initialize, e.g.


    •  

        +
        +
       

      class eoMyClass
      {
      public: diff --git a/eo/tutorial/html/eoTutorial.html b/eo/tutorial/html/eoTutorial.html index 00734f654..bb185886b 100644 --- a/eo/tutorial/html/eoTutorial.html +++ b/eo/tutorial/html/eoTutorial.html @@ -11,8 +11,9 @@ documentation


      Welcome to EO, the Evolving Objects library, -and to -  +and to
      + +

      EO Tutorial

      @@ -63,6 +64,12 @@ and to quickly reach some specific part of the code.
      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. +
    • +For those who wish to get deeper in STL (Standard Template Library), you +might visit the well documented SGI +STL Web site. But don't forget you'll find the very basic minimum in +EO programming hints.
    • +
    • And, last but not least, we assume you know approximately that an Evolutionary Algorithm looks like this, but otherwise you can try this very