Class Chromosome

java.lang.Object
org.apache.commons.math3.genetics.Chromosome
All Implemented Interfaces:
Comparable<Chromosome>, Fitness
Direct Known Subclasses:
AbstractListChromosome

public abstract class Chromosome extends Object implements Comparable<Chromosome>, Fitness
Individual in a population. Chromosomes are compared based on their fitness.

The chromosomes are IMMUTABLE, and so their fitness is also immutable and therefore it can be cached.

Since:
2.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
    Cached value of the fitness of this chromosome.
    private static final double
    Value assigned when no fitness has been computed yet.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Compares two chromosomes based on their fitness.
    protected Chromosome
    Searches the population for another chromosome with the same representation.
    double
    Access the fitness of this chromosome.
    protected boolean
    isSame(Chromosome another)
    Returns true iff another has the same representation and therefore the same fitness.
    void
    Searches the population for a chromosome representing the same solution, and if it finds one, updates the fitness to its value.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.commons.math3.genetics.Fitness

    fitness
  • Field Details

    • NO_FITNESS

      private static final double NO_FITNESS
      Value assigned when no fitness has been computed yet.
      See Also:
    • fitness

      private double fitness
      Cached value of the fitness of this chromosome.
  • Constructor Details

    • Chromosome

      public Chromosome()
  • Method Details

    • getFitness

      public double getFitness()
      Access the fitness of this chromosome. The bigger the fitness, the better the chromosome.

      Computation of fitness is usually very time-consuming task, therefore the fitness is cached.

      Returns:
      the fitness
    • compareTo

      public int compareTo(Chromosome another)
      Compares two chromosomes based on their fitness. The bigger the fitness, the better the chromosome.
      Specified by:
      compareTo in interface Comparable<Chromosome>
      Parameters:
      another - another chromosome to compare
      Returns:
      • -1 if another is better than this
      • 1 if another is worse than this
      • 0 if the two chromosomes have the same fitness
    • isSame

      protected boolean isSame(Chromosome another)
      Returns true iff another has the same representation and therefore the same fitness. By default, it returns false -- override it in your implementation if you need it.
      Parameters:
      another - chromosome to compare
      Returns:
      true if another is equivalent to this chromosome
    • findSameChromosome

      protected Chromosome findSameChromosome(Population population)
      Searches the population for another chromosome with the same representation. If such chromosome is found, it is returned, if no such chromosome exists, returns null.
      Parameters:
      population - Population to search
      Returns:
      Chromosome with the same representation, or null if no such chromosome exists.
    • searchForFitnessUpdate

      public void searchForFitnessUpdate(Population population)
      Searches the population for a chromosome representing the same solution, and if it finds one, updates the fitness to its value.
      Parameters:
      population - Population to search