GAGS genetic algorithm C++ class library

GAGS has been superseded by a new class library, EO
; this zip-file includes everything needed to compile GAGS, included examples, and works with Microsoft's Visual C++ 5.0.

Features [GAGS

Requisites
Download
Papers
Products
Links
History
GAGS is a C++ class library which contains classes used to program all the elements that constitute a Genetic Algorithm. As such, it includes classes for
  1. Chromosomes, which are the basic building blocks of a genetic algorithms. Chromosomes are bit strings, and have a variable length.
  2. Genetic operators, which are not part of the chromosome class, but are outside it; this way, operators are not reduced to mutation and crossover: there are 9 predefined genetic operators: bit-flip mutation, crossover (uniform, 1 and n-point, and gene-boundary respecting), creep (change gene value by 1), remove/reinsert, transpose (permute genes), and kill, remove, and randomAdd, which alter the length of the chromosome. New operators can be added and used in the same way as the predefined. Operators can be applied blindly, or to a certain part of a chromosome.
  3. Views, which represent the chromome and are used to evaluate and print it; views are objects to watch the chromosome as a float or int array or whatever is needed to evaluate it.
  4. Population, which includes a list of chromosomes to be evaluated, sorts them when they are; and includes operators for generational replacement, and a list of genetic operators together with their rates; the number of chromosomes and the list of operators and their rates can be changed in runtime.
The evaluation or fitness function can be any C or C++ function, and it can return any class or type; thus, fitness is not reduced to a floating point number: it can be an array or any other user-defined type; the only requirement is that it has ordering operators defined.

Current version is 1.0, which is a conceptual improvement over version 0.95; some things have been dropped, and some others added.

A more complete conceptual description is in a paper presented in MALFO´96. A tutorial on how to write GA programs using GAGS is also available online; you can also download a PostScript version. Examples from that tutorial are at ftp://geneura.ugr.es/GAGS/gags-examples.tar.gz.

Requisites [GAGS
Features
Download
Papers
Products
Links
History
GAGS needs and works with the following packages:
  1. The GNAT auxiliary package has to be downloaded first. This is an auxiliary toolbox which includes a spoof of the STL library. It will probably be dropped soon. To install it, do it the usual way: configure, make and make install, and then install it in a place in which GAGS can see it. If it is not an standard directory, you will have to add it by hand to the GAGS Makefile.
  2. gcc 2.7.2 or later, which can be downloaded from your closest GNU site, like ftp://prep.ai.mit.edu, or ftp://ftp.etsimo.uniovi.es in Spain.
Do not forget to read the README file before installing.
Download and install [GAGS
Features
Requisites
Papers
Products
Links
History
Latest version is at ftp://geneura.ugr.es/GAGS/GAGS-1.0.2.tar.gz. There is a version for Win95/NT available (see below).

Install gnat before, and then, to compile and install it, type

unix% mkdir GAGS-1.0.2
unix% cd GAGS-1.0.2
unix% gzcat ../GAGS-1.0.2.tar.gz | tar xvf -
unix% configure --prefix=
unix% make 
unix% make install
unix% make demo
unix% po
, which will compile (with some warnings, but don't pay them much attention), install, and then compile and run a demo, which runs a genetic algorithm on a variable-size chromosome. Fitness is just the sum of the gene values.

More GAGS in the bag

Matthew Faupel has created an incredible Java port of GAGS, called GAJIT, which is free and available under the GNU's General Public License. You can also download the local mirror.

The Windows version, ported by Alex Iskold, is also available from ftp://geneura.ugr.es/GAGS/VC-GAGS.zip

Papers [GAGS
Features
Requisites
Download
Products
Links
History
Some cute things have been made using GAGS; some of them are available online:
Products [GAGS
Features
Requisites
Download
Papers
Links
History
Some products have been developed using GAGS, mainly in-house, and here they are:
  • DEGAS, which is a DDE (Dynamic Data Exchange) client-server application: a client is written using GAGS, and DDE servers, which evaluate the fitness function, can be written using any language that supports Windows DDE. It is available as the self-extracting archive degas003.exe, but it is in Spanish. Download instructions for installing first. Besides the three evaluators (in Visual Basic, Delphi and BC++) that are bundled in the package, a new, generic function evaluator, FX, has been released. FX can parse a generic function, written in a kind-of inverse polish notation, which will be evaluated by DEGAS. It's fully documented (in Spanish), and can serve also as an example of how to build evaluators for DEGAS. FX, as well as most of the DEGAS code, has been developed by Pedro Castillo Valdivieso.
  • a GA to play MasterMind; in this Web page you select a combination and the GA tries to find it out.
Links [GAGS
Features
Requisites
Download
Papers
Products
History
These links are mainly pages that mention gags, or offer similar products.:
History [GAGS
Features
Requisites
Download
Papers
Products
Links
Version 1.0.3
released Sep5 10, 1997, with new operators (double, split), added chrom::getID, Population::desEval(), which eliminates all the evaluated population and sned its to the non-evaluated population, and updated examples files. pgenop.cc
DEGAS002
released Sept 5, 1997. Mostly a bugfix release over 001.
Version 1.0.2
released Aug 22, 1997, with a new operator (shift), some error checking added to the creep operator, and updated example file pgenop.cc
Version 1.0.1
released Aug 18, 1997. First documented 1.0 version, with changes in the overall structure over 0.9x versions.

[JJJ. J. Merelo* jmerelo@kal-el.ugr.es[E-MAIL]
Equipo GeNeura -- GeNeura Team
Departamento de Electrónica y Tecnología de los Computadores
Universidad de Granada Granada (España)
Phone: +34-58-243162; Fax: +34-58-243230