Java Genetic Algorithms Package (JGAP)

Category Intelligent Software>Genetic Algorithm Systems/Tools and Software>Genetic Programming Systems/Tools

Abstract 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.

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.

Documentation (see below...), quality and stability of code were and still are the top concerns for developing JGAP. You can find a lot of 'unit tests' packaged with JGAP (> 1,400), extensive Javadocs, and quite a few examples.

What are Genetic Algorithms AND Genetic Programs?

Genetic Algorithms (GAs) are evolutionary algorithms that use the principle of natural selection to evolve a set of solutions toward an optimum solution.

GAs are Not only quite powerful, but are also very easy to use as most of the work can be encapsulated into a single component, requiring users to only define a fitness function that is used to determine how 'good' a particular solution is relative to other solutions.

Genetic Programs (GPs) enhance GAs. They allow you to breed dynamic programs instead of static chromosomes.

Genetic Programming with JGAP --

Genetic Programming (GP) was introduced by John Koza. GP is different then Genetic Algorithms (GAs) as GP is more complex than GAs. GP is about evolving programs with a given set of commands and an unknown structure (GAs = known structure).

Each command is assigned a number of parameters. That way, programs can be constructed. They are represented internally as a tree. But you do Not have to cope with the internal representation. For the user it is only important to know that you can write programs with GP.

Each program contains only those commands and terminals (A terminal is a static number that can be mutated), such as numbers or Boolean values, that you define to be used.

With it, it is possible to evolving full-blown Java programs (such as, Robocode, See below...).

Genetic Programming (GP) was first introduced in JGAP 3.0. GP allows you to write programs that conform to a specified syntax. Each program can then be executed and measured by a fitness function.

JGAP Philosophy and Visions --

Philosophy of JGAP -

A complex subject such as the one behind Evolutionary Algorithms allows you to create a huge software package. To keep things practical, the manufacturers setup some leading records/standards for the development of JGAP. These are:

1) Deliver stable and easy to maintain code by extensively providing unit tests for each class. Currently, there are over 1,400 unit tests (as stated above...).

2) Optimize for performance and probably, neglect logical correspondence to biological archetypes.

3) Make JGAP easy-to-use by providing examples (how-to's), easy-to-understand class names and architecture.

4) Allow for easy extensibility by carefully building up the architecture.

5) Make use of interfaces and abstract base classes wherever useful (historical growth of the classes makes this a difficult target when it comes to older entities).

6) Document the more important things, like upgrading to newer JGAP versions.

7) Make JGAP worth using by steering it towards distributed computing and showing how to solve real-world examples.

JGAP Visions --

Currently, JGAP undergoes heavy enhancement. Just have a look at the feature requests. Astonishingly few bugs are reported, although JGAP is used by many people. The current visions for JGAP are:

1) Introduce Distributed Computing.

2) Enhance monitoring capabilities.

3) Evolve a great Robocode robot with Robocode JGAP.

Robocode - Robocode is a game. There is a playfield in which two (2) virtual robots fight against each other. A robot can perform certain actions, like moving around, scanning the environment, shooting and turning the gun.

Robocode notifies a robot if a significant event occurs, including: scanning the opponent, hitting a wall, being hit by a bullet or hitting the opponent.

4) Add more graphical support (e.g. statistics, configurability).

5) Make JGAP more popular by providing adapters to significant systems, steering towards symbiosis.

What the manufacturers do to keep the quality of JGAP high --

As it is impossible to avoid logical and conceptual errors, the manufacturers rely on several effective means to keep JGAP's quality high:

1) JGAP's documentation is extensive. You can find how-to's and tutorials on the manufacturer's home page, many comments are in the source code and self-documentation by 'unit tests' is provided.

2) JGAP is improved constantly and this is being done over a long period of time.

3) Detect code changes and program errors by unit tests. They are part of the manufacturer's code basis and with every release, new tests are added. In case a bug is reported, the manufacturers add a test to reveal it.

4) Before the manufacturers publish a release, all 'unit tests' are run. Additional reference implementations and the examples are also run to see that JGAP behaves as the manufacturers expect it to.

Furthermore, the manufacturers use code coverage analysis to verify the test coverage of the productive classes delivered.

5) Feedback from users is taken very seriously. The manufacturers try to find a solution for your feedback.

6) The manufacturers try to react very fast to new requirements; they try to release new versions as soon as the code basis is stable enough to do so.

Additionally the manufacturers keep JGAP's architecture up-to-date and don't take the paradigms and concepts of the current version as the final solution.

7) JGAP's home page is updated whenever necessary.

8) And lastly, the manufacturers want you to contribute to JGAP. Either by asking questions, sending feedback, or trying out the package. Or, by becoming a developer who wants to add value to the project (see the manufactures home page for contact info).

JGAP Documentation --

The following introductory documents are available to help you get started with JGAP:

1) FAQ - Frequently Asked Questions;

2) Installation of JGAP;

3) A Brief Introduction to Genetic Algorithms;

4) Getting Started with JGAP;

5) Differences between Nature and Genetic Algorithms;

6) JGAP and Genetic Programming (GP);

7) Solving problems using Genetic Programming with JGAP;

8) Philosophy and visions of JGAP (see above...);

9) Creating Custom Genes;

10) Creating Custom Genetic Operators;

11) Marshalling Populations to XML;

12) Using the Supergene concept from biology;

13) Handling problems related to the Traveling Salesman Problem (TSP);

14) Coding Style and Practices;

15) Upgrading from older JGAP versions;

16) Build a Grid with JGAP; and

17) Statistics (Lines of code, classes, packages; test cases; examples).

System Requirements

Contact manufacturer.


Manufacturer Web Site Java Genetic Algorithms Package (JGAP)

Price Contact manufacturer.

G6G Abstract Number 20786

G6G Manufacturer Number 104360