[6152] | 1 | This directory contains some simple utility breeding pipelines. These |
---|
| 2 | pipelines don't make modifications of individuals, so if you're looking |
---|
| 3 | for crossover or mutation etc., you'll need to check in other packages |
---|
| 4 | more specifically designed for your representation. |
---|
| 5 | |
---|
| 6 | ec.breed.ReproductionPipeline |
---|
| 7 | Requests an individual from its sole source pipeline, then |
---|
| 8 | makes a copy of it and returns the copy. Largely used in the |
---|
| 9 | genetic programming package. |
---|
| 10 | |
---|
| 11 | ec.breed.MultiBreedingPipeline |
---|
| 12 | When asked to create one or more children, selects from among |
---|
| 13 | some N source pipelines attached to it, requests indivdiuals |
---|
| 14 | from the chosen source, copies them, and returns them. The |
---|
| 15 | selection procedure is probabilistic, based on the 'probability' |
---|
| 16 | values stored in each of the sources (in fact, |
---|
| 17 | MultiBreedingPipeline is the reason those probability values exist. |
---|
| 18 | This is historical: we probably should have stored them in |
---|
| 19 | the MultiBreedingPipeline instead! Might change in the future.) |
---|
| 20 | |
---|
| 21 | ec.breed.ForceBreedingPipeline |
---|
| 22 | When asked to create some N children, this repeatedly requests from |
---|
| 23 | its sole source some M<=N children at a time (you specify the M) |
---|
| 24 | until it gets the N children asked for. This is useful for various |
---|
| 25 | minor tricks, such as forcing Crossover to only produce one individual. |
---|
| 26 | |
---|
| 27 | ec.breed.BufferedBreedingPipeline |
---|
| 28 | When asked to create some N children, this makes a large request |
---|
| 29 | from its sole source to create some M >= N children at a time |
---|
| 30 | (you specify the M). It then returns N of these children, storing |
---|
| 31 | away the other M - N ones. When asked again to create some more |
---|
| 32 | children, it reaches into this storage and provides some of them. |
---|
| 33 | When the storage is depleted, it creates another M children. This |
---|
| 34 | is useful for certain minor tricks: for example, enabling you to cross |
---|
| 35 | over two individuals, then cross them over *again*. We'd do that by |
---|
| 36 | attaching the same BufferedBreedingPipeline (with M=2) to _both_ |
---|
| 37 | sources of a CrossoverPipeline (use the "same" options). The |
---|
| 38 | BufferedBreedingPipeline then has another CrossoverPipeline as its |
---|
| 39 | source. When the top CrossoverPipeline asked for its first child |
---|
| 40 | to cross over, the BufferedBreedingPipeline would demand two children |
---|
| 41 | from the subsidiary CrossoverPipeline (already crossed over), then |
---|
| 42 | provide one of them. When the second child is requested, the remaining |
---|
| 43 | child would be provided. |
---|
| 44 | |
---|
| 45 | ec.breed.GenerationSwitchPipeline |
---|
| 46 | This pipeline takes two sources. If the generation is less than G, |
---|
| 47 | then the pipeline provides copies of individuals from source 0. Else |
---|
| 48 | it provides copies of individuals from source 1. |
---|