Distributed peer to peer evolution

Gnubert's Distibuted Computing Engine
Gnubert's Evolution Engine
The Source Code
How to use Gnubert

  Gnubert is yet another program attempting to use the otherwise idle time of the millions of computers hooked up to the internet around the world to solve problems of one sort or another.

  Currently programs exist that run when the user is away processing data, hoping to do things such as cure cancer, participate in code breaking contests, and even look for radio signals from extra-terrestrials. The main thing that makes Gnubert different from all of these projects is that each of them is dedicated to it's own single cause. Gnubert will allow it's users to submit their own projects and have them worked on by the various machines connected to the network. Hopefully as Gnubert approaches maturity it will attract a number of users whom will submit all kinds of interesting projects to it but also many users whom simply run it to donate cpu time and perhaps get the chance to learn about the projects that others are working on.

  A project will consist of two parts. The first is the problem module which will define the kind of problem that is being worked on. Some possible problem modules might be one that evolves electronic circuits that fit some specification, or one that evolves a protein that will react with some give enzyme to help cure a disease. Or it may do something simpler such as solve a maze, as I have been using as my example while I develop the program. When Gnubert is developed to the point that it is ready to accept problem modules I hope that there will be volunteers interested in helping write some as they could come from a variety of fields other than just Computer Science which is mainly what I have studied.

  The second part of a project is the data file. The data file defines the specific problem being solved. In the above examples it would define the specifications of the circuit being evolved, the enzyme that a protein is needed to react with or the maze being solved. This is the part that any user will be able to submit to the network to be worked on.

  Gnubert will use evolutionary programming to solve problems. As it evolves bitstrings towards a solution for the same problem on multiple computers it will pass bitstreams back and forth between computers. It is hoped that this will have an effect similar to a single computer evolving a huge population at speeds that could not be achieved with one computer alone. At the same time it is hoped that users machines which are on logically distant parts of the network might develop multiple unrelated solutions to the same problem.

  Each Gnubert computer will sit and work on a problem, sometimes asking other computers for bitstreams to immigrate into it's population. At intervals it will stop the problem it is working on, store it's bitstreams and work on a different one, eventually coming back to each until it is either solved or timed out. If it is getting low on projects to work on it will ask other Gnubert computers for more projects. Another way a Gnubert computer may get a project is if it's user creates one. The user will load the data file into Gnubert and not only will that computer begin to solve it but it will also pass it to others to share.

  Gnubert started as a project for one of my classes in college and since then has progressed fairly slow. At the time I started it I had almost no experience with Java but for various reasons I decided to write it in Java anyway. As a result I am and have always been learning as I go and some of the older code is not necessarily something I am proud to claim as my own! All of the older stuff will however be replaced in time. Currently I am working mainly on the networking portion of the project and mostly ignoring the evolutionary side. This is partly because the networking side fits better with what I am currently learning as I study Java (I am working on Java Programmer certification) and also because I think it might be usefull as a framework for future P2P projects.

Gnubert News

New Binaries Released
    zwheel - 2002-08-24 22:38   -   Gnubert Peer to Peer Evolution
I released a new set of binaries a few days ago. There isn't a whole lot of functional change but the display is nicer.

Although progress is slow it is not stopped. Connections and the HostCatcher are handled in a much more intelligent manner now and I think Gnubert will be able to automatically get more hosts soon.
[Read More/Comment]

    zwheel - 2002-04-26 11:26   -   Gnubert Peer to Peer Evolution
I've let things go too long without any update so here it goes. Progress was really slow for a while (there wasn't any) as I was very busy with school. I have graduated now and in between job hunting I have been finally getting some work done on the project. I have re-organized the classes by moving the Worker class into the main Gnubert class and renaming GnubertTools to GnubertClient. It could probably still use a bit more polishing but I hope this makes things a bit more readable. I have also added an immigrant queue which is maintained by GnubertClient (now a separate thread.) so that the evolution process no longer has to wait for an immigrant to be obtained from other clients.
[Read More/Comment]

Gnubert Released
    zwheel - 2001-07-29 01:59   -   Gnubert Peer to Peer Evolution
A few days ago I released the source code into the cvs tree and created the homepage but neglected to add a news item for it.

Tonight I have made the webpage more readable, have put out the first binary release. I also wrote some quick and ugly release docs which are screaming for me to replace some time when I am better rested.
[Read More/Comment]

    zwheel - 2001-07-20 09:19   -   Gnubert Peer to Peer Evolution
Welcome to the Gnubert project! I will be uploading source code so that we can get started shortly. I began this as a project for a class. I was in a hurry to make the due date, and also was learning a lot as I went so my code was rather messy. I just have a little more cleaning up to do before I want to show it to the world, but it should be up in the next few days along with a website giving more detail on what Gnubert is suposed to do and what it can do so far. I hope you will come back and perhaps want to get involved!
[Read More/Comment]

[News archive]
SourceForge Logo