Making a Continuous Game of Life
Making a Continuous Game of Life
So far, much of what we have seen is discrete stuff, for various reasons:
So far, much of what we have seen is discrete stuff, for various reasons:
Connection to computability and Turing machines
Connection to computability and Turing machines
The parameter space is discrete, easier to search or catalog
The parameter space is discrete, easier to search or catalog
Easier no approximation needed to the evolution equations
Easier no approximation needed to the evolution equations
At least, at some scales, nature looks continuous, so it makes sense to look at what we get in this setting
At least, at some scales, nature looks continuous, so it makes sense to look at what we get in this setting
Reaction-Diffusion is a good first example: first-order differential equations
Reaction-Diffusion is a good first example: first-order differential equations
What do we mean by 'continuous'?
What do we mean by 'continuous'?
Continuous Cellular Automata
Continuous Cellular Automata
(Lecture given by Vassilis Papadopoulos)
(Lecture given by Vassilis Papadopoulos)
In a classical CA, we have a discrete set of possible states $S$, as well as a discrete space, and discrete timesteps $T$.
In a classical CA, we have a discrete set of possible states SS, as well as a discrete space, and discrete timesteps TT.
A generaal CA update rule can be written as
A generaal CA update rule can be written as
$A_{t+\Delta t}(x_i)=\tau(A_t(\mathcal N(x_i)))$
At+Δt(xi)=τ(At(N(xi)))A_{t+\Delta t}(x_i)=\tau(A_t(\mathcal N(x_i)))
We usually take $\Delta t=1$
We usually take Δt=1\Delta t=1
Now we can take:
Now we can take:
$S$ continuous: $A(x) $ can take values in a continuous space
SS continuous: A(x)A(x) can take values in a continuous space
E.g. instead of $A(x)\in\{0,1\}$ we take $A(x)\in[0,1]$
E.g. instead of A(x){0,1}A(x)\in\{0,1\} we take A(x)[0,1]A(x)\in[0,1]
$T$ continuous: $\Delta t$ can be taken to $0$ and we get a sensible result
TT continuous: Δt\Delta t can be taken to 00 and we get a sensible result
$X$ continuous: $\Delta x$ can also be taken to $0$
XX continuous: Δx\Delta x can also be taken to 00
How to proceed to take continuous limits?
How to proceed to take continuous limits?
Start with the Game of Life
Start with the Game of Life
So, we look at a larger neigbhorhood instead of just the eight neighbors: this is what 'Larger than Life' gives, and it looks more continuous indeed
So, we look at a larger neigbhorhood instead of just the eight neighbors: this is what 'Larger than Life' gives, and it looks more continuous indeed
Writing $c_{i,j}$ the state of cell $(i,j)$ ($0$ or $1$) and take a $3\times 3$ kernel $K_{kl}$
Writing ci,jc_{i,j} the state of cell (i,j)(i,j) (00 or 11) and take a 3×33\times 3 kernel KklK_{kl}
$s_{i,j}=\sum_{k=-1,0,1}\sum_{l=-1,0,1} c_{i+k,j+l}K_{kl}$, where $s_{i,j}$ is the number of live neighbors around $(i,j)$
si,j=k=1,0,1l=1,0,1ci+k,j+lKkls_{i,j}=\sum_{k=-1,0,1}\sum_{l=-1,0,1} c_{i+k,j+l}K_{kl}, where si,js_{i,j} is the number of live neighbors around (i,j)(i,j)
Now, the limit of the update rule is $s(x,y)=\int_{x'} \int_{i'} c(x-x',y-y')K(x',y')$
Now, the limit of the update rule is s(x,y)=xic(xx,yy)K(x,y)s(x,y)=\int_{x'} \int_{i'} c(x-x',y-y')K(x',y')
The continuous limit of this is straightforward
The continuous limit of this is straightforward
$c^{t+1}(x,y)=g(s^t(x,y),c^t(x,y))$
ct+1(x,y)=g(st(x,y),ct(x,y))c^{t+1}(x,y)=g(s^t(x,y),c^t(x,y))
The thing is manifestly continuous in $X,S$
The thing is manifestly continuous in X,SX,S
Now, if want to make things continuous in time, we need to have things that gradually change in time
Now, if want to make things continuous in time, we need to have things that gradually change in time
$c^{t+\Delta t}(x,y)=c^t(x,y)+\Delta t \,\cdot\,g(K*c^t)$
ct+Δt(x,y)=ct(x,y)+Δtg(Kct)c^{t+\Delta t}(x,y)=c^t(x,y)+\Delta t \,\cdot\,g(K*c^t)
Does this model have a continuous limit with respect to $S$, $X$ and $T$?
Does this model have a continuous limit with respect to SS, XX and TT?
So, we clip between $0$ and $1$ to avoid a blow up
So, we clip between 00 and 11 to avoid a blow up
$c^{t+\Delta t}(x,y)=[c^t(x,y)+\Delta t \,\cdot\,g(K*c^t)]_0^1$
ct+Δt(x,y)=[ct(x,y)+Δtg(Kct)]01c^{t+\Delta t}(x,y)=[c^t(x,y)+\Delta t \,\cdot\,g(K*c^t)]_0^1
Because of the clipping, things can go wrong when $\Delta t \to0$
Because of the clipping, things can go wrong when Δt0\Delta t \to0
Lenia
Lenia
The most famous continuous cellular automaton is of the above form
The most famous continuous cellular automaton is of the above form
The kernel we take is a linear combination of Gaussian convolution kernels
The kernel we take is a linear combination of Gaussian convolution kernels
Multi-Channel Extensions
Multi-Channel Extensions
We can have an interaction between channels
We can have an interaction between channels
This can lead to a lot of parameters to tune, and it is even more difficult to find interesting things
This can lead to a lot of parameters to tune, and it is even more difficult to find interesting things
Many Solitons
Many Solitons
There is a huge wealth of interesting creatures, but they all exist for various points of the parameter space... it is an open problem to make them co-exist in a single world
There is a huge wealth of interesting creatures, but they all exist for various points of the parameter space... it is an open problem to make them co-exist in a single world
.
alife-course
lecture-01
lecture-02
lecture-03
lecture-04
lecture-05
lecture-06
lecture-07
lecture-08
lecture-09
lecture-10
lecture-11
scratch
presentations