[6152] | 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. |
---|