Package org.apache.commons.math3.genetics

# 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

## Constructor Summary

Constructors
Constructor
Description
`Chromosome()`

## Method Summary

Modifier and Type
Method
Description
`int`
`compareTo(Chromosome another)`
Compares two chromosomes based on their fitness.
`protected Chromosome`
`findSameChromosome(Population population)`
Searches the `population` for another chromosome with the same representation.
`double`
`getFitness()`
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`
`searchForFitnessUpdate(Population population)`
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`

## 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