Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OKBJavaConnector/ECJClient/src/ec/select/README @ 10677

Last change on this file since 10677 was 6152, checked in by bfarka, 14 years ago

added ecj and custom statistics to communicate with the okb services #1441

File size: 4.6 KB
Line 
1This package provides various common selection operators.  In ECJ, selection
2operators (called SelectionMethods) appear as leaf nodes in breeding pipelines.
3If you're having trouble selecting, we suggest you use TournamentSelection,
4perhaps with a tournament size of 2.
5
6Some of these methods require that all fitnesses be >= 0.
7
8Other methods, when first requested to select an individual, buffer up a large
9number of precomputed selections to provide later, or compute certain
10statistics to be used later.  Such selection methods cannot be used efficiently
11in steady state algorithms.
12
13ec.select.MultiSelection
14  This isn't a selection method so much as a utility procedure.  The
15  algorithm maintains some number of subsidiary selection methods
16  (the 'selects').  When asked to produce a child, it picks a subsidiary
17  according to its associated probability; it then asks for a child from
18  that subsidiary.  The probability is defined in the 'probability'
19  parameter in the subsidiary pipeline.  Compare to
20  ec.breed.MultiBreedingPipeline, which does more or less the same
21  thing, but as a BreedingPipeline, always copies the children produced
22  from its sources.  MultiSelection, like a good selection operator,
23  makes no such copies (and so is a bit more efficient in this context).
24
25ec.select.BestSelection
26  Always selects uniformly from among the best N individuals in the
27  population.  Can also optionally select from among the N worst.
28
29ec.select.TournamentSelection   [acceptable for Steady State]
30  When asked to select an individual, first picks N individuals at
31  random with replacement, then returns the fittest individual among
32  those N.  The size of N is known as the tournament size, and you
33  specify this.  Can also optionally select the worst among the N.
34
35ec.select.FitProportionateSelection
36  Selects from among the individuals in the population in proportion
37  to their fitness values (which must all be >= 0).
38
39ec.select.SUSSelection
40  Performs Stochastic Universal Sampling selection, a variant of
41  fitness proportionate selection which guarantees that sufficiently
42  fit individuals will always be selected at least once.  When first
43  asked to select, SUSSelection computes selection choices for an entire
44  populations' worth of individuals beforehand.  It then begins handing
45  these choices out in response to successive requests.  When the choices
46  have been depleted, SUSSelection computes another populations's worth.
47  Like fitness proportionate selection, SUSSelection requires that all
48  fitnesses be >= 0.
49
50ec.select.GreedyOverselection
51  A version of FitProportionateSelection used in early forms of genetic
52  programming.  The individuals are divided by fitness into two groups:
53  the good group and the bad group.  To select an individual, the
54  algorithm first picks either the good group or the bad group, then
55  performs fitness proportionate selection within that group.  You
56  specify the size of the good group and the probability that it will
57  be selected.  Like fitness proportionate selection, SUSSelection
58  requires that all fitnesses be >= 0.
59
60ec.select.RandomSelection   [acceptable for Steady State]
61  Always provides a random individual.  This is equivalent to a
62  tournament selection with a tournament size of 1.
63
64ec.select.FirstSelection    [acceptable for Steady State]
65  Always selects the first individual in the population array.  Only
66  used for debugging purposes.
67
68ec.select.BoltzmannSelection    [NOTE: UNTESTED]
69  Performs Boltzman Selection, variation of fitness proportionate
70  selection which makes fitness differences insignificant initially
71  and more prominent as time goes on (think Simulated Annealing).
72  Each generatiowe compute a temperature, defined as the initial
73  temperature (which you define) minus the current generation times
74  the cooling rate (which you also define).  If the temperature is
75  below 1.0, the fitnesses are not adjusted.  Otherwise each
76  fitness is adjusted as E^(fitness / temperature).
77
78ec.select.SigmaScalingSelection   [NOTE: UNTESTED]
79  Performs Sigma Scaling, a variation of fitness propoprtionate
80  selection which stretches fitnesses out if they have been
81  all bunched up together, enabling fitness proportionate
82  selection methods to still distinguish between them.  We begin
83  by computing the mean and standard deviation of the current
84  fitnesses.  If the standard deviation is not zero, we then
85  adjust each fitness as 1 + (fitness - mean)/(2 * standardDeviation).
86  If the standard deviation is zero, all fitnesses are set to 1.
87  If any fitness is less than a minimal acceptable fitness (the "floor"),
88  it is set to the floor.  This prevents fitnesses from getting stretched
89  so small that they cannot compete.  You specify the floor.
Note: See TracBrowser for help on using the repository browser.