T - type of the permuted objectspublic abstract class RandomKey<T> extends AbstractListChromosome<Double> implements PermutationChromosome<T>
For example, the random key [0.2, 0.3, 0.8, 0.1] corresponds to the permutation of indices (3,0,1,2). If the original (unpermuted) sequence would be (a,b,c,d), this would mean the sequence (d,a,b,c).
With this representation, common operators like n-point crossover can be used, because any such chromosome represents a valid permutation.
Since the chromosome (and thus its arrayRepresentation) is immutable, the array representation is sorted only once in the constructor.
For details, see:
| Constructor and Description | 
|---|
| RandomKey(Double[] representation)Constructor. | 
| RandomKey(List<Double> representation)Constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | checkValidity(List<Double> chromosomeRepresentation)Asserts that  representationcan represent a valid chromosome. | 
| static <S> List<Double> | comparatorPermutation(List<S> data,
                     Comparator<S> comparator)Generates a representation of a permutation corresponding to the
  datasorted bycomparator. | 
| List<T> | decode(List<T> sequence)Permutes the  sequenceof objects of type T according to the
 permutation this chromosome represents. | 
| static List<Double> | identityPermutation(int l)Generates a representation corresponding to an identity permutation of
 length l which can be passed to the RandomKey constructor. | 
| static <S> List<Double> | inducedPermutation(List<S> originalData,
                  List<S> permutedData)Generates a representation of a permutation corresponding to a
 permutation which yields  permutedDatawhen applied tooriginalData. | 
| protected boolean | isSame(Chromosome another)Returns  trueiffanotheris a RandomKey and
 encodes the same permutation. | 
| static List<Double> | randomPermutation(int l)Generates a representation corresponding to a random permutation of
 length l which can be passed to the RandomKey constructor. | 
| String | toString() | 
getLength, getRepresentation, newFixedLengthChromosomecompareTo, findSameChromosome, getFitness, searchForFitnessUpdatepublic RandomKey(List<Double> representation) throws InvalidRepresentationException
representation - list of [0,1] values representing the permutationInvalidRepresentationException - iff the representation can not represent a valid chromosomepublic RandomKey(Double[] representation) throws InvalidRepresentationException
representation - array of [0,1] values representing the permutationInvalidRepresentationException - iff the representation can not represent a valid chromosomepublic List<T> decode(List<T> sequence)
sequence of objects of type T according to the
 permutation this chromosome represents. For example, if this chromosome
 represents a permutation (3,0,1,2), and the unpermuted sequence is
 (a,b,c,d), this yields (d,a,b,c).decode in interface PermutationChromosome<T>sequence - the unpermuted (original) sequence of objectssequence represented by this permutationprotected boolean isSame(Chromosome another)
true iff another is a RandomKey and
 encodes the same permutation.isSame in class Chromosomeanother - chromosome to compareprotected void checkValidity(List<Double> chromosomeRepresentation) throws InvalidRepresentationException
representation can represent a valid chromosome.checkValidity in class AbstractListChromosome<Double>chromosomeRepresentation - representation of the chromosomeInvalidRepresentationException - iff the representation can not represent a valid chromosomepublic static final List<Double> randomPermutation(int l)
l - length of the permutationpublic static final List<Double> identityPermutation(int l)
l - length of the permutationpublic static <S> List<Double> comparatorPermutation(List<S> data, Comparator<S> comparator)
data sorted by comparator. The
 data is not modified during the process.
 This is useful if you want to inject some permutations to the initial
 population.S - type of the datadata - list of data determining the ordercomparator - how the data will be comparedpublic static <S> List<Double> inducedPermutation(List<S> originalData, List<S> permutedData) throws DimensionMismatchException, MathIllegalArgumentException
permutedData when applied to
 originalData.
 This method can be viewed as an inverse to decode(List).S - type of the dataoriginalData - the original, unpermuted datapermutedData - the data, somehow permutedoriginalData -> permutedDataDimensionMismatchException - iff the length of originalData
   and permutedData lists are not equalMathIllegalArgumentException - iff the permutedData and
   originalData lists contain different datapublic String toString()
toString in class AbstractListChromosome<Double>Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.