diff --git a/eo/tutorial/html/FirstBitEA.html b/eo/tutorial/html/FirstBitEA.html index db1f28cf..27a4616a 100644 --- a/eo/tutorial/html/FirstBitEA.html +++ b/eo/tutorial/html/FirstBitEA.html @@ -166,7 +166,7 @@ The actual code is in boldface and the comment in normal face.      random(VEC_SIZE, boolean_generator());
 // Initialization of the population
 eoPop<Indi> pop(POP_SIZE, random);
-  // and evaluate it in one line
+  // and evaluate it in one loop
 apply<Indi>(eval, pop); // STL syntax
diff --git a/eo/tutorial/html/FirstRealEA.html b/eo/tutorial/html/FirstRealEA.html index a942eef4..03505b29 100644 --- a/eo/tutorial/html/FirstRealEA.html +++ b/eo/tutorial/html/FirstRealEA.html @@ -117,13 +117,11 @@ The actual code is in boldface and the comment in normal face.  const float P_CROSS = 0.8; // Crossover probability
 const float P_MUT = 0.5; // mutation probability
 const double EPSILON = 0.01; // range for real uniform mutation
-  const double SIGMA = 0.01; // std. dev. of normal mutation
 // some parameters for chosing among different operators
 const double segmentRate = 0.5;        // rate for 1-pt Xover
 const double arithmeticRate = 0.5;        // rate for 2-pt Xover
 const double uniformMutRate = 0.5;          // rate for bit-flip mutation
 const double detMutRate = 0.5;            // rate for one-bit mutation
-  const double normMutRate = 0.5;            // rate for normal mutation
@@ -169,7 +167,7 @@ The actual code is in boldface and the comment in normal face.    // Initialization of the population
 eoPop<Indi> pop(POP_SIZE, random);

-  // and evaluate it in one line
+  // and evaluate it in one loop
 apply<Indi>(eval, pop); // STL syntax
@@ -244,7 +242,7 @@ The actual code is in boldface and the comment in normal face.  eoArithmeticCrossover<Indi> xoverA;
 // Combine them with relative rates
 eoPropCombinedQuadOp<Indi> xover(xoverS, segmentRate);
-  xover.add(xoverA, arithmeticRate, eo_verbose);
+  xover.add(xoverA, arithmeticRate, true);
@@ -254,16 +252,13 @@ The actual code is in boldface and the comment in normal face.  
-  // Gaussian mutation - std dev as argument
-  eoNormalMutation<Indi>  mutationN(SIGMA);
 // offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
 eoUniformMutation<Indi>  mutationU(EPSILON);
 // k (=1) coordinates of parents are uniformly modified
 eoDetUniformMutation<Indi>  mutationD(EPSILON);
 // Combine them with relative rates
 eoPropCombinedMonOp<Indi> mutation(mutationU, uniformMutRate);
-  mutation.add(mutationD, detMutRate);
-  mutation.add(mutationN, normMutRate, eo_verbose);
+  mutation.add(mutationD, detMutRate, true);
 
 // The operators are  encapsulated into an eoTRansform object
 eoSGATransform<Indi> transform(xover, P_CROSS, mutation, P_MUT);
diff --git a/eo/tutorial/html/FirstRealGA.html b/eo/tutorial/html/FirstRealGA.html index e14d5a7d..7bd1b168 100644 --- a/eo/tutorial/html/FirstRealGA.html +++ b/eo/tutorial/html/FirstRealGA.html @@ -272,7 +272,7 @@ The actual code is in boldface and the comment in normal face.  // offspring(i) is a linear combination of parent(i)
-  eoSegmentCrossover<Indi> xover;
+  eoArithmeticCrossover<Indi> xover;
diff --git a/eo/tutorial/html/SecondBitEA.html b/eo/tutorial/html/SecondBitEA.html index 59908657..222cc988 100644 --- a/eo/tutorial/html/SecondBitEA.html +++ b/eo/tutorial/html/SecondBitEA.html @@ -396,7 +396,7 @@ rates
onePointRate);
 xover.add(xoverU, URate);
 xover.add(xover2, twoPointsRate, -eo_verbose); +true); @@ -413,7 +413,7 @@ rates
 eoPropCombinedMonOp<Indi> mutation(mutationBitFlip, bitFlipRate);
 mutation.add(mutationOneBit, oneBitRate, -eo_verbose); +true);
 // The operators are  encapsulated into an eoTRansform object
 eoSGATransform<Indi> transform(xover, diff --git a/eo/tutorial/html/eoEngine.html b/eo/tutorial/html/eoEngine.html index d7de5460..019c2104 100644 --- a/eo/tutorial/html/eoEngine.html +++ b/eo/tutorial/html/eoEngine.html @@ -2,12 +2,13 @@ - Genetic Engine - - +Top-Down page - Bottom-up +page - Programming hints - EO +documentation +

Evolution Engine

@@ -27,33 +28,156 @@ Replacement Popular evolution engines -


The term evolution engine denotes the different parts that simulate -the Darwinism in Evolutionary Algorithms. +


Introduction +
The term evolution engine denotes the different parts that simulate +the Darwinism in Evolutionary Algorithms.

-

The fittest individuals are more likely to +

The fittest individuals are more likely to reproduce and survive.

Darwinism takes place in two different phases of an EA, though in many -popular variants, only one phase is activated. +popular +variants, only one phase is activated.

Selection is the Darwinistic choice of parents -that will be allowed to reproduce. +that will be allowed to reproduce.
Replacement takes place after reproduction, -and is the Darwinistic choice of those individuals that will survive, +and is the Darwinistic choice of those individuals that will survive, i.e. become the parents of the next generation.

Selection
 

Replacement +
The replacement phase takes place after the birth +of all offspring through variation operators. The idea is to close +the generation loop, i.e. to end up with a population of individuals that +will be the initial population of next generation. That population will +be built upon the old parents and the new-born offspring. +In all algorithms that come up with EO, the population +size is supposed to be constant from +one generation to the next one - though nothing stops you from writing +an algorithm with varying population size. +

Replacement: The +interface +
The abstract class for replacement procedures is the functor class +eoReplacement, +and the interface for its operator() +is +

+

void operator()(const eoPop<EOT>& +_parents, eoPop<EOT>& _offspring)

+ +

which you could have guessed from the inheritance tree for class eoReplacement., +as you see there that eoReplacement derives +from class eoBF<const eoPop<EOT>&, +eoPop<EOT>&, void>. +
This means that it takes 2 populations +(called, for obvious anthropomorphic reasons, _parents and _offspring :-) +and puts the result into population offspring (as _parents is passed as +constant +population). +

Note: After the replacement step, +all algorithms swap the parents and offspring populations - this is why +the result of the replacement is put into the _offspring population -- +the _parents being there untouched until the very last moment. +

Replacement: Instances +

    +
  • +The most straightforward replacement is ... no replacement, +or, more precisely, generational replacement: +all offspring replace all parents (used in Holland's and Goldberg's traditional +GAs). In EO, this is implemented in the eoNoReplacement +class, whose operator() does ... +exactly +nothing (remember that _parents and _offspring will be +swapped later on).
  • +
      +
  • +But the basic type of replacement in EO has two major steps, merging +both populations of parents and offspring, and reducing +this big population to the right size. The functor class is called eoMergeReduce. +and it contains +two objects of respective types eoMerge +and eoReduce and you can probably guess +what each of them actually does :-)
  • + +
      +

      +

    Available instances of eoMerge objects +are eoPlus, that simply adds +the parents to the offspring, or eoElitism, +that adds only some of the (best) parents to the offspring. A special case +of eoElistism is eoNoElitism, +an eoMerge that does nothing. +
      +

    Available instances of eoReduce are eoTruncate, +that deterministically keeps only the required number of individuals, taking +the best ones, and eoEPReduce +that usees the EP stocahstic tournamenent to reduce the population. +

    Available instances of eoMergeReduce replacement +procedures are built on the above, and include +

      +
    • +eoCommaReplacement, one of +the two standard strategies in Evolution Strategies, +selects the best offspring. It is an eoMergeReduce(eoNoElitism, +eoTruncate).
    • + +
    • +eoPlusReplacement, the other +standard Evolution Startegies replacement, +where the best from offspring+parents become the next generation. It is +an eoMergeReduce(eoPlus, eoTruncate).
    • + +
    • +eoEPReplacement, from Evolutionary +Programming historical algorithm, doing a stochastic tournament +among parents + offspring. It is an eoMergeReduce(eoPlus, +eoEPReduce).
    • +
    + +
  • +Another type of eoReplacement is eoKillReplace in which some individuals +of the population are reaplced by some of the offspring.
  • +
+ +


Replacement: Adding +(weak) elitism +
You can add what is called weak elitism +to any replacement by encapsulating it into an eoWeakElitismReplacement +object. Weak elitism ensures that the overall best +fitness in the population will never decrease: +if the best fitness in the new population is less than the best fitness +of the parent population, then the best parent is added back to the new +population, replacing the worse. +

Within EO, this is very easy to add: +

First, declare your replacement functor (here, generational, but it +can be any replacement object): +
eoNoReplacement<Indi> genReplace; +
Then wrap the weak elitism around it: +
eoWeakElitismReplacement<Indi> replace(genReplace); +
and use now replace as your replacement procedure within your algorithm. +

Note: of course, adding weak elitism to +an elitist replacement makes no sense - but will not harm either :-)

Popular evolution engines -
  -
  -

+
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! +

    +
  • +Generational Genetic Algorihtm
  • +
+ +


+


Top-Down page - Bottom-up +page - Programming hints -EO +documentation +

-Marc Schoenauer
+Marc Schoenauer -
Last -modified: Mon Oct 30 18:15:17 CET 2000 +
Last +modified: Tue. Dec. 5 2000  diff --git a/eo/tutorial/html/eoLesson1.html b/eo/tutorial/html/eoLesson1.html index 6d554483..eb46324c 100644 --- a/eo/tutorial/html/eoLesson1.html +++ b/eo/tutorial/html/eoLesson1.html @@ -219,7 +219,10 @@ objects of class
parameters, and will -be passed to the eoSGA algorithm. +be passed to the eoSGA algorithm.  +For more details on these classes, go to the top-down +corresponding pages, or to their respective documentation pages.
+
  • @@ -240,7 +243,7 @@ bit, which is specific of the bit-flip mutation.  Hence, to run the same algorithm as Goldberg's SGA, the mutation probability (at individual level) is 1, and the probability of flipping each bit is P_MUT_PER_BIT.
  • -Real The crossover eoSegmentCrossover +Real The crossover eoArithmeticCrossover is the standard arithmetic crossover for real-valued vectors, that chooses a point randomly on the segment between both parents (also termed BLX-0). eoUniformMutation diff --git a/eo/tutorial/html/eoLesson2.html b/eo/tutorial/html/eoLesson2.html index aa3e2eee..c50683ed 100644 --- a/eo/tutorial/html/eoLesson2.html +++ b/eo/tutorial/html/eoLesson2.html @@ -82,8 +82,10 @@ have to declare 3 template arguments: the type of EO object it will be applied to, the return type and the type of argument the function actually requires.
  • -


    Note: In -the previous files (Bit - Real) +
      +

      +

    Note: In the +previous files (Bit - Real) , the last 2 types were deduced from the first (2nd argument = fitness type of EO object, third = first).
      @@ -113,24 +115,28 @@ the eoPop has no idea of the eval function, so it has to be done from outside!!! You can now use different crossover -and mutation -operatorsin -the same algorithm, choosing among them according to +and +mutation +operatorsin the same algorithm, +choosing among them according to relative rates. The class eoPropCombinedxxxOp, where -xxx is either Mon (for mutations, of class eoMonOp) -or Quad (for crossovers, of class eoQuadOp), +xxx is either Mon (for mutations, of class eoMonOp) +or Quad (for crossovers, of class eoQuadOp), is derived from the corresponding eoxxxOp class. When applying the eoPropCombinedxxxOp, one of the eoxxxOp it contains is chosen by a roulette -wheel, according to their respective rates, and is applied to the arguments. +wheel, according to their respective rates, and is applied to the arguments. +For more details on these classes, go to the top-down +corresponding pages, or to their respective documentation pages.

    • -Bit 
      -Three
      crossover operators -are available: the one-point +Bit
    • + +
      Three crossover +operators are available: the one-point crossover is still there (class ), but now you also have the N-point crossover eoBinNxOver (the  number of points is 2 by default, but as always you can change @@ -138,45 +144,44 @@ that in the constructor), and the UniformeoBinUxOver (where you can eventually twidle the choice from one parent to the other by providing a probability in the constructore - defaulted to 0.5, which -amounts to symmetrical choice).
      -As for
      mutation operators, -apart from the eoBinMutation +amounts to symmetrical choice). +
      As for mutation +operators, apart from the eoBinMutation (standard bitstring mutation flipping one bit with a given probability) you can also use the eoDetBitFlip that always filps the same number of bits (1 by default, but you can change that in the constructor), randomly chosen in the bitstring. Even though the average number of bits flipped is the same if the eoBinMutation -is used with a rate of 1/N (N is the bitstring -length) the behavior of these mutation can -be very different on many problems. - +
      is +used with a rate of 1/N (N is the bitstring length) the +behavior of these mutation can be very different +on many problems.
    • -Real 
      -Two
      crossover operators -are available: the eoSegmentCrossover +Real
    • + +
      Two crossover +operators are available: the eoSegmentCrossover chooses one point uniformly on the segment joining the parents, while the eoArithmeticCrossover performs a segment crossover on each coordinate independently, which amount to choosing the offspring uniformly in the hypercube whose diagonal is -the segment joining the parents.
      -As for
      mutation operators, -apart from the eoBinMutation +the segment joining the parents. +
      As for mutation +operators, apart from the eoBinMutation (standard bitstring mutation flipping one bit with a given probability) you can also use the eoDetBitFlip that always filps the same number of bits (1 by default, but you can change that in the constructor), randomly chosen in the bitstring. And last but not least, the normal mutation eoNormMutation modifies all coordinates -with a Gaussian noise, with standard deviation passed in the constructor.
      -
      -
    +with a Gaussian noise, with standard deviation passed in the constructor.
Note: A third optional argument in method add is a boolean (defaulted to false). When true, the actual rates for all operators are displayed on the screen as percentages: you don't have to input rates that sum up to 1, all rates are scaled anyway. -

Note: The operators have to be encapsulated -into an eoTransform object -(Bit - Real) +

Note: The +operators have to be encapsulated into an eoTransform +object (Bit - Real) to be passed to the eoEasyEA algorithm. The eoSGATransform is a simple eoTransform diff --git a/eo/tutorial/html/eoOperators.html b/eo/tutorial/html/eoOperators.html index 5803ae13..5ec0e8ef 100644 --- a/eo/tutorial/html/eoOperators.html +++ b/eo/tutorial/html/eoOperators.html @@ -2,55 +2,326 @@ - + Variation Operators - - + +Top-Down page - Bottom-up +page - Programming hints - EO +documentation +
+


+
TOC : Introduction +- Crossover - Mutation +- Simple combinations - General +Operators - General combinations +
+
+

-Variation Operators

-Variation operators modify individuals, or, equivalently, move them in -the search space. They are almost always stochastic, -i.e. they generate random variations. Variation operators are classified -depending on the number of arguments they use and/or modify. -

Variation operators involving two individuals are called -crossover operators. -They can either modify one of the parents according -to the material of the other parent, or modify both parents. In EO, the -former are called Binary operators and the latter Quadratic operators. -
  -

Variation operators involving one single individual are called mutation -operators. -

Note that in EO you can define and use variatio operators that generate -any number of offspring fromany number of parents. These are called general -operators, and require advanced knowledge of EO. -

Crossover -
Crossover operators involve two parents, and can modify one of them, -or both of them. -

Using crossover operators -

Mutation -
Mutation operators modify one single individual. The corresponding -EO class is called eoMonOp. -

-Using mutation operators

-The standard EO genotypes (bistrings and real vectors) have pre-defined -mutation operators. -
  -

-Writing a mutation operator

-  -

  -

General +Variation Operators

+ +


Variation +Operators +
Variation operators modify individuals, or, equivalently, move them +in the search space. They are almost always stochastic, +i.e. they are based on random numbers, or equivalently, perform random +modifications of their arguments. Variation operators are classified depending +on the number of arguments they use and/or modify. +

Variation operators involving two individuals are called crossover +operators. They can either modify one of the parents according to the +material of the other parent, or modify both parents. In EO, the former +are called Binary operators and the latter Quadratic operators. +
Variation operators involving one single individual are called mutation +operators. +
In EO you can also define and use variation operators that generate +any number of offspring from any number of parents (sometimes termed orgy +operators). They are called general operators. +

Though most the historical evolutionary algorithms used at most one +crossover and one mutation (see e.g. the Simple Genetic Algorithm in lesson1), +the trend now in evolutionary computation is to combine operators, choosing +at run-time and for each individual which operator to apply. This can be +done in the framework of simple operators, combining for instance several +mutations into a variation operator that chooses one of them according +to user-defined preferences: such combinations are called in EO proportional +combination of simple operators (see e.g. how to define and use such +combined operators in the SGA of lesson2). +

Finally, there are many other ways to combine different variation operators +of different kind. Within EO, you can choose to apply many different types +of operator to the population, either in turn (this is called sequential +combination) or by randomly choosing among a set of operators at a given +time (this is proportional combination, generalizing the one defined for +simple operators). You can of course mix and interleave both approaches +at will, and this is described as general +combination of general operators. +

EO implementation: all variation +operators in EO derive from the base (abstract) class eoOp +(as usual, click to see the inheritance diagram). blabla +
+


+
Simple +operators: Crossover +

The characteristic of crossover operators is that they involve two parents. +However, there are crossover operators that generate two parents, and some +that generate one parent only, and both types are available in EO. The +former type (2 --> 2) is termed quadratic crossover operator, and is implemanted +in the eoQuadOp class; the latter type +(2 --> 1) is termed binary operator and is implemanted in class eoBinOp. +Both classes are, as usual, templatized by the type of individual they +can handle (see documentation for eoBinOp +and eoQuadOp). +

Note: Whereas it is straightforward +to create a binary crossover operator from a quadratic one (by discarding +the changes on the second parent), the reverse might prove impossible (imagine +a binary crossover that simply merges the parents material: there is no +way to generate two new parents from that!). +

Interfaces: +
The general approach in EO about simple variation operators is to perform +in-place +modifications, i.e. modifying the arguments rather than generating +new (modified) individuals. This results in the following interfaces for +the functor objects eoBinOp and eoQuadOp: +

void operator()(EOT & , const EOT &)         +for eoBinOp (note the const) +
void operator()(EOT & , EOT & +)                       +for eoQuadOp +

which you could have guessed from the inheritance diagrams up to the +eoBF abstract class. You can also guess that only the first argument will +be modified by an oeBin object, while both arguments will be modified by +an eoQuad object. +

Using crossover operators: +
Directly applying crossover operators is straightforward from the interface +above: +
eoBinOpDerivedClass<Indi> myBinOp(parameters);     +//  use constructor to pass +
eoQuadOpDerivedClass<Indi> myQuadOp(parameters);   +//  any useful argument +
Indi eo1= ..., eo2= ...;   // +the candidates to crossover +
myBinOp(eo1, eo2);         +// will modify eo1 only +
myQuadOp(eo1, eo2);        +// will modify eo1 and eo2 +

However, you will hardly have to do so, as operators are used within +other classes, and are applied systematically to whole sets of individuals +(e.g. that have already been selected, in standard generational evolutionary +algorithms). +
Hence the way to use such operators will more likely ressemble, if +you are using for instance an SGA, this (definition, +usage). +See also the different ways that are described below, encapsulating the +operators into combined operators objects. +
  +

Writing a crossover +operator: +
There are only two things to modify in the template +class definitions provided (apart from the name of the class you are +creating!) +

    +
  • +The constructor, where you pass to the object +any useful parameter
  • + +
  • +The operator() method, which performs the +actual crossover.
  • + +
  • +Warning: don't forget to invalidate +the fitness of any individual that has actually been modified. Otherwise, +the lazy fitness evaluation procedure in +EO will not know it should compute the fitness again and will keep the +old value.
  • +
+ +


+


Simple +operators: Mutation +
Mutation operators modify one single individual. The corresponding +EO class is called eoMonOp. and it +si as usual templatized by the type of individual it can handle (see documentation +for eoMonOp). +

Interfaces: +
The general approach in EO about simple variation operators is to perform +in-place +modifications, i.e. modifying the arguments rather than generating +new (modified) individuals. This results in the following interface for +the functor objects eoMonOp: +

void operator()(EOT & ) +

which you could have guessed from the inheritance diagrams up to the +eoUF abstract class. +

Using mutation operators: +
Directly applying mutation operators is straightforward from the interface +above: +
eoMonOpDerivedClass<Indi> myMutation(parameters); +//pass parameters in constructor +
Indi eo1 = ...;           +// eo1 is candidate to mutation +
myMutation(eo1);          +// will modify eo1 +

However, you will hardly have to do so, as operators are used within +other classes, and are applied systematically to whole sets of individuals +(e.g. that have already been selected, in standard generational evolutionary +algorithms). +
Hence the way to use such operators will more likely ressemble, if +you are using for instance an SGA, this (definition, +usage). +See also the different ways that are described below, encapsulating the +operators into combined operators objects. +

Writing a mutation +operator: +
There are only two things to modify in the template +class definitions provided (apart from the name of the class you are +creating!) +

    +
  • +The constructor, where you pass to the object +any useful parameter
  • + +
  • +The operator() method, which performs the +actual crossover.
  • + +
  • +Warning: don't forget to invalidate +the fitness of the individual - if it has actually been modified. Otherwise, +the lazy fitness evaluation procedure in +EO will not know it should compute the fitness again and will keep the +old value.
  • +
+ +
+
Combining +simple operators: proportional combinations +

The best thing to do is to go to the Lesson2 +of the tutorial, where everything is explained. +

+


General Operators -
  -
 
 

+


General +Combinations: +

There are two main ways to use and combine general operators in EO: +the proportional combination, similar to what has been described for simple +operators above, and the sequential combination, which amounts to apply +all operators in turn to a bunch of individuals, each operator being applied +with a specific probability. +

Proportional combinations behave +like a unique operator: when it is called upon a population of candidates, +an eoProportionalOpContainer enters +the following loop: +

while there are individuals left in the candidate population +

    +
  • +choose one of the included operators according to their relative rates +by some roulette wheel random choice
  • + +
  • +find out the number of parents that it requires (haha, the tricky part +if e.g. sequentialOp are imbedded :-)
  • + +
  • +gets the required number of individual from the candidates,
  • + +
  • +applies the chosen operator to those parents, generating a list of offspring
  • + +
  • +removes the parents from the candidate population
  • + +
  • +append the offspring to the result population
  • +
+Sequential combinations behave like +a unique operator: when it is called upon a population of candidates, an +eoSequentialOpContainer +enters the following loop: +

for all operators it contains, apply the operator to the candidate population, +that is +

    +
  • +start with an empty offspring population
  • + +
  • +get the number of parents the operator at hand requires (haha, the tricky +part if the operator is an eoProportionalOpContainer!!!)
  • + +
  • +flip a coin according to the operator rate. It heads, apply the operator +to the parents to generate some offspring, and append the generated offspring +to the offspring population. If tails, directly append the parents to the +offspring population
  • + +
  • +until no more parents (or an insufficient number of parents) are left in +the population. The remaining parents, if any, are copied in the offspring +population
  • + +
  • +make the offspring population the parentpopulation for next operator.
  • +
+Remark:The eoSGATransform presented in Lesson2 +can be viewed as a particular type of eoSequentialOpContainer. +It was not coded that way in order to provide a gradual introduction to +all concepts. +
Exercise: write the code to perform an +eoSGA using the eoOpContainer constructs. +

Remark: there is actually a single list +of individuals that is maintained through a clever mecahnism of mark, rewind +and unmark, but that's a purely technical matter. If you are interested, +go and check the eoOpContainer and the eoSequentialOpContainer code. +
  +

Adding operators to a container: +
The basic function to add an operator to an eoOpContainer is the method +add +from class eoOpContainer. +
It is similar to all other add +methods in other Combined things in eo (as the simple eoProportionalCombinedXXXop +described above, but also the eoCombinedContinue class or the eoCheckPoint +class). +
The syntax is straightforward, and it works with any of the operator +classes defined above: +

someOperatorType<Indi> myOperator; +
eoXXXOpContainer<Indi> myOpContainer; +
myOpContainer.add(myOperator, rate); // +rate: double whose meaning depends on XXX +

where XXX can be one of Proportional and Sequential. +
However, the way rate +will be used is highly dependent on the type of OpContainer your are creating +there: +

    +
  • +The rates for eoProportionalOpContainer +will be used in a roulette wheel choice among all operators. They can take +any value, the only important thing is their relative +values.
  • + +
  • +The "rates" for eoSequentialOpContainer actually +are probabilities, i.e. they will be used in a coin-flipping to determine +whether that particuler operator will be applied to the next candidates +at hand. They should be in [0,1] (no +error will happen if they are not, but the operator will be applied systematically +- this is equivalent of a rate equal to 1).
  • +
+ +


+


TOC : Introduction +- Crossover - Mutation +- Simple combinations - General +Operators - General combinations +
+
Top-Down page - Bottom-up +page - Programming hints -EO +documentation +

-Marc Schoenauer
+Marc Schoenauer -
Last -modified: Mon Oct 30 18:24:39 CET 2000 +
Last +modified: Fri Dec. 8 2000  diff --git a/eo/tutorial/html/eoTutorial.html b/eo/tutorial/html/eoTutorial.html index e395eba6..fb39e775 100644 --- a/eo/tutorial/html/eoTutorial.html +++ b/eo/tutorial/html/eoTutorial.html @@ -2,7 +2,6 @@ - Tutorial EO