Genetic Programming

In genetic programming, normal genetic operations of crossover, mutation and reproduction are applied to computer code to create steadily improving and functioning computer code.

PANDOR

Daxtron PANDOR

PANDOR is both a 7-node network computer system and a machine language genetic programming system. Given data sets and an evaluation function the system evolves machine code for the x86 processor using a closely related virtual machine. This virtual machine, in addition to providing assembly language operators, also provides instructions for:

  • Selection of the data set a genome selects to evolve upon
  • Parameters for the genome's own evolution (mutation rate, crossover rate, etc.)
  • Mappings of subsets of input and output data

Processors exchange program descriptions between themselves to develop a better overall solution.

How does Genetic Programming differ from AI?

Someone asked how does Genetic Programming differ from Artificial Intelligence? I am going to assume AI means either heuristic search based AI (like chess systems) or Expert Systems.

  • Both use search processes. Heuristic AI systems represent their search as changes in configurations of data. GP searches and changes entire programs or routines. The field of Genetic Algorithms is related to GP but uses data like AI. In fact a GP program is just data, only it is data that is interpreted as a program.
  • Heuristic search AI and Expert Systems focus on abstract knowledge, while genetic search methods use methods inspired from biological genetic operations, and focuses more on operational sequencing.
  • Genetic systems explore multiple paths simultaneously; each individual in a population is a potential solution to the problems the environment poses. The population is the GP system memory. AI systems tend to focus on paths one at a time, and explore variations in rapid succession.
  • Genetic systems combine information between individuals to create possible new solutions. AI systems tend to modify single solutions by addition and deletion, not combination with other solutions.
  • AI systems tend to be deterministic. GP processes have a basic element of randomness.
  • Good GP systems test their potential solutions over multiple environmental conditions. The best solutions survive and get a chance at improvement.
  • GP tends to be an ‘any time’ algorithm. You can always run it longer, and if you need something now, you can pick the current best solution and use that until something better evolves.
  • A basic assumption is that genetic processes worked in nature and thus is worth exploring. Even though bacteria can take several minutes for a generation, a computer can simulate a genome in milliseconds, and be combined in clusters to simulate large populations.
  • Genetic processes are adaptive. Nothing weeds out bad ideas like survival pressure.
  • GP is not limited to just natural genetic processes. AI search and other processes can be used to change evolved program design. Such changes are viewed as “macro-mutations” (many mutations that occurred all at once). Such manipulation does not violate the algorithm, since eventually the GP would discover the genome on its own (but maybe after a few million generations). They get evaluated just like any other genome.
  • Multiple computers can be configured to model environments with barriers or varying conditions, and thus promotes both robustness and solution diversity.

The short answer is: if you can describe how to solve a problem, then AI, expert systems, and regular programming work just fine. However, if you do not know how to solve a problem, but you do know how to recognize good versus bad solutions to the problem, then genetic methods are worth looking at.

Genetic Programming Links

Genetic Programming Tutorial Gives a basic overview of the Genetic Programming operations.

Genetic Programming Inc. John Koza is a pioneer in the field of genetic programming. Genetic Programming Inc. is currently doing research and development aimed at producing human-competitive results, with emphasis on the areas of:

  • Automated synthesis of analog electrical circuits
  • Automated synthesis of controllers
  • Problems in computational molecular biology, including metabolic pathways and genetic networks
  • Various other problems involving cellular automata, multi-agent systems, operations research, and other areas of design
  • Using genetic programming as an automated "invention machine" (for creating new and useful patentable new inventions)

He is the author of numerous patents and books, plus he has a 1000 node cluster. His really is bigger!

Genetic Programming ORG has general information on conferences, references and the field in general.

AIM Learning Technologies by Bazhalf and Peter Nordin utilize the similar operations on the machine language level with a 100x speed-up.

An On-Line Method to Evolve Behavior and to Control a Miniature Robot in Real Time with Genetic Programming by Bazhalf and Nordin evolve real-time obstacle avoiding behavior from sensorial data on a running robot.

An Evolutionary Architecture for a Humanoid Robot (PDF) by Bazhalf and Nordin gives an overview of their plans to expand to a humanoid robot.

Evolving Hand-Eye Coordination for a Humanoid Robot with Machine Code Genetic Programming by W. B. Langdon and Nordin.

Genetic Programming Bibliography index page by W. B. Langdon contains a list of authors and their genetic programming papers.

Other Genetic-Inspired Projects

Geneobyte CAM-Brain developed for Advanced Telecommunications Reasearch (ATR) in Kyoto, Japan to support Hugo de Garis. Evolves FPGA designs based on a neural network model. de Garis’ original funding organization STARLAB went bankrupt, so he now has a Professorship at Utah State University, USA. He also offers a Ph.D. level course in "brain building," and offers source code to his evolving network simulator.

Evolutionary Electronics Web Links lists projects around the world interested in developing evolving hardware systems.

EvoWeb Homepage is an online info service for evolutionary computing.