Logo
Distributed Genetic Programming Framework
print print

Package org.dgpf.search.algorithms.ga

Here you can find all the information about the org.dgpf.search.algorithms.ga package. You may explore the package using the directory listing below. This listing contains all the files contained directly in this package and all its sub-packages. There you can either download a file directly (by clicking on the "download"-link) or read it online (by clicking on its direct link left in the directoy listing. Further information about the package's contents is given at the bottom of this page.

Directory Listing

org.dgpf.search.algorithms.ga
  ├[adaptation]2015-07-22 04:10:59 GMT+0000
  ├[cs]2015-07-22 04:10:59 GMT+0000
  ├[local]2015-07-22 04:10:59 GMT+0000
  ├[p2p]2015-07-22 04:10:59 GMT+0000
  │  └[adaptation]2015-07-22 04:10:59 GMT+0000
  ├[selection]2015-07-22 04:10:59 GMT+0000
  ├[sorting]2015-07-22 04:10:59 GMT+0000
  ├GeneticEngine.javadownload download21.335 KB2015-07-22 04:10:59 GMT+0000
  ├GeneticParameters.javadownload download16.286 KB2015-07-22 04:10:59 GMT+0000
  ├GeneticState.javadownload download18.083 KB2015-07-22 04:10:59 GMT+0000
  ├GeneticStateBag.javadownload download4.121 KB2015-07-22 04:10:59 GMT+0000
  ├GeneticUtils.javadownload download2.917 KB2015-07-22 04:10:59 GMT+0000
  ├package.htmldownload download8.925 KB2015-07-22 04:10:59 GMT+0000
  ├SelectionAlgorithm.javadownload download5.053 KB2015-07-22 04:10:59 GMT+0000
  └SortingAlgorithm.javadownload download2.962 KB2015-07-22 04:10:59 GMT+0000

This package includes the Genetic Engines and all the interfaces and base classes needed for an genetic evolution.

Package Specification

This package includes the Genetic Engines and all the interfaces and base classes needed for an genetic evolution.
The Genetic Engine (GeneticEngine) will perform all the work. There are different GeneticEngines available, for local or peer-to-peer-based evolution, for example.

This package provides the basic ability of genetically evolving solutions for any type of problems. Multi-objective Genetic Algorithms are be implemented using different distribution schemes in this package which bases on the versatile search api provided by the Search-API-package.

Genetic Algorithms:

The idea behind genetic evolving problem solutions is the following: You have an idea on some qualities a thing should have, but you don’t know what this thing is or how it should be created. The genetic approach might answer this question. At first, a set of random things is created. From this set we take those things that match your idea the best (using the fitness function). These we modify slightly or combine with each other to find a new set of things. This we do again and again, until we have found the ideal thing or we are close enough to what we want. For more information, visit the Genetic Programming Group at http://groups.google.de/group/geneticprogramming/ or for example http://www.genetic-programming.org/.

Features of this package:

Genetic algorithms can be performed on a single computer. Therefore, the LocalGeneticEngine is intended.

Genetic algorithms have a high parallelizing potential. There are many common methods for parallelizing them known. In "Island Hopping" for example, many populations of solution-candidates, so called individuals, can be evolved on different machines. By exchanging their best individuals, the populations are loosly coupled. This mechanism is implemented in one genetic engine called P2PGeneticEngine, where P2P means peer-to-peer, because it basically realizes a peer-to-peer network.

We support four different types of distribution of computational load for our genetic algorithms:

  1. local: The whole population runs local, no tasks are distributed.
  2. peer-to-peer / island hopping: Big virtual populations can be created if peer-to-peer nodes cooperate in a network.
  3. client-server/master-slave: A genetic engine (client/master) uses different servers/slaves to perform the work of reproducing and evaluating individuals. This way, even populations of complicated-to-evaluated individuals can be handled in reasonable time.
  4. p2p/cs-hybrid: P2P-networks of genetic engines using the client-server distribution approach can co-operate (event with pure p2p-genetic engines).

This package comes with very simple interfaces that allow you to unleash the potential of genetic algorithms without needing to think about network stuff. Any sort of thing/problem can be evolved, you just need to make sure that your individuals are serializable and then specify a fitness function and provide reproduction facilities.

The GA package allows you also to customize the parameters of the evolution in a simple manner: you can the mutation/crossover rate, the selection algorithm, the population size or the emigrant- and immigrant-ratio and such and such on every generation, basing your decisions on extensive statistical data gathered. Therefore you also can implement a class that performs those decisions automatically - or you can use the default values. You may restrict the generation count or the evolution time as well as specify a ideal-threshold fitness value (the evolution stops when one individual with such a fitness or even a better one occurs).

The GA provides full support for multi-objective Genetic Algorithms. To be precise, one can specify an arbitrary count of fitness functions to be evaluated for each individual. This allows you to evolve individuals which have more than one desired property optimized. Therefore, the evaluation function of the genetic environment is simulation based. Each fitness function may create a data record for individuals being evaluated. This record serves as repository for information on the individual when it is simulated. A simulation consists of a specified count of steps. Each fitness function might specify a count of steps after which it will inspect the state of the simulation and update its records.

At the end of a simulation, each fitness functions evaluates its records and determines one fitness value. To obtain stable results, each individual will be simulated more than once. After all simulations of an individual are done, statistic records on the single fitness values assigned are provided to the fitness functions, so that they can compute the final fitness value. By default, this will be the median of the different test results (or the average if only a few simulations have been performed).

The statistic evaluation is rich: for each distinct fitness function there exist statistic records for the final fitness values of the population’s individuals. After receiving all single final fitness values, the client calculates one overall fitness values per individual. This value then goes through different filters, allowing the evolution to be controlled or steered in a specific direction. Various distribution methods for Genetic Algorithms are available, like "island hopping" which would now perform emigration and immigration.

Whatsoever, the GA package can still be used for such simple things like finding the root of some arithmetic functions which is presented as example amongst others in the Examples package also available online.

There are currently four predefined selection algorithms: Tournament Selection, Ranked Selection and Ordered Selection.

See the rich example collection also available on the web for feature demonstrations.

Additional Information

Search algorithms are executed by SearchEngines. The names of the search engines are formed like this: The distribution shortcut + the algorithm shortcut + Engine.java.

Current distribution shortcuts:

Local
A search engine that runs locally, typically situated in a sub-package named local
CS
A search engine that uses the client/server (= master/slave) distribution approach, typically situated in a sub-package named cs
P2P
A search engine that using the peer-to-peer distribution, typically situated in a sub-package named p2p
P2PCS
A search engine that using both, peer-to-peer and client server distribution, typically situated in a sub-package named p2p

Current search algorithm shortcuts:

Genetic
A search engine that performes a Genetic Algorithms. It will be situated in a sub-package of org.dgpf.search.algorithms.ga
HC
A search engine that performes a Hill Climbing. It will be situated in a sub-package of org.dgpf.search.algorithms.hc
SA
A search engine that performes a Simulated Annealing. It will be situated in a sub-package of org.dgpf.search.algorithms.sa

This Open-Source research project is licensed under LGPL, a license even more liberate than the GPL.

One feature, especially important for developers, is the full documentation of the source code provided. Each method, class, package is fully documented down to privated declares. No parameter is undocumented. We are also happy about hints or request for more documentation, because we want that anyone can use our code and hopefully understand it. This project has also educational character.

You can find more information on the project's home page or on the project's page on SourceForge. The source code and examples can be downloaded at the downloads page. Useful information and news will frequently be published in the Genetic Programming Group.


statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2017-12-12 02:47:34 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo