Hi All We need to make a decision on the chromosome hierarchy, proposed for *commons-math-ga* module. Currently the hierarchy is designed as shown in the diagram below.
[image: image.png] *Brief description:* 1) The chromosome hierarchy is based on it's internal representation of Genotype. 2) The phenotype of chromosomes is kept as a Generic parameter <*P>*. 3) Decoder is introduced to convert Genotype to Phenotype. 4) FitnessFunction is introduced to calculate Fitness of chromosomes. 5) AbstractChromosome represents the chromosome abstraction for all genotypes. 6) AbstractListChromosome has been introduced to represent the abstraction for List based Genotype. 7) Any chromosome representing list based genotypes should extend AbstractListBasedChromosome. 8) All other chromosomes should extend the AbstractChromosome class. 9) BinaryChromosome(not committed) is introduced to represent binary genotypes and extends AbstractChromosome. *Pros:* 1) This hierarchy maintains a separation of Genotype and Phenotype. 2) Chromosome class with the same genotype can represent different phenotypes with different implementations of Decoders. 3) Users will be able to use primitive types for higher dimensions by extending the AbstractChromosome class. 4) Unlike the legacy model all concrete chromosomes are reusable with proper implementation of FitnessFunction and Decoder. 5) Any custom list based genotypes can be implemented by extending AbstractListChromosome class. 6) Internal genotype representations have been exposed which enabled the reuse of crossover and mutation operators. I would like to request everyone to review the design and reply in case of any concerns. Thanks & Regards -- Avijit Basak