organicomplex 0.7.0

Interactive complex-valued cellular automaton on 2D and 3D grids in search of that stuff - emergence, open-endedness, organicity etc.
organicomplex-0.7.0 is not a library.

OrganiComplex

Interactive complex-valued cellular automaton on 2D and 3D grids in search of that stuff — emergence, open-endedness, organicity etc. Uses SDL2.

Accompanies the "paper" (rather draft) with videos called “OrganiComplex: probes into complex-valued cellular automata with topologically universal update rules using certain reflections”, where there is more thorough consideration of structures that appear in one such automaton and their dependence on its parameters.

Look

demo poster

Deployment

Get source, build, and copy the binary into the unpacked root dir taken from the paper above (link below Abstract). Run the binary.

ESC brings main menu, where Help lists controls.

Recipe

Basically, you take cellular automaton (CA) from J.H. Conway's "Game of Life" and

1) change set of states of each cell from ${0, 1}$ to complex plane ℂ,

2) modify update rule to take complexification into account, using non-linear mappings, conjugation etc., and some normalisation so that states remain bounded in some zero-centered, e.g. unit, disk and do not diverge to $\infty$,

3) and slightly adjust neighbourhood to include not only adjacent neighbours, but their neighbours as well, then maybe theirs and so on.

Voilà, — complex-valued CA (ℂCA). And if the combination of 1-2-3 choices is "right", you will observe some "interesting" behaviour... otherwise, you will not observe it... well, hasn't this statement been a tautology all along, since we define "right" as "leading to interesting behaviour", right?

FilamentiComplex

In OrganiComplex, the default 1-2-3 combination — and the automaton it specifies — develops certain filamentiferous (hypha-, worm-, snake-like) structures, somewhat organic in their behaviour, so we call this automaton as the title of this section reads (also, FℂCA):

$$s_j' = M \bigl( 1 - \min { 1, |S_j'| } \bigr) S_j'$$

$$S_j' = s_j + \overline{\sum\limits_{k \in \mathcal{N}(j)} s_k^2 } + \zeta$$

where

• $s_j$ and $s_j'$ are current and next state of $j$-th cell, respectively,

• $\overline{z}$, as usual, denotes complex conjugation of $z$, $\overline{a + bi} = a - bi$,

• $\mathcal{N}(j)$ is the $5 \times 5$ neighbourhood of $j$-th cell with this cell at its centre,

• $\zeta$ is a random isotropic "noise" with modulus bounded by $R$ (or absent, $R = 0$),

• $M > 0$ is the scaling multiplier with $M = 0.53 \pm 0.02$ being "optimal".

Indeed, there should be other combinations ensuring "organicity", even better at it than FℂCA... for you to find.

Non-QM/ANN-ness

The majority of researches in this area deals with ℂCA based either on Quantum Mechanics (QM) or on Artificial Neural Networks (ANN); there is an entire field called "Quantum Cellular Automata" (QCA), rich in authors, papers, and books.

The default update rule in OrganiComplex (that is, FilamentiComplex) is not QM- or ANN-based, at least to our knowledge, explicitly... in fact, there is no nature-grounded motivation for this particular kind of rules, beside their computational speed and "organic-like" behaviour they provide... for some reason.

You are welcome to switch back to QM and/or ANN. See also References in the "paper".

Customisation

See Field::update() in src/play/automaton/field.rs. There are some commented alternatives to FℂCA already.

For instance, change nextamph += neigh_cell.amphunc to nextamph -= neigh_cell.amphunc.

Optimisation warning

Build with release profile, because with debug one it works much (20+ times) slower.

Cf.

github.com/Chakazul/Lenia

github.com/GollyGang/ready

github.com/MicahBrun/Continuous-Complex-Valued-Cellular-Automata

github.com/mochiFnana/cellular-automata-with-julia