Package org.omegahat.Numerics.GeneticAlgorithms

Interfaces and classes to perform operations using the Genetic Algorithm approach to combinatorial optimization and exploration.

See:
          Description

Interface Summary
Evolution An interface for objects that make evolution happen.
EvolutionListener  
FitnessNumeric The interface that declares a calculation method for fitness, with numeric parameters and a numeric result.
Individual An interface representing the characteristics of one individual in the population.
Population An interface to represent a collection of individuals.
Randomizer An interface with the randomizing methods needed for most genetic algorithms.
Selection The methods needed to select individuals and pairs from a population for breeding and mutation.
Trait An interface to represent the characteristics of individuals that can vary in the population, and whose values potentially affect the ``fitness'' of the individuals, and therefore their chances to breed and survive.
 

Class Summary
EvolutionBasic An implementation of the Evolution interface that prepares an array of new individuals by performing a specified number of breeding and mutation events.
EvolutionEvent  
IndividualBasic A class defining some utilities for individuals in genetic algorithm populations.
IndividualNumeric A class that evaluates the individual's fitness by delegating the computation to a property that implements the FitnessNumeric interface.
IndividualOmega Individual objects using an Omegahat expression to evaluate fitness, and a database to store traits by name.
PopulationOrdered A population of individuals, maintained as a vector in order of increasing fitness.
RandomizerUtil A class that uses the Java class java.util.Random to implement Randomizer.
SelectionSplit Class that implements the selection methods by splitting the individuals with probability 0.5 at a specified fraction.
SummaryBasic A primitive listener to EvolutionEvents.
TraitLevels A trait class representing a choice from a finite set of alternatives (the levels).
TraitNumeric Traits as a numeric array.
 

Package org.omegahat.Numerics.GeneticAlgorithms Description

Interfaces and classes to perform operations using the Genetic Algorithm approach to combinatorial optimization and exploration.

The package is organized around three conceptual levels: populations containing individuals containing traits. A population of individuals evolves, each individual representing one set of characteristics. Optimality is associated with a fitness criterion, possibly but not necessarily numeric. The population evolves through breeding new individuals, mutating single individuals, and selecting (i.e., killing off) individuals. The breeding and mutating of individuals are defined as operations on the traits of each individual. A trait is similar to what is called a ``chromosome'' in some approaches to genetic algorithms, but more general and easier to type.

The classes in this package can be used with the Optimizers package to perform a fairly conventional optimization. In this context, traits correspond to model parameters and evolution becomes a sequence of iterations of the optimizer. The fitness is numeric and corresponds to the objective function for optimization (except that fitness is usually maximized and optimization often defined as minimization). Some suitable convergence criterion will be defined for the population values of fitness.

Use of the package for optimization is narrower than necessary, however. Genetic algorithms are more naturally thought of as evolving a population (a set of parameter values in optimization terms) to reflect good objective function values without necessarily reducing to a single best set of parameters. In this sense genetic algorithms are better than conventional local optimizers for exploring complicated objectives.