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

Reply via email to