devolve



individual  singlePoint(individual)(in individual ind1, in individual ind2) if (isArray!individual);

Create a new individual by taking all of the elements from one individual after a randomly chosen point and appending them to all of the values before that point from another individual. The resulting individual will have a length no longer than the shortest of the parent individuals.

ind1 = 1111111111111
ind2 = 2222222222222
point =     *

child = 1111222222222


individual  singlePointVariable(individual)(in individual ind1, in individual ind2) if (isDynamicArray!individual);

Same as singlePoint but without size guarantees.

WARNING:
individuals sizes may grow rapidly with this crossover method.

individual  twoPoint(individual)(in individual ind1, in individual ind2) if (isArray!individual);

Create a new individual by taking all of the alleles from one individual after a randomly chosen point and before a different randomly chosen point and appending them to the alleles from the other individual which are within that range. The resulting individual will have a length no longer than the shortest of the parent individuals.

ind1 = 1111111111111
ind2 = 2222222222222
point1 =   *
point2 =         *

result = 1122221111111


individual  randomCopy(individual)(in individual ind1, in individual ind2) if (isArray!individual);

The new individual is a copy of one of the parents selected at random.