Conway's Game of Life, Evolution of Complexity

The goal of this program is to explore the ability of a genetic algorithm to produce the most complexity (defined as how much non-cyclic activity occurs) with the smallest initial state, within John Conway's "Game of Life".

The simulation has 4 rules, as others have described it:

  • Any live cell with fewer than two live neighbors dies, as if caused by under-population.
  • Any live cell with two or three live neighbors lives on to the next generation.
  • Any live cell with more than three live neighbors dies, as if by over-population.
  • Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.

My fifth rule is that, outside the edges of each "world", the cells are considered dead.

Each simulation is scored by:

  • [number of iterations before cyclic stability] / (1 + [number of initial cells/blocks])

For each generation, the two highest scoring simulations are combined to spawn variations for the next generation.

As the generations continue, the trend is more complexity with fewer starting blocks.

    This will be applied each new generation.

    Simulations for current generation

    When all have reached a stable state, the top two will be combined for the next generation.

    Generation Best Configuration

    The score is the ratio between iterations and initial blocks. So if it goes 1000 iterations, but started with 2 blocks, the score is about 500.
    Initial blocks: