The Genetic Programming Layer The Genetic Programming Layer of the DGPF is able to create Turing-complete programs that can drive sensor nodes.

Package Specification

The two sub-packages, Automaton and NetAutomaton provide the ability of creating Turing-complete programs automatically and to enhance them by networking ability.

This packages depends on the following packages:

This package allows you to evolve programs for automata that are able communicate with each other. An automaton is a small device like a sensor node. Each automaton is driven by a program which is evolved by our Distributed Genetic Programming Framework. Normal automata, as defined in the Automaton sub-package run Turing-complete algorithms to solve some problems.

The algorithms evolved are represented in an assembler-style language. The Automaton sub-package provides basic instructions and expressions as well as a code interpreter and extension meachanism that allow to introduce your own, new instructions, expressions, and even execution environments.

Many optimization methods are implemented to speed up program evolution.

The networked automata defined in the NetAutomaton package, additionally have the ability to exchange messages. While one simulates only one automaton when evolving normal programs, we then simulate a whole network of automata.

To model a distributed system, many automata are simulated in parallel for each grown program. For this set of automata, the following assumptions will hold:

The network simulator evaluates systems that are connected wirelessly, and cannot a priori guarantee reliable communication. It therefore has the following properties:

  1. The links between the nodes are randomly created, yet it will be ensured that there are no network partitions.
  2. Messages are simple sequences of memory words with no predefined structure.
  3. Messages cannot be sent directly. Like radio broadcasts they will be received by any node in transmission distance. Finding out which message is of concern will be in the responsibility of each node.
  4. Messages can get lost without special cause.
  5. Transmissions may take a random time until they reach their target.
  6. The collision of two transmissions underway leads to the loss of both messages.

The goal of this approach is to evolve programs that cause the network of automata to perform specific tasks, assuming that code working correctly in such an environment can also expected to be robust and adaptive in a real-world application.

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

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.