old-www/HOWTO/AI-Alife-HOWTO-4.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 &amp; 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 &amp; 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>