The GenHome Project
Harvesting the power of natural selection for solution optimization.
There is grandeur in this view of life, [that], from so simple a beginning endless forms most beautiful and most wonderful have been, and are being, evolved.
-- Darwin, Charles, The Origin of Species
The GenHome Project
GenHome was designed with two goals in mind:
Experiment distributed genetic algorithms (GA);
Provide a basic platform for computer intensive task distribution à la SETI@home.
GenHome is designed to be able to run many projects in parallel. A project can be the evolution of a genetic algorithm, or any other distributed computation task. GenHome is coded in java and uses java rmi for its distributed parts. The distributed genetic algorithms are based on JDEAL.
JDEAL is a genetic algorithm library written in java. We used and extended their library to implement our GAs.
Basically a genetic algorithm is a technique using multiple solutions at once to achieve optimization of one solution.
Genetic algorithms are evolutionnary techniques used to solve and optimize problems. The basic idea is to reproduce natural selection processes in order to find a solution for a problem. In this approach, more than one solution for a problem exist at a time. The different solutions compete against each other, and the “ecosystem” of solutions yield a satisfying solution at the end.
In the GA context, a solution is a chromosome, and a chromosome pool is also called a population. GAs repeatedly modify the whole population and single chromosomes to increase the quality of the best solution. Operations performed on the population include deleting and cloning chromosomes. Single chromosomes can also be mutated, and pair of chromosomes can be combined to form offsprings. This last set of operations affect the inner structure of the solutions (its parameters), also referred to as chromosome's DNA.
A detailed explanation of GAs is available at the GA FAQ. What is important here is that GAs are effective (partly) because there is a diversity of solutions that exist at the same time.
One essential step of a GA is to evaluate the individual solutions so that their quality can be compared. Chromosome (or solution) evaluation is the most intensive activity of a running GA. Also, each chromosome can be evaluated independently of its neighboor. That is a great opportunity for parallelization.
In a distributed genetic algorithm, the whole chromosome population is divided among a number of hosts. Every host runs GA steps locally, and its local population evolves. The hosts periodically communicate with a central server, which coordinates chromosome exchanges between the hosts.
The goal is to accelerate the GA in two ways: more initial chromosomes, and faster population evaluation.
GenHome clients (or hosts) always talk to the same machine on the server side. This proxy is the entry point for requests to the servers. It makes life simpler for clients, which only need to remember one address. There are also security reasons to use a proxy.
Behind the proxy, there are project servers and a dispatcher. The dispatcher has projects registered for future work. When new clients connect, they talk to the proxy, which forwards calls to the dispatcher. The dispatcher assigns each new client to a running project. As work progresses, clients periodically connect to the server side, talking to a specific project server through the proxy.
Well you can quite easily create new projects. The exact procedures are described in the high level project description (A Microsoft Word document).
Check the download section. There is a Microsoft Word document describing the main modules. If you are interested in the implementation details, or modifying parts of the GenHome project, you are encouraged to check out the API documentation.
GenHome is hosted at SourceForge. You can find the GenHome project information here. The project is pretty calm now, since its authors have moved to other occupations. We will provide support to our best extent, and we would be pleased to help any contributor out there.
| Downloads | SourceForge GenHome Project Info | JDEAL | CVS Tree |
The Web is full of resources for those interested in genetic algorithms. A good place to start is genetic-programming.org.
| Google search | Genetic-programming.org | GA FAQ |
The development team would love to hear from you. Tell us what you think!
Project hosted at