Package smile.gap
In a genetic algorithm, a population of strings (called chromosomes), which encode candidate solutions (called individuals) to an optimization problem, evolves toward better solutions. Traditionally, solutions are represented in binary as strings of 0s and 1s, but other encodings are also possible. The evolution usually starts from a population of randomly generated individuals and happens in generations. In each generation, the fitness of every individual in the population is evaluated, multiple individuals are stochastically selected from the current population (based on their fitness), and modified (recombined and possibly randomly mutated) to form a new population. The new population is then used in the next iteration of the algorithm. Commonly, the algorithm terminates when either a maximum number of generations has been produced, or a satisfactory fitness level has been reached for the population. If the algorithm has terminated due to a maximum number of generations, a satisfactory solution may or may not have been reached.
A typical genetic algorithm requires:
 a genetic representation of the solution domain.
 a fitness function to evaluate the solution domain.
The fitness function is defined over the genetic representation and measures the quality of the represented solution. The fitness function is always problem dependent. In some problems, it is hard or even impossible to define the fitness expression; in these cases, interactive genetic algorithms are used.
Once we have the genetic representation and the fitness function defined, GA proceeds to initialize a population of solutions randomly, then improve it through repetitive application of mutation, crossover, inversion and selection operators.
The population size depends on the nature of the problem, but typically contains several hundreds or thousands of possible solutions. Traditionally, the population is generated randomly, covering the entire range of possible solutions (the search space). Occasionally, the solutions may be "seeded" in areas where optimal solutions are likely to be found.
During each successive generation, a proportion of the existing population is selected to breed a new generation. Individual solutions are selected through a fitnessbased process, where fitter solutions (as measured by a fitness function) are typically more likely to be selected. Certain selection methods rate the fitness of each solution and preferentially select the best solutions. Other methods rate only a random sample of the population, as this process may be very timeconsuming.
After selection, a second generation population of solutions is generated through genetic operators: crossover (also called recombination), and/or mutation. For each new solution to be produced, a pair of "parent" solutions is selected for breeding from the pool selected previously. By producing a "child" solution using the above methods of crossover and mutation, a new solution is created which typically shares many of the characteristics of its "parents". New parents are selected for each new child, and the process continues until a new population of solutions of appropriate size is generated. Generally the average fitness will have increased by this procedure for the population.
Although Crossover and Mutation are known as the main genetic operators, it is possible to use other operators such as regrouping, colonizationextinction, or migration in genetic algorithms.
This generational process is repeated until a termination condition has been reached. Common terminating conditions are:
 A solution is found that satisfies minimum criteria
 Fixed number of generations reached
 The highest ranking solution's fitness is reaching or has reached a plateau such that successive iterations no longer produce better results

ClassDescriptionThe standard bit string representation of the solution domain.Artificial chromosomes in genetic algorithm/programming encoding candidate solutions to an optimization problem.The types of crossover operation.Fitness<T extends Chromosome>A measure to evaluate the fitness of chromosomes.GeneticAlgorithm<T extends Chromosome>A genetic algorithm (GA) is a search heuristic that mimics the process of natural evolution.Artificial chromosomes used in Lamarckian algorithm that is a hybrid of evolutionary computation and a local improver such as hillclimbing.The way to select chromosomes from the population as parents to crossover.