viernes, 27 de marzo de 2015

El algoritmo de Dios


Acabo de terminar de convertir este ejemplo de computación evolutiva que realicé hace años, pero de modo que no sea necesario utilizar ya un Applet de Java. Ahora el algoritmo se ejecuta exclusivamente mediante el intérprete de Javascript del navegador.

Además he mejorado el algoritmo original, de modo que ahora es posible interpolar funciones de dos variables (y no sólo de una como en el ejemplo original). Es decir; que el siguiente programa aproxima numéricamente la interpolación de funciones con dos variables mediante el uso de un algoritmo de computación evolutiva:



Para más detalles técnicos del funcionamiento del algoritmo podéis visitar el enlace con el ejemplo original. Y si necesitas el código fuente de esta revisión con Javascript nativo, déjame tu correo en un comentario en esta misma entrada y te lo mandaré.

El poder de la evolución

Puede parecer sorprendente, e incluso habrá quien no se lo crea, pero el Universo realmente sigue un sencillo algoritmo cuando tiende hacia la complejidad en ciertas circunstancias. Esta tendencia espontánea natural que, dadas las circunstancias, origina un proceso evolutivo, sigue el siguiente esquema:
t = t_inicial
Partimos de P(t)
hacer
    Q = cambioYvariacion[P(t)]
    Evaluación[Q]
    P(t+1) = selección[P(t) U Q]
    t = t + 1
repetir
La variable t representa el paso del tiempo físico a partir de cierto instante. En ese instante t_inicial empezaremos con una población P(t), que será el origen del proceso evolutivo. Esta población inicial debe poseer la cualidad necesaria para formar parte de este proceso evolutivo, que comenzará automáticamente en cuanto sea factible. El proceso, una vez iniciado, es el siguiente:

Primero, se produce un cambio natural siguiéndose las leyes físicas. Posteriormente, se evalúan implícitamente las posibles nuevas estructuras acontecidas durante el cambio anterior (Q) y se seleccionan aquellas estructuras que, siguiendo las mismas leyes naturales, sean las más estables en relación al mundo físico donde se encuentran.

Esta secuencia es la responsable de que exista complejidad en el mundo, puesto que es el único modo en que se puede buscar o conseguir, de un modo eficiente, orden dentro del inmenso caos que conforma el mundo. Consigue, por tanto, lo que el azar por sí sólo no tendría tiempo de conseguir. La posibilidad física de este modo de proceder es, sin duda, el responsable de que el mundo no sea por doquier un baile aleatorio de partículas: bien se podría decir (metafóricamente) que estamos ante el algoritmo de Dios.

En concreto, la propuesta de abiogénesis del profesor Jeremy England se basa precisamente en este mismo algoritmo. Su trabajo se limita, en realidad, a describir el paso P(t+1) = selección[P(t) U Q]:

Según el equipo del MIT liderado por Jeremy, la función de selección de aquellos individuos que evolucionan hacia la complejidad en sistemas lejos del equilibrio térmico (como el que conforma la Tierra), se basa en una búsqueda espontánea de las leyes del mundo hacia la disipación de calor. En el paso de seleccionar individuos, los más estables serán los que más energía consuman para generar trabajo y disipar calor, y serán sólo aquellas estructuras eficientes para generar calor las que persistan.