Orbital library

Package orbital.algorithm.evolutionary

Genetic algorithms simulate nature on a very abstract level to get solutions for sophisticated problems.


Interface Summary
Gene Base interface for a gene data model in a genome.
GeneticAlgorithmProblem Hook class for problems solved by GeneticAlgorithm.

Class Summary
ConcurrenceGeneticAlgorithm This class is a genetic algorithm that weights its members in comparison to the others.
Gene.BitSet Bit string gene.
Gene.BoundedFloat Bounded floating point gene data.
Gene.BoundedInteger Bounded integer gene data.
Gene.Fixed Fixed point gene data.
Gene.Float Floating point gene data.
Gene.Integer Integer gene data.
Gene.List Represents a container gene that contains a list of other genes.
Gene.Number Numeric gene data.
GeneticAlgorithm A base class for genetic algorithms.
GeneticAlgorithm.Configuration Algorithmic configuration objects for genetic algorithms.
Genome The Genome data in a population represents a state.
IncrementalGeneticAlgorithm An incremental genetic algorithm with overlapping populations and only one reproduction per generation.
ParallelEvaluationPopulation A Population that evaluates its members fitness-weights in parallel.
Population This class represents a population of genomes as a data structure.
PopulationImpl This class implements a population of genomes and provides methods for genetic algorithms.
Selectors Selection schemes for evolutionary genetic algorithms.
SimpleGeneticAlgorithm A simple genetic algorithm with non-overlapping populations.
SteadyStateGeneticAlgorithm A steady state genetic algorithm with overlapping populations.

Package orbital.algorithm.evolutionary Description

Genetic algorithms simulate nature on a very abstract level to get solutions for sophisticated problems. The simulation corresponds to the current understanding of genetic processes. Especially promising is the usage of genetic algorithms or evolutionary programming for problems where no constructive solution algorithms are known or where they would be far too complex to implement.

With genetic algorithms, problems can be solved by checking whether one of the trial solutions (in the abstract population of data) already is a good solution to the problem. They check whether a member (called an abstract genome) fulfils all criteria required for a good solution of the problem. To create such a solution, trial genomes will be genetically recombined to form new genomes that are new members of the abstract population. Starting with some random genomes, finally one solution will be found - if our basic assumption that the evolution solves our problem in an efficient way, is true.

Genetic algorithms are searching through an arbitrary search space both for exploration and exploitation purpose. In fact, genetic algorithms perform a parallel hill-climbing search through state space (of genomes) maximizing a given fitness function. However, these parallel solutions are occasionally combined to build a new solution of (hopefully) joint force. The search is parallel since several members of a population are considered. Under certain assumptions (Goldberg. Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley. 1989), it can be shown that genetic algorithms allocate searching resources in an optimal way. By the way, genetic algorithms can even be seen as a form of reinforcement learning.

"neural networks are the second best way of doing just about anything" (Denker)
"and genetic algorithms the third"

Prior to using a genetic algorithm to solve a problem you need to decide:

  1. Which genetic representation to use for the members in state space.
  2. What fitness-evaluation to use as an objective function to maximize and guide search.
  3. Perhaps, define customized reproduction operators for the gene representation, in order to support convergence with domain knowledge.
  4. Decide which selection function to apply.

Important classes are:

See Also:

Orbital library
1.3.0: 11 Apr 2009

Copyright © 1996-2009 André Platzer
All Rights Reserved.