The AbleGeneticObject class is used as the population members in an AbleGeneticSearchAgent. It defines the chromosome type (String or double[]), length, and string vocabulary. The GeneticObject also defines (and may implement) the set of available genetic operators and fitness function. Thus any specialized knowledge and processing of the chromosomes is encapsulated in the GeneticObject subclass.
A GeneticObject may directly implement the function we are trying to optimize or solve. In this case, the computeFitness() method would contain that implementation. Alternatively, the GeneticObject may act as an intermediary for an AbleAgent or AbleBean. The GeneticObject class must return an instance of the AbleAgent which is to be used to compute the fitness function. This agent is called the EvaluationAgent and may be as simple or complex as required by the application.