1 | This package provides various common selection operators. In ECJ, selection |
---|
2 | operators (called SelectionMethods) appear as leaf nodes in breeding pipelines. |
---|
3 | If you're having trouble selecting, we suggest you use TournamentSelection, |
---|
4 | perhaps with a tournament size of 2. |
---|
5 | |
---|
6 | Some of these methods require that all fitnesses be >= 0. |
---|
7 | |
---|
8 | Other methods, when first requested to select an individual, buffer up a large |
---|
9 | number of precomputed selections to provide later, or compute certain |
---|
10 | statistics to be used later. Such selection methods cannot be used efficiently |
---|
11 | in steady state algorithms. |
---|
12 | |
---|
13 | ec.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 | |
---|
25 | ec.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 | |
---|
29 | ec.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 | |
---|
35 | ec.select.FitProportionateSelection |
---|
36 | Selects from among the individuals in the population in proportion |
---|
37 | to their fitness values (which must all be >= 0). |
---|
38 | |
---|
39 | ec.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 | |
---|
50 | ec.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 | |
---|
60 | ec.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 | |
---|
64 | ec.select.FirstSelection [acceptable for Steady State] |
---|
65 | Always selects the first individual in the population array. Only |
---|
66 | used for debugging purposes. |
---|
67 | |
---|
68 | ec.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 | |
---|
78 | ec.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. |
---|