![]() |
![]() |
|
|
Genesis
|
![]() |
Genesis - Technical info...
Many attempts at simulating artificial life use a set algorithm to determine the development of the life forms. One example is Richard Dawkin's 'Bimorph' program which uses artificial selection to evolve life forms produced by a basic tree fractal algorithm, known as an L-system. By changing certain parameters used by this algorithm it is possible to change the appearance (the 'Phenotype') of the lifeforms. However, the range of life forms that can be produced, although varied, is limited. Genesis uses 'genes' (a simple string of octal numbers) to determine the operations for a Turing Post program. These programs are executed to carry out tasks such as developing the organism, or moving it. This means a much larger range of organisms can be produced. Note: the algorithm evolves, not just parameters As stated on the main page, several problems are associated with this technique: namely speed and the fact that a small change in genotype can result in a large change in phenotype, spoiling the gradual change required for evolution. I am looking in to ways of solving this. Perhaps an alternative to the Turing post program should be used. Please mail me if you have any suggestions. The program (including the server) is entirely written in Java using JDK1.2.2. The server <-> client communication is achieved using RMI. Implementing this for an applet proved very problematic but I think that as RMI becomes more widely used web browsers will support it better. Each life form contains a genome which is simply an Object encapsulating a Vector of genes (as described above). When you stop the client, all the genomes, of the currently living life forms are sent to the server and stored over the file they were loaded from. There are several concurrent sets of genomes on the server at any one time. This allows for several concurrent users, but more importantly it causes seperation between the sets of life forms. Separation is important for real life evolution and may lead to species developing as the genome sets diverge. See the FAQs. The aim of this project was to produce a completely generic simulation in which life forms can exist that is not tied down to any development algorithm or number of genes. The development function which Genesis uses will work for a genome of any size, from one gene containing one number, to a genome containing hundreds of genes. 18 genes are required for each cell (see main page) to have a fully specified functionality (moving, transmitting data to other adjacent cells, sensing the world around it etc... etc...), otherwise the last gene is used to create an algorithm to build the rest of the genome from the genes available. All multiplication is currently asexual, but I may implement sexual re combination in the future. For more info on aspects of this project see the FAQs. For more info on artificial life and genetic algorithms follow this link. Please sent all questions/ comments to genesis@davidstern.co.uk |