This is an implementation of one of the first cellular automata systems that have been running on Computer Systems and made the idea of cellular automata popular.
John Horton Conway and colleagues at the University of Cambridge developed the "Game of Life" rules in 1968 after a long search for balanced rules.
For me its the first try on implementing a cellular automata system and I chose this to have an easy start - the developed cellular platform will hopefully be able to support my further tries in this area. I chose Java to provide an applet that is easy to try over the Internet on every platform. Maybe I have to change the programming language in the future to support Cellular automata that are more complex... I am aware of the fact that a simple array implementation would habe yielded more speed but I prefer the object oriented way to support reuse of code for future Artificial Life systems (where units might be more complex regarding e.g. memories)
Cellular Automata (very short and simplifying):
The term denotes a class of mathematical models where a lot of equal/similar units interact locally with their neighbours. Every unit follows (normally) very easy rules that are applied in parallel for all units at once in every discrete timestep. Those rules deterministically tell the cell units in which of the few states they have to change - the cells in life are comparable to an electrical device that is either turned "on" or "off". So it is not important what the cells actually are but just how they behave in interaction with their neighbours. The cells are arranged in a chessboard-like grid that determines the local neighbourhoods.
For an excellent introduction Complex Systems, Self Organization and a lot of related links make sure to visit CALResCo
Game of Life - rules:
In every timestep every cell calculates its new state according to this rules:
- a cell is "born" if the number of neighbours is exactly 3
- a cell survives if the number of its neighbours is 2 or 3
(Life uses the Moore-Neighbourhood, i.e. the eight surrounding cells are concerned neighbours)
But from those easy rules a great diversity of macro behaviour can emerge. You set some cells alive and the let the Computer calculate the next "generations" iteratively - there are just few static patterns, some nice periodic ones and mostly everything is "moving" with an unforeseeable outcome.
Most astonishing are cell patterns that not only keep their shape but additionally produce an "output" - like the glider canon (see webdemo) which sends out a new glider every 30 timesteps. (side-note: people have been able to construct theoretically a universal turing machine with Life on an infinitely large grid where gliders -and their absence- represented digital information)
Click here to watch the webdemo (size for appr. 800x600, I suggest to download the files and run them as standalone to resize the field)
Download source files (zip)
You may use and change this sourcecoude as you wish.
I do not guarantee the correctness of the program code or the information given on this side and thus deny any responsibility for your use of it
Johannes Knabe (firstname.lastname@example.org)
v0.2 Trondheim, Norway, 22.09.2003 (09/22/03)
This is http://life.panmental.de, visit also:
Wator, another Cellular Automaton
the page of the students union Cognitive Science Osnabrck