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. |
---|