VectorCrossoverPipeline is a BreedingPipeline which implements a simple default crossover
for VectorIndividuals. Normally it takes two individuals and returns two crossed-over
child individuals. Optionally, it can take two individuals, cross them over, but throw
away the second child (a one-child crossover). VectorCrossoverPipeline works by calling
defaultCrossover(...) on the first parent individual.

Typical Number of Individuals Produced Per produce(...) call
2 * minimum typical number of individuals produced by each source, unless tossSecondParent
is set, in which case it's simply the minimum typical number.

Number of Sources
2

Parameters

base.tossbool = true or false (default)/td>

(after crossing over with the first new individual, should its second sibling individual be thrown away instead of adding it to the population?)

Produces n individuals from the given subpopulation
and puts them into inds[start...start+n-1],
where n = Min(Max(q,min),max), where q is the "typical" number of
individuals the BreedingSource produces in one shot, and returns
n.

Constructor Detail

VectorCrossoverPipeline

Method Detail

defaultBase

Returns the default base for this prototype.
This should generally be implemented by building off of the static base()
method on the DefaultsForm object for the prototype's package. This should
be callable during setup(...).

setup

Sets up the BreedingPipeline. You can use state.output.error here
because the top-level caller promises to call exitIfErrors() after calling
setup. Note that probability might get modified again by
an external source if it doesn't normalize right.

The most common modification is to normalize it with some other
set of probabilities, then set all of them up in increasing summation;
this allows the use of the fast static BreedingSource-picking utility
method, BreedingSource.pickRandom(...). In order to use this method,
for example, if four
breeding source probabilities are {0.3, 0.2, 0.1, 0.4}, then
they should get normalized and summed by the outside owners
as: {0.3, 0.5, 0.6, 1.0}.

Produces n individuals from the given subpopulation
and puts them into inds[start...start+n-1],
where n = Min(Max(q,min),max), where q is the "typical" number of
individuals the BreedingSource produces in one shot, and returns
n. max must be >= min, and min must be >= 1. For example, crossover
might typically produce two individuals, tournament selection might typically
produce a single individual, etc.