2012年10月13日土曜日

Distributed Genetic Programming Framework

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.

The main focus of our project is put on the automated creation of programs that should drive sensor networks. Such programs are instantiated on many automata which are able to communicate with each other wirelessly in an unreliable manner. Therefore, network simulators able to simulate whole networks of such automata are used. By doing so, we hope to be able to create emergent behaviors and self*-properties in large scale distributed systems.

Our system is not bound to Genetic Programming, nor even bound to Genetic Algorithms at all. You can easily implement other search algorithms (like Simulated Annealing or such and such) and use the distribution utilities to distribute them over a network. In the near future we will implement many of these algorithms ourselves and provide them here.

While the system can run on a single computer, one of its main strengths is its distribution-ability. Different search algorithms using different distribution mechanisms can easily implemented. You can find versatile implementations of Genetic Algorithms driven by a Genetic Engine in the Genetic Algorithms layer.

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

Other search algorithms can simple be implemented too - we've currently added Hill Climbing. Since the distribution tools we use are unified, the Hill Climbing based searches can be distributed in the same way than the Genetic Algorithms. Moreover, bothe search algorithms can interact and form a heterogeneous search. Another nice fact is, that each search algorithm implemented in the framework will automatically come equipped with an auto-adaptive, configurable Tabu Search backend improving problem space examination.

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

You might experience problems when compiling our project. This is due to an incompatibility of the Eclipse 3.1.1 compiler to Sun's JavaC compiler regarding Generics (introduced in Java 1.5/ J2SE 5.0). We cannot resolve this issue since this problem is not originated in our project. Therefore, the project currently can only be compiled with Eclipse.
Learn more about Eclipse 3.1.1 and its installation 
here.
Learn more about the incompatibility problem in our 
newsfeed or in the regarding Sun Developer Network Thread
.

0 件のコメント:

コメントを投稿