System development – Cellular Automata

A cellular automaton is a collection of (coloured) cells arranged on a grid. The cells evolve on the grid through a number of time steps, according to a set of rules based on the states of the neighboring cells. The rules can be applied iteratively for as many steps as desired. Such a model was first considered in the 1950s by von Neumann, who used it to build his “universal constructor”. Further studies were conducted in the 1980s by S. Wolfram, whose extensive research culminated in the publication of the book “A new kind of science”, which provides an exhaustive collection of results concerning cellular automata.

 

The fundamental parameter concerning a cellular automaton is the grid on which it is computated. A CA can be computed on a 1D line, a 2D or a 3D grid which can both vary in terms of shapes. CAs can be computated on grids consisting of squares, triangles, hexagons, etc. Another parameter is the number k, representing the colours or states a cell can have. K=2 (binary CA) is the simplest choice, and also the one I have been using in my experiments. In the case of a binary automaton, the number 0 is usually assigned to the colour white and 1 to the colour black. In my experiments the number 0 refers to a cell being dead, and 1 refers to a cells state being alive. An alive cell generates a point in spaces, whereas a dead one generates a void. Governing the evolution of the CA is also the set of rules applied. For 2D cellular automata, the one I am using for my experiments, there is a total of 255 possible rules depending on the states of the neighboring cells of each cell. For my form finding experiments each iteration of a 2D CA has been memorized by the computer and stored in 3D spaces. The result was a collection of points generated by a CA controlled by its initial configuration ( or the initial state of each cell in the grid ), the evolving rule and the number of iterations.

 

The rules governing the evolution of a CA are vast and produce interesting results, varying from ordered CAs which die after few iterations to chaotic patterns. Upon experimenting with a few rules I have decided to research rule 30 in more detail, also known as the Game of Life rule. Rule 30 has been discovered by John Conway in the 1970s and popularized in Martin Gardner`s Scientific American columns. The game of Life is a binary (k=2) totalistic cellular automaton with a Moore neighbourhood of range r=1. The evolving rule states that a dead cell can come to life if surrounded by 3 alive neighbours, and an alive cell survives if surrounded by 2 or 3 alive neighbours. Such a simple rule can produce very interesting results when computated in 3D space.

 

For my experiments I have been using the Rabbit plugin by Morphocode, using their sample CA definition as a starting point.

image 9
Cellular automata starting from the same configuration and following different rule. First rule is Conway`s Game of Life
image 2
Game of Life CA evolution – Initial configuration=Pentonimo Puzzle – Time=150
image 1
Game of Life CA evolution – Initial configuration=Queen Bee Shuttle – time=150
image 3
Game of Life CA evolution – Initial configuration=Diehard – Time=150
image 5
For this experiment the same evolution rule was applied, but the CA grew in both directions

model1

model2

model3

image 4
The same CA definition explored in vertical growth was explored in a circular growth
image 6
Following the circular growth experiments various curves and rotation angles were explored for the growth pattern
image 7
Proximity experiments using the points generated by the CA
image 8
The lines generated by the proximity experiments were used to generate structural frames
model4
Experiments in building the frames generated by the CA

One thought on “System development – Cellular Automata”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: