816 lines
30 KiB
HTML
816 lines
30 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
|
|
<TITLE>GNU/Linux AI & Alife HOWTO: Evolutionary Computing</TITLE>
|
|
<LINK HREF="AI-Alife-HOWTO-5.html" REL=next>
|
|
<LINK HREF="AI-Alife-HOWTO-3.html" REL=previous>
|
|
<LINK HREF="AI-Alife-HOWTO.html#toc4" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="AI-Alife-HOWTO-5.html">Next</A>
|
|
<A HREF="AI-Alife-HOWTO-3.html">Previous</A>
|
|
<A HREF="AI-Alife-HOWTO.html#toc4">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="Evolutionary Computing"></A> <A NAME="s4">4.</A> <A HREF="AI-Alife-HOWTO.html#toc4">Evolutionary Computing</A> </H2>
|
|
|
|
<P>Evolutionary computing is actually a broad term for a vast
|
|
array of programming techniques, including genetic algorithms,
|
|
complex adaptive systems, evolutionary programming, etc.
|
|
The main thrust of all these techniques is the idea of
|
|
evolution. The idea that a program can be written that will
|
|
<I>evolve</I> toward a certain goal. This goal can be
|
|
anything from solving some engineering problem to winning a
|
|
game.</P>
|
|
|
|
|
|
<H2><A NAME="ss4.1">4.1</A> <A HREF="AI-Alife-HOWTO.html#toc4.1">EC class/code libraries</A>
|
|
</H2>
|
|
|
|
|
|
<P>These are libraries of code or classes for use in programming within
|
|
the evolutionary computation field. They are not meant as stand alone
|
|
applications, but rather as tools for building your own applications.</P>
|
|
<P>
|
|
<DL>
|
|
<P>
|
|
<A NAME="ANNEvolve"></A> </P>
|
|
<DT><B>ANNEvolve</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://annevolve.sourceforge.net/">annevolve.sourceforge.net</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>A collection of programs using evolved artificial neural networks to
|
|
solve a series of problems. The long term goal of the project is to
|
|
advance our level of understanding about simulated evolution as a means
|
|
to configure and optimize Artificial Neural Nets (ANNs). The medium
|
|
term goal is to apply our methods to a series of interesting problems
|
|
such as sail boat piloting and playing the game NIM.</P>
|
|
<P>A secondary goal is educational in nature. We attempt to write our
|
|
software with ample explanation, not just for the user, but for the
|
|
engineer/programmer/scientist who wants to understand the innermost
|
|
detail. All of the source code is freely available to anyone to use
|
|
without restriction.</P>
|
|
<P>All of the ANNEvolve software is implemented in C and Python.</P>
|
|
|
|
<P>
|
|
<A NAME="EAP"></A> </P>
|
|
<DT><B>EAP</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://code.google.com/p/deap/">http://code.google.com/p/deap/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>EAP has been built using the Python and UNIX programming philosophies
|
|
in order to provide a transparent, simple and coherent environment for
|
|
implementing your favourite evolutionary algorithms. EAP is very easy
|
|
to use even for those who do not know much about the Python programming
|
|
language. EAP uses the object oriented paradigm that is provided by
|
|
Python in order to make development simple and beautiful. It also
|
|
contains a 15 illustrative and diversified examples, to help newcomers
|
|
to ramp up very quickly in using this environment.</P>
|
|
<P>It includes Genetic Algorithms using any imaginable representation,
|
|
Genetic Programming with strongly and loosely typed trees in addition
|
|
to automatically defined functions, Evolution Strategies (including
|
|
Covariance Matrix Adaptation), multiobjective optimization techniques
|
|
(NSGA-II and SPEA2), easy parallelization of algorithms and much more
|
|
like milestones, genealogy, etc.</P>
|
|
|
|
<P>
|
|
<A NAME="daga"></A> </P>
|
|
<DT><B>daga</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://garage.cps.msu.edu/software/daga3.2/">garage.cps.msu.edu/software/daga3.2/</A></LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>daga is an experimental release of a 2-level genetic algorithm
|
|
compatible with the GALOPPS GA software. It is a meta-GA which
|
|
dynamically evolves a population of GAs to solve a problem presented to
|
|
the lower-level GAs. When multiple GAs (with different operators,
|
|
parameter settings, etc.) are simultaneously applied to the same
|
|
problem, the ones showing better performance have a higher probability
|
|
of surviving and "breeding" to the next macro-generation (i.e.,
|
|
spawning new "daughter"-GAs with characteristics inherited from the
|
|
parental GA or GAs. In this way, we try to encourage good
|
|
problem-solving strategies to spread to the whole population of GAs.</P>
|
|
|
|
<P>
|
|
<A NAME="DEAP"></A> </P>
|
|
<DT><B>DEAP</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://deap.googlecode.com">http://deap.googlecode.com</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>DEAP is intended to be an easy to use distributed evolutionary
|
|
algorithm library in the Python language. Its two main components are
|
|
modular and can be used separately. The first module is a Distributed
|
|
Task Manager (DTM), which is intended to run on cluster of computers
|
|
using TCP or a MPI connection. The second part is the Evolutionary
|
|
Algorithms in Python (EAP) framework. EAP is the evolutionary core of
|
|
DEAP, it provides data structures, methods and tools to design any kind
|
|
of evolutionary algorithm. It works in perfect harmony with DTM,
|
|
allowing easy parallelization of any demanding evolutionary task.</P>
|
|
|
|
<P>
|
|
<A NAME="dgpf"></A> </P>
|
|
<DT><B>dgpf</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://dgpf.sourceforge.net/">dgpf.sourceforge.net</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>The Distributed Genetic Programming Framework (DGPF) is a scalable Java
|
|
environment for heuristic, simulation-based search algorithms of any
|
|
kind and Genetic Algorithms in special. We use the broad foundation of
|
|
a search algorithms layer to provide a Genetic Programming system which
|
|
is able to create Turing-complete code.</P>
|
|
<P>It's under the LGPL license. It allows you to use heuristic searches
|
|
like GA and randomized Hill Climbing for any problem space you like to
|
|
with just minimal programming effort. Also, you may distribute all
|
|
these searches over a network, using the client/server, the
|
|
peer-to-peer, or even a client/server+ peer-to-peer hybrid distribution
|
|
scheme. You also can construct heterogeneous search algorithms where GA
|
|
cooperates with Hill Climbing without changing any code.</P>
|
|
|
|
<P>
|
|
<A NAME="Ease"></A> </P>
|
|
<DT><B>Ease</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.sprave.com/Ease/Ease.html">www.sprave.com/Ease/Ease.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Ease - Evolutionary Algorithms Scripting Evironment - is an extension
|
|
to the Tcl scripting language, providing commands to create, modify,
|
|
and evaluate populations of individuals represented by real number
|
|
vectors and/or bit strings.</P>
|
|
|
|
<P>
|
|
<A NAME="EO"></A> </P>
|
|
<DT><B>EO</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://eodev.sourceforge.net/">eodev.sourceforge.net</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>EO is a templates-based, ANSI-C++ compliant evolutionary
|
|
computation library. It contains classes for any kind of
|
|
evolutionary computation (specially genetic algorithms) you might
|
|
come up to. It is component-based, so that if you don't find the
|
|
class you need in it, it is very easy to subclass existing
|
|
abstract or concrete class.</P>
|
|
|
|
<P>
|
|
<A NAME="Evocosm"></A> </P>
|
|
<DT><B>Evocosm</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.coyotegulch.com/products/libevocosm/">http://www.coyotegulch.com/products/libevocosm/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Evocosm is a set of classes that abstract the fundamental components of
|
|
an evolutionary algorithm. See the site for details, but here is a
|
|
simple list of the provided classes; Random Numbers, OpenMP,
|
|
Floating-Point Chromosomes, Roulettte Wheels, Organisms, Fitness
|
|
Landscapes, Evocosms, Fitness Scaling, Migration, Selecting Survivors,
|
|
Reproduction, Mutation Operations.</P>
|
|
|
|
<P>
|
|
<A NAME="evolver"></A> </P>
|
|
<DT><B>evolver</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="https://launchpad.net/evolver">https://launchpad.net/evolver</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>A Python library for creating and working with genetic algorithms and
|
|
genetic (evolved) programs. Allows one to do Python-based evolutionary
|
|
programming; string-based as well as source code tree node
|
|
optimization/search solution discovery.</P>
|
|
|
|
<P>
|
|
<A NAME="Fortran GA"></A> </P>
|
|
<DT><B>FORTRAN GA</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://cuaerospace.com/carroll/ga.html">cuaerospace.com/carroll/ga.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>This program is a FORTRAN version of a genetic algorithm driver.
|
|
This code initializes a random sample of individuals with
|
|
different parameters to be optimized using the genetic algorithm
|
|
approach, i.e. evolution via survival of the fittest. The
|
|
selection scheme used is tournament selection with a shuffling
|
|
technique for choosing random pairs for mating. The routine
|
|
includes binary coding for the individuals, jump mutation, creep
|
|
mutation, and the option for single-point or uniform crossover.
|
|
Niching (sharing) and an option for the number of children per
|
|
pair of parents has been added. More recently, an option for
|
|
the use of a micro-GA has been added.</P>
|
|
|
|
<P>
|
|
<A NAME="FREVO"></A> </P>
|
|
<DT><B>FREVO</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://frevo.sourceforge.net/">http://frevo.sourceforge.net/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>FREVO is an open-source framework developed in Java to help engineers
|
|
and scientists in evolutionary design or optimization tasks. The major
|
|
feature of FREVO is the componentwise decomposition and separation of
|
|
the key building blocks for each optimization tasks. We identify these
|
|
as the problem definition, solution representation and the optimization
|
|
method. This structure enables the components to be designed separately
|
|
allowing the user to easily swap and evaluate different configurations
|
|
and methods or to connect an external simulation tool.</P>
|
|
|
|
<P>
|
|
<A NAME="GALib"></A> </P>
|
|
<DT><B>GAlib: Matthew's Genetic Algorithms Library</B><DD><P>
|
|
<UL>
|
|
<LI>Web Site:
|
|
<A HREF="http://lancet.mit.edu/ga/">http://lancet.mit.edu/ga/</A></LI>
|
|
<LI>Download:
|
|
<A HREF="http://lancet.mit.edu/ga/dist/">http://lancet.mit.edu/ga/dist/</A></LI>
|
|
<LI>Register GAlib at:
|
|
<A HREF="http://lancet.mit.edu/ga/Register.html">http://lancet.mit.edu/ga/Register.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>GAlib contains a set of C++ genetic algorithm objects. The
|
|
library includes tools for using genetic algorithms to do
|
|
optimization in any C++ program using any representation and genetic
|
|
operators. The documentation includes an extensive overview of how
|
|
to implement a genetic algorithm as well as examples illustrating
|
|
customizations to the GAlib classes.</P>
|
|
|
|
|
|
<P>
|
|
<A NAME="GALOPPS"></A> </P>
|
|
<DT><B>GALOPPS</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://garage.cse.msu.edu/software/galopps/">http://garage.cse.msu.edu/software/galopps/</A> </LI>
|
|
<LI>FTP site:
|
|
<A HREF="ftp://garage.cse.msu.edu/pub/GA/galopps/">ftp://garage.cse.msu.edu/pub/GA/galopps/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>GALOPPS is a flexible, generic GA, in 'C'. It was based upon
|
|
Goldberg's Simple Genetic Algorithm (SGA) architecture, in order to
|
|
make it easier for users to learn to use and extend.</P>
|
|
<P>GALOPPS extends the SGA capabilities several fold:
|
|
<UL>
|
|
<LI> (optional) A new Graphical User Interface, based on TCL/TK,
|
|
for Unix users, allowing easy running of GALOPPS 3.2 (single
|
|
or multiple subpopulations) on one or more processors. GUI
|
|
writes/reads "standard" GALOPPS input and master files, and
|
|
displays graphical output (during or after run) of
|
|
user-selected variables.</LI>
|
|
<LI> 5 selection methods: roulette wheel, stochastic remainder
|
|
sampling, tournament selection, stochastic universal sampling,
|
|
linear-ranking-then-SUS.</LI>
|
|
<LI> Random or superuniform initialization of "ordinary"
|
|
(non-permutation) binary or non-binary chromosomes; random
|
|
initialization of permutation-based chromosomes; or
|
|
user-supplied initialization of arbitrary types of chromosomes.</LI>
|
|
<LI> Binary or non-binary alphabetic fields on value-based
|
|
chromosomes, including different user-definable field sizes.</LI>
|
|
<LI> 3 crossovers for value-based representations: 1-pt, 2-pt, and
|
|
uniform, all of which operate at field boundaries if a
|
|
non-binary alphabet is used.</LI>
|
|
<LI> 4 crossovers for order-based reps: PMX, order-based, uniform
|
|
order-based, and cycle.</LI>
|
|
<LI> 4 mutations: fast bitwise, multiple-field, swap and random
|
|
sublist scramble.</LI>
|
|
<LI> Fitness scaling: linear scaling, Boltzmann scaling, sigma
|
|
truncation, window scaling, ranking.</LI>
|
|
<LI><B>Plus</B> a whole lot more....</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="GAS"></A> </P>
|
|
<DT><B>GAS</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://starship.python.net/crew/gandalf/">http://starship.python.net/crew/gandalf/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>GAS means "Genetic Algorithms Stuff".
|
|
GAS is freeware.</P>
|
|
<P>Purpose of GAS is to explore and exploit artificial evolutions.
|
|
Primary implementation language of GAS is Python. The GAS
|
|
software package is meant to be a Python framework for applying
|
|
genetic algorithms. It contains an example application where it
|
|
is tried to breed Python program strings. This special problem
|
|
falls into the category of Genetic Programming (GP), and/or
|
|
Automatic Programming. Nevertheless, GAS tries to be useful for
|
|
other applications of Genetic Algorithms as well.</P>
|
|
|
|
<P>
|
|
<A NAME="GAUL"></A> </P>
|
|
<DT><B>GAUL</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://gaul.sourceforge.net/">http://gaul.sourceforge.net/</A></LI>
|
|
<LI>SF project site:
|
|
<A HREF="http://sourceforge.net/projects/gaul/">http://sourceforge.net/projects/gaul/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>The Genetic Algorithm Utility Library (GAUL) is a flexible programming
|
|
library designed to aid development of applications that require the
|
|
use of genetic algorithms. Features include:</P>
|
|
<P>
|
|
<UL>
|
|
<LI>Darwinian, Lamarckian or Baldwinian evolutionary schemes.</LI>
|
|
<LI>Both steady-state and generation-based GAs included.</LI>
|
|
<LI>The island model of evolution is available.</LI>
|
|
<LI>Chromosome datatype agnostic. A selection of common chromosome
|
|
types are built-in.</LI>
|
|
<LI>Allows user-defined crossover, mutation, selection, adaptation
|
|
and replacement operators.</LI>
|
|
<LI>Support for multiple, simultaneously evolved,populations.</LI>
|
|
<LI>Choice of high-level or low-level interface functions.</LI>
|
|
<LI>Additional, non-GA, optimisation algorithms are built-in for
|
|
local optimisation or comparative purposes.</LI>
|
|
<LI>Trivial to extend using external code via the built-in code
|
|
hooks.</LI>
|
|
<LI>May be driven by, or extended by, powerful S-Lang scripts.</LI>
|
|
<LI>Support for multiprocessor calculations.</LI>
|
|
<LI>Written using highly portable C code.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="GECO"></A> </P>
|
|
<DT><B>GECO</B><DD><P>
|
|
<UL>
|
|
<LI>FTP site:
|
|
<A HREF="http://common-lisp.net/project/geco/">http://common-lisp.net/project/geco/</A></LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>GECO (Genetic Evolution through Combination of Objects), an
|
|
extendible object-oriented tool-box for constructing genetic algorithms
|
|
(in Lisp). It provides a set of extensible classes and methods
|
|
designed for generality. Some simple examples are also provided to
|
|
illustrate the intended use.</P>
|
|
|
|
<P>
|
|
<A NAME="GenePool"></A> </P>
|
|
<DT><B>GenePool</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.rubinsteyn.com/genepool/">http://www.rubinsteyn.com/genepool/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>GenePool is a framework for writing evolutionary optimization
|
|
algorithms in OCaml. This library is not a complete solution but rather
|
|
is a generic skeleton which takes care of the plumbing and nuisances of
|
|
optimization. You provide GenePool with functions that give meaning to
|
|
fitness and reproduction and after a specified number of generation,
|
|
GenePool returns an array of the best "genomes" it evolved.</P>
|
|
|
|
<P>
|
|
<A NAME="Genetic"></A> </P>
|
|
<DT><B>Genetic</B><DD><P>
|
|
<UL>
|
|
<LI>Web site: ???</LI>
|
|
<LI>You can get it from the debian repository:
|
|
<A HREF="http://packages.qa.debian.org/g/genetic.html">http://packages.qa.debian.org/g/genetic.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>This is a package for genetic algorythms and AI in Python.</P>
|
|
<P>Genetic can typically solve ANY problem that consists to minimize a
|
|
function.</P>
|
|
<P>It also includes several demos / examples, like the TSP (traveling
|
|
saleman problem).</P>
|
|
|
|
<P>
|
|
<A NAME="GPdata"></A> </P>
|
|
<DT><B>GPdata</B><DD><P>
|
|
<UL>
|
|
<LI>FTP site:
|
|
<A HREF="ftp://ftp.cs.bham.ac.uk/pub/authors/W.B.Langdon/gp-code/">ftp://ftp.cs.bham.ac.uk/pub/authors/W.B.Langdon/gp-code/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>GPdata-3.0.tar.gz (C++) contains a version of Andy Singleton's
|
|
GP-Quick version 2.1 which has been extensively altered to support:
|
|
<UL>
|
|
<LI>Indexed memory operation (cf. teller)</LI>
|
|
<LI>multi tree programs</LI>
|
|
<LI>Adfs</LI>
|
|
<LI>parameter changes without recompilation</LI>
|
|
<LI>populations partitioned into demes</LI>
|
|
<LI>(A version of) pareto fitness</LI>
|
|
</UL>
|
|
|
|
This ftp site also contains a small C++ program (ntrees.cc) to
|
|
calculate the number of different there are of a given length and
|
|
given function and terminal set.</P>
|
|
|
|
<P>
|
|
<A NAME="Java GP - gpjpp"></A> </P>
|
|
<DT><B>gpjpp Genetic Programming in Java</B><DD><P>
|
|
<UL>
|
|
<LI>The code can be found in the tarball linked from
|
|
"GP and Othello Java code and READMEs" on this page:
|
|
<A HREF="http://www1.cs.columbia.edu/~evs/ml/hw4.html">http://www1.cs.columbia.edu/~evs/ml/hw4.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>gpjpp is a Java package I wrote for doing research in genetic
|
|
programming. It is a port of the gpc++ kernel written by Adam
|
|
Fraser and Thomas Weinbrenner. Included in the package are
|
|
four of Koza's standard examples: the artificial ant, the
|
|
hopping lawnmower, symbolic regression, and the boolean
|
|
multiplexer. Here is a partial list of its features:
|
|
<UL>
|
|
<LI>graphic output of expression trees</LI>
|
|
<LI>efficient diversity checking </LI>
|
|
<LI>Koza's greedy over-selection option for large populations</LI>
|
|
<LI>extensible GPRun class that encapsulates most details of a
|
|
genetic programming test</LI>
|
|
<LI>more robust and efficient streaming code, with automatic
|
|
checkpoint and restart built into the GPRun class</LI>
|
|
<LI>an explicit complexity limit that can be set on each GP</LI>
|
|
<LI>additional configuration variables to allow more testing
|
|
without recompilation</LI>
|
|
<LI>support for automatically defined functions (ADFs)</LI>
|
|
<LI>tournament and fitness proportionate selection</LI>
|
|
<LI>demetic grouping</LI>
|
|
<LI>optional steady state population</LI>
|
|
<LI>subtree crossover</LI>
|
|
<LI>swap and shrink mutation</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="jaga"></A> </P>
|
|
<DT><B>jaga</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://cs.felk.cvut.cz/~koutnij/studium/jaga/jaga.html">cs.felk.cvut.cz/~koutnij/studium/jaga/jaga.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Simple genetic algorithm package written in Java.</P>
|
|
|
|
<P>
|
|
<A NAME="JGAP"></A> </P>
|
|
<DT><B>JGAP</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://jgap.sourceforge.net/">http://jgap.sourceforge.net/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>JGAP (pronounced "jay-gap") is a Genetic Algorithms and Genetic
|
|
Programming component provided as a Java framework. It provides basic
|
|
genetic mechanisms that can be easily used to apply evolutionary
|
|
principles to problem solutions.</P>
|
|
<P>JGAP was designed to be very easy to use "out of the box", while also
|
|
designed to be highly modular so that more adventurous users can easily
|
|
plug-in custom genetic operators and other sub-components.</P>
|
|
|
|
<P>
|
|
<A NAME="lil-gp"></A> </P>
|
|
<DT><B>lil-gp</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://garage.cse.msu.edu/software/lil-gp/">http://garage.cse.msu.edu/software/lil-gp/</A></LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<DT><B>patched lil-gp *</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://cs.gmu.edu/~sean/research/lil-gp-patch/">http://cs.gmu.edu/~sean/research/lil-gp-patch/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>lil-gp is a generic 'C' genetic programming tool. It was written
|
|
with a number of goals in mind: speed, ease of use and support for a
|
|
number of options including:
|
|
<UL>
|
|
<LI> Generic 'C' program that runs on UNIX workstations</LI>
|
|
<LI> Support for multiple population experiments, using
|
|
arbitrary and user settable topologies for exchange, for
|
|
a single processor (i.e., you can do multiple population gp
|
|
experiments on your PC).</LI>
|
|
<LI> lil-gp manipulates trees of function pointers which are
|
|
allocated in single, large memory blocks for speed and to
|
|
avoid swapping.</LI>
|
|
</UL>
|
|
|
|
* The patched lil-gp kernel is strongly-typed, with modifications on
|
|
multithreading, coevolution, and other tweaks and features.</P>
|
|
|
|
<P>
|
|
<A NAME="Lithos"></A> </P>
|
|
<DT><B>Lithos</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.esatclear.ie/~rwallace/lithos.html">www.esatclear.ie/~rwallace/lithos.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Lithos is a stack based evolutionary computation system. Unlike most EC
|
|
systems, its representation language is computationally complete, while
|
|
also being faster and more compact than the S-expressions used in
|
|
genetic programming. The version presented here applies the system to
|
|
the game of Go, but can be changed to other problems by simply plugging
|
|
in a different evaluation function. ANSI C source code is provided.</P>
|
|
|
|
<P>
|
|
<A NAME="Open BEAGLE"></A> </P>
|
|
<DT><B>Open BEAGLE</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://beagle.gel.ulaval.ca/">beagle.gel.ulaval.ca</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Open BEAGLE is a C++ evolutionary computation framework. It provides a
|
|
high-level software environment to do any kind of evolutionary
|
|
computation, with support for tree-based genetic programming, bit
|
|
string and real-valued genetic algorithms, evolution strategy,
|
|
co-evolution, and evolutionary multi-objective optimization.</P>
|
|
|
|
<P>
|
|
<A NAME="PGAPack"></A> </P>
|
|
<DT><B>PGAPack</B><DD><P>Parallel Genetic Algorithm Library
|
|
<UL>
|
|
<LI>FTP site:
|
|
<A HREF="ftp://ftp.mcs.anl.gov/pub/pgapack/">ftp://ftp.mcs.anl.gov/pub/pgapack/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>PGAPack is a general-purpose, data-structure-neutral, parallel
|
|
genetic algorithm library. It is intended to provide most capabilities
|
|
desired in a genetic algorithm library, in an integrated, seamless,
|
|
and portable manner. Key features are in PGAPack V1.0 include:
|
|
<UL>
|
|
<LI>Callable from Fortran or C.</LI>
|
|
<LI>Runs on uniprocessors, parallel computers, and workstation networks.</LI>
|
|
<LI>Binary-, integer-, real-, and character-valued native data types. </LI>
|
|
<LI>Full extensibility to support custom operators and new data types.</LI>
|
|
<LI>Easy-to-use interface for novice and application users.</LI>
|
|
<LI>Multiple levels of access for expert users.</LI>
|
|
<LI>Parameterized population replacement.</LI>
|
|
<LI>Multiple crossover, mutation, and selection operators.</LI>
|
|
<LI>Easy integration of hill-climbing heuristics.</LI>
|
|
<LI>Extensive debugging facilities.</LI>
|
|
<LI>Large set of example problems.</LI>
|
|
<LI>Detailed users guide.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="PIPE"></A> </P>
|
|
<DT><B>PIPE</B><DD><P>
|
|
<UL>
|
|
<LI>FTP site:
|
|
<A HREF="ftp://ftp.idsia.ch/pub/rafal/">ftp.idsia.ch/pub/rafal</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Probabilistic Incremental Program Evolution (PIPE) is a novel
|
|
technique for automatic program synthesis. The software is written in C.
|
|
It ...</P>
|
|
<P>
|
|
<UL>
|
|
<LI>is easy to install (comes with an automatic installation tool).</LI>
|
|
<LI>is easy to use: setting up PIPE_V1.0 for different
|
|
problems requires a minimal amount of programming. User-written,
|
|
application-independent program parts can easily be reused.</LI>
|
|
<LI>is efficient: PIPE_V1.0 has been tuned to speed up
|
|
performance.</LI>
|
|
<LI>is portable: comes with source code (optimized for SunOS
|
|
5.5.1).</LI>
|
|
<LI>is extensively documented(!) and contains three example
|
|
applications.</LI>
|
|
<LI>supports statistical evaluations: it facilitates running
|
|
multiple experiments and collecting results in output files.</LI>
|
|
<LI>includes testing tool for testing generalization of evolved
|
|
programs.</LI>
|
|
<LI>supports floating point and integer arithmetic.</LI>
|
|
<LI>has extensive output features.</LI>
|
|
<LI>For lil-gp users: Problems set up for lil-gp 1.0 can be
|
|
easily ported to PIPE_v1.0. The testing tool can also be
|
|
used to process programs evolved by lil-gp 1.0.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="plop"></A> </P>
|
|
<DT><B>plop</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://code.google.com/p/plop/">http://code.google.com/p/plop/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>A Common Lisp framework for experimenting with meta-optimizing semantic
|
|
evolutionary search (
|
|
<A HREF="http://metacog.org/doc.html">MOSES</A>) and related approaches to learning with probability
|
|
distributions over program spaces based on:</P>
|
|
<P>
|
|
<UL>
|
|
<LI>reduction to normal form</LI>
|
|
<LI>representation-building</LI>
|
|
<LI>deme (sub-population) management</LI>
|
|
<LI>probabilistic model-building (aka estimation-of-distribution algorithms) </LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="Pyevolve"></A> </P>
|
|
<DT><B>Pyevolve</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://pyevolve.sourceforge.net/">http://pyevolve.sourceforge.net/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Pyevolve was developed to be a complete genetic algorithm framework,
|
|
the main objectives of Pyevolve are:</P>
|
|
<P>
|
|
<UL>
|
|
<LI>written in pure python, to maximize the cross-platform issue;</LI>
|
|
<LI>easy to use API, the API must be easy for end-user;</LI>
|
|
<LI>see the evolution, the user can and must see and interact with
|
|
the evolution statistics, graphs and etc;</LI>
|
|
<LI>extensible, the API must be extensible, the user can create new
|
|
representations, genetic operators like crossover, mutation and etc;</LI>
|
|
<LI>fast, the design must be optimized for performance;</LI>
|
|
<LI>common features, the framework must implement the most common
|
|
features: selectors like roulette wheel, tournament, ranking, uniform.
|
|
Scaling schemes like linear scaling, etc;</LI>
|
|
<LI>default parameters, we must have default operators, settings,
|
|
etc in all options;</LI>
|
|
<LI>open-source, the source is for everyone, not for only one.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>
|
|
<A NAME="pygp"></A> </P>
|
|
<DT><B>pygp</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://sourceforge.net/projects/pygp/files/">http://sourceforge.net/projects/pygp/files/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Your basic genetic algorithm package for python.</P>
|
|
|
|
<P>
|
|
<A NAME="tinygp"></A> </P>
|
|
<DT><B>tinygp</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.laserpirate.com/as3tinygp/">http://www.laserpirate.com/as3tinygp/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Small genetic programming library in C++ and ActionScript 3 (Javascript
|
|
engine embedded in Flash) with flash demos.</P>
|
|
<P>This GP library uses the standard Koza expression tree program
|
|
representation. It uses the 'grow' algorithm to generate random
|
|
expressions. Mutation is performed by selecting a random subexpression
|
|
in an expression tree, and replacing it with a new random expression
|
|
(which satisfies the maximum tree depth constraint). Crossover (mating)
|
|
between two expressions is performed by selecting a random
|
|
subexpression in each parent, then exchanging them (although it only
|
|
makes on child, not two).</P>
|
|
<P>In addition to the core code for creating, mutating, mating and
|
|
evaluating expressions, the library includes a steady-state genetic
|
|
algorithm with tournament selection, and a worst-out, elitist
|
|
replacement policy (i.e. when a new child is created, it replaces the
|
|
worse member of the population, only if it is better). </P>
|
|
|
|
<P>
|
|
<A NAME="txevolver"></A> </P>
|
|
<DT><B>txevolver</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="https://launchpad.net/txevolver">https://launchpad.net/txevolver</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>A Twisted-based set of libraries for performing calculations of genetic
|
|
algorithms as well as genetic programs in an asynchronous, distributed
|
|
manner.</P>
|
|
|
|
|
|
</DL>
|
|
</P>
|
|
|
|
|
|
<H2><A NAME="ss4.2">4.2</A> <A HREF="AI-Alife-HOWTO.html#toc4.2">EC software kits/applications</A>
|
|
</H2>
|
|
|
|
|
|
<P>These are various applications, software kits, etc. meant for research
|
|
in the field of evolutionary computing. Their ease of use will vary, as they
|
|
were designed to meet some particular research interest more than as
|
|
an easy to use commercial package.</P>
|
|
<P>
|
|
<DL>
|
|
|
|
<P>
|
|
<A NAME="ADATE"></A> </P>
|
|
<DT><B>ADATE</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www-ia.hiof.no/~rolando/adate_intro.html">www-ia.hiof.no/~rolando/adate_intro.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>ADATE (Automatic Design of Algorithms Through Evolution) is a system
|
|
for automatic programming i.e., inductive inference of algorithms,
|
|
which may be the best way to develop artificial and general
|
|
intelligence.</P>
|
|
|
|
<P>The ADATE system can automatically generate non-trivial and novel
|
|
algorithms. Algorithms are generated through large scale combinatorial
|
|
search that employs sophisticated program transformations and
|
|
heuristics. The ADATE system is particularly good at synthesizing
|
|
symbolic, functional programs and has several unique qualities.</P>
|
|
|
|
|
|
<P>
|
|
<A NAME="esep-xesep"></A> </P>
|
|
<DT><B>esep & xesep</B><DD><P>
|
|
<UL>
|
|
<LI>Web site(esep):
|
|
<A HREF="http://www.iit.edu/~elrad/esep.html">www.iit.edu/~elrad/esep.html</A></LI>
|
|
<LI>Web site(xesep):
|
|
<A HREF="http://www.iit.edu/~elrad/xesep.html">www.iit.edu/~elrad/xesep.html</A></LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>This is a new scheduler, called Evolution Scheduler, based on
|
|
Genetic Algorithms and Evolutionary Programming. It lives with
|
|
original Linux priority scheduler.This means you don't have to
|
|
reboot to change the scheduling policy. You may simply use the
|
|
manager program esep to switch between them at any time, and
|
|
esep itself is an all-in-one for scheduling status, commands,
|
|
and administration. We didn't intend to remove the original
|
|
priority scheduler; instead, at least, esep provides you with
|
|
another choice to use a more intelligent scheduler, which
|
|
carries out natural competition in an easy and effective way.</P>
|
|
<P>Xesep is a graphical user interface to the esep (Evolution
|
|
Scheduling and Evolving Processes). It's intended to show users
|
|
how to start, play, and feel the Evolution Scheduling and
|
|
Evolving Processes, including sub-programs to display system
|
|
status, evolving process status, queue status, and evolution
|
|
scheduling status periodically in as small as one mini-second.</P>
|
|
|
|
<P>
|
|
<A NAME="Corewars"></A> </P>
|
|
<DT><B>Corewars</B><DD><P>
|
|
<UL>
|
|
<LI>SourceForge site:
|
|
<A HREF="http://sourceforge.net/projects/corewars/">http://sourceforge.net/projects/corewars/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Corewars is a game which simulates a virtual machine with a number of
|
|
programs. Each program tries to crash the others. The program that
|
|
lasts the longest time wins. A number of sample programs are provided
|
|
and new programs can be written by the player. Screenshots are
|
|
available at the Corewars homepage.</P>
|
|
|
|
<P>
|
|
<A NAME="JCASim"></A> </P>
|
|
<DT><B>JCASim</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://www.jweimar.de/jcasim/">http://www.jweimar.de/jcasim/</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>JCASim is a general-purpose system for simulating cellular automata in
|
|
Java. It includes a stand-alone application and an applet for web
|
|
presentations. The cellular automata can be specified in Java, in CDL,
|
|
or using an interactive dialogue. The system supports many different
|
|
lattice geometries (1-D, 2-D square, hexagonal, triangular, 3-D),
|
|
neighborhoods, boundary conditions, and can display the cells using
|
|
colors, text, or icons.</P>
|
|
|
|
<P>
|
|
<A NAME="JGProg"></A> </P>
|
|
<DT><B>JGProg</B><DD><P>
|
|
<UL>
|
|
<LI>Web site:
|
|
<A HREF="http://jgprog.sourceforge.net/">jgprog.sourceforge.net</A></LI>
|
|
</UL>
|
|
</P>
|
|
<P>Genetic Programming (JGProg) is an open-source Java implementation of
|
|
a strongly-typed Genetic Programming experimentation platform. Two
|
|
example "worlds" are provided, in which a population evolves and
|
|
solves the problem.</P>
|
|
|
|
|
|
</DL>
|
|
</P>
|
|
|
|
|
|
|
|
|
|
<HR>
|
|
<A HREF="AI-Alife-HOWTO-5.html">Next</A>
|
|
<A HREF="AI-Alife-HOWTO-3.html">Previous</A>
|
|
<A HREF="AI-Alife-HOWTO.html#toc4">Contents</A>
|
|
</BODY>
|
|
</HTML>
|