Package io.jenetics

Class PartiallyMatchedCrossover<T,C extends Comparable<? super C>>

java.lang.Object
io.jenetics.AbstractAlterer<G,C>
io.jenetics.Recombinator<G,C>
io.jenetics.Crossover<EnumGene<T>,C>
io.jenetics.PartiallyMatchedCrossover<T,C>
All Implemented Interfaces:
Alterer<EnumGene<T>,C>

public class PartiallyMatchedCrossover<T,C extends Comparable<? super C>> extends Crossover<EnumGene<T>,C>
The PartiallyMatchedCrossover (PMX) guarantees that all Genes are found exactly once in each chromosome. No gene is duplicated by this crossover. The PMX can be applied usefully in the TSP or other permutation problem encodings. Permutation encoding is useful for all problems where the fitness only depends on the ordering of the genes within the chromosome. This is the case in many combinatorial optimization problems. Other crossover operators for combinatorial optimization are:
  • order crossover
  • cycle crossover
  • edge recombination crossover
  • edge assembly crossover

The PMX is similar to the two-point crossover. A crossing region is chosen by selecting two crossing points.

     C1 = 012|345|6789
     C2 = 987|654|3210
 
After performing the crossover, we normally got two invalid chromosomes.
     C1 = 012|654|6789
     C2 = 987|345|3210
 
Chromosome C1 contains value 6 twice and misses value 3. On the other side chromosome C2 contains the value 3 twice and misses value 6. We can observe that this crossover is equivalent to the exchange of the values 3 -> 6, 4 -> 5 and 5 -> 4. To repair the two chromosomes, we have to apply this exchange outside the crossing region.
     C1 = 012|654|3789
     C2 = 987|345|6210
 
The PartiallyMatchedCrossover class requires chromosomes with the same length. An IllegalArgumentException is thrown at runtime if this requirement is not fulfilled.
Since:
1.0
Version:
4.4
See Also: