¿Qué son las Partículas Lenia?

La simulación de arriba muestra un conjunto de Partículas Lenia: un sistema de partículas que se mueven para minimizar la energía local de su interacción, lo que lleva a la formación de estructuras complejas y diversas. Este tipo de partículas también se les considera como una familia de autómatas celulares.

El concepto de Partículas Lenia fue creado por Bert Wang-Chak Chan en 2015 y es considerado como una generalización continua del Juego de la Vida de Conway, con estados y espacio continuous. Esto da como resultado patrones autónomos complejos (cierto tipo de "formas de vida"). Tanto las Partículas Lenia como el Juego de la Vida se definen por conjuntos explícitos de reglas que se pueden traducir fácilmente a código en cualquier leguaje de programación, lo que definitivamente ha ayudado a su popularidad.

Una animación mostrando el movimiento de un planeador en Lenia. Fuente: Wikipedia.

Las matemáticas detrás de la simulación

Con base en el trabajo de Alexander Mordvintsev (2023), trabajamos con una configuración espacial de partículas $\mathbf p_i$ que induce un campo "escalar" $\mathbf E$ y viajan en contra del gradiente de este campo:

\[\frac{d\mathbf{p}_i}{dt} = -∇\ \mathbf{E}(\mathbf{p}_i).\]

El campo $\mathbf{E}=\mathbf{R}-\mathbf{G}=\mathbf{R}-G(\mathbf{U})$ es una combinación de componentes de repulsión y crecimiento, y el campo de crecimiento es el resultado de aplicar un mapeo escalar $G$ al campo Lenia $\mathbf U.$ Ambos $\mathbf R$ y $\mathbf U$ son simplemente sumas de contribuciones simétricas radiales de partículas individuales:

\[\mathbf{E}(\mathbf{x}) = \sum_i R(r_i) -G \Big( \sum_i K(r_i) \Big) \\ \quad r_i=\Vert \mathbf{x}-\mathbf{p}_i \Vert.\]

Podemos encontrar fácilmente el gradiente de $\mathbf E$ usando la derivada de la suma y la regla de la cadena:

\[∇\ \mathbf{E}(\mathbf{x}) = ∇\mathbf{R}-\dot{G}(\mathbf{U})\ ∇\mathbf{U} \tag{1}\]

donde $\dot{G}$ denota la primera derivada de la función escalar $G.$ Los gradientes $∇\mathbf{R}$ y $∇\mathbf{U}$ son las sumas de los vectores radiales poducidos por partículas individuales:

\[∇\mathbf{R} = \sum_i \dot{R}(r_i)\ ∇r_i\]

\[∇\mathbf{U} = \sum_i \dot{K}(r_i)\ ∇r_i \tag{2}\]

\[∇r_i= \frac{\mathbf{x}-\mathbf{p}_i}{\Vert \mathbf{x}-\mathbf{p}_i \Vert}.\]

Ahora las únicas partes que faltan son las definiciones de las funciones escalares, de una variable, $K,$ $G$ y $R.$

\[K(r) = w_K\exp\big({-(r-\mu_K)^2 \big/ \sigma_K^2}\big)\]

\[G(u) = \exp\big({-(u-\mu_G)^2 \big/ \sigma_G^2}\big)\]

\[R(r) = \frac{c_\text{rep}}{2}\max\big(1-r,\; 0\big)^2.\]

Dejamos al lector como ejercicio derivar las expresiones para las derivadas $\dot{K},$ $\dot{G}$ y $\dot{R}.$

Simulación usando Shaders

La siguiente simulación fue realizada por Bert Chan usando Shaders (Sombreador). En esta se puede apreciar el comportamiento de diferentes autómatas celulares.


Da click en la pantalla para reiniciar parámetros. 🔗 Código fuente.


Referencias

  1. Chan, Bert Wang-Chak (2015). Lenia. https://chakazul.github.io/lenia.html
  2. Chan, Bert Wang-Chak (2019). Lenia: Biology of Artificial Life. Complex Systems. 28 (3): 251-286.
  3. Mordvintsev, Alexander; Randazzo, Ettore; Niklasson, Eyvind; Levin, Michael (2020). Growing Neural Cellular Automata. Distill. 5 (2): e23.
  4. Mordvintsev, Alexander; Niklasson, Eyvind; Levin, Michael; Randazzo, Ettore;  (2022). Particle Lenia and the energy-based formulation. https://google-research.github.io/self-organising-systems/particle-lenia/
  5. Mordvintsev, Alexander. (2023). Tutorial: Particle Lenia from scratch. Observable. https://observablehq.com/@znah/particle-lenia-from-scratch


Gracias por llegar al final de este artículo. Si deseas puedes apoyarme en Patreon usando el siguiente enlace:

Become a Patron!

Con tu apoyo podré seguir escribiendo y compartiendo artículos y applets de matemáticas.

Comentarios

Entradas populares

Breve historia del Cálculo

Galileo Galilei y su ley de caída libre

Una historia de la Teoría de Conjuntos