diff --git a/eo/tutorial/html/eoLesson4.html b/eo/tutorial/html/eoLesson4.html index 8699cb0ad..541c23058 100644 --- a/eo/tutorial/html/eoLesson4.html +++ b/eo/tutorial/html/eoLesson4.html @@ -15,13 +15,19 @@ - EO documentation
+
+
User's guide: General +- Bitstring - Real - ES +- Programmer's guide: General +- Memory management - Parameters +

Tutorial Lesson 4: fully operational EA

In this lesson, you will still use the same Evolutionary Algorithm. But this time you will have full control of all components -from the command-line or a parameter file. +from the command-line or a parameter file. You can even use the algorithm decribed here without any other knowledge of EO, just by writing your fitness function as a plain C++ function. This is why this lesson starts with a user's guide, @@ -31,9 +37,10 @@ algorithms.
However, the ultimate purpose of this tutorial is to be able to do your own experiments - and these these will likely fall outside the scope of these two programs. This is why you should also read the programmer's -guides, as the structure and memory managements are here radically -different that in the 3 previous lessons - though relying of course on -the same objects. +guides, as the structure and memory managements +are here radically different that in the 3 previous lessons - though relying +of course on the same objects. Note that eoPersistent objects and eoParam +objects are handled by different mechanisms.
 


@@ -53,8 +60,8 @@ is a user guide, not a programming guide. In particular, the not the names of the underlying classes (though they should be similar in most cases). -

User's guide: -Parameter input The way to input parameters +

User's guide:Parameter +input The way to input parameters has already be described in Lesson 3. To get a list of parameters, type the command with option --help (or -h): with both testBit and testReal this will result in @@ -67,8 +74,8 @@ has already be described in Lesson or testReal.status that contains the list of all recognized parameters and has the format of an input parameter file. -User's guide:The -status file +User's guide:The +status file
This file will always contain the list of the parameters that have been actually used by the last run of the program, however thay have been entered (try testBit @@ -80,8 +87,8 @@ by the user. in sections. Note, however, that this format is not mandatory in the param file, as only the keywords are processed. -

User's guide:Representation-independent -parameters +

User's guide:Representation-independent +parameters
In what follows, the fixed font colored text is directly taken from the status file and is commented between the lines. The presentation follows the status file format - only two sections are @@ -352,13 +359,13 @@ default value. current generation upon Ctrl C

Boolean parameter: if true, Ctrl C only stops after the current generation as completed (eventually -dumping population to a file if some saver is active). THis very useful +dumping population to a file if some saver is active). This very useful feature is only available in Unix at the moment. Default is false.


-

User's guide: -Bistring specific parameters +

User's guide:Bistring +specific parameters
The following describes the specific parameters that are available in program BitEA to evolve genotypes that are bitstrings.
The two representation-dependent sections are concerned repectively @@ -453,13 +460,13 @@ operators).
 


-

User's guide: -Real-valued specific parameters +

User's guide:Real-valued +specific parameters
The following describes the specific parameters that are available in programs RealEA and ESEA to evolve genotypes that are vector<double>. -
RealEA  +
RealEA implements what can be called a "real-coded GA", where everything is identical to the bitstring case above (except initialization and operators that are specific to vector<double> of course) and ESEA @@ -626,8 +633,8 @@ The value of standard deviation for Gaussian mutation - fixed along evolution (see the Evolution Strategy program below for self-adaptive mutations).


-

User's guide: -ES-real-valued specific parameters +

User's guide:ES +with self-adative mutation specific parameters
The following describes the specific parameters for program ESEA, that implements the full Evolution-Strategy self-adaptive mutation mechanism - together with specific ES crossover operators. The initialization section @@ -724,7 +731,7 @@ The factor for the mutation of the rotation angles in the case of the full correlated mutation. Default is 0.0873 (following Schwefel).

-


+

Programmer's guide

At the moment, you will have to browse in the source (colored!) code @@ -736,8 +743,8 @@ code of Lesson3, except for the memory management, performed through an eoState object (notice that all make_xxx calls have an eoState as second parameter). -

Programmer's guide: The -make_xxx files +

Programmer's guide: The +make_xxx files

Interface: all make_xxx files have as first two parameters an eoParser and an eoState. @@ -798,7 +805,7 @@ management that this imposes.
 
 

Programmer's -guide: Memory management +guide: Memory management
As already said, all functions have an eoState as second argument - and that object is used to store the functor objects that were simply declared as variables of the main function up to now : @@ -807,8 +814,8 @@ detailed explanations and take a look at the code of Programmer's -guide: Memory management of eoParam -objects +guide: Memory management +of eoParam objects

It has been seen in Lesson 3 that parameters could be read from command-line and/or a parameter file using an eoParser object. However, the memory mangement problem also concerns EO parameter @@ -837,13 +844,15 @@ to an eoParam object that is hold by the eoParser - and deleted whith it. between the arguments of the constructor of an eoParam object and the method createParam of an eoParser object: first, you need to provide the additional section parameter (used only when outputting the eoParser); second you -must make sure that the first argument -is of the correct type otherwise the compiler will complain. +must +make sure that the first argument is of the correct type otherwise the +compiler will complain.

Note that if you don't later need the eoParam, but simply its value, you can even diretly write

unsigned maxGen = _parser.createParam(unsigned(100), -"maxGen", "Maximum number of generations () = none)",'G',"Stopping criterion").value(); -

Getting parameter values in different functions: +"maxGen", "Maximum number of generations () = none)",'G',"Stopping criterion").value(); +

Getting parameter values in different +functions:

It is often useful (though probably very bad programming style :-))) to be able to get the value of a user-defined parameter in two different places of the code without passing it around @@ -852,7 +861,31 @@ with exactly the same syntax than cre
Be careful that the link between both parameters is made through their longmanes (second argument), and that you must so hard-code that name in two different places with of course exactly the same spelling!!! +
Examples can be found for instance +in the make_genotype_xxx files, for the sizes of the genotypes: it is often +the case that the definition of the optimization problem requires (or computes) +such size. The idea is then that you either read or compute that size, +then create a (dummy) parameter with the name that is used later in the +make_genotype file. For instance, for bitstrings, the make_genotype_ga.h +contains the following line defining the size of the bitstring +

  unsigned theSize = +_parser.getORcreateParam(unsigned(10), "chromSize", "The length of the +bitstrings", 'n',"Problem").value(); +

If you want to define that size earlier, you should write somewhere +before +
  +

  unsigned requiredSize  += ... ; +
 _parser.createParam(requiredSize, +"chromSize", "The length of the bitstrings", 'n',"Problem"); +

Of course, if that size is mandatory, you should NOT modify it at run-time +by entering anther value !

+


User's guide: General +- Bitstring - Real - ES +- Programmer's guide: General +- Memory management - Parameters +

Lesson 3 - Lesson 5 - @@ -864,8 +897,7 @@ documentation


-Marc -Schoenauer
+Marc Schoenauer
Last modified: None of your business!