SpaceToutou  

Beagle
Engine is an
Advanced
Genetic
Learning
Environment

[SourceForge]
[BEAGLE Wiki]
[BEAGLE Puppy]
[Distributed BEAGLE]
[BEAGLE Visualizer]
[Version française]

[Introduction]
[History]
[Features]
[Mailing Lists]
[Documentation]
[Download]
[Installation]
[Copyright]

Site Meter

Valid HTML 4.01

SourceForge.net Logo

Open BEAGLE


Open BEAGLE, a versatile EC framework

Welcome to the Open BEAGLE W3 page. Open BEAGLE is a C++ Evolutionary Computation (EC) framework. It provides an high-level software environment to do any kind of EC, with support for tree-based genetic programming; bit string, integer-valued vector, and real-valued vector genetic algorithms; and evolution strategy.

The Open BEAGLE architecture follows strong principles of object oriented programming, where abstractions are represented by loosely coupled objects and where it is common and easy to reuse code. Open BEAGLE is designed to provide an EC environment that is generic, user friendly, portable, efficient, robust, elegant and free.

Generic

With Open BEAGLE, the user can execute any kind of EC, as far as it fulfills some minimum requirements. The only necessary condition is to have a population of individuals to which a sequence of evolving operations is iteratively applied. So far, Open BEAGLE supports most mainstream EC flavors such genetic programming, bit string, integer-valued vector and real-valued vector genetic algorithms, and evolution strategy. It also includes support for advanced EC techniques such multiobjective optimization and co-evolution. The user can take any of these specialized frameworks and modify them further to create his own specialized flavor of evolutionary algorithms.

User Friendliness

Considerable efforts were deployed to make the use of Open BEAGLE as easy and pleasant as possible. Open BEAGLE possesses several mechanisms that offer a user friendly programming interface. For example, the memory management of dynamically allocated objects is greatly simplified by the use of reference counting and automatic garbage collection. The programming style promoted is high-level and allows rapid prototyping of applications.

Portability

The Open BEAGLE code is compliant with the C++ ANSI/ISO 3 standard. It only requires the Standard Template Library (STL). The framework also includes a subset of the Portable Agile C++ Classes (PACC) collection, which encapsulates calls made to the operating system in a portable fashion.

Efficiency

To insure efficient execution, particular attention was given to optimization of critical code sections. Detailed execution profiles of these sections were done. Also, the fact that Open BEAGLE is written in C++ contributes to its overall good performance.

Robustness

Many verification and validation statements are embedded into the code to ensure correct operation and to inform the user when there is a problem. Robust mechanisms for periodically saving the current evolution state have also been implemented in order to enable automatic restart of interrupted evolutions.

Elegance

The interface of Open BEAGLE was developed with care. Great energy was invested in designing a coherent software package that follows good OO and generic programming principles. Moreover, strict programming rules were enforced to make the C++ code easy to read, understand and, eventually, modify. The use of XML as file format is also a central aspect of Open BEAGLE, which provide a common ground for tools development to analyze and generate files, and to integrate the framework with other systems.

Free Sourceness

The source code of Open BEAGLE is free, available under the GNU Lesser General Public License (LGPL). Thus, it can be distributed and modified without any fee. (See section copyright for further details.)

[Top]


History

November 29, 2007: Version 3.0.3 released. Minor bug fix release, fixing a problem in reading GP ephemeral random constants primitives from XML files.

November 14, 2007: Version 3.0.2 released. Major bug fix release, in particular with CMA-ES and STGP mutation. Added fast compilation mode on Unix by the use of a single source file for each library. Fixes to allow compilation under MinGW/Cygwin.

February 6, 2006: Creation of the BEAGLE Wiki, intended to hold the documentation and development discussions. Manual and compilation HOWTO moved on the wiki.

October 10, 2005: Version 3.0.1 released. Minor changes to allow compilation on Mac OS X and with precompiled headers. Update to the compilation HOWTO.

October 5, 2005: Version 3.0.0 released. This is a major release. Incorporation of the PACC collection. Integer-valued vector GA representation. Major improvements to the GP framework: dynamic ADFs, variable number of primitives arguments, etc. Miscellaneous bug fixes and minor improvements. Manual, XML schema file and compilation HOWTO updated.

October 28, 2004: Version 2.2.0 released. Major update of the GA framework: flexible parameter limits management, CMA-ES algorithm and SBX crossover added. Several bug fixes. New introductory document: Genericity in Evolutionary Computation Software Tools: Principles and Case-Study.

August 26, 2004: Distributed BEAGLE version 0.9 released. Major changes, bug fixes, and new documentation. Initial release of BEAGLE Visualizer, the Web interface to visualize and analyze Open BEAGLE output. Update of the XML schema file describing Open BEAGLE file format.

August 3, 2004: Version 2.1.5 released. Minor changes and bug fixes. Migration buffers added to Deme class, random number generator seed read from file /dev/urandom on Unix, HFC migration operator modified, bug fix in Gray to binary GA bit string conversion, and several other minor bug fixes.

July 5, 2004: Version 2.1.4 released. Minor features addition. Support for weighted GP primitives sets, HFC migration operator, lexicographic parsimony pressure tournament selection operator, co-evolution termination broadcast operator, and some minor bug fixes.

June 1, 2004: Initial release of Distributed BEAGLE, the Open BEAGLE extension for distributed evolutionary computations.

April 13, 2004: Version 2.1.3 released. Bug fix in the ES component of GA framework. Manual updated.

April 08, 2004: Version 2.1.2 released. Minor features addition. Support for gzipped files (requires zlib), file backup mechanism, and several other small changes. Compilation HOWTO updated.

January 17, 2004: Version 2.1.1 released. Minor bug fixes and some modifications to compile (once again) on gcc 2.96 and Borland C++ Builder 5. Manual updated. XML schema description file format added.

December 11, 2003: Version 2.1.0 released. Major features addition. Enhancements include support for real-valued GA, evolution strategy, multiobjective optimization, co-evolution, new GA crossover operators, population seeding from file, and five new illustrative examples. Compilation HOWTO has also been updated.

October 2, 2003: Open BEAGLE development and packages now moved on SourceForge.net. User manual and compilation HOWTO updated for version 2.0.0.

September 24, 2003: Version 2.0.0 released. This is a major update. New XML file format, new XML parsing kit, breeder model, dynamic evolver configuration, important changes in hall-of-fame and statistics, new GA example OneMax, example allzeros renamed ZeroMin. Update now!

May 29, 2003: Version 1.1.1 released. Minor bug fixes, new GA example (allzeros), and some modifications to compile with MS Visual C++ .NET 2003 (7.1) BETA.

April 30, 2003: Version 1.1.0 released. Major update. New logging mechanism with XML output. Modification of the statistics structure. Some name changes. Improved reference manual. Compilation HOWTO and manual updated.

March 20, 2003: Version 1.0.3 released. Essentially a bug fix release, with some small improvements.

March 6, 2003: New Open BEAGLE compilation HOWTO available. The Open BEAGLE manual has been revised in order to remove the installation instructions.

November 30, 2002: Open BEAGLE manual for version 1.0.1 is now available.

November 21, 2002: Version 1.0.1 released. Include new Unix compilation front-end (with autoconf/automake) and project files for MS Visual C++ .NET.

September 17, 2002: A mailing list on Open BEAGLE has been started on Yahoogroups.

July 24, 2002: Open BEAGLE manual is now available.

July 22, 2002: Release of version 1.0.0.

June 13, 2002: Release of version 0.16.2 (BETA). Sections features and download added. Update of section installation. Version 0.16.2 is the BETA release of version 1.0.

March 21, 2002: Initial public release of Open BEAGLE, version 0.16.1 (ALPHA).

January 25, 2002: Release of the Web site.

[Top]


Features

Object-Oriented Foundations:

  • Modern C++ programming approach
  • Structured OO architecture
  • Smart pointers for automatic memory allocation management
  • XML file formats with built-in parsing facility
  • Sophisticated logging mechanism with output in XML
  • Parameters and algorithms dynamically configurable by files
  • Generic representation of the algorithms using a plug-in mechanism
  • Milestone mechanism for evolution recovery and results analysis

Open BEAGLE generic EA framework:

  • Many predefined operators
  • Generational, steady-state, (mu,lambda), and (mu+lambda) replacement strategies
  • Population composed of multiple demes
  • Individuals represented on multiple genomes
  • History of best-of-run individuals for the whole population and for each demes
  • Complete evolution statistics
  • Multiobjective optimization (currently NSGA-II and NPGA2)
  • Population seeding from file

GA framework (linear representations):

  • Bit string GA representation with decoder functions (binary and Gray-coded)
  • Integer-valued vector GA representation
  • Real-valued vector GA representation
  • Evolution strategy (ES)
  • Covariance Matrix Adaptation ES (CMA-ES)
  • Three generic crossover operators (one-point, two-points, uniform) and two float vector specific operators (BLX-alpha and SBX)
  • Four specific mutation operators
  • Operators for shuffled indices genotypes for the integer-valued vector representation
  • Seven illustrative examples (OneMax, ZeroMin (OneMax minimization), Function Maximization with Bit String GA, Function Maximization with Real-Valued GA, Function Maximization with ES, Multiobjective 0/1 Knapsack, Travelling Salesman Problem)

GP framework:

  • Standard crossover operator
  • Five mutation operators: standard (Koza GP I) mutation, swap node mutation, shrink mutation, swap subtree mutation, and random ephemerals value mutation
  • Three initializations method for trees: full, grow, and half-and-half; each ramped or not
  • Abstract primitive class
  • Many predefined primitives
  • Automatically defined functions (ADF)
  • Random ephemeral constants
  • Constrained GP tree operators with support for strongly-typed genetic programming
  • Three illustrative examples (Symbolic Regression, Even 6-Parity, and Spambase)

Co-evolution framework:

  • Co-evolution support based on multi-threading
  • Multi-threading classes incapsulating OS-specific calls
  • Co-evolutionary fitness evaluation operator for basic EC and GP
  • Two illustrative examples (Two-Populations Iterated Prisoner's Dilemma, Co-evolutionary Symbolic Regression)
[Top]


Mailing Lists

The Open BEAGLE mailing list on Yahoogroups is intended to announce new Open BEAGLE releases, to ask questions of the framework, and to discuss on the future developments. It is highly suggested to join it, or at least to consult it frequently, if you are interested by the EC framework. If you have any problems on Open BEAGLE, first consult this list to see if any previous discussions can help you, then ask a question on the list if you still can't solve it.

The Open BEAGLE developers list on SourceForge is intended to users interested in contributing to the framework developments. It is more technically oriented and generally has a higher traffic than the Yahoogroups list. It also presents the new features added to the bleeding edge version of the framework, available in the CVS repository.

[Top]


Documentation

Several documents on Open BEAGLE are available:

  • <good starting point>Genericity in Evolutionary Computation Software Tools: Principles and Case-Study</good starting point>
    Introduction paper on generic EC software in general, and on Open BEAGLE in particular. (pdf).
  • Open BEAGLE Manual
    Detailled manual with a tutorial, an architecture manual, and an user manual (html).
  • Open BEAGLE Compilation HOWTO
    Detailled instructions on the compilation of the libraries and examples, and the configuration of a new software projects with Open BEAGLE (html).
  • Open BEAGLE Reference Manual
    Reference manual doxygenerated from the source code (html, html-tarball, html-zip).
  • Open BEAGLE XML Schema
    Formal description of Open BEAGLE XML dialect (file format) in W3C XML Schema. (XML Schema, HTML documentation).
  • <outdated>Open BEAGLE: A New Versatile C++ Framework for Evolutionary Computations</outdated>
    Introduction paper presented at the GECCO 2002 as late-breaking paper (pdf).

Authors of scientific papers including results generated using Open BEAGLE are encouraged to cite the following paper.

Christian Gagné and Marc Parizeau. Genericity in Evolutionary Computation Software Tools: Principles and Case-Study. International Journal on Artificial Intelligence Tools, vol. 15, no. 2, p. 173-194, April 2006.

[Top]


Download

The current stable version is 3.0.3 (tarball, zip, change log).

The latest development version is available from the CVS repository on SourceForge.

[Top]


Installation

The detailed installation instructions are available in the Open BEAGLE Compilation HOWTO.

You need a recent ANSI/ISO 3 C++ compiler with a complete up-to-date STL and C++ library to use Open BEAGLE.

COMPILER STATUS

Compiler
State
Comments
gcc 4.x
gcc 3.x
gcc 2.96
OK
Follow the installation instruction for Unix.
gcc 2.95
egcs 1.1.2
OK
Need the addition of file sstream.
See http://gcc.gnu.org/faq.html#2.95sstream.
Borland C++ Builder 5
OK
No supported anymore, but should still work.
MS Visual C++ .NET 2003
OK
Copy file beagle/include/beagle/config.hpp.msvcpp as file beagle/include/beagle/config.hpp, then use the solution files in folders MSVCPP to compile the libs and examples.
MS Visual C++ .NET 2002
OK
Solution and project files must be regenerated by the user for MS Visual C++ .NET 2002. As with version 2003, copy file config.hpp.msvcpp as file config.hpp in folder beagle/include/beagle.
MS Visual C++ 6.0
FAILED
MS Visual C++ 6.0 template support is very poor. Use MS Visual C++ .NET instead.

[Top]


Copyright

Open BEAGLE: a generic C++ framework for evolutionary computation.

Copyright © 1999-2007 by Christian Gagné and Marc Parizeau.

Project contributors: Matthew Walker, Jiachuan Wang, Jim Shepherd, Jianjun Hu, Vinod Valsalam, Alexandre Devert, Alain-Daniel Bourdage, and Andrew Marek (Open BEAGLE); Marc Dubreuil (Distributed BEAGLE); Patrick-Emmanuel Boulanger-Nadeau and Vincent-Oliver Gravel (BEAGLE Visualizer).

This project was developed in the context of a PhD at the Computer Vision and Systems Laboratory of Laval University. Christian Gagné is now a research analyst at MacDonald, Dettwiler and Associates Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the version 2.1 of the GNU Lesser General Public License as published by the Free Software Foundation.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

The following page provides a nice list of some other EC packages available.

[Top]



$Id: index.html,v 1.25 2007/11/29 16:52:43 raspingoo Exp $
Christian Gagné and Julie Beaulieu